Merge remote-tracking branch 'origin/master'

This commit is contained in:
梁琦涛
2023-11-08 11:41:20 +08:00
13 changed files with 147 additions and 46 deletions
@@ -20,5 +20,6 @@
<if test="processInstanceId != null and processInstanceId != ''">
group by pn.id
</if>
ORDER BY pn.sort
</select>
</mapper>
@@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.util.Date;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
@@ -66,6 +68,16 @@ public class ProcessDraft implements Serializable {
*/
private String projectId;
/**流程审批信息-备注*/
@ApiModelProperty(value = "流程审批信息-备注")
private java.lang.String handleText;
/**流程审批信息-附件*/
@ApiModelProperty(value = "流程审批信息-附件")
private java.lang.String handleFile;
/**用户id*/
@ApiModelProperty(value = "用户id")
private java.lang.String userId;
@TableField(exist = false)
private static final long serialVersionUID = 1L;
}
@@ -2,9 +2,7 @@ package com.jero.modules.activiti.process.fb.controller;
import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.util.MessageUtils;
import com.jero.modules.activiti.process.common.entity.TransferVO;
import com.jero.modules.activiti.process.esInitChange.entity.vo.InitChangeDataVO;
import com.jero.modules.activiti.process.fb.entity.ProcessFbEntryChange;
import com.jero.modules.activiti.process.fb.service.IProcessFbEntryChangeService;
import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO;
@@ -33,30 +31,11 @@ public class ProcessFbEntryChangeController extends JeroController<ProcessFbEntr
@Autowired
private IProcessFbEntryChangeService processFbEntryChangeService;
@AutoLog(value = "标准法规入库_变更流程-添加业务信息")
@ApiOperation(value = "标准法规入库_变更流程-添加业务信息", notes = "标准法规入库_变更流程-添加业务信息")
@PostMapping(value = "/addBusinessInfo")
public Result<T> addBusinessInfo(@Validated @RequestBody ProcessFbEntryChange processFbEntryChange) {
processFbEntryChangeService.addBusinessInfo(processFbEntryChange);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
@AutoLog(value = "标准法规入库_变更流程-编辑业务信息")
@ApiOperation(value = "标准法规入库_变更流程-编辑业务信息", notes = "标准法规入库_变更流程-编辑业务信息")
@PostMapping(value = "/editBusinessInfo")
public Result<T> edit(@Validated @RequestBody ProcessFbEntryChange processFbEntryChange) {
processFbEntryChangeService.editBusinessInfo(processFbEntryChange);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
@AutoLog(value = "标准法规入库_变更流程-通过id查询")
@ApiOperation(value = "标准法规入库_变更流程-通过id查询", notes = "标准法规入库_变更流程-通过id查询")
@GetMapping(value = "/queryBusinessInfo")
public Result<ProcessFbEntryChange> queryBusinessInfo(@RequestParam(name = "id") String id) {
ProcessFbEntryChange processFbEntryChange = processFbEntryChangeService.queryBusinessInfo(id);
if (processFbEntryChange == null) {
return Result.error(ResultCommon.NO_CORRESPONDING_DATA_FOUND);
}
return Result.OK(processFbEntryChange);
}
@@ -95,7 +74,7 @@ public class ProcessFbEntryChangeController extends JeroController<ProcessFbEntr
@AutoLog(value = "流程处理-保存为草稿")
@ApiOperation(value = "流程处理-保存为草稿", notes = "流程处理-保存为草稿")
@PostMapping(value = "/saveToDraft")
public Result<T> saveToDraft(@Validated @RequestBody ProcessInfoVO processInfoVO) {
public Result<T> saveToDraft(@Validated @RequestBody ProcessInfoVO<ProcessFbEntryChange> processInfoVO) {
processFbEntryChangeService.saveToDraft(processInfoVO);
return Result.OK();
}
@@ -59,5 +59,5 @@ public interface IProcessFbEntryChangeService extends IService<ProcessFbEntryCha
* @Date: 2023/11/3 10:58
* @Description: 保存为草稿
**/
void saveToDraft(ProcessInfoVO processInfoVO);
void saveToDraft(ProcessInfoVO<ProcessFbEntryChange> processInfoVO);
}
@@ -163,7 +163,21 @@ public class ProcessFbEntryChangeServiceImpl extends ServiceImpl<ProcessFbEntryC
* @Description: 保存为草稿
**/
@Override
public void saveToDraft(ProcessInfoVO processInfoVO) {
public void saveToDraft(ProcessInfoVO<ProcessFbEntryChange> processInfoVO) {
// 业务信息
ProcessFbEntryChange businessInfoDTO = processInfoVO.getBusinessInfoDTO();
if (StringUtils.isBlank(businessInfoDTO.getId())) { // 如果是发起时保存
String businessId = UUIDUtils.randomUUID20();
businessInfoDTO.setId(businessId);
addBusinessInfo(businessInfoDTO);
} else { // 如果是审批时保存
processInfoVO.setBusinessId(businessInfoDTO.getId());
editBusinessInfo(businessInfoDTO);
}
// 流程信息
BasicProcessInfoDTO basicProcessInfoDTO = processInfoVO.getBasicProcessInfoDTO();
basicProcessInfoDTO.setProcessType(ProcessTypeEnum.FB_ENTRY_CHANGE.getValue()); // 流程类型
processHandleService.saveToDraft(processInfoVO);
}
}
@@ -1,11 +1,14 @@
package com.jero.modules.activiti.process.fb.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.jero.common.exception.JeroBootException;
import com.jero.modules.activiti.entity.ProcessAll;
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import com.jero.modules.activiti.enums.CommitFlagEnum;
import com.jero.modules.activiti.enums.FinishFlagEnum;
import com.jero.modules.activiti.enums.ProcessTypeEnum;
import com.jero.modules.activiti.process.common.entity.ProcessDraft;
import com.jero.modules.activiti.process.common.service.ProcessDraftService;
import com.jero.modules.activiti.process.fb.dto.BasicProcessInfoDTO;
import com.jero.modules.activiti.process.fb.dto.BasicTaskInfoDTO;
import com.jero.modules.activiti.process.fb.dto.ProcessDTO;
@@ -55,6 +58,8 @@ public class ProcessHandleServiceImpl implements IProcessHandleService {
private ProcessApprovalRecordService processApprovalRecordService; // 任务审批表
@Resource
private ProcessNodeLinkService processNodeLinkService; // 流程实例节点关联用户表
@Resource
private ProcessDraftService processDraftService; // 流程草稿表
/**
* @Author: liao
@@ -222,7 +227,24 @@ public class ProcessHandleServiceImpl implements IProcessHandleService {
**/
@Override
public void saveToDraft(ProcessInfoVO processInfoVO) {
BasicProcessInfoDTO basicProcessInfoDTO = processInfoVO.getBasicProcessInfoDTO();
BasicTaskInfoDTO basicTaskInfoDTO = processInfoVO.getBasicTaskInfoDTO();
// 添加前先进行旧数据删除
LambdaQueryWrapper<ProcessDraft> deleteWrapper = new LambdaQueryWrapper<>();
deleteWrapper.eq(ProcessDraft::getProjectId, processInfoVO.getBusinessId());
deleteWrapper.eq(ProcessDraft::getUserId, CurrentUserUtil.getId());
processDraftService.remove(deleteWrapper);
ProcessDraft processDraft = new ProcessDraft();
processDraft.setProjectId(processInfoVO.getBusinessId()); // 业务id
processDraft.setProcessInstanceId(basicProcessInfoDTO.getProcessInstanceId()); // 流程实例id
processDraft.setPrcName(basicProcessInfoDTO.getProcessName()); // 流程名称
processDraft.setPrcType(basicProcessInfoDTO.getProcessType()); // 流程类型
processDraft.setHandleText(basicTaskInfoDTO.getHandleText()); // 流程审批信息-备注
processDraft.setHandleFile(basicTaskInfoDTO.getHandleFile()); // 流程审批信息-附件
processDraft.setUserId(CurrentUserUtil.getId()); // 用户id
processDraftService.save(processDraft);
}
/**
@@ -3,6 +3,7 @@ package com.jero.modules.laws.enterprise.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.aspect.annotation.Translation;
import com.jero.common.system.base.controller.JeroController;
import com.jero.common.util.MessageUtils;
import com.jero.modules.laws.common.constant.ResultCommon;
@@ -49,7 +50,6 @@ public class EnterpriseStandardRecheckPlanController extends JeroController<Ente
public Result<?> queryPageList(ESQueryCommonDTO esDeclare,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize) {
IPage<EnterpriseStandardRecheckPlanVo> pageList= recheckPlanService.queryPageList(esDeclare, pageNo, pageSize);
return Result.OK(pageList);
return Result.OK(recheckPlanService.queryPageList(esDeclare, pageNo, pageSize));
}
}
@@ -58,6 +58,10 @@ public class EnterpriseStandardRecheckPlan implements Serializable {
@ApiModelProperty(value = "所属部门")
private String orgCode;
/**企标Id*/
@ApiModelProperty(value = "企标Id")
private String standardId;
/**企标编号*/
@ApiModelProperty(value = "企标编号")
private String standardNo;
@@ -6,6 +6,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@@ -18,6 +19,7 @@ import java.util.Date;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
public class EnterpriseStandardRecheckPlanVo {
/**主键ID*/
@@ -51,9 +53,11 @@ public class EnterpriseStandardRecheckPlanVo {
/**主起草人*/
@ApiModelProperty(value = "主起草人")
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname")
private String mainDraftingUser;
/**主起草单位*/
@ApiModelProperty(value = "主起草单位")
@Dict(dictTable = "sys_depart", dicCode = "id", dicText = "depart_name")
private String mainDraftingUnit;
}
@@ -0,0 +1,73 @@
package com.jero.modules.laws.enterprise.job;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.jero.common.constant.enums.YesOrNoEnum;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardRecheckPlan;
import com.jero.modules.laws.enterprise.service.EnterpriseStandardRecheckPlanService;
import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard;
import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService;
import lombok.extern.slf4j.Slf4j;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import javax.annotation.Resource;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @author: Mzaxd
* @Date: 2023/11/8 9:11
*/
@Slf4j
public class ESRecheckPlanJob implements Job {
@Resource
private EnterpriseStandardRecheckPlanService esRecheckPlanService;
@Resource
private ILawsEnterpriseStandardService esService;
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
List<LawsEnterpriseStandard> allEs = esService.list(new LambdaQueryWrapper<LawsEnterpriseStandard>().eq(LawsEnterpriseStandard::getDelFlag, YesOrNoEnum.NO.getValue()));
List<EnterpriseStandardRecheckPlan> recheckPlanList = esRecheckPlanService.list();
Map<String, List<EnterpriseStandardRecheckPlan>> recheckPlanMap = recheckPlanList.stream().collect(Collectors.groupingBy(EnterpriseStandardRecheckPlan::getId));
for (LawsEnterpriseStandard es : allEs) {
// 根据企标发布日期判断是否当前已经达到35个月
// 请确保es.getReleaseDate()返回的是Date类型的实例
ZonedDateTime releaseZonedDateTime = es.getReleaseDate().toInstant()
.atZone(ZoneId.of("Asia/Shanghai"));
LocalDate releaseLocalDate = releaseZonedDateTime.toLocalDate();
LocalDate now = LocalDate.now();
// 36个月的复审日期
LocalDate recheckDate36Months = releaseLocalDate.plusMonths(36);
LocalDate plusMonths = releaseLocalDate.plusMonths(35);
if (plusMonths.isBefore(now)) {
// 判断是否已经存在复审计划
List<EnterpriseStandardRecheckPlan> recheckPlans = recheckPlanMap.get(es.getId());
if (recheckPlans == null || recheckPlans.size() == 0) {
// 企标已经达到35个月,需要重新复审
EnterpriseStandardRecheckPlan recheckPlan = new EnterpriseStandardRecheckPlan();
recheckPlan.setStandardId(es.getId());
recheckPlan.setStandardNo(es.getStandardNumber());
// 正确处理时区,转换回Date类型
ZonedDateTime zdtRecheck = recheckDate36Months.atStartOfDay(ZoneId.of("Asia/Shanghai"));
Date recheckDate = Date.from(zdtRecheck.toInstant());
recheckPlan.setRecheckDate(recheckDate);
esRecheckPlanService.save(recheckPlan);
}
}
}
log.info("企标复审计划定时任务执行完成");
}
}
@@ -4,21 +4,21 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardPlan;
import com.jero.modules.laws.enterprise.service.EnterpriseStandardPlanService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import javax.annotation.Resource;
@Slf4j
@Component
public class QualityStandardResetTask {
public class QualityStandardResetJob implements Job {
@Resource
private EnterpriseStandardPlanService enterpriseStandardPlanService;
@Scheduled(cron = "0 0 0 1 * ?")
public void qualityStandardResetTask() {
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
LambdaUpdateWrapper<EnterpriseStandardPlan> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.set(EnterpriseStandardPlan::getQualityFlag, 0);
enterpriseStandardPlanService.update(updateWrapper);
@@ -12,6 +12,7 @@
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
<result property="orgCode" column="org_code" jdbcType="VARCHAR"/>
<result property="standardNo" column="standard_no" jdbcType="VARCHAR"/>
<result property="standardId" column="standard_id" jdbcType="VARCHAR"/>
<result property="recheckDate" column="recheck_date" jdbcType="TIMESTAMP"/>
<result property="recheckResult" column="recheck_result" jdbcType="VARCHAR"/>
</resultMap>
@@ -30,17 +31,12 @@
s.release_date AS releaseDate,
p.recheck_date AS recheckDate,
p.recheck_result AS recheckResult,
u.username AS mainDraftingUser,
d.depart_name AS mainDraftingUnit
s.main_drafting_user AS mainDraftingUser,
s.main_drafting_unit AS mainDraftingUnit
FROM
laws_enterprise_standard_recheck_plan AS p
LEFT JOIN laws_enterprise_standard AS s ON s.standard_number = p.standard_no
LEFT JOIN sys_user AS u ON u.id = s.main_drafting_user
LEFT JOIN sys_depart AS d ON d.id = s.main_drafting_unit
WHERE
(p.recheck_date BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 1 MONTH))
OR
(p.recheck_result IS NOT NULL)
LEFT JOIN laws_enterprise_standard AS s ON s.id = p.standard_id
WHERE 1 = 1
<!--企标编号判断-->
<if test="param.standardNo != null and param.standardNo != ''">
AND s.standard_number LIKE CONCAT('%',#{param.standardNo},'%')
@@ -32,17 +32,13 @@ import java.util.stream.Collectors;
public class EnterpriseStandardRecheckPlanServiceImpl extends ServiceImpl<EnterpriseStandardRecheckPlanMapper, EnterpriseStandardRecheckPlan>
implements EnterpriseStandardRecheckPlanService{
@Resource
private ISysBaseAPI sysBaseAPI;
@Resource
private EnterpriseStandardRecheckPlanMapper esRecheckPlanMapper;
@Override
public IPage<EnterpriseStandardRecheckPlanVo> queryPageList(ESQueryCommonDTO esRecheckPlan, Integer pageNo, Integer pageSize) {
IPage<EnterpriseStandardRecheckPlanVo> page = new Page<>(pageNo, pageSize);
esRecheckPlanMapper.page(page, esRecheckPlan);
return page;
return esRecheckPlanMapper.page(page, esRecheckPlan);
}
}