diff --git a/inventory-dao/src/main/java/com/rzyc/bean/user/dto/ChangeFactorDto.java b/inventory-dao/src/main/java/com/rzyc/bean/user/dto/ChangeFactorDto.java index 7c1750c..4f31e66 100644 --- a/inventory-dao/src/main/java/com/rzyc/bean/user/dto/ChangeFactorDto.java +++ b/inventory-dao/src/main/java/com/rzyc/bean/user/dto/ChangeFactorDto.java @@ -16,16 +16,21 @@ public class ChangeFactorDto { @ApiModelProperty(value = "岗位id",required = true) private String listperformid; - @NotNull(message = "年份不能为空") - @ApiModelProperty(value = "年份",required = true) + @ApiModelProperty(value = "年份") private String sysyear; + @ApiModelProperty("开始时间") + private String startTime; + + @ApiModelProperty("结束时间") + private String endTime; + @NotNull(message = "清单内容不能为空") @ApiModelProperty(value = "清单内容",required = true) private String factorcnt; @NotNull(message = "考核指标不能为空") - @ApiModelProperty(value = "考核指标 1:每年 2:每半年 4:每季度 12:每月",required = true) + @ApiModelProperty(value = "考核指标 1:每年 2:每半年 4:每季度 12:每月 0:自定义",required = true) private Integer checkstandard; /** @@ -35,6 +40,21 @@ public class ChangeFactorDto { @ApiModelProperty(value = "频率",required = true) private Integer frequency; + public String getStartTime() { + return startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + + public String getEndTime() { + return endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } public String getListfactorid() { return listfactorid; diff --git a/inventory-dao/src/main/java/com/rzyc/enums/Checkstandard.java b/inventory-dao/src/main/java/com/rzyc/enums/Checkstandard.java new file mode 100644 index 0000000..a70558d --- /dev/null +++ b/inventory-dao/src/main/java/com/rzyc/enums/Checkstandard.java @@ -0,0 +1,31 @@ +package com.rzyc.enums; + +/** + * 考核指标 1:每年 2:每半年 4:每季度 12:每月 0:自定义 + * @version v1.0 + * @author dong + * @date 2023/11/1 10:04 + */ +public enum Checkstandard { + + YEAR(1), + HALF_YEAR(2), + QUARTER(4), + MONTH(12), + CUSTOM(0) + ; + + private Integer standard; + + Checkstandard(Integer standard) { + this.standard = standard; + } + + public Integer getStandard() { + return standard; + } + + public void setStandard(Integer standard) { + this.standard = standard; + } +} diff --git a/inventory-dao/src/main/java/com/rzyc/model/user/ListFactor.java b/inventory-dao/src/main/java/com/rzyc/model/user/ListFactor.java index 5850818..14f7022 100644 --- a/inventory-dao/src/main/java/com/rzyc/model/user/ListFactor.java +++ b/inventory-dao/src/main/java/com/rzyc/model/user/ListFactor.java @@ -38,11 +38,17 @@ public class ListFactor implements Serializable { private String sysyear; + @ApiModelProperty("清单开始时间") + private Date startTime; + + @ApiModelProperty("清单结束时间") + private Date endTime; + @ApiModelProperty("清单内容") private String factorcnt; @NotNull(message = "考核指标不能为空") - @ApiModelProperty(value = "考核指标 1:每年 2:每半年 4:每季度 12:每月",required = true) + @ApiModelProperty(value = "考核指标 1:每年 2:每半年 4:每季度 12:每月 0:自定义",required = true) private Integer checkstandard; /** @@ -111,6 +117,21 @@ public class ListFactor implements Serializable { */ private Integer delState; + public Date getStartTime() { + return startTime; + } + + public void setStartTime(Date startTime) { + this.startTime = startTime; + } + + public Date getEndTime() { + return endTime; + } + + public void setEndTime(Date endTime) { + this.endTime = endTime; + } public Integer getDelState() { return delState; diff --git a/inventory-dao/src/main/resources/mapper/OATaskMapper.xml b/inventory-dao/src/main/resources/mapper/OATaskMapper.xml index 53c7401..751246e 100644 --- a/inventory-dao/src/main/resources/mapper/OATaskMapper.xml +++ b/inventory-dao/src/main/resources/mapper/OATaskMapper.xml @@ -334,7 +334,7 @@ and lf.del_state = 1 and ot.del_state = 1 AND lf.`ListPerformId` = #{listPerformId} - AND lf.`SysYear` = #{sysYear} + and find_in_set(#{sysYear},lf.`SysYear`) AND ot.IsFinish = #{isFinish} diff --git a/inventory-dao/src/main/resources/mapper/user/ListFactorMapper.xml b/inventory-dao/src/main/resources/mapper/user/ListFactorMapper.xml index fb4f47e..6626c20 100644 --- a/inventory-dao/src/main/resources/mapper/user/ListFactorMapper.xml +++ b/inventory-dao/src/main/resources/mapper/user/ListFactorMapper.xml @@ -10,6 +10,8 @@ + + @@ -128,7 +130,7 @@ insert into ListFactor (ListFactorId, ListPerformId, SysUserId, ChkbillName, ListNum, SysRemark, - SortId, SysYear, yellowAlert, + SortId, SysYear,start_time, end_time,yellowAlert, redAlert, type, factorIsFinish, @@ -141,6 +143,8 @@ #{chkbillname,jdbcType=VARCHAR}, #{listnum,jdbcType=VARCHAR}, #{sysremark,jdbcType=VARCHAR}, #{sortid,jdbcType=INTEGER}, #{sysyear,jdbcType=VARCHAR}, + #{startTime,jdbcType=TIMESTAMP}, + #{endTime,jdbcType=TIMESTAMP}, #{yellowAlert,jdbcType=VARCHAR}, #{redAlert,jdbcType=VARCHAR}, #{type,jdbcType=INTEGER}, @@ -479,6 +483,8 @@ + + @@ -507,11 +513,27 @@ LEFT JOIN list_relation lr ON lf.ListFactorId = lr.`target_id` AND lr.`target_type` = 1 LEFT JOIN listdetail ld ON lr.`detail_id` = ld.`ListDetailId` AND ld.`del_state` = 1 WHERE lf.`ListPerformId` = #{listPerformId} - and lf.SysYear = #{time} + + and FIND_IN_SET(#{time},lf.SysYear) + and lf.del_state = 1 ORDER BY lf.`SortId` ASC ,lf.`ListNum` ASC + + + - SELECT * FROM ListFactor lf WHERE lf.`ListPerformId` = #{listPerformId} - and lf.SysYear = #{time} + SELECT * FROM ListFactor lf + WHERE lf.`ListPerformId` = #{listPerformId} + AND FIND_IN_SET(#{time},lf.SysYear) and lf.del_state = 1 @@ -602,7 +625,7 @@ SELECT * FROM ListFactor lf WHERE lf.`ListPerformId` = #{listPerformId} - AND lf.`SysYear` = #{year} + AND FIND_IN_SET(#{year},lf.SysYear) AND lf.type = #{type} @@ -612,6 +635,21 @@ ORDER BY lf.`SortId` ASC ,lf.`ListNum` ASC + + + update ListFactor diff --git a/inventory-gov/src/main/java/com/rzyc/controller/BaseController.java b/inventory-gov/src/main/java/com/rzyc/controller/BaseController.java index 8e8a4a8..20c4a2c 100644 --- a/inventory-gov/src/main/java/com/rzyc/controller/BaseController.java +++ b/inventory-gov/src/main/java/com/rzyc/controller/BaseController.java @@ -1502,7 +1502,11 @@ public class BaseController { //需完成数量 Integer factorNum = 0; - factorNum = listFactor.getCheckstandard() * listFactor.getFrequency(); + if(Checkstandard.CUSTOM.getStandard() == listFactor.getCheckstandard()){ + factorNum = listFactor.getFrequency(); + }else{ + factorNum = listFactor.getCheckstandard() * listFactor.getFrequency(); + } total+=factorNum; @@ -1989,7 +1993,12 @@ public class BaseController { System.out.println("Frequency -> "+listFactor.getFrequency()); //需要完成的总次数 - Integer factorTotal = listFactor.getCheckstandard() * listFactor.getFrequency(); + Integer factorTotal = 0; + if(Checkstandard.CUSTOM.getStandard() == listFactor.getCheckstandard()){ + factorTotal = listFactor.getFrequency(); + }else{ + factorTotal = listFactor.getCheckstandard() * listFactor.getFrequency(); + } listFactor.setFactorTotal(factorTotal); //已完成次数 @@ -2495,14 +2504,16 @@ public class BaseController { public void addFactorTask(ListFactor listFactor,String sysUserId)throws Exception{ //任务列表 List oaTasks = new ArrayList<>(); - if(1 == listFactor.getCheckstandard()){ + if(Checkstandard.YEAR.getStandard() == listFactor.getCheckstandard()){ oaTasks = this.getYearTask(listFactor,sysUserId); - }else if(2 == listFactor.getCheckstandard()){ + }else if(Checkstandard.HALF_YEAR.getStandard() == listFactor.getCheckstandard()){ oaTasks = this.getHalfYearTask(listFactor,sysUserId); - }else if(4 == listFactor.getCheckstandard()){ + }else if(Checkstandard.QUARTER.getStandard() == listFactor.getCheckstandard()){ oaTasks = this.getQuarterTask(listFactor,sysUserId); - }else if(12 == listFactor.getCheckstandard()){ + }else if(Checkstandard.MONTH.getStandard() == listFactor.getCheckstandard()){ oaTasks = this.getMonthTask(listFactor,sysUserId); + }else if(Checkstandard.CUSTOM.getStandard() == listFactor.getCheckstandard()){ + oaTasks = this.getCustomTask(listFactor,sysUserId); } if(null != oaTasks && oaTasks.size() > 0){ @@ -2588,6 +2599,35 @@ public class BaseController { return oaTasks; } + /** + * 获取自定义任务 + * @return + * @throws Exception + */ + private List getCustomTask(ListFactor listFactor,String sysUserId)throws Exception{ + List oaTasks = new ArrayList<>(); + OATask oaTask = new OATask(); + String startTime = DateUtils.parseDate2String(listFactor.getStartTime(),"yyyy-MM-dd"); + String endTime = DateUtils.parseDate2String(listFactor.getEndTime(),"yyyy-MM-dd"); + + String subject = "工作任务("+startTime+"至"+endTime+"):"+listFactor.getFactorcnt(); + oaTask.setSubject(subject); + oaTask.setFrequency(0l); + oaTask.setIsfinish("否"); + oaTask.setOtcid(listFactor.getListfactorid()); + oaTask.setOataskid(RandomNumber.getUUid()); + oaTask.setTasktype("履职任务"); + oaTask.setStartdate(listFactor.getStartTime()); + oaTask.setPlanenddate(listFactor.getEndTime()); + oaTask.setDelState(DelState.NOT_DEL.getState()); + oaTask.setCreatedby(sysUserId); + oaTask.setCreatedon(new Date()); + oaTask.setModifiedby(sysUserId); + oaTask.setModifiedon(new Date()); + oaTasks.add(oaTask); + return oaTasks; + } + /** * 获取年任务信息 * @return diff --git a/inventory-gov/src/main/java/com/rzyc/controller/PcPersonalController.java b/inventory-gov/src/main/java/com/rzyc/controller/PcPersonalController.java index 8eec798..716b49e 100644 --- a/inventory-gov/src/main/java/com/rzyc/controller/PcPersonalController.java +++ b/inventory-gov/src/main/java/com/rzyc/controller/PcPersonalController.java @@ -36,6 +36,8 @@ import com.rzyc.model.user.*; import io.swagger.annotations.*; import org.apache.catalina.User; import org.apache.commons.beanutils.BeanUtils; +import org.apache.commons.beanutils.ConvertUtils; +import org.apache.commons.beanutils.converters.DateConverter; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.stereotype.Controller; import org.springframework.transaction.annotation.Transactional; @@ -2088,9 +2090,12 @@ public class PcPersonalController extends com.rzyc.controller.BaseController { @ApiOperation(value = "修改新增履职清单", notes = "修改新增履职清单") @PostMapping(value = "changeFactor") @ResponseBody + @Transactional public SingleResult changeFactor(@Valid ChangeFactorDto changeFactorDto)throws Exception{ SingleResult result = new SingleResult<>(); ListFactor listFactor = new ListFactor(); + + ConvertUtils.register(new DateConverter(null), java.util.Date.class); BeanUtils.copyProperties(listFactor,changeFactorDto); String userId = getUserId(); @@ -2100,6 +2105,9 @@ public class PcPersonalController extends com.rzyc.controller.BaseController { listFactor.setCreatedon(new Date()); listFactor.setModifiedon(new Date()); + listFactor.setStartTime(DateUtils.parseString2Date(changeFactorDto.getStartTime(),"yyyy-MM-dd")); + listFactor.setEndTime(DateUtils.parseString2Date(changeFactorDto.getEndTime(),"yyyy-MM-dd")); + //清单提醒时间 listFactor.setYellowAlert(5+""); listFactor.setRedAlert(2+""); @@ -2107,6 +2115,22 @@ public class PcPersonalController extends com.rzyc.controller.BaseController { //清单类型 listFactor.setType(1); + if(StringUtils.isNotBlank(changeFactorDto.getSysyear())){ + //不跨年的清单 + listFactor.setSysyear(changeFactorDto.getSysyear()); + }else{ + //跨年的清单 + String sysyear = ""; + List yearList = DateUtils.getYearBetweenDate(changeFactorDto.getStartTime(),changeFactorDto.getEndTime()); + for (String str : yearList){ + if(StringUtils.isNotBlank(sysyear)){ + sysyear = sysyear +","+str; + }else{ + sysyear = str; + } + } + listFactor.setSysyear(sysyear); + } //数据初始 diff --git a/utils/src/main/java/com/common/utils/DateUtils.java b/utils/src/main/java/com/common/utils/DateUtils.java index d4ec3b1..7eb4adc 100644 --- a/utils/src/main/java/com/common/utils/DateUtils.java +++ b/utils/src/main/java/com/common/utils/DateUtils.java @@ -1,5 +1,7 @@ package com.common.utils; +import com.alibaba.fastjson.JSONArray; + import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; @@ -348,8 +350,8 @@ public final class DateUtils { try { int month = Calendar.getInstance().get(Calendar.MONTH) + 1; System.out.println(month); - String result = DateUtils.getMonthLastDay(2019,2)+""; - System.out.println(result); + List yearList = getYearBetweenDate("2021-01-01","2023-05-01"); + System.out.println("yearList --> "+JSONArray.toJSONString(yearList)); }catch (Exception e){ e.printStackTrace(); } @@ -525,4 +527,41 @@ public final class DateUtils { return cal.getTime(); } + /** + * 获取两个日期之间的所有年 + * @version v1.0 + * @author dong + * @date 2023/11/1 9:51 + */ + public static List getYearBetweenDate(String startTime, String endTime) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy"); + // 声明保存日期集合 + List list = new ArrayList<>(); + try { + // 转化成日期类型 + Date startDate = sdf.parse(startTime); + Date endDate = sdf.parse(endTime); + + //用Calendar 进行日期比较判断 + Calendar calendar = Calendar.getInstance(); + while (startDate.getTime() <= endDate.getTime()) { + + // 把日期添加到集合 + list.add(sdf.format(startDate)); + + // 设置日期 + calendar.setTime(startDate); + + //把年数增加 1 + calendar.add(Calendar.YEAR, 1); + + // 获取增加后的日期 + startDate = calendar.getTime(); + } + } catch (Exception e) { + e.printStackTrace(); + } + return list; + } + }