|
@@ -280,37 +280,64 @@ public class TTrainingbccRegularController extends BaseController
|
|
int currentYear = LocalDate.now().getYear();
|
|
int currentYear = LocalDate.now().getYear();
|
|
int resNum = 0;
|
|
int resNum = 0;
|
|
for (TTrainingMatrix matrix: list
|
|
for (TTrainingMatrix matrix: list
|
|
- ) {
|
|
|
|
|
|
+ ) {
|
|
int addFlag = 0;
|
|
int addFlag = 0;
|
|
- if ("每年一次".equals(matrix.getFrequency()) || "每年至少一次".equals(matrix.getFrequency())) {
|
|
|
|
- tr.setYear(String.valueOf(currentYear));
|
|
|
|
- tr.setItem(matrix.getItem());
|
|
|
|
- List<TTrainingbccRegular> regulars = tTrainingbccRegularService.selectTTrainingbccRegularList(tr);
|
|
|
|
- if (regulars.size() == 0) {
|
|
|
|
- addFlag = 1;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- if ("每年两次".equals(matrix.getFrequency()) || "每年2次".equals(matrix.getFrequency())) {
|
|
|
|
- tr.setYear(String.valueOf(currentYear));
|
|
|
|
- tr.setItem(matrix.getItem());
|
|
|
|
- List<TTrainingbccRegular> regulars = tTrainingbccRegularService.selectTTrainingbccRegularList(tr);
|
|
|
|
- if (regulars.size() < 2) {
|
|
|
|
- addFlag = 1;
|
|
|
|
|
|
+
|
|
|
|
+ // 新增:基于fq_year字段的判断逻辑
|
|
|
|
+ if (matrix.getFqYear() != null && !matrix.getFqYear().isEmpty()) {
|
|
|
|
+ try {
|
|
|
|
+ int fqYear = Integer.parseInt(matrix.getFqYear());
|
|
|
|
+ if (fqYear > 0) {
|
|
|
|
+ // 根据最新的一次regular记录来判断是否需要添加培训
|
|
|
|
+ tr.setItem(matrix.getItem());
|
|
|
|
+ // 查询该培训项目的所有regular记录,按年份排序(使用不带数据权限的方法)
|
|
|
|
+ List<TTrainingbccRegular> allRegulars = tTrainingbccRegularService.selectTTrainingbccRegularListWithoutScope(tr);
|
|
|
|
+
|
|
|
|
+ if (allRegulars.isEmpty()) {
|
|
|
|
+ // 如果没有任何记录,则添加培训
|
|
|
|
+ addFlag = 1;
|
|
|
|
+ logger.info("培训项目:" + matrix.getItem() + ",fq_year=" + fqYear +
|
|
|
|
+ ",无任何历史记录,需要添加培训");
|
|
|
|
+ } else {
|
|
|
|
+ // 找到最新的一次培训记录年份
|
|
|
|
+ int latestYear = allRegulars.stream()
|
|
|
|
+ .mapToInt(r -> {
|
|
|
|
+ try {
|
|
|
|
+ return Integer.parseInt(r.getYear());
|
|
|
|
+ } catch (NumberFormatException e) {
|
|
|
|
+ return 0;
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ .max()
|
|
|
|
+ .orElse(0);
|
|
|
|
+
|
|
|
|
+ // 计算距离最新培训的年数
|
|
|
|
+ int yearsSinceLastTraining = currentYear - latestYear;
|
|
|
|
+
|
|
|
|
+ logger.info("培训项目:" + matrix.getItem() + ",fq_year=" + fqYear +
|
|
|
|
+ ",最新培训年份=" + latestYear + ",距离最新培训年数=" + yearsSinceLastTraining);
|
|
|
|
+
|
|
|
|
+ // 如果距离最新培训的年数 >= fq_year,则需要添加培训
|
|
|
|
+ if (yearsSinceLastTraining >= fqYear) {
|
|
|
|
+ addFlag = 1;
|
|
|
|
+ logger.info("根据fq_year=" + fqYear + ",距离最新培训" + yearsSinceLastTraining +
|
|
|
|
+ "年,需要添加培训:" + matrix.getItem());
|
|
|
|
+ } else {
|
|
|
|
+ logger.info("培训项目:" + matrix.getItem() + ",fq_year=" + fqYear +
|
|
|
|
+ ",距离最新培训" + yearsSinceLastTraining + "年,无需添加培训");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } catch (NumberFormatException e) {
|
|
|
|
+ logger.warn("fq_year字段值不是有效数字:" + matrix.getFqYear() + ",培训项目:" + matrix.getItem());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- if ("每月一次".equals(matrix.getFrequency()) ) {
|
|
|
|
- tr.setYear(String.valueOf(currentYear));
|
|
|
|
- tr.setItem(matrix.getItem());
|
|
|
|
- List<TTrainingbccRegular> regulars0 = tTrainingbccRegularService.selectTTrainingbccRegularList(tr);
|
|
|
|
- tr.setPlanTrainingdate(new Date());
|
|
|
|
- List<TTrainingbccRegular> regulars = tTrainingbccRegularService.selectTTrainingbccRegularList(tr);
|
|
|
|
- if (regulars.size() == 0) {
|
|
|
|
- addFlag = 1;
|
|
|
|
- }
|
|
|
|
- if (regulars0.size() >= LocalDate.now().getMonthValue()) { //数量够了不需要增加了
|
|
|
|
- addFlag = 0;
|
|
|
|
- }
|
|
|
|
|
|
+
|
|
|
|
+ // 如果fq_year字段为空或无效,则不添加培训
|
|
|
|
+ if (addFlag == 0) {
|
|
|
|
+ logger.info("培训项目:" + matrix.getItem() + ",fq_year字段为空或无效,跳过添加");
|
|
}
|
|
}
|
|
|
|
+
|
|
if (addFlag == 1) {
|
|
if (addFlag == 1) {
|
|
TTrainingbccRegular tTrainingRegular = new TTrainingbccRegular();
|
|
TTrainingbccRegular tTrainingRegular = new TTrainingbccRegular();
|
|
tTrainingRegular.setDeptId(matrix.getDeptId());
|
|
tTrainingRegular.setDeptId(matrix.getDeptId());
|
|
@@ -326,99 +353,107 @@ public class TTrainingbccRegularController extends BaseController
|
|
|
|
|
|
logger.info("regular:" + tTrainingRegular);
|
|
logger.info("regular:" + tTrainingRegular);
|
|
tTrainingRegular.setDeptId(103l); //bcc专用
|
|
tTrainingRegular.setDeptId(103l); //bcc专用
|
|
- //新增培训计划定期类
|
|
|
|
- TTrainingbcc tTraining = new TTrainingbcc();
|
|
|
|
- tTraining.setTrainingType("10");
|
|
|
|
- tTraining.setYears(tTrainingRegular.getYear());
|
|
|
|
- tTraining.setCourse(tTrainingRegular.getItem());
|
|
|
|
- tTraining.setCourseid(tTrainingRegular.getCourseCode());
|
|
|
|
- tTraining.setDuration(tTrainingRegular.getHour());
|
|
|
|
- tTraining.setTrainer(tTrainingRegular.getLecturer());
|
|
|
|
- tTraining.setPosition(tTrainingRegular.getActualpostId());
|
|
|
|
- tTraining.setIsfinish(Long.parseLong("0"));
|
|
|
|
- tTraining.setDeptId(tTrainingRegular.getDeptId());
|
|
|
|
- tTraining.setRegularId(tTrainingRegular.getId());
|
|
|
|
- trainingbccService.insertTTrainingbcc(tTraining);
|
|
|
|
- Long trainingId = tTraining.getId();
|
|
|
|
- //新增人员-装置级关系
|
|
|
|
- // 参培岗位人员
|
|
|
|
- if (tTrainingRegular.getActualpostId() != null) {
|
|
|
|
- logger.info("参培岗位人员");
|
|
|
|
- TStaffmgr staffmgr = new TStaffmgr();
|
|
|
|
- staffmgr.setActualposts(tTrainingRegular.getActualpostId());
|
|
|
|
- staffmgr.setDeptId(tTrainingRegular.getDeptId());
|
|
|
|
- List<TStaffmgr> staffmgrs = tStaffmgrService.selectAllTStaffmgrList(staffmgr);
|
|
|
|
- try {
|
|
|
|
- //判断离职
|
|
|
|
- if (!StringUtils.isEmpty(tTrainingRegular.getYear())) {
|
|
|
|
- Iterator<TStaffmgr> iterator = staffmgrs.iterator();
|
|
|
|
- while (iterator.hasNext()) {
|
|
|
|
- TStaffmgr t = iterator.next();
|
|
|
|
- if (t.getLeftDate() != null && t.getDelFlag() == 9){
|
|
|
|
- if (t.getLeftDate().getTime() - tTrainingRegular.getPlanTrainingdate().getTime() < 0l ) {
|
|
|
|
- logger.debug(t.getName() + "离职时间小于培训时间");
|
|
|
|
- iterator.remove();
|
|
|
|
- }
|
|
|
|
|
|
+ //新增培训计划定期类
|
|
|
|
+ TTrainingbcc tTraining = new TTrainingbcc();
|
|
|
|
+ tTraining.setTrainingType("10");
|
|
|
|
+ tTraining.setYears(tTrainingRegular.getYear());
|
|
|
|
+ tTraining.setCourse(tTrainingRegular.getItem());
|
|
|
|
+ tTraining.setCourseid(tTrainingRegular.getCourseCode());
|
|
|
|
+ tTraining.setDuration(tTrainingRegular.getHour());
|
|
|
|
+ tTraining.setTrainer(tTrainingRegular.getLecturer());
|
|
|
|
+ tTraining.setPosition(tTrainingRegular.getActualpostId());
|
|
|
|
+ tTraining.setIsfinish(Long.parseLong("0"));
|
|
|
|
+ tTraining.setDeptId(tTrainingRegular.getDeptId());
|
|
|
|
+ tTraining.setRegularId(tTrainingRegular.getId());
|
|
|
|
+ trainingbccService.insertTTrainingbcc(tTraining);
|
|
|
|
+ Long trainingId = tTraining.getId();
|
|
|
|
+ //新增人员-装置级关系
|
|
|
|
+ // 参培岗位人员
|
|
|
|
+ if (tTrainingRegular.getActualpostId() != null) {
|
|
|
|
+ logger.info("参培岗位人员");
|
|
|
|
+ TStaffmgr staffmgr = new TStaffmgr();
|
|
|
|
+ staffmgr.setActualposts(tTrainingRegular.getActualpostId());
|
|
|
|
+ staffmgr.setDeptId(tTrainingRegular.getDeptId());
|
|
|
|
+ // 使用不带数据权限的查询方法,避免定时任务权限问题
|
|
|
|
+ List<TStaffmgr> staffmgrs = tStaffmgrService.selectAllTStaffmgrListWithoutScope(staffmgr);
|
|
|
|
+ try {
|
|
|
|
+ //判断离职
|
|
|
|
+ if (!StringUtils.isEmpty(tTrainingRegular.getYear())) {
|
|
|
|
+ Iterator<TStaffmgr> iterator = staffmgrs.iterator();
|
|
|
|
+ while (iterator.hasNext()) {
|
|
|
|
+ TStaffmgr t = iterator.next();
|
|
|
|
+ if (t.getLeftDate() != null && t.getDelFlag() == 9){
|
|
|
|
+ if (t.getLeftDate().getTime() - tTrainingRegular.getPlanTrainingdate().getTime() < 0l ) {
|
|
|
|
+ logger.debug(t.getName() + "离职时间小于培训时间");
|
|
|
|
+ iterator.remove();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- }catch (Exception e) {
|
|
|
|
- logger.error(e.toString());
|
|
|
|
- }
|
|
|
|
- for (TStaffmgr s : staffmgrs) {
|
|
|
|
- TTrainingbccDevice tTrainingDevice = new TTrainingbccDevice();
|
|
|
|
- tTrainingDevice.setStaffId(s.getStaffid());
|
|
|
|
- tTrainingDevice.setRegularId(trainingId);
|
|
|
|
- tTrainingDevice.setStartDate(tTrainingRegular.getPlanTrainingdate());
|
|
|
|
- tTrainingDevice.setSupplementary("0");
|
|
|
|
- trainingbccDeviceService.insertTTrainingbccDevice(tTrainingDevice);
|
|
|
|
}
|
|
}
|
|
|
|
+ }catch (Exception e) {
|
|
|
|
+ logger.error(e.toString());
|
|
}
|
|
}
|
|
- //指定岗位人员
|
|
|
|
- if (tTrainingRegular.getDesignatedStaff() != null) {
|
|
|
|
- logger.info("指定岗位人员");
|
|
|
|
- String[] designatedStaffs = tTrainingRegular.getDesignatedStaff().split(",");
|
|
|
|
- for (String staffId : designatedStaffs) {
|
|
|
|
- TTrainingbccDevice tTrainingDevice = new TTrainingbccDevice();
|
|
|
|
- tTrainingDevice.setStaffId(staffId);
|
|
|
|
- tTrainingDevice.setRegularId(trainingId);
|
|
|
|
- tTrainingDevice.setStartDate(tTrainingRegular.getPlanTrainingdate());
|
|
|
|
- tTrainingDevice.setSupplementary("0");
|
|
|
|
- trainingbccDeviceService.insertTTrainingbccDevice(tTrainingDevice);
|
|
|
|
- }
|
|
|
|
|
|
+ for (TStaffmgr s : staffmgrs) {
|
|
|
|
+ TTrainingbccDevice tTrainingDevice = new TTrainingbccDevice();
|
|
|
|
+ tTrainingDevice.setStaffId(s.getStaffid());
|
|
|
|
+ tTrainingDevice.setRegularId(trainingId);
|
|
|
|
+ tTrainingDevice.setStartDate(tTrainingRegular.getPlanTrainingdate());
|
|
|
|
+ tTrainingDevice.setSupplementary("0");
|
|
|
|
+ // 设置初始完成时间为空,表示尚未完成
|
|
|
|
+ tTrainingDevice.setFinishDate(null);
|
|
|
|
+ trainingbccDeviceService.insertTTrainingbccDevice(tTrainingDevice);
|
|
}
|
|
}
|
|
- //涉及其他部门
|
|
|
|
- if (tTrainingRegular.getInvolvedMoc().equals("true")){
|
|
|
|
- logger.info("涉及MOC人员");
|
|
|
|
- TStaffmgr staffmgrMoc = new TStaffmgr();
|
|
|
|
- staffmgrMoc.setActualposts(tTrainingRegular.getDesignatedOther());
|
|
|
|
- List<TStaffmgr> staffmgrsMoc = tStaffmgrService.selectAllTStaffmgrList(staffmgrMoc);
|
|
|
|
- try {
|
|
|
|
- //判断离职
|
|
|
|
- if (!StringUtils.isEmpty(tTrainingRegular.getYear())) {
|
|
|
|
- Iterator<TStaffmgr> iterator = staffmgrsMoc.iterator();
|
|
|
|
- while (iterator.hasNext()) {
|
|
|
|
- TStaffmgr t = iterator.next();
|
|
|
|
- if (t.getLeftDate() != null && t.getDelFlag() == 9){
|
|
|
|
- if (t.getLeftDate().getTime() - tTrainingRegular.getPlanTrainingdate().getTime() > 0l ) {
|
|
|
|
- logger.debug(t.getName() + "离职时间小于培训时间");
|
|
|
|
- iterator.remove();
|
|
|
|
- }
|
|
|
|
|
|
+ }
|
|
|
|
+ //指定岗位人员
|
|
|
|
+ if (tTrainingRegular.getDesignatedStaff() != null) {
|
|
|
|
+ logger.info("指定岗位人员");
|
|
|
|
+ String[] designatedStaffs = tTrainingRegular.getDesignatedStaff().split(",");
|
|
|
|
+ for (String staffId : designatedStaffs) {
|
|
|
|
+ TTrainingbccDevice tTrainingDevice = new TTrainingbccDevice();
|
|
|
|
+ tTrainingDevice.setStaffId(staffId);
|
|
|
|
+ tTrainingDevice.setRegularId(trainingId);
|
|
|
|
+ tTrainingDevice.setStartDate(tTrainingRegular.getPlanTrainingdate());
|
|
|
|
+ tTrainingDevice.setSupplementary("0");
|
|
|
|
+ // 设置初始完成时间为空,表示尚未完成
|
|
|
|
+ tTrainingDevice.setFinishDate(null);
|
|
|
|
+ trainingbccDeviceService.insertTTrainingbccDevice(tTrainingDevice);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ //涉及其他部门
|
|
|
|
+ if (tTrainingRegular.getInvolvedMoc().equals("true")){
|
|
|
|
+ logger.info("涉及MOC人员");
|
|
|
|
+ TStaffmgr staffmgrMoc = new TStaffmgr();
|
|
|
|
+ staffmgrMoc.setActualposts(tTrainingRegular.getDesignatedOther());
|
|
|
|
+ // 使用不带数据权限的查询方法,避免定时任务权限问题
|
|
|
|
+ List<TStaffmgr> staffmgrsMoc = tStaffmgrService.selectAllTStaffmgrListWithoutScope(staffmgrMoc);
|
|
|
|
+ try {
|
|
|
|
+ //判断离职
|
|
|
|
+ if (!StringUtils.isEmpty(tTrainingRegular.getYear())) {
|
|
|
|
+ Iterator<TStaffmgr> iterator = staffmgrsMoc.iterator();
|
|
|
|
+ while (iterator.hasNext()) {
|
|
|
|
+ TStaffmgr t = iterator.next();
|
|
|
|
+ if (t.getLeftDate() != null && t.getDelFlag() == 9){
|
|
|
|
+ if (t.getLeftDate().getTime() - tTrainingRegular.getPlanTrainingdate().getTime() > 0l ) {
|
|
|
|
+ logger.debug(t.getName() + "离职时间小于培训时间");
|
|
|
|
+ iterator.remove();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- }catch (Exception e) {
|
|
|
|
- logger.error(e.toString());
|
|
|
|
- }
|
|
|
|
- for (TStaffmgr s : staffmgrsMoc) {
|
|
|
|
- TTrainingbccDevice tTrainingDevice = new TTrainingbccDevice();
|
|
|
|
- tTrainingDevice.setStaffId(s.getStaffid());
|
|
|
|
- tTrainingDevice.setRegularId(trainingId);
|
|
|
|
- tTrainingDevice.setStartDate(tTrainingRegular.getPlanTrainingdate());
|
|
|
|
- tTrainingDevice.setSupplementary("0");
|
|
|
|
- trainingbccDeviceService.insertTTrainingbccDevice(tTrainingDevice);
|
|
|
|
}
|
|
}
|
|
|
|
+ }catch (Exception e) {
|
|
|
|
+ logger.error(e.toString());
|
|
|
|
+ }
|
|
|
|
+ for (TStaffmgr s : staffmgrsMoc) {
|
|
|
|
+ TTrainingbccDevice tTrainingDevice = new TTrainingbccDevice();
|
|
|
|
+ tTrainingDevice.setStaffId(s.getStaffid());
|
|
|
|
+ tTrainingDevice.setRegularId(trainingId);
|
|
|
|
+ tTrainingDevice.setStartDate(tTrainingRegular.getPlanTrainingdate());
|
|
|
|
+ tTrainingDevice.setSupplementary("0");
|
|
|
|
+ // 设置初始完成时间为空,表示尚未完成
|
|
|
|
+ tTrainingDevice.setFinishDate(null);
|
|
|
|
+ trainingbccDeviceService.insertTTrainingbccDevice(tTrainingDevice);
|
|
}
|
|
}
|
|
|
|
+ }
|
|
resNum ++;
|
|
resNum ++;
|
|
}
|
|
}
|
|
}
|
|
}
|