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` = #{year}
+
+
+ AND lf.type = #{type}
+
+ AND lf.`FactorCnt` LIKE #{condition}
+ AND lf.`del_state` = 1
+ 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;
+ }
+
}