From 9f59f802ca2df88e375251e2ffae5df3f9185e7d Mon Sep 17 00:00:00 2001 From: mashuai Date: Fri, 28 Nov 2025 16:21:57 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=A2=E5=A4=B1=E6=8A=A5=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/biz/enums/TmTaskTypeEnum.java | 5 +- .../service/impl/ClzDirectServiceImpl.java | 4 +- .../impl/LeaseApplyInfoServiceImpl.java | 2 +- .../service/impl/LeaseTaskServiceImpl.java | 4 +- .../controller/LossAssignController.java | 210 ++++ .../domain/LossAssignDetails.java | 84 ++ .../lossAssessment/domain/LossAssignInfo.java | 163 +++ .../lossAssessment/domain/LossAssignVo.java | 19 + .../mapper/LossAssignMapper.java | 195 ++++ .../service/LossAssignService.java | 81 ++ .../service/impl/LossAssignServiceImpl.java | 924 ++++++++++++++++++ .../work/mapper/SysWorkflowRecordMapper.java | 9 +- .../mapper/material/clz/ClzDirectMapper.xml | 2 +- .../lossAssessment/LossAssignMapper.xml | 626 ++++++++++++ .../material/work/SysWorkflowRecordMapper.xml | 4 +- 15 files changed, 2319 insertions(+), 13 deletions(-) create mode 100644 bonus-modules/bonus-material/src/main/java/com/bonus/material/lossAssessment/controller/LossAssignController.java create mode 100644 bonus-modules/bonus-material/src/main/java/com/bonus/material/lossAssessment/domain/LossAssignDetails.java create mode 100644 bonus-modules/bonus-material/src/main/java/com/bonus/material/lossAssessment/domain/LossAssignInfo.java create mode 100644 bonus-modules/bonus-material/src/main/java/com/bonus/material/lossAssessment/domain/LossAssignVo.java create mode 100644 bonus-modules/bonus-material/src/main/java/com/bonus/material/lossAssessment/mapper/LossAssignMapper.java create mode 100644 bonus-modules/bonus-material/src/main/java/com/bonus/material/lossAssessment/service/LossAssignService.java create mode 100644 bonus-modules/bonus-material/src/main/java/com/bonus/material/lossAssessment/service/impl/LossAssignServiceImpl.java create mode 100644 bonus-modules/bonus-material/src/main/resources/mapper/material/lossAssessment/LossAssignMapper.xml diff --git a/bonus-common-biz/src/main/java/com/bonus/common/biz/enums/TmTaskTypeEnum.java b/bonus-common-biz/src/main/java/com/bonus/common/biz/enums/TmTaskTypeEnum.java index 442697aa..e678d9a5 100644 --- a/bonus-common-biz/src/main/java/com/bonus/common/biz/enums/TmTaskTypeEnum.java +++ b/bonus-common-biz/src/main/java/com/bonus/common/biz/enums/TmTaskTypeEnum.java @@ -43,7 +43,10 @@ public enum TmTaskTypeEnum { TM_TASK_MATERIAL_BACK_APPOINT(24, "材料站预约退料任务"), // 材料站站内直转任务 - TM_TASK_ZN_DIRECT(25, "材料站站内直转任务"); + TM_TASK_ZN_DIRECT(25, "材料站站内直转任务"), + + // 丢失报备任务 + TM_TASK_LOSS_REPORT(26, "丢失报备任务"); diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/clz/service/impl/ClzDirectServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/clz/service/impl/ClzDirectServiceImpl.java index 55414e50..402e2950 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/clz/service/impl/ClzDirectServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/clz/service/impl/ClzDirectServiceImpl.java @@ -421,10 +421,10 @@ public class ClzDirectServiceImpl implements ClzDirectService { // 如果该任务类型配置了一个审批流,则直接使用 sysWorkflowType = sysWorkflowTypeList.get(0); // 先根据id查询该数据是否已经存在 - recordInfo = sysWorkflowRecordMapper.getWorkflowRecordHistory(event.getTaskId()); + recordInfo = sysWorkflowRecordMapper.getWorkflowRecordHistory(event); // 根据id删除该数据 if (recordInfo != null) { - sysWorkflowRecordMapper.deleteSysWorkflowRecord(event.getTaskId()); + sysWorkflowRecordMapper.deleteSysWorkflowRecord(event); } sysWorkflowRecord = new SysWorkflowRecord(); sysWorkflowRecord.setWorkflowId(sysWorkflowType.getId()); 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 03b1ced3..95372773 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 @@ -2055,7 +2055,7 @@ public class LeaseApplyInfoServiceImpl implements ILeaseApplyInfoService { if (leaseApplyInfo.getMaId() != null) { // 过滤出list中和leaseApplyInfo.getMaId()相等的元素 list = list.stream() - .filter(item -> item.getMaId().equals(leaseApplyInfo.getMaId())) + .filter(item -> item.getMaId() != null && item.getMaId().equals(leaseApplyInfo.getMaId())) .collect(Collectors.toList()); } } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/service/impl/LeaseTaskServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/service/impl/LeaseTaskServiceImpl.java index 10f4969e..2184d3bd 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/service/impl/LeaseTaskServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/lease/service/impl/LeaseTaskServiceImpl.java @@ -1325,10 +1325,10 @@ public class LeaseTaskServiceImpl implements ILeaseTaskService { if (leaseApplyDetails.getTaskId()!= null) { LeaseOutDetails leaseOutDetails = new LeaseOutDetails(); leaseOutDetails.setTaskId(leaseApplyDetails.getTaskId()+""); - res = editTaskStatus(leaseOutDetails); + /*res = editTaskStatus(leaseOutDetails); if (res == GlobalConstants.INT_0) { throw new RuntimeException("出库退回失败,修改任务状态失败"); - } + }*/ } // 删除领料出库明细表(lease_out_details) int res2 = mapper.deleteLeaseOutDetails(leaseApplyDetails); diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/lossAssessment/controller/LossAssignController.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/lossAssessment/controller/LossAssignController.java new file mode 100644 index 00000000..ee807696 --- /dev/null +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/lossAssessment/controller/LossAssignController.java @@ -0,0 +1,210 @@ +package com.bonus.material.lossAssessment.controller; + +import com.bonus.common.core.utils.DateUtils; +import com.bonus.common.core.utils.poi.ExcelUtil; +import com.bonus.common.core.web.controller.BaseController; +import com.bonus.common.core.web.domain.AjaxResult; +import com.bonus.material.lossAssessment.domain.LossAssignInfo; +import com.bonus.material.lossAssessment.domain.LossAssignVo; +import com.bonus.material.lossAssessment.service.LossAssignService; +import com.bonus.material.ma.domain.Type; +import com.bonus.material.settlement.domain.SltAgreementInfo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.math.BigDecimal; +import java.util.*; + + +/** + * @author ma_sh + */ +@RestController +@RequestMapping("/LossAssign") +@Api(tags = "设备报备丢失管理") +@Slf4j +public class LossAssignController extends BaseController { + + @Resource + private LossAssignService service; + + /** + * 丢失报备查询列表 + * @param lossAssignInfo + * @return + */ + @ApiOperation(value = "丢失报备查询列表") + @GetMapping("/list") + public AjaxResult list(LossAssignInfo lossAssignInfo) { + startPage(); + try { + List directApplyInfos = service.getList(lossAssignInfo); + return AjaxResult.success(getDataTable(directApplyInfos)); + } catch (Exception e) { + return AjaxResult.success(getDataTable(new ArrayList<>())); + } + } + + /** + * 导出丢失报备查询列表 + * @param response + * @param lossAssignInfo + */ + @PostMapping("/export") + public void export(HttpServletResponse response, LossAssignInfo lossAssignInfo) { + String fileName = "报备丢失记录"; + if (lossAssignInfo.getStartTime() != null && lossAssignInfo.getEndTime() != null) { + fileName = "报备丢失"+ "(报备时间" + lossAssignInfo.getStartTime() + "至" + lossAssignInfo.getEndTime()+ ")"; + } + List list = service.getList(lossAssignInfo); + // 根据list集合数,去填充序号 + for (int i = 0; i < list.size(); i++) { + list.get(i).setSerialNumber(i + 1); + } + ExcelUtil util = new ExcelUtil<>(LossAssignInfo.class); + // 获取当前年月日时分秒导出时间,用括号拼接在后面 + String title = "报备丢失记录" + "(" + "导出时间:" + DateUtils.getTime() + ")"; + util.exportExcel(response, list, fileName, title); + } + + /** + * 根据协议Id查询在用数据 + * @param sltAgreementInfo + * @return + */ + @ApiOperation(value = "根据协议Id查询在用数据") + @GetMapping("/getUseData") + public AjaxResult getUseData(SltAgreementInfo sltAgreementInfo) { + try { + List useData = service.getUseData(sltAgreementInfo); + // 1. 批量查询待审核数量:收集所有必要参数,一次查库 + Set pairSet = new HashSet<>(); + for (SltAgreementInfo data : useData) { + Long typeId = data.getTypeId(); + Long maId = data.getMaId(); + SltAgreementInfo info = new SltAgreementInfo(); + info.setTypeId(typeId); + info.setMaId(maId); + pairSet.add(info); + } + List pairs = new ArrayList<>(pairSet); + // 2.批量查询待转数量 + List batchInfoList = service.getBatchInfo(sltAgreementInfo.getAgreementId(),pairs); + // 构建infoMap:key = "typeId:maId",value = 对应的SltAgreementInfo(含waitTransNum) + Map infoMap = new HashMap<>(); + for (SltAgreementInfo info : batchInfoList) { + Long typeId = info.getTypeId(); + Long maId = info.getMaId(); + // 生成唯一key(处理maId为null的情况) + String key = typeId + ":" + (maId == null ? "null" : maId); + infoMap.put(key, info); + } + // 3. 遍历useData处理逻辑(用批量结果替代循环查库) + for (SltAgreementInfo data : useData) { + // 4. 从批量查询结果中获取数据(O(1)查询) + String infoKey = data.getTypeId() + ":" + (data.getMaId() == null ? "null" : data.getMaId()); + SltAgreementInfo info = infoMap.get(infoKey); + if (info != null) { + data.setWaitTransNum(info.getWaitTransNum()); + data.setTransNum(data.getUseNum().subtract(info.getWaitTransNum())); + } else { + data.setWaitTransNum(BigDecimal.ZERO); + data.setTransNum(data.getUseNum()); + } + } + return AjaxResult.success(useData); + } catch (Exception e) { + log.error("查询失败", e); + return AjaxResult.success(new ArrayList<>()); + } + } + + /** + * 查询物资类型3级--前端联动式下拉框(在用设备) + * 没有4级规格型号 + */ + @ApiOperation(value = "获取物资类型连动式下拉框") + @GetMapping("/equipmentThreeTypes") + public AjaxResult equipmentThreeTypes(@RequestParam(required = false) Long typeId, @RequestParam(required = false) Long agreementId) { + List listByMaType = service.getEquipmentThreeTypes(typeId, agreementId); + return success(listByMaType); + } + + /** + * 新增申请 + * @param lossAssignVo + * @return + */ + @ApiOperation(value = "新增申请") + @PostMapping("/add") + public AjaxResult add(@RequestBody LossAssignVo lossAssignVo) { + try { + return service.add(lossAssignVo); + } catch (Exception e) { + System.err.println("保存失败:" + e.getMessage()); + return AjaxResult.error("保存失败"); + } + } + + /** + * 修改申请 + * @param lossAssignVo + * @return + */ + @ApiOperation(value = "修改申请") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody LossAssignVo lossAssignVo) { + try { + return service.edit(lossAssignVo); + } catch (Exception e) { + return AjaxResult.error("修改失败"); + } + } + + /** + * 删除申请 + * @param lossAssignInfo + * @return + */ + @ApiOperation(value = "删除申请") + @PostMapping("/delete") + public AjaxResult remove(@RequestBody LossAssignInfo lossAssignInfo) { + return service.remove(lossAssignInfo); + } + + /** + * 查看详情 + * @param lossAssignInfo + * @return + */ + @ApiOperation(value = "查看详情") + @GetMapping("/getInfo") + public AjaxResult getInfo(LossAssignInfo lossAssignInfo) { + try { + return service.getInfoById(lossAssignInfo); + } catch (Exception e) { + return AjaxResult.success(new LossAssignVo()); + } + } + + /** + * 报备丢失审批 + * @param lossAssignInfo + * @return + */ + @ApiOperation(value = "报备丢失审批") + @PostMapping("/directUpdate") + public AjaxResult directUpdate(@RequestBody LossAssignInfo lossAssignInfo) { + try { + return service.updateDirectSysWorkflowRecordHistory(lossAssignInfo); + } catch (Exception e) { + logger.error("审核失败{}", e.getMessage(), e); + return error(e.getMessage()); + } + } + +} diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/lossAssessment/domain/LossAssignDetails.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/lossAssessment/domain/LossAssignDetails.java new file mode 100644 index 00000000..261ce43c --- /dev/null +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/lossAssessment/domain/LossAssignDetails.java @@ -0,0 +1,84 @@ +package com.bonus.material.lossAssessment.domain; + +import com.bonus.common.core.web.domain.BaseEntity; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 设备报备丢失details + * @author ma_sh + */ +@EqualsAndHashCode(callSuper = false) +@Data +@Accessors(chain = true) +public class LossAssignDetails extends BaseEntity { + /** + * id + */ + private Integer id; + + /** + * 报表丢失主表id + */ + private Integer lossId; + + /** + * 设备类型id + */ + private Long typeId; + + /** + * 设备id + */ + private Long maId; + + /** + * 设备编码 + */ + private String maCode; + + /** + * 丢失数量 + */ + private BigDecimal lossNum; + + @ApiModelProperty(value = "领料时间") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date startTime; + + @ApiModelProperty(value = "领料人") + private String leasePerson; + + /** + * 设备名称 + */ + private String typeName; + + /** + * 规格型号 + */ + private String typeModelName; + + /** + * 计量单位 + */ + private String unitName; + + @ApiModelProperty(value = "在用数量") + private BigDecimal useNum; + + @ApiModelProperty(value = "待转数量") + private BigDecimal waitTransNum; + + @ApiModelProperty(value = "可转数量") + private BigDecimal transNum; + + @ApiModelProperty(value = "报表丢失协议") + private Integer agreementId; +} diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/lossAssessment/domain/LossAssignInfo.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/lossAssessment/domain/LossAssignInfo.java new file mode 100644 index 00000000..93557721 --- /dev/null +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/lossAssessment/domain/LossAssignInfo.java @@ -0,0 +1,163 @@ +package com.bonus.material.lossAssessment.domain; + +import com.bonus.common.core.annotation.Excel; +import com.bonus.material.ma.domain.DirectApplyUrl; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; +import java.util.List; + +/** + * 设备报备丢失info + * @author ma_sh + */ +@EqualsAndHashCode(callSuper = false) +@Data +@Accessors(chain = true) +public class LossAssignInfo { + + @ApiModelProperty(value = "序号") + @Excel(name = "序号", isSequence = true, sort = 0, width = 5) + private Integer serialNumber; + + @ApiModelProperty(value = "下个流程节点id") + private Integer id; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "申请时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + @Excel(name = "申请人") + private String createBy; + + @ApiModelProperty(value = "报表丢失单号(DS20240226-1)") + @Excel(name = "报表丢失单号") + private String code; + + @ApiModelProperty(value = "报表丢失协议") + private Integer agreementId; + + @ApiModelProperty(value = "报表丢失单位id") + private String lossUnitId; + + @Excel(name = "报备丢失单位名称") + private String lossUnitName; + + @ApiModelProperty(value = "报表丢失工程id") + private String lossProId; + + @Excel(name = "报备丢失工程名称", width = 40) + private String lossProName; + + @ApiModelProperty(value = "报备丢失人") + private String lossMan; + + @ApiModelProperty(value = "手机号") + private String lossPhone; + + @Excel(name = "物资类型", width = 40) + private String typeName; + + @ApiModelProperty(value = "直转附件数组") + private List dirUrls; + + @ApiModelProperty(value = "报备丢失备注") + private String lossRemark; + + @ApiModelProperty(value = "修改人") + private String updateBy; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "修改时间") + private Date updateTime; + + @ApiModelProperty(value = "丢失附件") + private String lossUrl; + + @Excel(name = "状态", readConverterExp = "0=待审核,1=审核中,2=已完成,3=已驳回") + private Integer status; + + @ApiModelProperty(value = "审核人") + private String auditor; + + @ApiModelProperty(value = "审核时间") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date auditTime; + + @ApiModelProperty(value = "审核备注") + private String auditRemark; + + private Integer isApp; + + private Integer taskStatus; + + private String flowStatus; + + private String flowId; + + @ApiModelProperty(value = "本流程节点id") + private Integer nodeId; + + @ApiModelProperty(value = "下个流程节点id") + private Integer nextNodeId; + + @ApiModelProperty(value = "流程配置值") + private String configValue; + + @ApiModelProperty(value = "所属记录") + private Integer recordId; + + @ApiModelProperty(value = "流程节点签名方式 0:或签 1:会签") + private Integer nodeSignType; + + @ApiModelProperty(value = "开始时间") + private String startTime; + + @ApiModelProperty(value = "结束时间") + private String endTime; + + @ApiModelProperty(value = "任务状态列表") + private List statusList; + + @ApiModelProperty(value = "部门id") + private Integer deptId; + + @ApiModelProperty(value = "报备丢失i8工程id") + private String lossExternalId; + + @ApiModelProperty(value = "报备丢失分公司") + private String lossImpUnitName; + + @ApiModelProperty(value = "报备丢失项目部") + private String lossDepartName; + + @ApiModelProperty(value = "审批结果,1通过 2拒绝") + private Integer isAccept; + + @ApiModelProperty(value = "审批人id") + private String directUserIds; + + @ApiModelProperty(value = "用户id") + private Long userId; + + @ApiModelProperty(value = "i8工程id集合") + private List projectIdList; + + @ApiModelProperty(value = "实施单位id") + private String impUnit; + + @ApiModelProperty(value = "班组长身份证id") + private String bzIdCard; + + @ApiModelProperty(value = "关键字") + private String keyWord; + + @ApiModelProperty(value = "审批结果") + private String remark; +} diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/lossAssessment/domain/LossAssignVo.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/lossAssessment/domain/LossAssignVo.java new file mode 100644 index 00000000..a9fa80a4 --- /dev/null +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/lossAssessment/domain/LossAssignVo.java @@ -0,0 +1,19 @@ +package com.bonus.material.lossAssessment.domain; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +/** + * @Author ma_sh + * @create 2025/11/26 15:10 + */ +@EqualsAndHashCode(callSuper = false) +@Data +public class LossAssignVo { + + private LossAssignInfo lossAssignInfo; + + private List lossAssignDetails; +} diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/lossAssessment/mapper/LossAssignMapper.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/lossAssessment/mapper/LossAssignMapper.java new file mode 100644 index 00000000..794add7f --- /dev/null +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/lossAssessment/mapper/LossAssignMapper.java @@ -0,0 +1,195 @@ +package com.bonus.material.lossAssessment.mapper; + +import com.bonus.common.biz.domain.lease.WorkApplyInfo; +import com.bonus.common.biz.domain.lease.WorkPeopleInfo; +import com.bonus.material.lossAssessment.domain.LossAssignDetails; +import com.bonus.material.lossAssessment.domain.LossAssignInfo; +import com.bonus.material.ma.domain.Type; +import com.bonus.material.settlement.domain.SltAgreementInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 丢失报备 + * @author ma_sh + */ +@Mapper +public interface LossAssignMapper { + + /** + * 根据协议Id查询在用安全工器具编码 + * @param sltAgreementInfo + * @return + */ + List getUseData(SltAgreementInfo sltAgreementInfo); + + /** + * 批量查询 + * @param agreementId + * @param pairs + * @return + */ + List getBatchInfo(@Param("agreementId") Long agreementId, @Param("pairs") List pairs); + + /** + * 生成丢失单号 + * @return + */ + Integer getListAll(); + + /** + * 保存主表 + * @param lossAssignInfo + * @return + */ + int saveDirectApplyInfo(LossAssignInfo lossAssignInfo); + + /** + * 保存详情表 + * @param lossAssignDetails + * @return + */ + int saveDirectApplyDetails(List lossAssignDetails); + + /** + * 根据project_id获取external_id + * @param projectId + * @return + */ + LossAssignInfo getExternalId(int projectId); + + /** + * 获取项目经理id + * @param externalId + * @return + */ + String getDeptId(String externalId); + + /** + * 获取项目经理账号 + * @param leaderId + * @return + */ + String getUserNameById(String leaderId); + + /** + * 获取项目经理账号 + * @param userName + * @return + */ + List getUserIdByUserName(String userName); + + /** + * 插入工单 + * @param workApplyInfo + * @return + */ + int insertWorkOrder(WorkApplyInfo workApplyInfo); + + /** + * 插入工单 + * @param workPeopleInfo + * @return + */ + int insertWorkPeople(WorkPeopleInfo workPeopleInfo); + + /** + * 更新主表 + * @param lossAssignInfo + * @return + */ + int updateDirectApplyInfo(LossAssignInfo lossAssignInfo); + + /** + * 删除详情表 + * @param id + * @return + */ + int deleteDirectApplyDetails(Integer id); + + /** + * 删除工单 + * @param newId + */ + void deleteWorkflowRecord(int newId); + + /** + * 删除主表 + * @param lossAssignInfo + * @return + */ + int deleteDirectApplyInfo(LossAssignInfo lossAssignInfo); + + /** + * 根据id查询 + * @param lossAssignInfo + * @return + */ + LossAssignInfo getInfoById(LossAssignInfo lossAssignInfo); + + /** + * 查询详情表信息 + * @param id + * @return + */ + List getDetailsById(Integer id); + + /** + * 根据项目id查询部门信息 + * @param info + * @return + */ + LossAssignInfo getDeptInfo(LossAssignInfo info); + + /** + * 根据id查询详情表信息 + * @param lossAssignInfo + * @return + */ + LossAssignInfo getInfoDetails(LossAssignInfo lossAssignInfo); + + /** + * 查询审批人 + * @param lossAssignInfo + * @return + */ + List getUseList(LossAssignInfo lossAssignInfo); + + /** + * 修改状态 + * @param maId + * @param maStatus + * @return + */ + int updateStatus(@Param("maId") Long maId, @Param("maStatus") int maStatus); + + /** + * 查询列表 + * @param lossAssignInfo + * @return + */ + List getList(LossAssignInfo lossAssignInfo); + + /** + * 查询类型 + * @param agreementId + * @return + */ + List selectMaTypeThreeLists(Long agreementId); + + /** + * 查询数量 + * @param detail + * @return + */ + LossAssignDetails getNumList(LossAssignDetails detail); + + /** + * 真正删除详情表内容 + * @param id + * @return + */ + int deleteApplyDetails(Integer id); +} diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/lossAssessment/service/LossAssignService.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/lossAssessment/service/LossAssignService.java new file mode 100644 index 00000000..32480443 --- /dev/null +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/lossAssessment/service/LossAssignService.java @@ -0,0 +1,81 @@ +package com.bonus.material.lossAssessment.service; + +import com.bonus.common.core.web.domain.AjaxResult; +import com.bonus.material.lossAssessment.domain.LossAssignInfo; +import com.bonus.material.lossAssessment.domain.LossAssignVo; +import com.bonus.material.ma.domain.Type; +import com.bonus.material.settlement.domain.SltAgreementInfo; + +import java.util.List; + +/** + * 丢失报备service + * @author ma_sh + */ +public interface LossAssignService { + + /** + * 根据协议Id查询在用数据 + * @param sltAgreementInfo + * @return + */ + List getUseData(SltAgreementInfo sltAgreementInfo); + + /** + * 批量查询待转数量 + * @param agreementId + * @param pairs + * @return + */ + List getBatchInfo(Long agreementId, List pairs); + + /** + * 新增申请 + * @param lossAssignVo + * @return + */ + AjaxResult add(LossAssignVo lossAssignVo); + + /** + * 修改申请 + * @param lossAssignVo + * @return + */ + AjaxResult edit(LossAssignVo lossAssignVo); + + /** + * 删除申请 + * @param lossAssignInfo + * @return + */ + AjaxResult remove(LossAssignInfo lossAssignInfo); + + /** + * 查看详情 + * @param lossAssignInfo + * @return + */ + AjaxResult getInfoById(LossAssignInfo lossAssignInfo); + + /** + * 报备丢失审批 + * @param lossAssignInfo + * @return + */ + AjaxResult updateDirectSysWorkflowRecordHistory(LossAssignInfo lossAssignInfo); + + /** + * 丢失报备查询列表 + * @param lossAssignInfo + * @return + */ + List getList(LossAssignInfo lossAssignInfo); + + /** + * 获取物资类型连动式下拉框 + * @param typeId + * @param agreementId + * @return + */ + List getEquipmentThreeTypes(Long typeId, Long agreementId); +} diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/lossAssessment/service/impl/LossAssignServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/lossAssessment/service/impl/LossAssignServiceImpl.java new file mode 100644 index 00000000..3552d3c8 --- /dev/null +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/lossAssessment/service/impl/LossAssignServiceImpl.java @@ -0,0 +1,924 @@ +package com.bonus.material.lossAssessment.service.impl; + +import com.bonus.common.biz.domain.lease.WorkApplyInfo; +import com.bonus.common.biz.domain.lease.WorkPeopleInfo; +import com.bonus.common.core.exception.ServiceException; +import com.bonus.common.core.utils.DateUtils; +import com.bonus.common.core.utils.StringUtils; +import com.bonus.common.core.web.domain.AjaxResult; +import com.bonus.common.security.utils.SecurityUtils; +import com.bonus.material.clz.domain.BmTeam; +import com.bonus.material.clz.domain.direct.ClzDirectApplyDetails; +import com.bonus.material.clz.domain.direct.WorkflowEvent; +import com.bonus.material.clz.mapper.MaterialMachineMapper; +import com.bonus.material.common.mapper.SelectMapper; +import com.bonus.material.lease.mapper.LeaseTaskMapper; +import com.bonus.material.lossAssessment.domain.LossAssignDetails; +import com.bonus.material.lossAssessment.domain.LossAssignInfo; +import com.bonus.material.lossAssessment.domain.LossAssignVo; +import com.bonus.material.lossAssessment.mapper.LossAssignMapper; +import com.bonus.material.lossAssessment.service.LossAssignService; +import com.bonus.material.ma.domain.DirectApplyUrl; +import com.bonus.material.ma.domain.Type; +import com.bonus.material.settlement.domain.SltAgreementInfo; +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.mapper.SysWorkflowNodeMapper; +import com.bonus.material.work.mapper.SysWorkflowRecordHistoryMapper; +import com.bonus.material.work.mapper.SysWorkflowRecordMapper; +import com.bonus.material.work.mapper.SysWorkflowTypeMapper; +import com.bonus.system.api.domain.SysUser; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.util.UriComponentsBuilder; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; + +import static com.bonus.common.biz.enums.TmTaskTypeEnum.*; + +/** + * 丢失报备服务实现类 + */ +@Service("LossAssignService") +@Validated +@Slf4j +public class LossAssignServiceImpl implements LossAssignService { + + @Resource + private LossAssignMapper mapper; + + @Resource + private SysWorkflowTypeMapper sysWorkflowTypeMapper; + + @Resource + private SysWorkflowRecordMapper sysWorkflowRecordMapper; + + @Resource + private SysWorkflowRecordHistoryMapper sysWorkflowRecordHistoryMapper; + + @Resource + private SysWorkflowNodeMapper sysWorkflowNodeMapper; + + @Resource + private LeaseTaskMapper lMapper; + + @Resource + private MaterialMachineMapper materialMachineMapper; + + @Resource + private SelectMapper selectMapper; + + /** + * 根据协议Id查询在用安全工器具编码 + * @param sltAgreementInfo + * @return + */ + @Override + public List getUseData(SltAgreementInfo sltAgreementInfo) { + return mapper.getUseData(sltAgreementInfo); + } + + /** + * 批量查询待转数量 + * @param agreementId + * @param pairs + * @return + */ + @Override + public List getBatchInfo(Long agreementId, List pairs) { + return mapper.getBatchInfo(agreementId, pairs); + } + + /** + * 新增申请 + * @param lossAssignVo + * @return + */ + @Override + @Transactional(rollbackFor = Exception.class) + public AjaxResult add(LossAssignVo lossAssignVo) { + try { + int id; + String code; + if (lossAssignVo != null) { + if (lossAssignVo.getLossAssignInfo() != null) { + LossAssignInfo lossAssignInfo = lossAssignVo.getLossAssignInfo(); + // 获取丢失单号 + code = genderLossCode(); + lossAssignInfo.setCode(code); + lossAssignInfo.setCreateTime(new Date()); + List urls = new ArrayList<>(); + if (lossAssignVo.getLossAssignInfo().getDirUrls() != null) { + List dirUrls = lossAssignVo.getLossAssignInfo().getDirUrls(); + for (DirectApplyUrl dirUrl : dirUrls){ + urls.add(dirUrl.getUrl()); + } + //将urls所有内容用逗号拼接 + lossAssignInfo.setLossUrl(String.join(",", urls)); + } + lossAssignInfo.setCreateBy(SecurityUtils.getLoginUser().getUserid().toString()); + // 待审核 + lossAssignInfo.setStatus(0); + //保存主表 + int i = mapper.saveDirectApplyInfo(lossAssignInfo); + if (i < 0) { + throw new RuntimeException("保存主表失败"); + } + id = lossAssignInfo.getId(); + } else { + return AjaxResult.error("参数不能为空"); + } + if (!CollectionUtils.isEmpty(lossAssignVo.getLossAssignDetails())) { + lossAssignVo.getLossAssignDetails().forEach(lossAssignDetails -> { + lossAssignDetails.setLossId(id); + lossAssignDetails.setCreateBy(SecurityUtils.getLoginUser().getUserid().toString()); + }); + int i = mapper.saveDirectApplyDetails(lossAssignVo.getLossAssignDetails()); + if (i < 0) { + throw new RuntimeException("保存明细表失败"); + } + } + } else { + return AjaxResult.error("保存失败"); + } + // 新增审批流 + addSysWorkflowRecord(new WorkflowEvent(id, code, TM_TASK_LOSS_REPORT.getTaskTypeId(), lossAssignVo.getLossAssignInfo().getLossProName(), 0, null, lossAssignVo.getLossAssignInfo().getLossUnitId(), lossAssignVo.getLossAssignInfo().getLossProId())); + } catch (RuntimeException e) { + e.printStackTrace(); + } + return AjaxResult.success("保存成功"); + } + + /** + * 修改申请 + * @param lossAssignVo + * @return + */ + @Override + @Transactional(rollbackFor = Exception.class) + public AjaxResult edit(LossAssignVo lossAssignVo) { + if (lossAssignVo == null || lossAssignVo.getLossAssignInfo() == null || CollectionUtils.isEmpty(lossAssignVo.getLossAssignDetails())) { + return AjaxResult.error("参数不能为空"); + } + // 判断是否有新增可申请数量为0的设备 + List assignDetails = lossAssignVo.getLossAssignDetails(); + // 根据id查询当前单子数据,剔除当前单子数据 + List details = mapper.getDetailsById(lossAssignVo.getLossAssignInfo().getId()); + // 将details中的maId提取出来 + Set maIds = details.stream().map(LossAssignDetails::getMaId).collect(Collectors.toSet()); + // 将assignDetails中transNum为0,且maId不存在为maIds的maCode全部提取出来 + List maCodes = assignDetails.stream().filter(assignDetail -> assignDetail.getTransNum().compareTo(BigDecimal.ZERO) == 0 && !maIds.contains(assignDetail.getMaId())).map(LossAssignDetails::getMaCode).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(maCodes)) { + return AjaxResult.error("设备编码:" + String.join(",", maCodes) + "可申请数量为0,请重新选择"); + } + try { + LossAssignInfo lossAssignInfo = lossAssignVo.getLossAssignInfo(); + lossAssignInfo.setCreateTime(DateUtils.getNowDate()); + lossAssignInfo.setCreateBy(SecurityUtils.getLoginUser().getSysUser().getNickName()); + + List urls = new ArrayList<>(); + if (!CollectionUtils.isEmpty(lossAssignInfo.getDirUrls())) { + List dirUrls = lossAssignInfo.getDirUrls(); + for (DirectApplyUrl dirUrl : dirUrls) { + urls.add(dirUrl.getUrl()); + } + //将urls所有内容用逗号拼接 + lossAssignInfo.setLossUrl(String.join(",", urls)); + } + // 修改info表 + // 待审核 + lossAssignInfo.setStatus(0); + int i = mapper.updateDirectApplyInfo(lossAssignInfo); + if (i < 0) { + throw new RuntimeException("修改主表失败"); + } + // 真正删除详情表内容 + i = mapper.deleteApplyDetails(lossAssignInfo.getId()); + if (i < 0) { + throw new RuntimeException("删除详情表失败"); + } + + List lossAssignDetails = lossAssignVo.getLossAssignDetails(); + Integer id = lossAssignVo.getLossAssignInfo().getId(); + lossAssignDetails.forEach(lossAssignDetail -> { + lossAssignDetail.setLossId(id); + lossAssignDetail.setCreateBy(SecurityUtils.getLoginUser().getUserid().toString()); + }); + i = mapper.saveDirectApplyDetails(lossAssignDetails); + if (i < 0) { + throw new RuntimeException("保存明细表失败"); + } + + // 修改审批流 + updateSysWorkflowRecord(new WorkflowEvent(lossAssignVo.getLossAssignInfo().getId(), lossAssignVo.getLossAssignInfo().getCode(), TM_TASK_LOSS_REPORT.getTaskTypeId(), lossAssignVo.getLossAssignInfo().getLossProName(), lossAssignVo.getLossAssignInfo().getAgreementId(), null, lossAssignVo.getLossAssignInfo().getLossUnitId(), lossAssignVo.getLossAssignInfo().getLossProId())); + } catch (Exception e) { + log.error(e.getMessage()); + throw new RuntimeException("修改失败,请联系管理员"); + } + return AjaxResult.success("修改成功"); + } + + /** + * 删除申请 + * @param lossAssignInfo + * @return + */ + @Override + @Transactional(rollbackFor = Exception.class) + public AjaxResult remove(LossAssignInfo lossAssignInfo) { + try { + // 删除主表 + int i = mapper.deleteDirectApplyInfo(lossAssignInfo); + if (i < 0) { + throw new RuntimeException("删除主表失败"); + } + // 删除详情表 + i += mapper.deleteDirectApplyDetails(lossAssignInfo.getId()); + if (i < 0) { + throw new RuntimeException("删除详情表失败"); + } + } catch (RuntimeException e) { + log.error("删除失败:{}", e.getMessage()); + } + return AjaxResult.success("删除成功"); + } + + /** + * 查看详情 + * @param lossAssignInfo + * @return + */ + @Override + public AjaxResult getInfoById(LossAssignInfo lossAssignInfo) { + LossAssignVo lossAssignVo = new LossAssignVo(); + // 先查询info表信息 + LossAssignInfo info = mapper.getInfoById(lossAssignInfo); + // 根据领退料i8工程id查询分公司及项目部信息 + LossAssignInfo leaseApplyInfo = mapper.getDeptInfo(info); + if (leaseApplyInfo != null) { + info.setLossDepartName(leaseApplyInfo.getLossDepartName()); + info.setLossImpUnitName(leaseApplyInfo.getLossImpUnitName()); + } + if (StringUtils.isNotBlank(info.getLossUrl())) { + //用逗号分割放入数组 + String[] split = info.getLossUrl().split(","); + List list1 = new ArrayList<>(); + for (String s : split) { + list1.add(new DirectApplyUrl(s)); + } + info.setDirUrls(list1); + } + lossAssignVo.setLossAssignInfo(info); + // 查询详情表信息 + List details = mapper.getDetailsById(lossAssignInfo.getId()); + if (!CollectionUtils.isEmpty(details)) { + // 根据协议id,类型id及设备id查询待转及可转数量 + for (LossAssignDetails detail : details) { + LossAssignDetails assignDetails = mapper.getNumList(detail); + if (assignDetails != null) { + if (detail.getLossId().equals(assignDetails.getLossId())) { + detail.setWaitTransNum(BigDecimal.ZERO); + detail.setTransNum(BigDecimal.ONE); + } else { + detail.setWaitTransNum(assignDetails.getWaitTransNum()); + detail.setTransNum(BigDecimal.ZERO); + } + } + } + } + lossAssignVo.setLossAssignDetails(details); + return AjaxResult.success(lossAssignVo); + } + + /** + * 报备丢失审批 + * @param lossAssignInfo + * @return + */ + @Override + public AjaxResult updateDirectSysWorkflowRecordHistory(LossAssignInfo lossAssignInfo) { + Integer isAccept = lossAssignInfo.getIsAccept(); + String remark = lossAssignInfo.getRemark(); + // 考虑工单直转,参数只有一个id,故从后台查询详细数据 + lossAssignInfo = mapper.getInfoDetails(lossAssignInfo); + lossAssignInfo.setIsAccept(isAccept); + lossAssignInfo.setRemark(remark); + SysUser sysUser = SecurityUtils.getLoginUser().getSysUser(); + Long userId = sysUser.getUserId(); + Integer taskId = lossAssignInfo.getId(); + String recordCode = lossAssignInfo.getCode(); + Integer nextNodeId = lossAssignInfo.getNextNodeId(); + Integer nodeId = lossAssignInfo.getNodeId(); + lossAssignInfo.setCreateBy(userId.toString()); + if (lossAssignInfo.getIsAccept() == null) { + throw new ServiceException("请选择是否接受审批"); + } + + // 查询出【当前任务所属审批流】的所有节点 + List sysWorkflowNodeList = getWorkflowNodes(lossAssignInfo); + if (lossAssignInfo.getIsAccept() == 1) { + // 处理审批通过✅ + handleDirectApproval(sysWorkflowNodeList, lossAssignInfo, sysUser, taskId, recordCode, nextNodeId, nodeId); + } else { + // 处理审核驳回❌ + handleDirectReject(sysWorkflowNodeList, lossAssignInfo, taskId); + } + return AjaxResult.success("操作成功"); + } + + /** + * 丢失报备查询列表 + * @param lossAssignInfo + * @return + */ + @Override + public List getList(LossAssignInfo lossAssignInfo) { + Set userRoles = SecurityUtils.getLoginUser().getRoles(); + String username = SecurityUtils.getLoginUser().getUsername(); + BmTeam teamData = null; + // 检查用户是否具有特殊角色 + boolean hasSpecialRole = hasSpecialRole(userRoles); + if (!hasSpecialRole) { + // 根据用户名判断用户是否为班组长 + teamData = materialMachineMapper.getTeamData(username); + if (teamData == null) { + // 根据用户名查询项目部信息 + List departId = selectMapper.getDepartId(username); + // 根据项目部id查询工程信息 + List projectIdList = selectMapper.getProjectId(departId); + if (!org.springframework.util.CollectionUtils.isEmpty(projectIdList)) { + lossAssignInfo.setProjectIdList(projectIdList); + } + // 部门查询赋值 + extractedDept(lossAssignInfo); + } + } + + List list = mapper.getList(lossAssignInfo); + if (!com.alibaba.nacos.common.utils.CollectionUtils.isEmpty(list) && teamData != null) { + list = list.stream() + .filter(item -> + (StringUtils.isNotBlank(item.getBzIdCard()) && Objects.equals(username, item.getBzIdCard())) + ) + .collect(Collectors.toList()); + } + return list; + } + + /** + * 获取物资类型连动式下拉框 + * @param typeId + * @param agreementId + * @return + */ + @Override + public List getEquipmentThreeTypes(Long typeId, Long agreementId) { + List maTypes = mapper.selectMaTypeThreeLists(agreementId); + List list = new ArrayList<>(); + for (Type maType : maTypes) { + if (maType.getParentId() == 0) { + list.add(maType); + } + } + //根据父节点获取对应的儿子节点 + for (Type maType : list) { + List child = getChild(maTypes, maType.getTypeId()); + maType.setChildren(child); + } + return list; + } + + /** + * 递归调用获取子级 + * + * @param list 集合 + * @param parentId 父级id + */ + public List getChild(List list, Long parentId) { + List childList = new ArrayList(); + for (Type maType : list) { + Long typeId = maType.getTypeId(); + Long pid = maType.getParentId(); + if (parentId.equals(pid)) { + List childLists = getChild(list, typeId); + maType.setChildren(childLists); + childList.add(maType); + } + } + return childList; + } + + /** + * 部门查询赋值 + * @param lossAssignInfo + */ + private void extractedDept(LossAssignInfo lossAssignInfo) { + String deptId = SecurityUtils.getLoginUser().getSysUser().getDeptId().toString(); + Set targetUnits = new HashSet<>(Arrays.asList( + "101", "102", "309", "327", "330", "333", "337", "338", + "339", "340", "341", "342", "344", "345", "346", "347", + "348", "349" + )); + if (targetUnits.contains(deptId)) { + lossAssignInfo.setImpUnit(deptId); + } else { + //判断祖籍是否包含分公司 + String ancestors = selectMapper.getAncestors(deptId); + if (ancestors != null && !ancestors.isEmpty()) { + // 将ancestors转换为集合 + String[] parts = ancestors.split(","); + for (String part : parts) { + String trimmedPart = part.trim(); + // Check if the trimmed part is in our target set + if (targetUnits.contains(trimmedPart)) { + lossAssignInfo.setImpUnit(trimmedPart); + break; + } + } + } + } + } + + /** + * 检查用户是否具有特殊角色 + * @param userRoles + * @return + */ + private boolean hasSpecialRole(Set userRoles) { + if (userRoles == null) { + return false; + } + List allowedRoles = Collections.singletonList("clzcx"); + return allowedRoles.stream().anyMatch(userRoles::contains); + } + + /** + * 处理审核驳回❌ + * @param sysWorkflowNodeList + * @param lossAssignInfo + * @param taskId + */ + private void handleDirectReject(List sysWorkflowNodeList, LossAssignInfo lossAssignInfo, Integer taskId) { + updateWorkflowStatus(taskId, 3); + SysUser sysUser = SecurityUtils.getLoginUser().getSysUser(); + // 修改工单信息 + updateWorkOrder(lossAssignInfo.getRecordId(), sysUser.getUserName()); + for (int i = 0; i < sysWorkflowNodeList.size(); i++) { + // 判断列表中哪个节点是当前审批的节点,如果不是审批的节点不处理 + if (lossAssignInfo.getNextNodeId().equals(sysWorkflowNodeList.get(i).getId())) { + log.info("-------------进入到了当前审批的节点-------------"); + //插入history表中 + SysWorkflowRecordHistory history = new SysWorkflowRecordHistory(); + history.setNodeId(lossAssignInfo.getNextNodeId()); + if (sysWorkflowNodeList.size() - 1 != i) { + history.setNextNodeId(sysWorkflowNodeList.get(i + 1).getId()); + sysWorkflowNodeList.get(i).setNextNodeId(sysWorkflowNodeList.get(i + 1).getId()); + sysWorkflowNodeList.get(i).setNextRoleIds(sysWorkflowNodeList.get(i + 1).getRoleIds()); + } else { + history.setNextNodeId(null); + sysWorkflowNodeList.get(i).setNextNodeId(null); + sysWorkflowNodeList.get(i).setNextRoleIds(null); + } + history.setRemark(lossAssignInfo.getRemark()); + history.setRecordId(lossAssignInfo.getRecordId()); + history.setIsAccept(lossAssignInfo.getIsAccept()); + history.setCreateBy(sysUser.getUserId().toString()); + sysWorkflowRecordHistoryMapper.addSysWorkflowRecordHistory(history); + } + } + } + + /** + * 修改工单信息 + * @param recordId + * @param userName + */ + private void updateWorkOrder(Integer recordId, String userName) { + WorkPeopleInfo peopleInfo = new WorkPeopleInfo(); + peopleInfo.setFlowId(recordId); + peopleInfo.setReceiverUsername(userName); + + List infos = lMapper.getWorkPeopleInfo(peopleInfo); + if (com.alibaba.nacos.common.utils.CollectionUtils.isNotEmpty(infos)) { + for (WorkPeopleInfo info : infos) { + peopleInfo.setInformationId(info.getInformationId()); + lMapper.updateWorkPeopleInfo(peopleInfo); + } + } + } + + /** + * 修改任务状态 + * + * @param taskId + * @param status + */ + private void updateWorkflowStatus(Integer taskId, int status) { + SysWorkflowRecord sysWorkflowRecord = new SysWorkflowRecord(); + sysWorkflowRecord.setTaskId(taskId); + sysWorkflowRecord.setWorkflowStatus(status); + sysWorkflowRecord.setTaskType(26); + sysWorkflowRecordMapper.updateSysWorkflowRecord(sysWorkflowRecord); + // 修改bm_loss_assign表状态为驳回 + LossAssignInfo lossAssignInfo = new LossAssignInfo(); + lossAssignInfo.setId(taskId); + lossAssignInfo.setStatus(status); + mapper.updateDirectApplyInfo(lossAssignInfo); + } + + /** + * 处理审批通过✅ + * @param sysWorkflowNodeList + * @param lossAssignInfo + * @param sysUser + * @param taskId + * @param recordCode + * @param nextNodeId + * @param nodeId + */ + private void handleDirectApproval(List sysWorkflowNodeList, LossAssignInfo lossAssignInfo, SysUser sysUser, Integer taskId, String recordCode, Integer nextNodeId, Integer nodeId) { + boolean found = false; + List userList = new ArrayList<>(); + for (int i = 0; i < sysWorkflowNodeList.size(); i++) { + // 判断列表中哪个节点是当前审批的节点,如果不是审批的节点不处理 + if (lossAssignInfo.getNextNodeId().equals(sysWorkflowNodeList.get(i).getId())) { + log.info("-------------进入到了当前审批的节点-------------"); + //插入history表中 + SysWorkflowRecordHistory history = new SysWorkflowRecordHistory(); + history.setNodeId(lossAssignInfo.getNextNodeId()); + SysWorkflowRecordHistory sysWorkflowRecordHistory = new SysWorkflowRecordHistory(); + sysWorkflowRecordHistory.setRecordId(lossAssignInfo.getRecordId()); + sysWorkflowRecordHistory.setNodeId(nextNodeId); + if (sysWorkflowNodeList.size() - 1 != i) { + history.setNextNodeId(sysWorkflowNodeList.get(i + 1).getId()); + sysWorkflowNodeList.get(i).setNextNodeId(sysWorkflowNodeList.get(i + 1).getId()); + sysWorkflowNodeList.get(i).setNextRoleIds(sysWorkflowNodeList.get(i + 1).getRoleIds()); + } else { + history.setNextNodeId(null); + nextNodeId = null; + sysWorkflowNodeList.get(i).setNextNodeId(null); + sysWorkflowNodeList.get(i).setNextRoleIds(null); + } + //目前定义为安全工器具为刘春杰审批 + if (history.getNextNodeId() != null && history.getNextNodeId() == 47) { + lossAssignInfo.setUserId(1549L); + userList = mapper.getUseList(lossAssignInfo); + } + String userIds = userList.stream().map(WorkPeopleInfo::getUserId).map(String::valueOf).collect(Collectors.joining(",")); + history.setDirectUserIds(userIds); + history.setRemark(lossAssignInfo.getRemark()); + history.setRecordId(lossAssignInfo.getRecordId()); + history.setIsAccept(lossAssignInfo.getIsAccept()); + history.setCreateBy(sysUser.getUserId().toString()); + sysWorkflowRecordHistoryMapper.addSysWorkflowRecordHistory(history); + + //获取当前node的directUserIds + String userIdsNow = sysWorkflowRecordHistoryMapper.getNowUserIds(sysWorkflowRecordHistory); + // 判断当前用户是否是当前节点的配置用户 + if (StringUtils.isNotBlank(userIdsNow)) { + if (userIdsNow.contains(sysUser.getUserId().toString())) { + log.info("-------------✅通过校验,当前用户是该节点审批人员,进行更新任务信息-------------"); + // 根据任务ID 更新审批流状态 + updateWorkflowStatus(taskId, 1); + found = true; + break; + } else { + throw new ServiceException("您不是当前节点配置的审批人员,无法进行操作!!"); + } + } else { + throw new ServiceException("您不是当前节点配置的审批人员,无法进行操作!!"); + } + } + } + if (!found) { + return; + } + try { + log.info("-------------节点更新工单信息✔-------------"); + // 修改工单信息 + updateWorkOrder(lossAssignInfo.getRecordId(), sysUser.getUserName()); + // 如果下个节点⬇存在的话,那么就创建下个节点⬇的工单信息 + if (nextNodeId != null && com.alibaba.nacos.common.utils.CollectionUtils.isNotEmpty(userList)) { + createWorkOrderAndPeopleDirect(sysUser, lossAssignInfo.getLossProName(), taskId, recordCode, lossAssignInfo.getRecordId(), nextNodeId, userList); + } else { + int result = 0; + //处理设备状态为丢失状态 + List detailsById = mapper.getDetailsById(lossAssignInfo.getId()); + for (LossAssignDetails details : detailsById) { + result = mapper.updateStatus(details.getMaId(), 18); + if (result == 0) { + throw new ServiceException("更新设备状态失败"); + } + } + // 更新任务状态为已完成 + updateWorkflowStatus(lossAssignInfo.getId(), 2); + } + log.info("-------------节点更新工单信息结束-------------"); + } catch (Exception e) { + System.err.println("更新工单信息失败:" + e.getMessage()); + log.error("更新工单信息失败: {}", e.getMessage(), e); + } + } + + /** + * 处理审批通过 + * @param sysUser + * @param backProName + * @param taskId + * @param taskCode + * @param newId + * @param nodeId + * @param userList + */ + private void createWorkOrderAndPeopleDirect(SysUser sysUser, String backProName, int taskId, String taskCode, int newId,int nodeId,List userList) { + String id = UUID.randomUUID().toString().replace("-", ""); + String webUrlBase = "/mea-h5/#/pages/businessAudit/siteDirectAudit/details"; + String queryParams = UriComponentsBuilder.newInstance() + .queryParam("appId", "9fa73f046ef520b09e94bbffc3b07702") + .queryParam("taskId", taskId) + .queryParam("id", newId) + .queryParam("nodeId", nodeId) + .build().encode().toUriString(); + + WorkApplyInfo workApplyInfo = new WorkApplyInfo(); + workApplyInfo.setId(id); + workApplyInfo.setTitle("智能机具-直转申请待审核"); + workApplyInfo.setCreateUserName(sysUser.getUserName()); + workApplyInfo.setContent(sysUser.getNickName() + ":" + taskCode + "-" + backProName); + workApplyInfo.setType(1); + workApplyInfo.setWebAppId("9fa73f046ef520b09e94bbffc3b07702"); + workApplyInfo.setSendUserName(sysUser.getUserName()); + workApplyInfo.setTypeId(2025050901); + workApplyInfo.setBusinessId(String.valueOf(newId)); + workApplyInfo.setNextStatus("待审核"); + workApplyInfo.setFlowState(null); + workApplyInfo.setWebUrl(webUrlBase + queryParams); + workApplyInfo.setRout(webUrlBase + queryParams); + + int countWork = mapper.insertWorkOrder(workApplyInfo); + if (countWork > 0) { + for (WorkPeopleInfo user : userList) { + WorkPeopleInfo workPeopleInfo = new WorkPeopleInfo(); + workPeopleInfo.setId(UUID.randomUUID().toString().replace("-", "")); + workPeopleInfo.setInformationId(id); + workPeopleInfo.setReceiverUsername(user.getUserName()); + workPeopleInfo.setReadState(0); + workPeopleInfo.setHandleState(0); + workPeopleInfo.setIsExamine(0); + mapper.insertWorkPeople(workPeopleInfo); + } + } + } + + /** + * 审批所有节点 + * @param lossAssignInfo + * @return + */ + private List getWorkflowNodes(LossAssignInfo lossAssignInfo) { + SysWorkflowNode sysWorkflowNode = new SysWorkflowNode(); + sysWorkflowNode.setTypeId(23); + List sysWorkflowNodeList = sysWorkflowNodeMapper.selectSysWorkflowNodeList(sysWorkflowNode); + if (sysWorkflowNodeList == null || sysWorkflowNodeList.isEmpty()) { + throw new ServiceException("流程节点配置为空"); + } + return sysWorkflowNodeList; + } + + /** + * 修改审批流 + * @param event + */ + private void updateSysWorkflowRecord(WorkflowEvent event) { + SysUser sysUser = SecurityUtils.getLoginUser().getSysUser(); + SysWorkflowRecord recordInfo = new SysWorkflowRecord(); + int count = 0; + //获取审批流id + SysWorkflowType sysWorkflowType = new SysWorkflowType(); + sysWorkflowType.setTaskType(event.getTaskType()); + 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); + // 先根据id查询该数据是否已经存在 + recordInfo = sysWorkflowRecordMapper.getWorkflowRecordHistory(event); + // 根据id删除该数据 + if (recordInfo != null) { + sysWorkflowRecordMapper.deleteSysWorkflowRecord(event); + } + sysWorkflowRecord = new SysWorkflowRecord(); + sysWorkflowRecord.setWorkflowId(sysWorkflowType.getId()); + sysWorkflowRecord.setTaskId(event.getTaskId()); + sysWorkflowRecord.setTaskType(event.getTaskType()); + sysWorkflowRecord.setTaskCode(event.getTaskCode()); + //创建审批任务 + count = sysWorkflowRecordMapper.addSysWorkflowRecord(sysWorkflowRecord); + if (0 == count) { + throw new RuntimeException("创建审批任务失败!"); + } + + } + // 获取新创建的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()); + //根据project_id获取external_id + List userList = new ArrayList<>(); + LossAssignInfo lossAssignInfo = mapper.getExternalId(Integer.parseInt(event.getLeaseProId())); + if (lossAssignInfo != null) { + //获取项目经理id + String leaderId = mapper.getDeptId(lossAssignInfo.getLossExternalId()); + //获取项目经理账号 + String leaderAccount = mapper.getUserNameById(leaderId); + if (leaderAccount != null && !leaderAccount.isEmpty()) { + userList = mapper.getUserIdByUserName(leaderAccount); + } + if (com.alibaba.nacos.common.utils.CollectionUtils.isNotEmpty(userList)) { + String userIds = userList.stream().map(WorkPeopleInfo::getUserId).map(String::valueOf).collect(Collectors.joining(",")); + sysWorkflowRecordHistory.setDirectUserIds(userIds); + } else { + mapper.deleteWorkflowRecord(newId); + log.info("项目经理账号不存在"); + } + } + // 先根据id查询该数据是否已经存在 + if (recordInfo != null) { + SysWorkflowRecordHistory info = sysWorkflowRecordHistoryMapper.getHistoryInfo(recordInfo.getId()); + if (info != null) { + // 将审核记录删除,重新添加 + sysWorkflowRecordHistoryMapper.deleteSysWorkflowRecordHistory(recordInfo.getId()); + } + } + sysWorkflowRecordHistoryMapper.addSysWorkflowRecordHistory(sysWorkflowRecordHistory); + if (count > 0 && com.alibaba.nacos.common.utils.CollectionUtils.isNotEmpty(userList)) { + // 先根据newId查询sys_information表信息 + WorkApplyInfo workApplyInfo = sysWorkflowRecordHistoryMapper.getSysInformation(newId); + //先根据newId把sys_information和sys_information_people表数据清除 + sysWorkflowRecordHistoryMapper.deleteSysInformation(newId); + // 根据workApplyInfo数据删除sys_information_people表数据 + if (workApplyInfo != null) { + sysWorkflowRecordHistoryMapper.deleteInformationPeople(workApplyInfo.getId()); + } + assert lossAssignInfo != null; + createWorkOrderAndPeople(sysUser, event, Long.valueOf(sysWorkflowRecord.getTaskId()), newId, sysWorkflowRecordHistory.getNodeId(), userList, lossAssignInfo.getLossProName()); + } + } + + /** + * 新增审批流 + * @param event + */ + private void addSysWorkflowRecord(WorkflowEvent event) { + SysUser sysUser = SecurityUtils.getLoginUser().getSysUser(); + int count = 0; + + //获取审批流id + SysWorkflowType sysWorkflowType = new SysWorkflowType(); + sysWorkflowType.setTaskType(event.getTaskType()); + 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(event.getTaskId()); + sysWorkflowRecord.setTaskType(event.getTaskType()); + sysWorkflowRecord.setTaskCode(event.getTaskCode()); + //创建审批任务 + count = sysWorkflowRecordMapper.addSysWorkflowRecord(sysWorkflowRecord); + if (0 == count) { + throw new RuntimeException("创建审批任务失败!"); + } + } + // 获取新创建的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()); + //根据project_id获取external_id + List userList = new ArrayList<>(); + LossAssignInfo lossAssignInfo = mapper.getExternalId(Integer.parseInt(event.getLeaseProId())); + if (lossAssignInfo != null) { + //获取项目经理id + String leaderId = mapper.getDeptId(lossAssignInfo.getLossExternalId()); + //获取项目经理账号 + String leaderAccount = mapper.getUserNameById(leaderId); + if (leaderAccount != null && !leaderAccount.isEmpty()) { + userList = mapper.getUserIdByUserName(leaderAccount); + } + if (!CollectionUtils.isEmpty(userList)) { + String userIds = userList.stream().map(WorkPeopleInfo::getUserId).map(String::valueOf).collect(Collectors.joining(",")); + sysWorkflowRecordHistory.setDirectUserIds(userIds); + } + } + sysWorkflowRecordHistoryMapper.addSysWorkflowRecordHistory(sysWorkflowRecordHistory); + + if (count > 0 && !CollectionUtils.isEmpty(userList)) { + assert lossAssignInfo != null; + createWorkOrderAndPeople(sysUser, event, Long.valueOf(sysWorkflowRecord.getTaskId()), newId, sysWorkflowRecordHistory.getNodeId(), userList, lossAssignInfo.getLossProName()); + } + } + + /** + * 创建工单和工单人员 + * @param sysUser + * @param event + * @param taskId + * @param newId + * @param nodeId + * @param userList + * @param projectName + */ + private void createWorkOrderAndPeople(SysUser sysUser, WorkflowEvent event, Long taskId, int newId, int nodeId, List userList, String projectName) { + String id = UUID.randomUUID().toString().replace("-", ""); + String webUrlBase = "/mea-h5/#/pages/businessAudit/siteDirectAudit/details"; + String queryParams = UriComponentsBuilder.newInstance() + .queryParam("appId", "9fa73f046ef520b09e94bbffc3b07702") + .queryParam("taskId", taskId) + .queryParam("id", newId) + .queryParam("nodeId", nodeId) + .build().encode().toUriString(); + + WorkApplyInfo workApplyInfo = new WorkApplyInfo(); + workApplyInfo.setId(id); + workApplyInfo.setTitle("智能机具-报备丢失待审核"); + workApplyInfo.setCreateUserName(sysUser.getUserName()); + workApplyInfo.setContent(sysUser.getNickName() + ":" + event.getTaskCode() + "-" + projectName); + workApplyInfo.setType(1); + workApplyInfo.setWebAppId("9fa73f046ef520b09e94bbffc3b07702"); + workApplyInfo.setSendUserName(sysUser.getUserName()); + workApplyInfo.setTypeId(2025050901); + workApplyInfo.setBusinessId(String.valueOf(newId)); + workApplyInfo.setNextStatus("待审核"); + workApplyInfo.setFlowState(null); + workApplyInfo.setWebUrl(webUrlBase + queryParams); + workApplyInfo.setRout(webUrlBase + queryParams); + + int countWork = mapper.insertWorkOrder(workApplyInfo); + if (countWork > 0) { + for (WorkPeopleInfo user : userList) { + WorkPeopleInfo workPeopleInfo = new WorkPeopleInfo(); + workPeopleInfo.setId(UUID.randomUUID().toString().replace("-", "")); + workPeopleInfo.setInformationId(id); + workPeopleInfo.setReceiverUsername(user.getUserName()); + workPeopleInfo.setReadState(0); + workPeopleInfo.setHandleState(0); + workPeopleInfo.setIsExamine(0); + mapper.insertWorkPeople(workPeopleInfo); + } + } + } + + /** + * 生成丢失单号 + * @return + */ + private String genderLossCode() { + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd"); + Date date = new Date(); + String format = simpleDateFormat.format(date); + Integer total = mapper.getListAll(); + return "DS" + format + "-" + (total + 1); + } + +} diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/mapper/SysWorkflowRecordMapper.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/mapper/SysWorkflowRecordMapper.java index bfd913ee..2103eb8a 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/mapper/SysWorkflowRecordMapper.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/work/mapper/SysWorkflowRecordMapper.java @@ -1,6 +1,7 @@ package com.bonus.material.work.mapper; import com.bonus.common.biz.domain.lease.LeaseApplyInfo; +import com.bonus.material.clz.domain.direct.WorkflowEvent; import com.bonus.material.work.domain.SysWorkflowRecord; import com.bonus.material.work.domain.SysWorkflowRecordHistory; import com.bonus.material.work.domain.dto.SysWorkflowAuditDto; @@ -45,16 +46,16 @@ public interface SysWorkflowRecordMapper { /** * 根据id查询审批流记录信息 - * @param id + * @param event * @return */ - SysWorkflowRecord getWorkflowRecordHistory(Integer id); + SysWorkflowRecord getWorkflowRecordHistory(WorkflowEvent event); /** * 删除审批流记录信息 - * @param taskId + * @param event */ - void deleteSysWorkflowRecord(int taskId); + void deleteSysWorkflowRecord(WorkflowEvent event); int deleteRecord(int id); } diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/material/clz/ClzDirectMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/material/clz/ClzDirectMapper.xml index e41f6f9b..d309b189 100644 --- a/bonus-modules/bonus-material/src/main/resources/mapper/material/clz/ClzDirectMapper.xml +++ b/bonus-modules/bonus-material/src/main/resources/mapper/material/clz/ClzDirectMapper.xml @@ -291,7 +291,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" LEFT JOIN ma_type mt2 on mt2.type_id = mt1.parent_id LEFT JOIN ma_machine mm on mm.ma_id = dad.ma_id LEFT JOIN clz_direct_apply_info cda ON dad.direct_id = cda.id - LEFT JOIN clz_slt_agreement_info csi ON cda.lease_agreement_id + LEFT JOIN clz_slt_agreement_info csi ON cda.lease_agreement_id = csi.agreement_id LEFT JOIN clz_lease_apply_info cla ON csi.lease_id = cla.id WHERE dad.direct_id = #{id} GROUP BY diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/material/lossAssessment/LossAssignMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/material/lossAssessment/LossAssignMapper.xml new file mode 100644 index 00000000..facbdb86 --- /dev/null +++ b/bonus-modules/bonus-material/src/main/resources/mapper/material/lossAssessment/LossAssignMapper.xml @@ -0,0 +1,626 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + insert into bm_loss_assign + ( + + code, + + + agreement_id, + + + loss_man, + + + phone, + + + loss_url, + + + status, + + + create_by, + + create_time, + del_flag + ) values ( + + #{code}, + + + #{agreementId}, + + + #{lossMan}, + + + #{lossPhone}, + + + #{lossUrl}, + + + #{status}, + + + #{createBy}, + + NOW(), + '1' + ) + + + + insert into bm_loss_assign_details(loss_assign_id, type_id, ma_id, num, create_by,create_time, del_flag) + values + + (#{item.lossId}, #{item.typeId}, #{item.maId}, #{item.lossNum}, #{item.createBy}, NOW() , '1') + + + + + insert into uni_org.sys_information + + id, + create_time, + create_user_name, + title, + content, + web_app_id, + type, + extend, + send_user_name, + web_url, + type_id, + business_id, + flow_state, + rout, + next_status, + extend_name, + + + #{id}, + now(), + #{createUserName}, + #{title}, + #{content}, + #{webAppId}, + #{type}, + #{extend}, + #{sendUserName}, + #{webUrl}, + #{typeId}, + #{businessId}, + #{flowState}, + #{rout}, + #{nextStatus}, + #{extendName}, + + + + + insert into uni_org.sys_information_people + + id, + create_time, + update_time, + information_id, + read_state, + handle_state, + receiver_username, + update_user, + is_examine, + + + + #{id}, + now(), + #{updateTime}, + #{informationId}, + #{readState}, + #{handleState}, + #{receiverUsername}, + #{updateUser}, + #{isExamine}, + + + + + update bm_loss_assign + set + + agreement_id = #{agreementId}, + + + loss_man = #{lossMan}, + + + phone = #{lossPhone}, + + + loss_url = #{lossUrl}, + + + status = #{status}, + + update_time= NOW() + where id = #{id} + + + update ma_machine + set + ma_status = #{maStatus} + where ma_id = #{maId} + + + + update bm_loss_assign_details + set del_flag = '0' + where loss_assign_id = #{id} + + + + delete from sys_workflow_record where id = #{newId} + + + + update bm_loss_assign + set del_flag = '0' + where id = #{id} + + + + delete from bm_loss_assign_details where loss_assign_id = #{id} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/material/work/SysWorkflowRecordMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/material/work/SysWorkflowRecordMapper.xml index 4d9ab6f9..a6c469fa 100644 --- a/bonus-modules/bonus-material/src/main/resources/mapper/material/work/SysWorkflowRecordMapper.xml +++ b/bonus-modules/bonus-material/src/main/resources/mapper/material/work/SysWorkflowRecordMapper.xml @@ -32,7 +32,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update sys_workflow_record set workflow_id = #{workflowId} where id = #{id} - delete from sys_workflow_record where task_type = '25' AND task_id = #{taskId} + delete from sys_workflow_record where task_type = #{taskType} AND task_id = #{taskId} delete from sys_workflow_record where task_Id = #{id} @@ -163,6 +163,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" task_type as taskType, task_code as taskCode from sys_workflow_record - where task_type = '25' AND task_id = #{id} + where task_type = #{taskType} AND task_id = #{taskId}