TTrainingRegularController.java 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409
  1. package com.ruoyi.project.training.controller;
  2. import java.util.ArrayList;
  3. import java.util.Calendar;
  4. import java.util.Iterator;
  5. import java.util.List;
  6. import com.ruoyi.project.plant.domain.TStaffmgr;
  7. import com.ruoyi.project.plant.service.ITStaffmgrService;
  8. import com.ruoyi.project.system.domain.SysDictData;
  9. import com.ruoyi.project.system.service.ISysDictTypeService;
  10. import com.ruoyi.project.training.domain.TTraining;
  11. import com.ruoyi.project.training.domain.TTrainingDevice;
  12. import com.ruoyi.project.training.service.ITTrainingDeviceService;
  13. import com.ruoyi.project.training.service.ITTrainingService;
  14. import org.apache.commons.lang.StringUtils;
  15. import org.springframework.security.access.prepost.PreAuthorize;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.web.bind.annotation.GetMapping;
  18. import org.springframework.web.bind.annotation.PostMapping;
  19. import org.springframework.web.bind.annotation.PutMapping;
  20. import org.springframework.web.bind.annotation.DeleteMapping;
  21. import org.springframework.web.bind.annotation.PathVariable;
  22. import org.springframework.web.bind.annotation.RequestBody;
  23. import org.springframework.web.bind.annotation.RequestMapping;
  24. import org.springframework.web.bind.annotation.RestController;
  25. import com.ruoyi.framework.aspectj.lang.annotation.Log;
  26. import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
  27. import com.ruoyi.project.training.domain.TTrainingRegular;
  28. import com.ruoyi.project.training.service.ITTrainingRegularService;
  29. import com.ruoyi.framework.web.controller.BaseController;
  30. import com.ruoyi.framework.web.domain.AjaxResult;
  31. import com.ruoyi.common.utils.poi.ExcelUtil;
  32. import com.ruoyi.framework.web.page.TableDataInfo;
  33. /**
  34. * 装置培训计划Controller
  35. *
  36. * @author ruoyi
  37. * @date 2021-06-22
  38. */
  39. @RestController
  40. @RequestMapping("/training/regular")
  41. public class TTrainingRegularController extends BaseController
  42. {
  43. @Autowired
  44. private ITTrainingRegularService tTrainingRegularService;
  45. @Autowired
  46. private ISysDictTypeService iSysDictTypeService;
  47. @Autowired
  48. private ITStaffmgrService tStaffmgrService;
  49. @Autowired
  50. private ITTrainingDeviceService tTrainingDeviceService;
  51. @Autowired
  52. private ITTrainingService tTrainingService;
  53. /**
  54. * 查询装置培训计划列表
  55. */
  56. @PreAuthorize("@ss.hasPermi('training:regular:list')")
  57. @GetMapping("/list")
  58. public TableDataInfo list(TTrainingRegular tTrainingRegular)
  59. {
  60. startPage();
  61. List<TTrainingRegular> list = tTrainingRegularService.selectTTrainingRegularList(tTrainingRegular);
  62. List<SysDictData> actualpost = iSysDictTypeService.selectDictDataByType("ACTUALPOST");
  63. for (TTrainingRegular t : list) {
  64. String[] actualpostId = new String[0];;
  65. if (t.getActualpostId() != null) {
  66. actualpostId = t.getActualpostId().split(",");
  67. }
  68. List<String> postStatu = new ArrayList<>();
  69. for (SysDictData p : actualpost) {
  70. int i = 0;
  71. for (String a : actualpostId) {
  72. if (p.getDictValue().equals(a)) {
  73. i = 1;
  74. }
  75. }
  76. if (t.getDesignatedPosition() != null) {
  77. String[] designatedPosition = t.getDesignatedPosition().split(",");
  78. for (String d : designatedPosition) {
  79. if (p.getDictValue().equals(d)) {
  80. i = 2;
  81. }
  82. }
  83. }
  84. if (i == 1) {
  85. postStatu.add("M");
  86. }else if (i == 2) {
  87. postStatu.add("|");
  88. }else {
  89. postStatu.add("-");
  90. }
  91. }
  92. if (t.getInvolvedMoc().equals("true")) {
  93. if (t.getDesignatedOther() != null) {
  94. String[] designatedOther = t.getDesignatedOther().split(",");
  95. for (String d : designatedOther) {
  96. if (d.equals("28")) {
  97. postStatu.set(postStatu.size() - 5, "(M)");
  98. }
  99. if (d.equals("30")) {
  100. postStatu.set(postStatu.size() - 4, "(M)");
  101. }
  102. if (d.equals("32")) {
  103. postStatu.set(postStatu.size() - 3, "(M)");
  104. }
  105. }
  106. }
  107. }
  108. t.setActualpost(postStatu);
  109. }
  110. return getDataTable(list);
  111. }
  112. /**
  113. * 导出装置培训计划列表
  114. */
  115. @PreAuthorize("@ss.hasPermi('training:regular:export')")
  116. @Log(title = "装置培训计划", businessType = BusinessType.EXPORT)
  117. @GetMapping("/export")
  118. public AjaxResult export(TTrainingRegular tTrainingRegular)
  119. {
  120. List<TTrainingRegular> list = tTrainingRegularService.selectTTrainingRegularList(tTrainingRegular);
  121. ExcelUtil<TTrainingRegular> util = new ExcelUtil<TTrainingRegular>(TTrainingRegular.class);
  122. return util.exportExcel(list, "regular");
  123. }
  124. /**
  125. * 获取装置培训计划详细信息
  126. */
  127. @PreAuthorize("@ss.hasPermi('training:regular:query')")
  128. @GetMapping(value = "/{id}")
  129. public AjaxResult getInfo(@PathVariable("id") Long id)
  130. {
  131. return AjaxResult.success(tTrainingRegularService.selectTTrainingRegularById(id));
  132. }
  133. /**
  134. * 新增装置培训计划
  135. */
  136. @PreAuthorize("@ss.hasPermi('training:regular:add')")
  137. @Log(title = "装置培训计划", businessType = BusinessType.INSERT)
  138. @PostMapping
  139. public AjaxResult add(@RequestBody TTrainingRegular tTrainingRegular)
  140. {
  141. int doInsert = tTrainingRegularService.insertTTrainingRegular(tTrainingRegular);
  142. logger.info("regular:" + tTrainingRegular);
  143. //如果确定计划日期新增关联内容
  144. if (tTrainingRegular.getNotPlan().equals("true")) {
  145. //新增培训计划定期类
  146. TTraining tTraining = new TTraining();
  147. tTraining.setTrainingType("10");
  148. tTraining.setYear(tTrainingRegular.getYear());
  149. tTraining.setCourse(tTrainingRegular.getItem());
  150. tTraining.setCourseid(tTrainingRegular.getCourseCode());
  151. tTraining.setDuration(tTrainingRegular.getHour());
  152. tTraining.setTrainer(tTrainingRegular.getLecturer());
  153. tTraining.setPosition(tTrainingRegular.getActualpostId());
  154. tTraining.setIsfinish(Long.parseLong("0"));
  155. tTraining.setDeptId(tTrainingRegular.getDeptId());
  156. tTraining.setRegularId(tTrainingRegular.getId());
  157. tTrainingService.insertTTraining(tTraining);
  158. Long trainingId = tTraining.getId();
  159. //新增人员-装置级关系
  160. // 参培岗位人员
  161. if (tTrainingRegular.getActualpostId() != null) {
  162. logger.info("参培岗位人员");
  163. TStaffmgr staffmgr = new TStaffmgr();
  164. staffmgr.setActualposts(tTrainingRegular.getActualpostId());
  165. List<TStaffmgr> staffmgrs = tStaffmgrService.selectAllTStaffmgrList(staffmgr);
  166. try {
  167. //判断离职
  168. if (!StringUtils.isEmpty(tTrainingRegular.getYear())) {
  169. Iterator<TStaffmgr> iterator = staffmgrs.iterator();
  170. while (iterator.hasNext()) {
  171. TStaffmgr t = iterator.next();
  172. if (t.getLeftDate() != null && t.getDelFlag() == 9){
  173. if (t.getLeftDate().getTime() - tTrainingRegular.getPlanTrainingdate().getTime() < 0l ) {
  174. logger.debug(t.getName() + "离职时间小于培训时间");
  175. iterator.remove();
  176. }
  177. }
  178. }
  179. }
  180. }catch (Exception e) {
  181. logger.error(e.toString());
  182. }
  183. for (TStaffmgr s : staffmgrs) {
  184. TTrainingDevice tTrainingDevice = new TTrainingDevice();
  185. tTrainingDevice.setStaffId(s.getStaffid());
  186. tTrainingDevice.setRegularId(trainingId);
  187. tTrainingDevice.setStartDate(tTrainingRegular.getPlanTrainingdate());
  188. tTrainingDevice.setSupplementary("0");
  189. tTrainingDeviceService.insertTTrainingDevice(tTrainingDevice);
  190. }
  191. }
  192. //指定岗位人员
  193. if (tTrainingRegular.getDesignatedStaff() != null) {
  194. logger.info("指定岗位人员");
  195. String[] designatedStaffs = tTrainingRegular.getDesignatedStaff().split(",");
  196. for (String staffId : designatedStaffs) {
  197. TTrainingDevice tTrainingDevice = new TTrainingDevice();
  198. tTrainingDevice.setStaffId(staffId);
  199. tTrainingDevice.setRegularId(trainingId);
  200. tTrainingDevice.setStartDate(tTrainingRegular.getPlanTrainingdate());
  201. tTrainingDevice.setSupplementary("0");
  202. tTrainingDeviceService.insertTTrainingDevice(tTrainingDevice);
  203. }
  204. }
  205. //涉及其他部门
  206. if (tTrainingRegular.getInvolvedMoc().equals("true")){
  207. logger.info("涉及MOC人员");
  208. TStaffmgr staffmgrMoc = new TStaffmgr();
  209. staffmgrMoc.setActualposts(tTrainingRegular.getDesignatedOther());
  210. List<TStaffmgr> staffmgrsMoc = tStaffmgrService.selectAllTStaffmgrList(staffmgrMoc);
  211. try {
  212. //判断离职
  213. if (!StringUtils.isEmpty(tTrainingRegular.getYear())) {
  214. Iterator<TStaffmgr> iterator = staffmgrsMoc.iterator();
  215. while (iterator.hasNext()) {
  216. TStaffmgr t = iterator.next();
  217. if (t.getLeftDate() != null && t.getDelFlag() == 9){
  218. if (t.getLeftDate().getTime() - tTrainingRegular.getPlanTrainingdate().getTime() > 0l ) {
  219. logger.debug(t.getName() + "离职时间小于培训时间");
  220. iterator.remove();
  221. }
  222. }
  223. }
  224. }
  225. }catch (Exception e) {
  226. logger.error(e.toString());
  227. }
  228. for (TStaffmgr s : staffmgrsMoc) {
  229. TTrainingDevice tTrainingDevice = new TTrainingDevice();
  230. tTrainingDevice.setStaffId(s.getStaffid());
  231. tTrainingDevice.setRegularId(trainingId);
  232. tTrainingDevice.setStartDate(tTrainingRegular.getPlanTrainingdate());
  233. tTrainingDevice.setSupplementary("0");
  234. tTrainingDeviceService.insertTTrainingDevice(tTrainingDevice);
  235. }
  236. }
  237. }
  238. return toAjax(doInsert);
  239. }
  240. /**
  241. * 修改装置培训计划
  242. */
  243. @PreAuthorize("@ss.hasPermi('training:regular:edit')")
  244. @Log(title = "装置培训计划", businessType = BusinessType.UPDATE)
  245. @PutMapping
  246. public AjaxResult edit(@RequestBody TTrainingRegular tTrainingRegular)
  247. {
  248. //如果确定计划日期新增关联内容
  249. if (tTrainingRegular.getNotPlan().equals("true")) {
  250. //查找跟这条培训计划相关联的装置级培训记录 修改其培训的年份,课程名称和课程代码
  251. TTraining t= tTrainingService.selectTTrainingByRegularId(tTrainingRegular.getId());
  252. t.setCourse(tTrainingRegular.getItem());
  253. t.setCourseid(tTrainingRegular.getCourseCode());
  254. t.setYear(tTrainingRegular.getYear());
  255. t.setDelFlag(tTrainingRegular.getDelFlag());
  256. int result= tTrainingService.updateTTraining(t );
  257. TTrainingRegular oldRegular = tTrainingRegularService.selectTTrainingRegularById(tTrainingRegular.getId());
  258. int i = 0;
  259. if (oldRegular.getActualpostId() != null) {
  260. if (!oldRegular.getActualpostId().equals(tTrainingRegular.getActualpostId())) {
  261. i = 1;
  262. }
  263. }else {
  264. if (tTrainingRegular.getActualpostId() != null) {
  265. i = 1;
  266. }
  267. }
  268. if (oldRegular.getDesignatedStaff() != null) {
  269. if (!oldRegular.getDesignatedStaff().equals(tTrainingRegular.getDesignatedStaff())) {
  270. i = 1;
  271. }
  272. }else {
  273. if (tTrainingRegular.getDesignatedStaff() != null) {
  274. i = 1;
  275. }
  276. }
  277. if (!oldRegular.getInvolvedMoc().equals(tTrainingRegular.getInvolvedMoc())) {
  278. i = 1;
  279. }
  280. if (i == 1) {
  281. logger.info("修改了需参培人员名单");
  282. TTraining training = tTrainingService.selectTTrainingByRegularId(tTrainingRegular.getId());
  283. training.setPosition(tTrainingRegular.getActualpostId());
  284. tTrainingService.updateTTraining(training);
  285. TStaffmgr staffmgrMoc = new TStaffmgr();
  286. staffmgrMoc.setActualposts(tTrainingRegular.getDesignatedOther());
  287. List<TStaffmgr> staffmgrsMoc = tStaffmgrService.selectTStaffmgrList(staffmgrMoc);
  288. try {
  289. //判断离职
  290. if (!StringUtils.isEmpty(tTrainingRegular.getYear())) {
  291. Iterator<TStaffmgr> iterator = staffmgrsMoc.iterator();
  292. while (iterator.hasNext()) {
  293. TStaffmgr staffmgr2 = iterator.next();
  294. if (staffmgr2.getLeftDate() != null && t.getDelFlag() == 9){
  295. if (staffmgr2.getLeftDate().getTime() - tTrainingRegular.getPlanTrainingdate().getTime() < 0l ) {
  296. logger.debug(staffmgr2.getName() + "离职时间小于培训时间");
  297. iterator.remove();
  298. }
  299. }
  300. }
  301. }
  302. }catch (Exception e) {
  303. logger.error(e.toString());
  304. }
  305. //如果存在条目
  306. if (oldRegular.getActualpostId() != null || oldRegular.getDesignatedStaff() != null || oldRegular.getInvolvedMoc().equals("true")) {
  307. TTrainingDevice tTrainingDevice = new TTrainingDevice();
  308. tTrainingDevice.setRegularId(training.getId());
  309. tTrainingDeviceService.deleteTTrainingDevice(tTrainingDevice);
  310. }
  311. //参培岗位人员
  312. if (tTrainingRegular.getActualpostId() != null) {
  313. logger.info("参培岗位人员");
  314. TStaffmgr staffmgr = new TStaffmgr();
  315. staffmgr.setActualposts(tTrainingRegular.getActualpostId());
  316. List<TStaffmgr> staffmgrs = tStaffmgrService.selectAllTStaffmgrList(staffmgr);
  317. try {
  318. //判断离职
  319. if (!StringUtils.isEmpty(tTrainingRegular.getYear())) {
  320. Iterator<TStaffmgr> iterator = staffmgrs.iterator();
  321. while (iterator.hasNext()) {
  322. TStaffmgr staffmgr1 = iterator.next();
  323. if (staffmgr1.getLeftDate() != null && t.getDelFlag() == 9){
  324. if (staffmgr1.getLeftDate().getTime() - tTrainingRegular.getPlanTrainingdate().getTime() < 0l ) {
  325. logger.debug(staffmgr1.getName() + "离职时间小于培训时间");
  326. iterator.remove();
  327. }
  328. }
  329. }
  330. }
  331. }catch (Exception e) {
  332. logger.error(e.toString());
  333. }
  334. for (TStaffmgr s : staffmgrs) {
  335. TTrainingDevice tTrainingDevice = new TTrainingDevice();
  336. tTrainingDevice.setStaffId(s.getStaffid());
  337. tTrainingDevice.setRegularId(training.getId());
  338. tTrainingDevice.setSupplementary("0");
  339. tTrainingDeviceService.insertTTrainingDevice(tTrainingDevice);
  340. }
  341. }
  342. //指定岗位人员
  343. if (tTrainingRegular.getDesignatedStaff() != null) {
  344. logger.info("指定岗位人员");
  345. String[] designatedStaffs = tTrainingRegular.getDesignatedStaff().split(",");
  346. for (String staffId : designatedStaffs) {
  347. TTrainingDevice tTrainingDevice = new TTrainingDevice();
  348. tTrainingDevice.setStaffId(staffId);
  349. tTrainingDevice.setRegularId(training.getId());
  350. tTrainingDevice.setSupplementary("0");
  351. tTrainingDeviceService.insertTTrainingDevice(tTrainingDevice);
  352. }
  353. }
  354. //涉及MOC人员
  355. if (tTrainingRegular.getInvolvedMoc().equals("true")){
  356. logger.info("涉及MOC人员");
  357. for (TStaffmgr s : staffmgrsMoc) {
  358. TTrainingDevice tTrainingDevice = new TTrainingDevice();
  359. tTrainingDevice.setStaffId(s.getStaffid());
  360. tTrainingDevice.setRegularId(training.getId());
  361. tTrainingDevice.setSupplementary("0");
  362. tTrainingDeviceService.insertTTrainingDevice(tTrainingDevice);
  363. }
  364. }
  365. }else {
  366. logger.info("没有修改参培人员名单");
  367. }
  368. }
  369. return toAjax(tTrainingRegularService.updateTTrainingRegular(tTrainingRegular));
  370. }
  371. /**
  372. * 删除装置培训计划
  373. */
  374. @PreAuthorize("@ss.hasPermi('training:regular:remove')")
  375. @Log(title = "装置培训计划", businessType = BusinessType.DELETE)
  376. @DeleteMapping("/{ids}")
  377. public AjaxResult remove(@PathVariable Long[] ids)
  378. {
  379. for (Long id : ids) {
  380. TTraining training = tTrainingService.selectTTrainingByRegularId(id); //查询培训跟踪计划
  381. if (training == null) {
  382. continue;
  383. }
  384. tTrainingService.deleteTTrainingById(training.getId());
  385. TTrainingRegular regular = tTrainingRegularService.selectTTrainingRegularById(id);
  386. if (regular.getActualpostId() != null || regular.getDesignatedStaff() != null || regular.getInvolvedMoc().equals("true")) {
  387. TTrainingDevice tTrainingDevice = new TTrainingDevice();
  388. tTrainingDevice.setRegularId(training.getId());
  389. tTrainingDeviceService.deleteTTrainingDevice(tTrainingDevice);
  390. }
  391. }
  392. return toAjax(tTrainingRegularService.deleteTTrainingRegularByIds(ids));
  393. }
  394. }