diff --git a/bonus-common-biz/src/main/java/com/bonus/common/biz/aspect/StoreLogAspect.java b/bonus-common-biz/src/main/java/com/bonus/common/biz/aspect/StoreLogAspect.java index ee7aaf2b..fcb64356 100644 --- a/bonus-common-biz/src/main/java/com/bonus/common/biz/aspect/StoreLogAspect.java +++ b/bonus-common-biz/src/main/java/com/bonus/common/biz/aspect/StoreLogAspect.java @@ -143,7 +143,7 @@ public class StoreLogAspect { //数量类型设备 if (leaseOutDetails.getManageType().equals(MaTypeManageTypeEnum.NUMBER_DEVICE.getTypeId())) { bmStorageLog.setOutNum(leaseOutDetails.getInputNum()); - bmStorageLog.setPostStoreNum(leaseOutDetails.getPreStoreNum().subtract(bmStorageLog.getOutNum())); + bmStorageLog.setPostStoreNum(leaseOutDetails.getPreStoreNum().subtract(bmStorageLog.getOutNum())); bmStorageLog.setOutType(InputOutEnum.NUMBER_DEVICE.getTypeId()); bmStorageLogList.add(bmStorageLog); } else { diff --git a/bonus-common-biz/src/main/java/com/bonus/common/biz/constant/MaterialConstants.java b/bonus-common-biz/src/main/java/com/bonus/common/biz/constant/MaterialConstants.java index f05b382c..dafd20d3 100644 --- a/bonus-common-biz/src/main/java/com/bonus/common/biz/constant/MaterialConstants.java +++ b/bonus-common-biz/src/main/java/com/bonus/common/biz/constant/MaterialConstants.java @@ -133,30 +133,31 @@ public class MaterialConstants { /** * 立体库测试环境获取token路径 */ - public static final String TEST_TOKEN_URL = "http://192.168.1.124:32400/api/Identity/login/getToken"; + public static final String TEST_TOKEN_URL = "http://172.26.213.95:32400/api/Identity/login/getToken"; /** * 立体库生产环境获取token路径 */ - public static final String PROD_TOKEN_URL = "http://192.168.1.124:32400/api/Identity/login/getToken"; + public static final String PROD_TOKEN_URL = "http://172.26.213.95:32400/api/Identity/login/getToken"; /** * 立体库测试环境建立出库单路径 */ - public static final String TEST_CREATE_OUT_URL = "http://192.168.1.124:32400/api/lims/zNXT/docOutStorage"; + public static final String TEST_CREATE_OUT_URL = "http://172.26.213.95:32400/api/lims/zNXT/docOutStorage"; /** * 立体库生产环境建立出库单路径 */ - public static final String PROD_CREATE_OUT_URL = "http://192.168.1.124:32400/api/lims/zNXT/docOutStorage"; + public static final String PROD_CREATE_OUT_URL = "http://172.26.213.95:32400/api/lims/zNXT/docOutStorage"; /** * 立体库测试环境建立入库单路径 */ - public static final String TEST_CREATE_IN_URL = "http://192.168.1.124:32400/api/lims/zNXT/docInStorage"; + public static final String TEST_CREATE_IN_URL = "http://172.26.213.95:32400/api/lims/zNXT/docInStorage"; /** * 立体库生产环境建立入库单路径 */ - public static final String PROD_CREATE_IN_URL = "http://192.168.1.124:32400/api/lims/zNXT/docInStorage"; + public static final String PROD_CREATE_IN_URL = "http://172.26.213.95" + + ":32400/api/lims/zNXT/docInStorage"; } diff --git a/bonus-common-biz/src/main/java/com/bonus/common/biz/domain/purchase/AutomaticOutPutDto.java b/bonus-common-biz/src/main/java/com/bonus/common/biz/domain/purchase/AutomaticOutPutDto.java index 074d5ad0..53210618 100644 --- a/bonus-common-biz/src/main/java/com/bonus/common/biz/domain/purchase/AutomaticOutPutDto.java +++ b/bonus-common-biz/src/main/java/com/bonus/common/biz/domain/purchase/AutomaticOutPutDto.java @@ -22,6 +22,9 @@ public class AutomaticOutPutDto { @ApiModelProperty("物料名称") private String materialName; + @ApiModelProperty("物料规格") + private String specification; + @ApiModelProperty("计量单位") private String unitCode; diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/service/impl/LeaseApplyInfoServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/service/impl/LeaseApplyInfoServiceImpl.java index c6446b8a..8061a7e9 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/service/impl/LeaseApplyInfoServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/service/impl/LeaseApplyInfoServiceImpl.java @@ -1919,6 +1919,7 @@ public class LeaseApplyInfoServiceImpl implements ILeaseApplyInfoService { automaticOutPutDto.setOutQty(leaseOutDetails.getInputNum()); automaticOutPutDto.setLineNum(1); automaticOutPutDto.setTypeId(leaseOutDetails.getTypeId()); + automaticOutPutDto.setSpecification(leaseOutDetails.getTypeName()); list.add(automaticOutPutDto); } else { manageType = 0; diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseStorageServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseStorageServiceImpl.java index 1b08198f..dd36764c 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseStorageServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseStorageServiceImpl.java @@ -244,7 +244,8 @@ public class PurchaseStorageServiceImpl implements IPurchaseStorageService { automaticInPutDto.setUnitCode(purchaseDto.getUnitName()); automaticInPutDto.setInQty(purchaseDto.getInputNum()); automaticInPutDto.setLineNum(1); - automaticInPutDto.setPurchaseId(purchaseDto.getPurchaseId()); + automaticInPutDto.setPurchaseId(purchaseDto.getId()+""); + // automaticInPutDto.setPurchaseId(purchaseDto.getPurchaseId()); automaticInPutDto.setTypeId(Long.valueOf(purchaseDto.getTypeId())); list.add(automaticInPutDto); } else { @@ -282,7 +283,7 @@ public class PurchaseStorageServiceImpl implements IPurchaseStorageService { // 修改状态为待上架 if (CollectionUtils.isEmpty(purchaseDto.getInPutList())) { // 数量设备 - purchaseStorageMapper.updateNumById(PurchaseTaskStatusEnum.TO_UPLOAD.getStatus(), purchaseDto.getPurchaseId(), purchaseDto.getInputNum()); + purchaseStorageMapper.updateNumById(PurchaseTaskStatusEnum.TO_UPLOAD.getStatus(), purchaseDto.getId()+"", purchaseDto.getInputNum()); } else { // 修改上架数量 purchaseStorageMapper.updateUpNum(Long.valueOf(purchaseDto.getPurchaseId()), BigDecimal.valueOf(purchaseDto.getInPutList().size())); diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/record/service/impl/DerateRecordQueryServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/record/service/impl/DerateRecordQueryServiceImpl.java index d992f936..552a5364 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/record/service/impl/DerateRecordQueryServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/record/service/impl/DerateRecordQueryServiceImpl.java @@ -56,64 +56,64 @@ public class DerateRecordQueryServiceImpl implements IDerateReocrdQueryService { Long userId = SecurityUtils.getLoginUser().getUserid(); bean.setUserId(userId); List sltAgreementReduceList = mapper.getAuditList(bean); - try { - for (SltAgreementReduce sltAgreementReduceNew : sltAgreementReduceList) { - SltAgreementReduce sltAgreementReducePriceNew = mapper.getAuditPrice(sltAgreementReduceNew.getId()); - sltAgreementReduceNew.setLeasePrice(sltAgreementReducePriceNew.getLeasePrice()); - sltAgreementReduceNew.setLeaseMoney(sltAgreementReducePriceNew.getLeaseMoney()); - sltAgreementReduceNew.setLeaseMoneyAll(sltAgreementReducePriceNew.getLeaseMoneyAll()); - log.info("当前节点为{}",sltAgreementReduceNew.getNodeId()); - SysWorkflowRecordHistory sysWorkflowRecordHistory = sysWorkflowRecordHistoryMapper.getWorkflowRecordHistoryByRecordId(sltAgreementReduceNew.getRecordId()); - sltAgreementReduceNew.setNodeId(sysWorkflowRecordHistory.getNodeId()); - //设置当前节点 - if (1==sltAgreementReduceNew.getNodeSignType() && sysWorkflowRecordHistory.getNodeSort()==1){ - sltAgreementReduceNew.setNodeId(sysWorkflowRecordHistory.getNextNodeId()); - } - String configValue = sysWorkflowConfigMapper.selectConfigValueByNodeId(sltAgreementReduceNew.getNodeId()); - SysWorkflowNode sysWorkflowNode = sysWorkflowNodeMapper.selectSysWorkflowNodeById(sltAgreementReduceNew.getNodeId()); - sltAgreementReduceNew.setConfigValue(configValue); - //判断当前节点是否审核 - sysWorkflowRecordHistory.setRecordId(sltAgreementReduceNew.getRecordId()); - sysWorkflowRecordHistory.setNodeId(sltAgreementReduceNew.getNodeId()); - List sysWorkflowRecordHistoryList = sysWorkflowRecordHistoryMapper.seleteSysWorkflowRecordHistory(sysWorkflowRecordHistory); - //判断是或签还是会签0:或签 1:会签 - if (0==sysWorkflowNode.getNodeSignType()){ - //当前节点已经审核需要修改节点值 - if (sysWorkflowRecordHistoryList.get(0)!=null){ - String configValueNew = sysWorkflowConfigMapper.selectConfigValueByNodeId(sysWorkflowRecordHistoryList.get(0).getNextNodeId()); - sltAgreementReduceNew.setNodeId(sysWorkflowRecordHistoryList.get(0).getNextNodeId()); - sltAgreementReduceNew.setConfigValue(configValueNew); - } - }else { - String[] ConfigValue = configValue.split(","); - List filteredList = Arrays.stream(ConfigValue).collect(Collectors.toList()); - for (SysWorkflowRecordHistory sysWorkflowRecordHistoryNew : sysWorkflowRecordHistoryList) { - if (sysWorkflowRecordHistoryNew != null) { - // 过滤数组元素 - filteredList = filteredList.stream() - .filter(value -> value != null && !value.equals(sysWorkflowRecordHistoryNew.getCreateBy())) - .collect(Collectors.toList()); - sltAgreementReduceNew.setConfigValue(filteredList.toString()); - } - } - //判断是否这个节点的所有人都审核 - if (filteredList.size() == 0) { - String configValueNew = sysWorkflowConfigMapper.selectConfigValueByNodeId(sysWorkflowRecordHistoryList.get(0).getNextNodeId()); - sltAgreementReduceNew.setNodeId(sysWorkflowRecordHistoryList.get(0).getNextNodeId()); - sltAgreementReduceNew.setConfigValue(configValueNew); - } else { - if (sysWorkflowRecordHistoryList.size() > 0) { - sltAgreementReduceNew.setNodeId(sltAgreementReduceNew.getNodeId()); - sltAgreementReduceNew.setConfigValue(filteredList.toString()); - } - } - } - } - - }catch (Exception e){ - log.info("查询结果出错{}",e.getMessage()); - throw new ServiceException("查询结果出错"); - } +// try { +// for (SltAgreementReduce sltAgreementReduceNew : sltAgreementReduceList) { +// SltAgreementReduce sltAgreementReducePriceNew = mapper.getAuditPrice(sltAgreementReduceNew.getId()); +// sltAgreementReduceNew.setLeasePrice(sltAgreementReducePriceNew.getLeasePrice()); +// sltAgreementReduceNew.setLeaseMoney(sltAgreementReducePriceNew.getLeaseMoney()); +// sltAgreementReduceNew.setLeaseMoneyAll(sltAgreementReducePriceNew.getLeaseMoneyAll()); +// log.info("当前节点为{}",sltAgreementReduceNew.getNodeId()); +// SysWorkflowRecordHistory sysWorkflowRecordHistory = sysWorkflowRecordHistoryMapper.getWorkflowRecordHistoryByRecordId(sltAgreementReduceNew.getRecordId()); +// sltAgreementReduceNew.setNodeId(sysWorkflowRecordHistory.getNodeId()); +// //设置当前节点 +// if (1==sltAgreementReduceNew.getNodeSignType() && sysWorkflowRecordHistory.getNodeSort()==1){ +// sltAgreementReduceNew.setNodeId(sysWorkflowRecordHistory.getNextNodeId()); +// } +// String configValue = sysWorkflowConfigMapper.selectConfigValueByNodeId(sltAgreementReduceNew.getNodeId()); +// SysWorkflowNode sysWorkflowNode = sysWorkflowNodeMapper.selectSysWorkflowNodeById(sltAgreementReduceNew.getNodeId()); +// sltAgreementReduceNew.setConfigValue(configValue); +// //判断当前节点是否审核 +// sysWorkflowRecordHistory.setRecordId(sltAgreementReduceNew.getRecordId()); +// sysWorkflowRecordHistory.setNodeId(sltAgreementReduceNew.getNodeId()); +// List sysWorkflowRecordHistoryList = sysWorkflowRecordHistoryMapper.seleteSysWorkflowRecordHistory(sysWorkflowRecordHistory); +// //判断是或签还是会签0:或签 1:会签 +// if (0==sysWorkflowNode.getNodeSignType()){ +// //当前节点已经审核需要修改节点值 +// if (sysWorkflowRecordHistoryList.get(0)!=null){ +// String configValueNew = sysWorkflowConfigMapper.selectConfigValueByNodeId(sysWorkflowRecordHistoryList.get(0).getNextNodeId()); +// sltAgreementReduceNew.setNodeId(sysWorkflowRecordHistoryList.get(0).getNextNodeId()); +// sltAgreementReduceNew.setConfigValue(configValueNew); +// } +// }else { +// String[] ConfigValue = configValue.split(","); +// List filteredList = Arrays.stream(ConfigValue).collect(Collectors.toList()); +// for (SysWorkflowRecordHistory sysWorkflowRecordHistoryNew : sysWorkflowRecordHistoryList) { +// if (sysWorkflowRecordHistoryNew != null) { +// // 过滤数组元素 +// filteredList = filteredList.stream() +// .filter(value -> value != null && !value.equals(sysWorkflowRecordHistoryNew.getCreateBy())) +// .collect(Collectors.toList()); +// sltAgreementReduceNew.setConfigValue(filteredList.toString()); +// } +// } +// //判断是否这个节点的所有人都审核 +// if (filteredList.size() == 0) { +// String configValueNew = sysWorkflowConfigMapper.selectConfigValueByNodeId(sysWorkflowRecordHistoryList.get(0).getNextNodeId()); +// sltAgreementReduceNew.setNodeId(sysWorkflowRecordHistoryList.get(0).getNextNodeId()); +// sltAgreementReduceNew.setConfigValue(configValueNew); +// } else { +// if (sysWorkflowRecordHistoryList.size() > 0) { +// sltAgreementReduceNew.setNodeId(sltAgreementReduceNew.getNodeId()); +// sltAgreementReduceNew.setConfigValue(filteredList.toString()); +// } +// } +// } +// } +// +// }catch (Exception e){ +// log.info("查询结果出错{}",e.getMessage()); +// throw new ServiceException("查询结果出错"); +// } return sltAgreementReduceList; } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/settlement/service/impl/SltAgreementReduceServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/settlement/service/impl/SltAgreementReduceServiceImpl.java index a6b1e638..59ea2cfd 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/settlement/service/impl/SltAgreementReduceServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/settlement/service/impl/SltAgreementReduceServiceImpl.java @@ -1,8 +1,10 @@ package com.bonus.material.settlement.service.impl; import com.bonus.common.biz.constant.GlobalConstants; +import com.bonus.common.biz.domain.lease.WorkPeopleInfo; import com.bonus.common.biz.enums.TmTaskTypeEnum; import com.bonus.common.biz.enums.WorkFlowStatusEnum; +import com.bonus.common.core.exception.ServiceException; import com.bonus.common.core.utils.DateUtils; import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.common.security.utils.SecurityUtils; @@ -10,8 +12,12 @@ import com.bonus.material.basic.mapper.BmFileInfoMapper; import com.bonus.material.settlement.domain.SltAgreementReduce; import com.bonus.material.settlement.mapper.SltAgreementReduceMapper; import com.bonus.material.settlement.service.ISltAgreementReduceService; +import com.bonus.material.work.domain.SysWorkflowNode; +import com.bonus.material.work.domain.SysWorkflowRecord; +import com.bonus.material.work.domain.SysWorkflowRecordHistory; +import com.bonus.material.work.domain.SysWorkflowType; import com.bonus.material.work.domain.dto.SysWorkflowAuditDto; -import com.bonus.material.work.mapper.SysWorkflowRecordMapper; +import com.bonus.material.work.mapper.*; import com.bonus.material.work.service.SysWorkflowRecordService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -53,6 +59,21 @@ public class SltAgreementReduceServiceImpl implements ISltAgreementReduceService @Resource private SysWorkflowRecordMapper workflowRecordMapper; + @Resource + private SysWorkflowRecordMapper sysWorkflowRecordMapper; + + @Resource + private SysWorkflowTypeMapper sysWorkflowTypeMapper; + + @Resource + private SysWorkflowNodeMapper sysWorkflowNodeMapper; + + @Resource + private DirectAuditMapper directAuditMapper; + + @Resource + private SysWorkflowRecordHistoryMapper sysWorkflowRecordHistoryMapper; + @Override public List selectSltAgreementReduceList(SltAgreementReduce sltAgreement) { return sltAgreementRecudceMapper.selectSltAgreementReduceList(sltAgreement); @@ -64,7 +85,6 @@ public class SltAgreementReduceServiceImpl implements ISltAgreementReduceService } @Override - @Transactional(rollbackFor = Exception.class) // 对所有异常回滚 public AjaxResult addApply(SltAgreementReduce sltAgreement) { List list; try { @@ -84,11 +104,7 @@ public class SltAgreementReduceServiceImpl implements ISltAgreementReduceService // 插入外层任务信息 Long rs = sltAgreementRecudceMapper.insertReduce(sltAgreement); Long taskId = sltAgreement.getId(); - if (null != rs && rs > 0 && null != taskId && taskId > 0) { - workflowRecordService.addSysWorkflowRecord(Math.toIntExact(taskId), sltAgreement.getCode(), TmTaskTypeEnum.TM_TASK_PART_TYPE.getTaskTypeId()); - } else { - throw new RuntimeException("新增失败"); - } + AtomicBoolean addFileInfoResult = new AtomicBoolean(false); if (sltAgreement.getBmFileInfos() != null && !sltAgreement.getBmFileInfos().isEmpty()) { sltAgreement.getBmFileInfos().removeIf(Objects::isNull); @@ -106,8 +122,88 @@ public class SltAgreementReduceServiceImpl implements ISltAgreementReduceService .collect(Collectors.toList()); sltAgreementRecudceMapper.insertBatchReduceDetail(detailList); } + + // ******************************** 减免审核工作流 ***********************************// + int count = 0; + //创建减免审核工作流 + SysWorkflowType sysWorkflowType = new SysWorkflowType(); + sysWorkflowType.setTaskType(13); + sysWorkflowType.setIsEnable(1); + List sysWorkflowTypeList = sysWorkflowTypeMapper.selectSysWorkflowTypeList(sysWorkflowType); + if (sysWorkflowTypeList.isEmpty()) { + throw new ServiceException("新增任务审批记录失败,请创建审核流程"); + } + SysWorkflowRecord sysWorkflowRecord = new SysWorkflowRecord(); + // 如果该任务类型配置了一个审批流,则直接使用 + if (sysWorkflowTypeList.size() == 1) { + // 如果该任务类型配置了一个审批流,则直接使用 + sysWorkflowType = sysWorkflowTypeList.get(0); + sysWorkflowRecord = new SysWorkflowRecord(); + sysWorkflowRecord.setWorkflowId(sysWorkflowType.getId()); + sysWorkflowRecord.setTaskId(Math.toIntExact(taskId)); + sysWorkflowRecord.setTaskType(13); + sysWorkflowRecord.setTaskCode(sltAgreement.getCode()); + //创建审批任务 + count = sysWorkflowRecordMapper.addSysWorkflowRecord(sysWorkflowRecord); + if (0 == count) { + throw new RuntimeException("创建审批任务失败!"); + } + + } + + //处理审批流 + if(!sysWorkflowTypeList.isEmpty()){ + // 获取新创建的ID + int newId = sysWorkflowRecord.getId(); + //获取当前审核流下的节点 + SysWorkflowNode sysWorkflowNode = new SysWorkflowNode(); + sysWorkflowNode.setTypeId(sysWorkflowType.getId()); + List sysWorkflowNodeList = sysWorkflowNodeMapper.selectSysWorkflowNodeList(sysWorkflowNode); + + // 创建审核记录 + SysWorkflowRecordHistory sysWorkflowRecordHistory = new SysWorkflowRecordHistory(); + sysWorkflowRecordHistory.setRecordId(sysWorkflowRecord.getId()); + sysWorkflowRecordHistory.setNodeId(sysWorkflowNodeList.get(0).getId()); + sysWorkflowRecordHistory.setNextNodeId(sysWorkflowNodeList.get(1).getId()); + sysWorkflowRecordHistory.setIsAccept(1); + sysWorkflowRecordHistory.setCreateBy(SecurityUtils.getLoginUser().getUserid().toString()); + sysWorkflowRecordHistory.setCreateTime(DateUtils.getNowDate()); + int projectId = directAuditMapper.getProjectIdById(Math.toIntExact(sltAgreement.getAgreementId())); + //根据project_id获取external_id + String externalId = directAuditMapper.getExternalId(projectId); + List userList = new ArrayList<>(); + if (externalId != null && !externalId.isEmpty()) { + //获取项目总工id + String leaderId = directAuditMapper.getLeaderId(externalId); + if(leaderId != null && !leaderId.isEmpty()){ + //获取项目总工账号 + String leaderAccount = directAuditMapper.getUserNameById(leaderId); + if(leaderAccount != null && !leaderAccount.isEmpty()){ + userList = directAuditMapper.getUserIdByUserName(leaderAccount); + if(userList != null && !userList.isEmpty()){ + String userIds = userList.stream().map(WorkPeopleInfo::getUserId).map(String::valueOf).collect(Collectors.joining(",")); + sysWorkflowRecordHistory.setDirectUserIds(userIds); + } + } + }else{ + directAuditMapper.deleteWorkflowRecord(newId); + throw new RuntimeException("项目总工不存在"); + } + }else{ + directAuditMapper.deleteWorkflowRecord(newId); + throw new RuntimeException("未找到所属工程"); + } + sysWorkflowRecordHistoryMapper.addSysWorkflowRecordHistory(sysWorkflowRecordHistory); + +// if (count > 0 && userList != null && !userList.isEmpty()) { +// createWorkOrderAndPeople(sysUser, event, Long.valueOf(sysWorkflowRecord.getTaskId()), newId,sysWorkflowRecordHistory.getNodeId(),userList); +// } +// return newId; + } + + // ******************************** 减免审核工作流 ***********************************// } else { - return AjaxResult.warn("检索历史申请减免区间数据,已申请减免,请勿在提交申请单!"); + return AjaxResult.warn("检索历史申请减免区间数据,已申请减免,请勿再提交申请单!"); } return AjaxResult.success(); diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/controller/SysWorkflowRecordHisController.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/controller/SysWorkflowRecordHisController.java index deb25d57..b4055b97 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/controller/SysWorkflowRecordHisController.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/controller/SysWorkflowRecordHisController.java @@ -59,6 +59,24 @@ public class SysWorkflowRecordHisController extends BaseController { } } + /** + * 审批 + */ + @ApiOperation(value = "减免审批") + @PostMapping("/updateReduction") + @PreventRepeatSubmit + public AjaxResult reductionUpdate(@RequestBody SysWorkflowRecordHistory sysWorkflowRecordHistory) + { + try { + sysWorkflowRecordHistoryService.updateReductionSysWorkflowRecordHistory(sysWorkflowRecordHistory); + return new AjaxResult(200,"修改成功!"); + }catch (Exception e){ + logger.error("修改失败{}", e.getMessage(), e); + System.err.println("修改失败" + e.getMessage()); + return error(e.getMessage()); + } + } + /** * 审批 */ diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/mapper/SysWorkflowRecordHistoryMapper.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/mapper/SysWorkflowRecordHistoryMapper.java index fb1ef6af..b2fea8cd 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/mapper/SysWorkflowRecordHistoryMapper.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/mapper/SysWorkflowRecordHistoryMapper.java @@ -3,6 +3,7 @@ package com.bonus.material.work.mapper; import com.bonus.common.biz.domain.lease.WorkApplyInfo; import com.bonus.material.work.domain.SysWorkflowRecord; import com.bonus.material.work.domain.SysWorkflowRecordHistory; +import feign.Param; import java.util.List; @@ -29,7 +30,7 @@ public interface SysWorkflowRecordHistoryMapper { void deleteNowNode(SysWorkflowRecordHistory sysWorkflowRecordHistory); - String getRecordCodeByTaskId(Integer taskId); + String getRecordCodeByTaskId(@Param("taskId") int taskId, @Param("taskTypeId") int taskTypeId); /** * 获取当前节点信息 @@ -62,4 +63,8 @@ public interface SysWorkflowRecordHistoryMapper { * @param newId */ void deleteSysWorkflowRecordHistory(int newId); + + int getReductionAgreementIdByTaskId(SysWorkflowRecordHistory sysWorkflowRecordHistory); + + String getReductionNodeUserIds(SysWorkflowRecordHistory history); } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/service/SysWorkflowRecordHistoryService.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/service/SysWorkflowRecordHistoryService.java index 5417dd94..6d4b3c45 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/service/SysWorkflowRecordHistoryService.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/service/SysWorkflowRecordHistoryService.java @@ -11,4 +11,6 @@ public interface SysWorkflowRecordHistoryService { SysWorkflowRecordHistory getAuditStatus(SysWorkflowRecordHistory sysWorkflowRecordHistory); int updateDirectSysWorkflowRecordHistory(SysWorkflowRecordHistory sysWorkflowRecordHistory); + + int updateReductionSysWorkflowRecordHistory(SysWorkflowRecordHistory sysWorkflowRecordHistory); } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/service/impl/SysWorkflowRecordHistoryServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/service/impl/SysWorkflowRecordHistoryServiceImpl.java index 79bda1b5..87b4d0dc 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/service/impl/SysWorkflowRecordHistoryServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/service/impl/SysWorkflowRecordHistoryServiceImpl.java @@ -179,7 +179,7 @@ public class SysWorkflowRecordHistoryServiceImpl implements SysWorkflowRecordHis String flag = "0"; if("0".equals( flag)){ Integer taskId = sysWorkflowRecordHistory.getTaskId(); - String recordCode = sysWorkflowRecordHistoryMapper.getRecordCodeByTaskId(taskId); + String recordCode = sysWorkflowRecordHistoryMapper.getRecordCodeByTaskId(taskId,16); Integer nextNodeId = sysWorkflowRecordHistory.getNextNodeId(); Integer nodeId = sysWorkflowRecordHistory.getNodeId(); sysWorkflowRecordHistory.setCreateBy(userId.toString()); @@ -207,6 +207,48 @@ public class SysWorkflowRecordHistoryServiceImpl implements SysWorkflowRecordHis } + /** + * 减免审批 + */ + @Override + public int updateReductionSysWorkflowRecordHistory(@NotNull(message = "审批方法参数不能为空") SysWorkflowRecordHistory sysWorkflowRecordHistory) { + SysUser sysUser = SecurityUtils.getLoginUser().getSysUser(); + Long userId = sysUser.getUserId(); + Integer recordId = sysWorkflowRecordHistory.getRecordId(); + + + + //String flag = checkAuditUser(recordId,sysUser); + String flag = "0"; + if("0".equals( flag)){ + Integer taskId = sysWorkflowRecordHistory.getTaskId(); + String recordCode = sysWorkflowRecordHistoryMapper.getRecordCodeByTaskId(taskId,13); + Integer nextNodeId = sysWorkflowRecordHistory.getNextNodeId(); + Integer nodeId = sysWorkflowRecordHistory.getNodeId(); + sysWorkflowRecordHistory.setCreateBy(userId.toString()); +// sysWorkflowRecordHistoryMapper.addSysWorkflowRecordHistory(sysWorkflowRecordHistory); + + if (sysWorkflowRecordHistory.getIsAccept() == null) { + throw new ServiceException("请选择是否接受审批"); + } + + // 查询出【当前任务所属审批流】的所有节点 + List sysWorkflowNodeList = getWorkflowNodes(sysWorkflowRecordHistory); + if (sysWorkflowRecordHistory.getIsAccept() == 1) { + // 处理审批通过✅ + handleReductionApproval(sysWorkflowNodeList, sysWorkflowRecordHistory, sysUser, taskId, recordCode, recordId,nextNodeId,nodeId); + } else { + // 处理审核驳回❌ +// handleDirectReject(sysWorkflowNodeList, sysWorkflowRecordHistory, sysUser, taskId, recordCode, recordId,nextNodeId,nodeId); + } + }else{ + throw new ServiceException("当前账号没有审批权限!"); + } + + + return 0; + } + private String checkAuditUser(Integer recordId, SysUser sysUser) { @@ -885,6 +927,104 @@ public class SysWorkflowRecordHistoryServiceImpl implements SysWorkflowRecordHis } + + // 直转审批通过的方法 更新任务和审批流以及工单信息 + private void handleReductionApproval(List sysWorkflowNodeList, SysWorkflowRecordHistory sysWorkflowRecordHistory, + SysUser sysUser, Integer taskId, String recordCode, Integer recordId, Integer nextNodeId, Integer nodeId) { + boolean found = false; + Integer proId = null; + List userList = new ArrayList<>(); + + /**************** ******************/ + for (int i = 0; i < sysWorkflowNodeList.size(); i++) { + // 判断列表中哪个节点是当前审批的节点,如果不是审批的节点不处理 + if (sysWorkflowRecordHistory.getNextNodeId().equals(sysWorkflowNodeList.get(i).getId())) { + log.info("-------------进入到了当前审批的节点-------------"); + //获取转入(接收方)的agreementId + proId = sysWorkflowRecordHistoryMapper.getReductionAgreementIdByTaskId(sysWorkflowRecordHistory); + + //插入history表中 + SysWorkflowRecordHistory history = sysWorkflowRecordHistory; + history.setNodeId(sysWorkflowRecordHistory.getNextNodeId()); + + if(i==1){ //到项目总工审核 + int deptId = directAuditMapper.getImpUnit(String.valueOf(proId)); + DirectApplyInfo directApplyInfo = new DirectApplyInfo(); + directApplyInfo.setLeaseProId(String.valueOf(proId)); + + directApplyInfo.setDeptId(deptId); + + history.setNextNodeId(sysWorkflowNodeList.get(i+1).getId()); + + String userIds = sysWorkflowRecordHistoryMapper.getReductionNodeUserIds(history); + String[] userIdArray = userIds != null ? userIds.split(",") : new String[0]; + //根据deptId判断送一还是送二 + if(deptId == 327){ //送一 + if (userIdArray.length > 0) { + boolean hasTrue = Arrays.asList(userIdArray).contains("1916"); //送二的武抒理 + if (hasTrue) { + history.setDirectUserIds("1916"); + } + } + }else if(deptId == 102){ //送二 + if (userIdArray.length > 0) { + boolean hasTrue = Arrays.asList(userIdArray).contains("293"); //送二的武抒理 + if (hasTrue) { + history.setDirectUserIds("293"); + } + } + }else{ + throw new ServiceException("无相应审批人,无法进行审批!"); + } + if(history.getDirectUserIds().isEmpty()){ + throw new ServiceException("无相应审批人,无法进行批批!"); + } + }else if(i==2){//分公司分管领导审核 + history.setNextNodeId(sysWorkflowNodeList.get(i+1).getId()); + history.setDirectUserIds("1756"); //张必余 + }else{//公司分管领导审核 + history.setNextNodeId(null); + history.setDirectUserIds(null); + } + + sysWorkflowRecordHistoryMapper.addSysWorkflowRecordHistory(history); + + } + + //获取当前node的directUserIds + String userIdsNow = sysWorkflowRecordHistoryMapper.getNowUserIds(sysWorkflowRecordHistory); + // 判断当前用户是否是当前节点的配置用户 + if (userIdsNow.contains(sysUser.getUserId().toString())) { + log.info("-------------✅通过校验,当前用户是该节点审批人员,进行更新任务信息-------------"); + // 根据任务ID 更新审批流状态 + updateWorkflowStatus(taskId, 1); + // 根据任务ID 更新任务状态 + updateTmTask(taskId.longValue(), LeaseTaskStatusEnum.LEASE_AUDIT_ING.getStatus()); + found = true; + break; + } else { + //删除新增节点 + sysWorkflowRecordHistoryMapper.deleteNowNode(sysWorkflowRecordHistory); + throw new ServiceException("您不是当前节点配置的审批人员,无法进行操作!!"); + } + + } + + + + /**************** ******************/ + + Optional maxNodeOptional = sysWorkflowNodeList.stream() + .max(Comparator.comparingInt(SysWorkflowNode::getNodeSort)); + SysWorkflowNode endNodeInfo = maxNodeOptional.orElse(new SysWorkflowNode()); + + if (endNodeInfo.getId().equals(sysWorkflowRecordHistory.getNodeId()) && "2".equals(endNodeInfo.getNodeLabel())) { + checkFinalNodeDirectApproval(sysWorkflowRecordHistory, sysWorkflowNodeList); + } + + + } + private void checkFinalNodeApproval(SysWorkflowRecordHistory sysWorkflowRecordHistory, List sysWorkflowNodeList) { List historyList = sysWorkflowRecordHistoryMapper.seleteSysWorkflowRecordHistory(sysWorkflowRecordHistory); String configValueNew = sysWorkflowConfigMapper.selectConfigValueByNodeId(sysWorkflowRecordHistory.getNodeId()); diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/material/lease/LeaseApplyDetailsMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/material/lease/LeaseApplyDetailsMapper.xml index 799ad8f4..49ce53dd 100644 --- a/bonus-modules/bonus-material/src/main/resources/mapper/material/lease/LeaseApplyDetailsMapper.xml +++ b/bonus-modules/bonus-material/src/main/resources/mapper/material/lease/LeaseApplyDetailsMapper.xml @@ -317,7 +317,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" SET status = #{status} WHERE - parent_id = #{record.parentId} and type_id = #{record.typeId} + parent_id = #{parentId} and type_id = #{typeId} diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/material/record/DerateRecordQueryMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/material/record/DerateRecordQueryMapper.xml index 35cc82f7..b637f7f4 100644 --- a/bonus-modules/bonus-material/src/main/resources/mapper/material/record/DerateRecordQueryMapper.xml +++ b/bonus-modules/bonus-material/src/main/resources/mapper/material/record/DerateRecordQueryMapper.xml @@ -132,24 +132,38 @@ swrs.next_node_id AS nextNodeId, swrs.record_id AS recordId, swn.node_sign_type as nodeSignType, - sd.dept_name as impUnitName + sd.dept_name as impUnitName, + swrs.direct_user as directUserIds, + swrs.direct_user as configValue, + a.leaseMoney, + a.leaseMoneyAll FROM slt_reduce_apply sra - LEFT JOIN slt_reduce_details srd on sra.id=srd.apply_id LEFT JOIN sys_user su on su.user_id=sra.creator LEFT JOIN bm_agreement_info bai on bai.agreement_id=sra.agreement_id LEFT JOIN bm_project bp ON bp.pro_id = bai.project_id LEFT JOIN sys_dept sd on sd.dept_id = bp.imp_unit LEFT JOIN bm_unit bu ON bu.unit_id = bai.unit_id - LEFT JOIN sys_workflow_record swr on sra.id = swr.task_id + LEFT JOIN sys_workflow_record swr on sra.id = swr.task_id and swr.task_type = '13' LEFT JOIN sys_workflow_type swt on swr.workflow_id = swt.id LEFT JOIN sys_workflow_node swn on swt.id = swn.type_id LEFT JOIN sys_workflow_config swc on swn.id = swc.node_id left join sys_workflow_record_history swrs on swr.id = swrs.record_id + LEFT JOIN + ( + SELECT + sra.id as id, + ROUND(SUM(srd.lease_price * srd.num * (DATEDIFF(srd.end_time, srd.start_time) + 1)), 2) as leaseMoney, + ROUND(SUM(srd.lease_money), 2) as leaseMoneyAll + FROM + slt_reduce_apply sra + LEFT JOIN slt_reduce_details srd on sra.id=srd.apply_id + GROUP BY sra.id + ) a on a.id=sra.id where 1=1 - - AND swc.config_value = #{userId} - + + + AND DATE_FORMAT(sra.create_time, '%Y-%m-%d' ) BETWEEN #{startTime} AND #{endTime} @@ -166,9 +180,9 @@ AND sra.status = #{status} - - AND sra.status = #{taskStatus} - + + + GROUP BY sra.id ORDER BY sra.create_time DESC diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/material/work/SysWorkflowRecordhistoryMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/material/work/SysWorkflowRecordhistoryMapper.xml index bbaae7e1..d03cbd97 100644 --- a/bonus-modules/bonus-material/src/main/resources/mapper/material/work/SysWorkflowRecordhistoryMapper.xml +++ b/bonus-modules/bonus-material/src/main/resources/mapper/material/work/SysWorkflowRecordhistoryMapper.xml @@ -92,15 +92,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select direct_user as directUserIds from sys_workflow_record_history - where record_id = #{recordId} and next_node_id = #{nodeId} + where record_id = #{recordId} and next_node_id = #{nodeId} limit 1 + + + + delete from sys_workflow_record_history where record_id = #{recordId} and node_id = #{nodeId}