diff --git a/ruoyi-admin/src/main/java/com/ruoyi/quality/controller/QualityManufacturingCheckoutController.java b/ruoyi-admin/src/main/java/com/ruoyi/quality/controller/QualityManufacturingCheckoutController.java index e7e0de27..b5c619b8 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/quality/controller/QualityManufacturingCheckoutController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/quality/controller/QualityManufacturingCheckoutController.java @@ -1,18 +1,29 @@ package com.ruoyi.quality.controller; +import java.util.HashMap; import java.util.List; import com.ruoyi.aftersales.domain.AftersalesComplaintNoticeDetail; import com.ruoyi.aftersales.domain.vo.AftersalesMaterialVO; import com.ruoyi.erp.domain.ErpBom; +import com.ruoyi.process.general.service.IProcessService; import com.ruoyi.quality.domain.QualityManufacturingCheckoutMaterial; import com.ruoyi.quality.domain.QualityManufacturingProcess; +import com.ruoyi.quality.domain.QualityOrderDetail; import com.ruoyi.quality.domain.VO.CheckoutMaterialVO; import com.ruoyi.quality.domain.VO.CheckoutProcessExportVO; +import com.ruoyi.quality.domain.VO.QualityManufacturingCheckoutVO; +import com.ruoyi.quality.domain.VO.QualityOrderReportVO; +import org.activiti.engine.RuntimeService; +import org.activiti.engine.TaskService; +import org.activiti.engine.runtime.ProcessInstance; +import org.activiti.engine.task.Task; +import org.apache.commons.lang3.BooleanUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; +import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.enums.BusinessType; @@ -23,6 +34,9 @@ import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.core.page.TableDataInfo; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; + /** * 品质管理制程检验Controller * @@ -38,6 +52,15 @@ public class QualityManufacturingCheckoutController extends BaseController @Autowired private IQualityManufacturingCheckoutService qualityManufacturingCheckoutService; + @Autowired + private TaskService taskService; + + @Autowired + private RuntimeService runtimeService; + + @Autowired + private IProcessService processService; + @RequiresPermissions("quality:manufacturingCheckout:view") @GetMapping() public String manufacturingCheckout() @@ -51,10 +74,10 @@ public class QualityManufacturingCheckoutController extends BaseController @RequiresPermissions("quality:manufacturingCheckout:list") @PostMapping("/list") @ResponseBody - public TableDataInfo list(QualityManufacturingCheckout qualityManufacturingCheckout) + public TableDataInfo list(QualityManufacturingCheckoutVO manufacturingCheckoutVO) { startPage(); - List list = qualityManufacturingCheckoutService.selectQualityManufacturingCheckoutList(qualityManufacturingCheckout); + List list = qualityManufacturingCheckoutService.selectQualityManufacturingCheckoutList(manufacturingCheckoutVO); return getDataTable(list); } @@ -65,26 +88,18 @@ public class QualityManufacturingCheckoutController extends BaseController @Log(title = "品质管理制程检验", businessType = BusinessType.EXPORT) @PostMapping("/export") @ResponseBody - public AjaxResult export(@RequestBody String[] checkouts) + public AjaxResult export(QualityManufacturingCheckout manufacturingCheckout,String ids) { - String checkoutString = String.join(",", checkouts); // 带分隔符 - List exportVOS = qualityManufacturingCheckoutService.getExportList(checkouts); - ExcelUtil util = new ExcelUtil(CheckoutProcessExportVO.class); - return util.exportExcel(exportVOS, checkoutString); - } - - /** - * 导出品质管理制程检验列表 - */ - @RequiresPermissions("quality:manufacturingCheckout:export") - @Log(title = "品质管理制程检验", businessType = BusinessType.EXPORT) - @PostMapping("/exportAll") - @ResponseBody - public AjaxResult export(QualityManufacturingCheckout qualityManufacturingCheckout) - { - List list = qualityManufacturingCheckoutService.getAllExportList(qualityManufacturingCheckout); - ExcelUtil util = new ExcelUtil(CheckoutProcessExportVO.class); - return util.exportExcel(list, "品质管理制程检验数据"); + if (StringUtils.isEmpty(ids)){ + List list = qualityManufacturingCheckoutService.getAllExportList(manufacturingCheckout); + ExcelUtil util = new ExcelUtil(CheckoutProcessExportVO.class); + return util.exportExcel(list, "品质报告单数据"); + }else { + String[] checkCodes = ids.split(","); + List list = qualityManufacturingCheckoutService.getExportList(checkCodes); + ExcelUtil util = new ExcelUtil(CheckoutProcessExportVO.class); + return util.exportExcel(list, ids); + } } /** @@ -103,9 +118,11 @@ public class QualityManufacturingCheckoutController extends BaseController @Log(title = "品质管理制程检验", businessType = BusinessType.INSERT) @PostMapping("/add") @ResponseBody - public AjaxResult addSave(@RequestBody QualityManufacturingCheckout qualityManufacturingCheckout) + public AjaxResult addSave(@RequestBody QualityManufacturingCheckoutVO qualityManufacturingCheckoutVO) { - return toAjax(qualityManufacturingCheckoutService.insertQualityManufacturingCheckout(qualityManufacturingCheckout)); + qualityManufacturingCheckoutVO.setAuditStatus("0"); + qualityManufacturingCheckoutService.submitApply(qualityManufacturingCheckoutVO); + return AjaxResult.success(); } /** @@ -138,7 +155,7 @@ public class QualityManufacturingCheckoutController extends BaseController @GetMapping("/detail/{manufacturingCheckoutCode}") public String detail(@PathVariable("manufacturingCheckoutCode") String manufacturingCheckoutCode, ModelMap mmap) { - QualityManufacturingCheckout qualityManufacturingCheckout = qualityManufacturingCheckoutService.selectQualityManufacturingCheckoutByCode(manufacturingCheckoutCode); + QualityManufacturingCheckoutVO qualityManufacturingCheckout = qualityManufacturingCheckoutService.selectQualityManufacturingCheckoutByCode(manufacturingCheckoutCode); mmap.put("qualityManufacturingCheckout", qualityManufacturingCheckout); return prefix + "/detail"; } @@ -248,6 +265,67 @@ public class QualityManufacturingCheckoutController extends BaseController return getDataTable(list); } + /** + * 加载审批弹窗 + * @param taskId + * @param mmap + * @return + */ + @GetMapping("/showVerifyDialog/{taskId}") + public String showVerifyDialog(@PathVariable("taskId") String taskId, ModelMap mmap) { + Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); + String processInstanceId = task.getProcessInstanceId(); + ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult(); + QualityManufacturingCheckoutVO qualityManufacturingCheckoutVO = qualityManufacturingCheckoutService.selectQualityManufacturingCheckoutById(new Long(processInstance.getBusinessKey())); + mmap.put("formData", qualityManufacturingCheckoutVO); + mmap.put("taskId", taskId); + String verifyName = task.getTaskDefinitionKey().substring(0, 1).toUpperCase() + task.getTaskDefinitionKey().substring(1); + return prefix + "/task" + verifyName; + } + /** + * 自动绑定页面字段 + */ + @ModelAttribute("preloadObj") + public QualityManufacturingCheckoutVO getObj(@RequestParam(value = "manufacturingCheckoutId", required = false) Long manufacturingCheckoutId, HttpSession session) { + if (manufacturingCheckoutId != null) { + + return qualityManufacturingCheckoutService.selectQualityManufacturingCheckoutById(manufacturingCheckoutId); + } + return new QualityManufacturingCheckoutVO(); + } + /** + * 完成任务 + * + * @return + */ + @RequestMapping(value = "/complete/{taskId}", method = {RequestMethod.POST, RequestMethod.GET}) + @ResponseBody + public AjaxResult complete(@PathVariable("taskId") String taskId, @RequestParam(value = "saveEntity", required = false) String saveEntity, + @ModelAttribute("preloadObj") QualityManufacturingCheckoutVO manufacturingCheckoutVO, HttpServletRequest request) { + boolean saveEntityBoolean = BooleanUtils.toBoolean(saveEntity); + //获取实例id + String instanceId = manufacturingCheckoutVO.getInstanceId(); + //获取实例类型 + String instanceType = manufacturingCheckoutVO.getInstanceType(); + boolean approvedFlag = processService.complete(taskId, instanceId, manufacturingCheckoutVO.getApplyTitle(), manufacturingCheckoutVO.getManufacturingCheckoutCode(), "qualityOrderReport", new HashMap(), request); + QualityManufacturingCheckoutVO tempCheckOutVO = qualityManufacturingCheckoutService.selectQualityManufacturingCheckoutById(manufacturingCheckoutVO.getManufacturingCheckoutId()); + // 如果任务已结束更新业务表状态 + boolean processIsFinish = processService.judgeProcessIsFinish(instanceId); + if (processIsFinish) { + + if(!approvedFlag){ + // 审核状态-审核拒绝 + tempCheckOutVO.setAuditStatus("2"); +// qualityOrderReportService.updateDisApprovedInfo(tempQualityReport); + }else{ + // 审核状态-审核通过 + tempCheckOutVO.setAuditStatus("1"); + } + } + qualityManufacturingCheckoutService.updateQualityManufacturingCheckout(tempCheckOutVO); + return success("任务已完成"); + } + /** * 制程检验报告详情 */ diff --git a/ruoyi-admin/src/main/java/com/ruoyi/quality/domain/QualityManufacturingCheckout.java b/ruoyi-admin/src/main/java/com/ruoyi/quality/domain/QualityManufacturingCheckout.java index 3dcbccd5..2ba5e4fa 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/quality/domain/QualityManufacturingCheckout.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/quality/domain/QualityManufacturingCheckout.java @@ -45,19 +45,19 @@ public class QualityManufacturingCheckout extends BaseEntity /** 物料数合计 */ @Excel(name = "物料数合计") - private int materialTotal; + private Integer materialTotal; /** 数量合计 */ @Excel(name = "数量合计") - private int numTotal; + private Integer numTotal; /** 制程工序合格数 */ @Excel(name = "制程工序合格数") - private int processQualifiedNum; + private Integer processQualifiedNum; /** 制程工序不合格数 */ @Excel(name = "制程工序不合格数") - private int processUnqualifiedNum; + private Integer processUnqualifiedNum; /** 制程工序编号 */ private String manufacturingProcessCode; @@ -66,7 +66,38 @@ public class QualityManufacturingCheckout extends BaseEntity private String manufacturingProcessName; /**品质管理制程检验物料对象 */ - private List checkoutMaterialList; + private QualityManufacturingCheckoutMaterial checkoutMaterial; + + private String useStatus; + + @Excel(name = "审核状态",sort = 2,dictType = "auditStatus") + private String auditStatus; + + /** 流程实例ID */ + private String instanceId; + + /** 流程实例类型 */ + private String instanceType; + + /** 提交流程实例ID */ + private String submitInstanceId; + + /** 作废流程实例ID */ + private String cancelInstanceId; + + /** 恢复流程实例ID */ + private String restoreInstanceId; + + /** 申请标题 */ + private String applyTitle; + + /** 申请人 */ + private String applyUser; + + /** 申请时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date applyTime; + public void setManufacturingCheckoutId(Long manufacturingCheckoutId) { @@ -122,39 +153,39 @@ public class QualityManufacturingCheckout extends BaseEntity { return materialName; } - public void setMaterialTotal(int materialTotal) + public void setMaterialTotal(Integer materialTotal) { this.materialTotal = materialTotal; } - public int getMaterialTotal() + public Integer getMaterialTotal() { return materialTotal; } - public void setNumTotal(int numTotal) + public void setNumTotal(Integer numTotal) { this.numTotal = numTotal; } - public int getNumTotal() + public Integer getNumTotal() { return numTotal; } - public void setProcessQualifiedNum(int processQualifiedNum) + public void setProcessQualifiedNum(Integer processQualifiedNum) { this.processQualifiedNum = processQualifiedNum; } - public int getProcessQualifiedNum() + public Integer getProcessQualifiedNum() { return processQualifiedNum; } - public void setProcessUnqualifiedNum(int processUnqualifiedNum) + public void setProcessUnqualifiedNum(Integer processUnqualifiedNum) { this.processUnqualifiedNum = processUnqualifiedNum; } - public int getProcessUnqualifiedNum() + public Integer getProcessUnqualifiedNum() { return processUnqualifiedNum; } @@ -177,12 +208,92 @@ public class QualityManufacturingCheckout extends BaseEntity return manufacturingProcessName; } - public List getCheckoutMaterialList() { - return checkoutMaterialList; + public QualityManufacturingCheckoutMaterial getCheckoutMaterial() { + return checkoutMaterial; + } + + public void setCheckoutMaterial(QualityManufacturingCheckoutMaterial checkoutMaterial) { + this.checkoutMaterial = checkoutMaterial; + } + + public String getUseStatus() { + return useStatus; + } + + public void setUseStatus(String useStatus) { + this.useStatus = useStatus; + } + + public String getAuditStatus() { + return auditStatus; + } + + public void setAuditStatus(String auditStatus) { + this.auditStatus = auditStatus; + } + + public String getInstanceId() { + return instanceId; + } + + public void setInstanceId(String instanceId) { + this.instanceId = instanceId; + } + + public String getInstanceType() { + return instanceType; + } + + public void setInstanceType(String instanceType) { + this.instanceType = instanceType; + } + + public String getSubmitInstanceId() { + return submitInstanceId; + } + + public void setSubmitInstanceId(String submitInstanceId) { + this.submitInstanceId = submitInstanceId; + } + + public String getCancelInstanceId() { + return cancelInstanceId; + } + + public void setCancelInstanceId(String cancelInstanceId) { + this.cancelInstanceId = cancelInstanceId; + } + + public String getRestoreInstanceId() { + return restoreInstanceId; + } + + public void setRestoreInstanceId(String restoreInstanceId) { + this.restoreInstanceId = restoreInstanceId; + } + + public String getApplyTitle() { + return applyTitle; + } + + public void setApplyTitle(String applyTitle) { + this.applyTitle = applyTitle; + } + + public String getApplyUser() { + return applyUser; + } + + public void setApplyUser(String applyUser) { + this.applyUser = applyUser; + } + + public Date getApplyTime() { + return applyTime; } - public void setCheckoutMaterialList(List checkoutMaterialList) { - this.checkoutMaterialList = checkoutMaterialList; + public void setApplyTime(Date applyTime) { + this.applyTime = applyTime; } @Override @@ -205,7 +316,6 @@ public class QualityManufacturingCheckout extends BaseEntity .append("createTime", getCreateTime()) .append("updateBy", getUpdateBy()) .append("updateTime", getUpdateTime()) - .append("checkoutMaterialList()",getCheckoutMaterialList()) .toString(); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/quality/domain/QualityManufacturingCheckoutMaterial.java b/ruoyi-admin/src/main/java/com/ruoyi/quality/domain/QualityManufacturingCheckoutMaterial.java index 22985397..f141b8a1 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/quality/domain/QualityManufacturingCheckoutMaterial.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/quality/domain/QualityManufacturingCheckoutMaterial.java @@ -47,6 +47,10 @@ public class QualityManufacturingCheckoutMaterial extends BaseEntity @Excel(name = "物料类型") private String materialType; + /** 物料型号 */ + @Excel(name = "物料型号") + private String materialModel; + /** 物料图片地址 */ @Excel(name = "物料图片地址") private String materialPhotourl; @@ -291,6 +295,14 @@ public class QualityManufacturingCheckoutMaterial extends BaseEntity this.materialProcessList = materialProcessList; } + public String getMaterialModel() { + return materialModel; + } + + public void setMaterialModel(String materialModel) { + this.materialModel = materialModel; + } + @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/quality/domain/VO/QualityManufacturingCheckoutVO.java b/ruoyi-admin/src/main/java/com/ruoyi/quality/domain/VO/QualityManufacturingCheckoutVO.java new file mode 100644 index 00000000..de14c5ba --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/quality/domain/VO/QualityManufacturingCheckoutVO.java @@ -0,0 +1,35 @@ +package com.ruoyi.quality.domain.VO; + +import com.ruoyi.quality.domain.QualityManufacturingCheckout; +import lombok.Data; + +import java.util.Date; + +@Data +public class QualityManufacturingCheckoutVO extends QualityManufacturingCheckout { + private static final long serialVersionUID = 1L; + /** 申请人姓名 */ + private String applyUserName; + /** 任务ID */ + private String taskId; + /** 任务名称 */ + private String taskName; + + /** 当前任务状态 */ + private String taskStatus; + /** 办理时间 */ + private Date doneTime; + /** 创建人 */ + private String createUserName; + /** 流程实例状态 1 激活 2 挂起 */ + private String suspendState; + /** 待办用户id */ + private String todoUserId; + /** 流程实例类型名称 */ + private String instanceTypeName; + + /** + * 关键词 + */ + private String keyword; +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/quality/mapper/QualityManufacturingCheckoutMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/quality/mapper/QualityManufacturingCheckoutMapper.java index 56d757f7..abe501bf 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/quality/mapper/QualityManufacturingCheckoutMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/quality/mapper/QualityManufacturingCheckoutMapper.java @@ -2,6 +2,7 @@ package com.ruoyi.quality.mapper; import java.util.List; import com.ruoyi.quality.domain.QualityManufacturingCheckout; +import com.ruoyi.quality.domain.VO.QualityManufacturingCheckoutVO; import org.apache.ibatis.annotations.Param; /** @@ -18,7 +19,7 @@ public interface QualityManufacturingCheckoutMapper * @param manufacturingCheckoutId 品质管理制程检验ID * @return 品质管理制程检验 */ - public QualityManufacturingCheckout selectQualityManufacturingCheckoutById(Long manufacturingCheckoutId); + public QualityManufacturingCheckoutVO selectQualityManufacturingCheckoutById(Long manufacturingCheckoutId); /** * 查询品质管理制程检验列表 @@ -26,7 +27,7 @@ public interface QualityManufacturingCheckoutMapper * @param qualityManufacturingCheckout 品质管理制程检验 * @return 品质管理制程检验集合 */ - public List selectQualityManufacturingCheckoutList(QualityManufacturingCheckout qualityManufacturingCheckout); + public List selectQualityManufacturingCheckoutList(QualityManufacturingCheckoutVO qualityManufacturingCheckout); /** * 新增品质管理制程检验 @@ -85,5 +86,5 @@ public interface QualityManufacturingCheckoutMapper /* * 根据制程检验单号查找制程检验 * */ - QualityManufacturingCheckout selectQualityManufacturingCheckoutByCode(String manufacturingCheckoutCode); + QualityManufacturingCheckoutVO selectQualityManufacturingCheckoutByCode(String manufacturingCheckoutCode); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/quality/mapper/QualityManufacturingCheckoutMaterialMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/quality/mapper/QualityManufacturingCheckoutMaterialMapper.java index e90323ec..dad323c3 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/quality/mapper/QualityManufacturingCheckoutMaterialMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/quality/mapper/QualityManufacturingCheckoutMaterialMapper.java @@ -81,7 +81,7 @@ public interface QualityManufacturingCheckoutMaterialMapper /* * 根据制程检验单号查找制程检验物料 * */ - List selectCheckoutMaterialByCode(String manufacturingCheckoutCode); + QualityManufacturingCheckoutMaterial selectCheckoutMaterialByCode(String manufacturingCheckoutCode); /* * 根据制程检验单号和料号查找制程检验物料 diff --git a/ruoyi-admin/src/main/java/com/ruoyi/quality/mapper/QualityManufacturingMaterialProcessMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/quality/mapper/QualityManufacturingMaterialProcessMapper.java index 7aff33ef..15c37a8d 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/quality/mapper/QualityManufacturingMaterialProcessMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/quality/mapper/QualityManufacturingMaterialProcessMapper.java @@ -81,7 +81,7 @@ public interface QualityManufacturingMaterialProcessMapper /* * 根据料号和制程检验单号查找工序列表 * */ - public List selectCheckoutMaterialProcessByCodes(Map codes); + public List selectCheckoutMaterialProcessByCodes(QualityManufacturingMaterialProcess materialProcess); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/quality/mapper/QualityManufacturingUnqualifiedClassMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/quality/mapper/QualityManufacturingUnqualifiedClassMapper.java index 6a7a7f4e..0d133399 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/quality/mapper/QualityManufacturingUnqualifiedClassMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/quality/mapper/QualityManufacturingUnqualifiedClassMapper.java @@ -78,6 +78,6 @@ public interface QualityManufacturingUnqualifiedClassMapper public int restoreQualityManufacturingUnqualifiedClassById(Long manufacturingUnqualifiedClassId); // 根据制程检验单号、料号、检验工序号查询不合格分类列表 - List selectCheckoutUnqualifiedClassByCodes(Map codes); + List selectCheckoutUnqualifiedClassByCodes(QualityManufacturingUnqualifiedClass unqualifiedClass); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/quality/service/IQualityManufacturingCheckoutService.java b/ruoyi-admin/src/main/java/com/ruoyi/quality/service/IQualityManufacturingCheckoutService.java index 65159226..9556238f 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/quality/service/IQualityManufacturingCheckoutService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/quality/service/IQualityManufacturingCheckoutService.java @@ -6,6 +6,8 @@ import com.ruoyi.quality.domain.QualityManufacturingCheckoutMaterial; import com.ruoyi.quality.domain.QualityManufacturingProcess; import com.ruoyi.quality.domain.VO.CheckoutMaterialVO; import com.ruoyi.quality.domain.VO.CheckoutProcessExportVO; +import com.ruoyi.quality.domain.VO.QualityManufacturingCheckoutVO; +import org.activiti.engine.runtime.ProcessInstance; /** * 品质管理制程检验Service接口 @@ -21,7 +23,7 @@ public interface IQualityManufacturingCheckoutService * @param manufacturingCheckoutId 品质管理制程检验ID * @return 品质管理制程检验 */ - public QualityManufacturingCheckout selectQualityManufacturingCheckoutById(Long manufacturingCheckoutId); + public QualityManufacturingCheckoutVO selectQualityManufacturingCheckoutById(Long manufacturingCheckoutId); /** * 查询品质管理制程检验列表 @@ -29,7 +31,7 @@ public interface IQualityManufacturingCheckoutService * @param qualityManufacturingCheckout 品质管理制程检验 * @return 品质管理制程检验集合 */ - public List selectQualityManufacturingCheckoutList(QualityManufacturingCheckout qualityManufacturingCheckout); + public List selectQualityManufacturingCheckoutList(QualityManufacturingCheckoutVO qualityManufacturingCheckout); /** * 新增品质管理制程检验 @@ -98,7 +100,7 @@ public interface IQualityManufacturingCheckoutService /* * 根据制程检验单号查找制程检验 * */ - QualityManufacturingCheckout selectQualityManufacturingCheckoutByCode(String manufacturingCheckoutCode); + QualityManufacturingCheckoutVO selectQualityManufacturingCheckoutByCode(String manufacturingCheckoutCode); /* * 根据制程检验单号查找制程检验物料 @@ -125,4 +127,5 @@ public interface IQualityManufacturingCheckoutService * */ List getAllExportList(QualityManufacturingCheckout qualityManufacturingCheckout); + ProcessInstance submitApply(QualityManufacturingCheckoutVO manufacturingCheckoutVO); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/quality/service/impl/QualityManufacturingCheckoutServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/quality/service/impl/QualityManufacturingCheckoutServiceImpl.java index 246107c3..a39f3345 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/quality/service/impl/QualityManufacturingCheckoutServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/quality/service/impl/QualityManufacturingCheckoutServiceImpl.java @@ -1,26 +1,38 @@ package com.ruoyi.quality.service.impl; import java.text.DecimalFormat; -import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; -import com.ruoyi.aftersales.domain.vo.AftersalesMaterialVO; +import com.github.pagehelper.Page; +import com.ruoyi.common.core.domain.entity.SysUser; +import com.ruoyi.common.core.page.PageDomain; +import com.ruoyi.common.core.page.TableSupport; +import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.exception.BusinessException; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.ShiroUtils; import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.process.general.service.IProcessService; +import com.ruoyi.process.todoitem.mapper.BizTodoItemMapper; import com.ruoyi.quality.domain.*; import com.ruoyi.quality.domain.VO.CheckoutMaterialVO; import com.ruoyi.quality.domain.VO.CheckoutProcessExportVO; +import com.ruoyi.quality.domain.VO.QualityManufacturingCheckoutVO; +import com.ruoyi.quality.domain.VO.QualityOrderReportVO; import com.ruoyi.quality.mapper.*; import com.ruoyi.system.domain.SysMakeOrder; -import com.ruoyi.system.domain.SysMakeorderBom; import com.ruoyi.system.domain.SysSalesOrderChild; import com.ruoyi.system.mapper.SysMakeOrderMapper; import com.ruoyi.system.mapper.SysMakeorderBomMapper; import com.ruoyi.system.mapper.SysSalesOrderChildMapper; +import com.ruoyi.system.mapper.SysUserMapper; +import com.ruoyi.system.service.ISysRoleService; import lombok.extern.slf4j.Slf4j; +import org.activiti.engine.TaskService; +import org.activiti.engine.impl.persistence.entity.TaskEntityImpl; +import org.activiti.engine.runtime.ProcessInstance; +import org.activiti.engine.task.Task; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ruoyi.quality.service.IQualityManufacturingCheckoutService; @@ -61,6 +73,24 @@ public class QualityManufacturingCheckoutServiceImpl implements IQualityManufact @Autowired private QualityManufacturingUnqualifiedClassMapper unqualifiedClassMapper; + @Autowired + private ISysRoleService roleService; + + @Autowired + private TaskService taskService; + + @Autowired + private BizTodoItemMapper todoItemMapper; + + @Autowired + private IProcessService processService; + + @Autowired + private RedisCache redisCache; + + @Autowired + private SysUserMapper userMapper; + /** * 查询品质管理制程检验 * @@ -68,21 +98,82 @@ public class QualityManufacturingCheckoutServiceImpl implements IQualityManufact * @return 品质管理制程检验 */ @Override - public QualityManufacturingCheckout selectQualityManufacturingCheckoutById(Long manufacturingCheckoutId) + public QualityManufacturingCheckoutVO selectQualityManufacturingCheckoutById(Long manufacturingCheckoutId) { - return qualityManufacturingCheckoutMapper.selectQualityManufacturingCheckoutById(manufacturingCheckoutId); + QualityManufacturingCheckoutVO manufacturingCheckoutVO = qualityManufacturingCheckoutMapper.selectQualityManufacturingCheckoutById(manufacturingCheckoutId); + QualityManufacturingCheckoutVO checkoutVO = selectQualityManufacturingCheckoutByCode(manufacturingCheckoutVO.getManufacturingCheckoutCode()); + return checkoutVO; } /** * 查询品质管理制程检验列表 * - * @param qualityManufacturingCheckout 品质管理制程检验 + * @param manufacturingCheckoutVO 品质管理制程检验 * @return 品质管理制程检验 */ @Override - public List selectQualityManufacturingCheckoutList(QualityManufacturingCheckout qualityManufacturingCheckout) + public List selectQualityManufacturingCheckoutList(QualityManufacturingCheckoutVO manufacturingCheckoutVO) { - return qualityManufacturingCheckoutMapper.selectQualityManufacturingCheckoutList(qualityManufacturingCheckout); + PageDomain pageDomain = TableSupport.buildPageRequest(); + Integer pageNum = pageDomain.getPageNum(); + Integer pageSize = pageDomain.getPageSize(); + + // PageHelper 仅对第一个 List 分页 + Page list = (Page) qualityManufacturingCheckoutMapper.selectQualityManufacturingCheckoutList(manufacturingCheckoutVO); + Page returnList = new Page<>(); + for (QualityManufacturingCheckoutVO checkoutVO : list) { + SysUser sysUser = userMapper.selectUserByLoginName(checkoutVO.getCreateBy()); + if (sysUser != null) { + checkoutVO.setCreateUserName(sysUser.getUserName()); + } + SysUser sysUser2 = userMapper.selectUserByLoginName(checkoutVO.getApplyUser()); + if (sysUser2 != null) { + checkoutVO.setApplyUserName(sysUser2.getUserName()); + } + String instanceId = checkoutVO.getInstanceId(); + // 当前环节 + if (StringUtils.isNotBlank(instanceId)) { + List taskList = taskService.createTaskQuery() + .processInstanceId(instanceId) +// .singleResult(); + .list(); // 例如请假会签,会同时拥有多个任务 + if (!org.springframework.util.CollectionUtils.isEmpty(taskList)) { + TaskEntityImpl task = (TaskEntityImpl) taskList.get(0); + String taskId = task.getId(); + checkoutVO.setTaskId(taskId); + // 设置待办用户 + List todoUserList = todoItemMapper.selectUndealTodoUserList(taskId); + if (!org.springframework.util.CollectionUtils.isEmpty(taskList)) { + checkoutVO.setTodoUserId(String.join(",", todoUserList)); + } + if (task.getSuspensionState() == 2) { + checkoutVO.setTaskName("已挂起"); + checkoutVO.setSuspendState("2"); + } else { + checkoutVO.setTaskName(task.getName()); + checkoutVO.setSuspendState("1"); + } + } else { + // 已办结或者已撤销 + checkoutVO.setTaskName("已结束"); + } + } else { + checkoutVO.setTaskName("未启动"); + } + checkoutVO.setTaskStatus(checkoutVO.getTaskName()); + if (checkoutVO.getAuditStatus() == null) { + checkoutVO.setTaskStatus("未启动"); + } else if (checkoutVO.getAuditStatus().equals("1")) { + checkoutVO.setTaskStatus("审核通过"); + } else if (checkoutVO.getAuditStatus().equals("2")) { + checkoutVO.setTaskStatus("审核拒绝"); + } + returnList.add(checkoutVO); + } + returnList.setTotal(org.springframework.util.CollectionUtils.isEmpty(list) ? 0 : list.getTotal()); + returnList.setPageNum(pageNum); + returnList.setPageSize(pageSize); + return returnList; } /** @@ -91,67 +182,55 @@ public class QualityManufacturingCheckoutServiceImpl implements IQualityManufact * @param qualityManufacturingCheckout 品质管理制程检验 * @return 结果 */ - @Transactional + @Transactional(rollbackFor = Exception.class) @Override public int insertQualityManufacturingCheckout(QualityManufacturingCheckout qualityManufacturingCheckout) { String loginName = ShiroUtils.getLoginName(); - //格式化日期格式 - SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); - String formatDate = df.format(DateUtils.getNowDate()); - //去除多余的 - 时间格式转换为yyyyMMdd - String prefix = "ZCJY" +formatDate.replace("-", ""); - - - //查询数据库中当前最大的编号 - String maxCode = qualityManufacturingCheckoutMapper.findMaxRoundCode(prefix); - String newCode = generateNewCode(prefix, maxCode); + String newCode = redisCache.generateBillNo("ZCJY"); int numTotal = 0; int processQualifiedNum = 0; int processUnqualifiedNum = 0; qualityManufacturingCheckout.setManufacturingCheckoutCode(newCode); - List checkoutMaterialList = qualityManufacturingCheckout.getCheckoutMaterialList(); - if (StringUtils.isEmpty(checkoutMaterialList)){ - log.warn("与生产订单号有关的物料数据为空:{}",qualityManufacturingCheckout.getCheckoutMaterialList()); - } - for (QualityManufacturingCheckoutMaterial qualityManufacturingCheckoutMaterial : checkoutMaterialList) { - numTotal += qualityManufacturingCheckoutMaterial.getCurrentCheckoutNum(); - processQualifiedNum += qualityManufacturingCheckoutMaterial.getProcessQualifiedNum(); - processUnqualifiedNum += qualityManufacturingCheckoutMaterial.getProcessUnqualifiedNum(); - qualityManufacturingCheckoutMaterial.setMakeNo(qualityManufacturingCheckout.getMakeNo()); - qualityManufacturingCheckoutMaterial.setManufacturingCheckoutCode(newCode); - qualityManufacturingCheckoutMaterial.setCreateBy(loginName); - qualityManufacturingCheckoutMaterial.setCreateTime(DateUtils.getNowDate()); - qualityManufacturingCheckoutMaterial.setCheckoutTime(qualityManufacturingCheckout.getCheckoutTime()); - List materialProcessList = qualityManufacturingCheckoutMaterial.getMaterialProcessList(); + QualityManufacturingCheckoutMaterial checkoutMaterial = qualityManufacturingCheckout.getCheckoutMaterial(); + numTotal += checkoutMaterial.getCurrentCheckoutNum(); + processQualifiedNum += checkoutMaterial.getProcessQualifiedNum(); + processUnqualifiedNum += checkoutMaterial.getProcessUnqualifiedNum(); + checkoutMaterial.setMakeNo(qualityManufacturingCheckout.getMakeNo()); + checkoutMaterial.setManufacturingCheckoutCode(newCode); + checkoutMaterial.setCreateBy(loginName); + checkoutMaterial.setCreateTime(DateUtils.getNowDate()); + checkoutMaterial.setCheckoutTime(qualityManufacturingCheckout.getCheckoutTime()); + List materialProcessList = checkoutMaterial.getMaterialProcessList(); if (StringUtils.isEmpty(materialProcessList)){ - log.warn("与生产订单号有关的物料数据为空:{}",qualityManufacturingCheckout.getCheckoutMaterialList()); - }else{ - for (QualityManufacturingMaterialProcess process:materialProcessList) { - process.setManufacturingCheckoutCode(newCode); - process.setCreateBy(loginName); - process.setCreateTime(DateUtils.getNowDate()); - List unqualifiedClassList = process.getUnqualifiedClassList(); - if (StringUtils.isEmpty(unqualifiedClassList)){ - log.warn("与生产订单号有关的物料数据为空:{}",qualityManufacturingCheckout.getCheckoutMaterialList()); - }else{ - for (QualityManufacturingUnqualifiedClass unqualified:unqualifiedClassList) { - unqualified.setManufacturingCheckoutCode(newCode); - unqualified.setMaterialNo(process.getMaterialNo()); - unqualified.setManufacturingProcessCode(process.getManufacturingProcessCode()); - unqualified.setManufacturingProcessName(process.getManufacturingProcessName()); - unqualified.setCreateBy(loginName); - unqualified.setCreateTime(DateUtils.getNowDate()); - unqualifiedClassMapper.insertQualityManufacturingUnqualifiedClass(unqualified); - } + throw new BusinessException("制程检验工序列表为空!"); + } + for (QualityManufacturingMaterialProcess process:materialProcessList) { + if(process.getManufacturingProcessCode()==null||process.getManufacturingProcessCode()==""){ + throw new BusinessException("制程检验工序信息为空!请检查"); + } + process.setManufacturingCheckoutCode(newCode); + process.setMaterialNo(checkoutMaterial.getMaterialNo()); + process.setMaterialName(checkoutMaterial.getMaterialName()); + process.setCreateBy(loginName); + process.setCreateTime(DateUtils.getNowDate()); + List unqualifiedClassList = process.getUnqualifiedClassList(); + if (StringUtils.isNotEmpty(unqualifiedClassList)){ + for (QualityManufacturingUnqualifiedClass unqualified:unqualifiedClassList) { + unqualified.setManufacturingCheckoutCode(newCode); + unqualified.setMaterialNo(process.getMaterialNo()); + unqualified.setManufacturingProcessCode(process.getManufacturingProcessCode()); + unqualified.setManufacturingProcessName(process.getManufacturingProcessName()); + unqualified.setCreateBy(loginName); + unqualified.setCreateTime(DateUtils.getNowDate()); + unqualifiedClassMapper.insertQualityManufacturingUnqualifiedClass(unqualified); } - materialProcessMapper.insertQualityManufacturingMaterialProcess(process); } + materialProcessMapper.insertQualityManufacturingMaterialProcess(process); } - checkoutMaterialMapper.insertQualityManufacturingCheckoutMaterial(qualityManufacturingCheckoutMaterial); - } + checkoutMaterialMapper.insertQualityManufacturingCheckoutMaterial(checkoutMaterial); - qualityManufacturingCheckout.setMaterialTotal(checkoutMaterialList.size()); + qualityManufacturingCheckout.setMaterialTotal(1); qualityManufacturingCheckout.setNumTotal(numTotal); qualityManufacturingCheckout.setProcessQualifiedNum(processQualifiedNum); qualityManufacturingCheckout.setProcessUnqualifiedNum(processUnqualifiedNum); @@ -273,11 +352,27 @@ public class QualityManufacturingCheckoutServiceImpl implements IQualityManufact checkoutMaterialVO.setMaterialPhotourl(sysSalesOrderChild.getPhotoUrl()); checkoutMaterialVO.setMaterialUnit(sysSalesOrderChild.getUnit()); checkoutMaterialVO.setMaterialType(sysSalesOrderChild.getMaterialType()); + checkoutMaterialVO.setMaterialModel(sysSalesOrderChild.getMaterialModel()); checkoutMaterialVO.setMakeTotal(sysSalesOrderChild.getMaterialNum().toString()); - checkoutMaterialVOS.add(checkoutMaterialVO); - } + QualityManufacturingCheckoutVO tempCheckOut = new QualityManufacturingCheckoutVO(); + tempCheckOut.setMakeNo(makeNo); + tempCheckOut.setMaterialNo(sysSalesOrderChild.getMaterialCode()); + tempCheckOut.setAuditStatus("1"); + List checkoutList = qualityManufacturingCheckoutMapper.selectQualityManufacturingCheckoutList(tempCheckOut); + if(StringUtils.isEmpty(checkoutList)){ + checkoutMaterialVO.setCheckedNum(0); + }else{ + //过滤出待审批/审批通过的数据 + List filterList = checkoutList.stream() + .filter(item -> item.getAuditStatus()!=null && !item.getAuditStatus().equals("2")).collect(Collectors.toList()); + Integer checkedNum = filterList.stream() + .mapToInt(QualityManufacturingCheckoutVO::getNumTotal).sum(); + checkoutMaterialVO.setCheckedNum(checkedNum); + } + checkoutMaterialVOS.add(checkoutMaterialVO); + } return checkoutMaterialVOS; } @@ -322,19 +417,37 @@ public class QualityManufacturingCheckoutServiceImpl implements IQualityManufact * 根据制程检验单号查找制程检验 * */ @Override - public QualityManufacturingCheckout selectQualityManufacturingCheckoutByCode(String manufacturingCheckoutCode) { - - QualityManufacturingCheckout qualityManufacturingCheckout = qualityManufacturingCheckoutMapper.selectQualityManufacturingCheckoutByCode(manufacturingCheckoutCode); + public QualityManufacturingCheckoutVO selectQualityManufacturingCheckoutByCode(String manufacturingCheckoutCode) { + QualityManufacturingCheckoutVO qualityManufacturingCheckout = qualityManufacturingCheckoutMapper.selectQualityManufacturingCheckoutByCode(manufacturingCheckoutCode); + QualityManufacturingCheckoutMaterial checkoutMaterial = checkoutMaterialMapper.selectCheckoutMaterialByCode(manufacturingCheckoutCode); + String materialNo = checkoutMaterial.getMaterialNo(); + QualityManufacturingMaterialProcess tempProcess = new QualityManufacturingMaterialProcess(); + tempProcess.setManufacturingCheckoutCode(manufacturingCheckoutCode); + tempProcess.setMaterialNo(materialNo); + List materialProcessList = materialProcessMapper.selectCheckoutMaterialProcessByCodes(tempProcess); + if(StringUtils.isEmpty(materialProcessList)){ + throw new BusinessException("制程工序列表为空!"); + } + for (QualityManufacturingMaterialProcess process: materialProcessList) { + QualityManufacturingUnqualifiedClass tempUnqualified = new QualityManufacturingUnqualifiedClass(); + tempUnqualified.setManufacturingCheckoutCode(manufacturingCheckoutCode); + tempUnqualified.setManufacturingProcessCode(process.getManufacturingProcessCode()); + tempUnqualified.setMaterialNo(materialNo); + List unqualifiedClassList = unqualifiedClassMapper.selectCheckoutUnqualifiedClassByCodes(tempUnqualified); + if(StringUtils.isNotEmpty(unqualifiedClassList)){ + process.setUnqualifiedClassList(unqualifiedClassList); + } + } + checkoutMaterial.setMaterialProcessList(materialProcessList); + qualityManufacturingCheckout.setCheckoutMaterial(checkoutMaterial); return qualityManufacturingCheckout; } @Override public List selectMaterialListByCode(String manufacturingCheckoutCode) { - List checkoutMaterials = checkoutMaterialMapper.selectCheckoutMaterialByCode(manufacturingCheckoutCode); - if (StringUtils.isEmpty(checkoutMaterials)){ - // 记录日志 - log.warn("未查找到与制程检验单号关联的物料相关数据, 制程检验单号: {}", manufacturingCheckoutCode); - } + List checkoutMaterials = new ArrayList<>(); + QualityManufacturingCheckoutMaterial checkoutMaterial = checkoutMaterialMapper.selectCheckoutMaterialByCode(manufacturingCheckoutCode); + checkoutMaterials.add(checkoutMaterial); return checkoutMaterials; } @@ -348,21 +461,25 @@ public class QualityManufacturingCheckoutServiceImpl implements IQualityManufact * */ @Override public QualityManufacturingCheckoutMaterial selectDetailByCodes(String materialNo, String manufacturingCheckoutCode) { + Map params = new HashMap<>(); params.put("materialNo", materialNo); params.put("manufacturingCheckoutCode", manufacturingCheckoutCode); QualityManufacturingCheckoutMaterial checkoutMaterial = checkoutMaterialMapper.selectCheckoutMaterialByCodes(params); - List materialProcessList = materialProcessMapper.selectCheckoutMaterialProcessByCodes(params); + QualityManufacturingMaterialProcess tempProcess = new QualityManufacturingMaterialProcess(); + tempProcess.setManufacturingCheckoutCode(manufacturingCheckoutCode); + tempProcess.setMaterialNo(materialNo); + List materialProcessList = materialProcessMapper.selectCheckoutMaterialProcessByCodes(tempProcess); if (StringUtils.isEmpty(materialProcessList)){ // 记录日志 log.warn("未查找到与制程检验单号和料号关联的工序相关数据, 制程检验单号: {}", manufacturingCheckoutCode); }else{ for (QualityManufacturingMaterialProcess process:materialProcessList) { - Map codes = new HashMap<>(); - codes.put("manufacturingCheckoutCode", manufacturingCheckoutCode); - codes.put("materialNo", materialNo); - codes.put("manufacturingProcessCode", process.getManufacturingProcessCode()); - List unqualifiedClassList = unqualifiedClassMapper.selectCheckoutUnqualifiedClassByCodes(codes); + QualityManufacturingUnqualifiedClass tempUnqualified = new QualityManufacturingUnqualifiedClass(); + tempUnqualified.setManufacturingCheckoutCode(manufacturingCheckoutCode); + tempUnqualified.setManufacturingProcessCode(process.getManufacturingProcessCode()); + tempUnqualified.setMaterialNo(materialNo); + List unqualifiedClassList = unqualifiedClassMapper.selectCheckoutUnqualifiedClassByCodes(tempUnqualified); process.setUnqualifiedClassList(unqualifiedClassList); } } @@ -392,11 +509,13 @@ public class QualityManufacturingCheckoutServiceImpl implements IQualityManufact List checkoutProcessExportVOList = new ArrayList<>(); for (String code:checkoutCodes) { - List materials = checkoutMaterialMapper.selectCheckoutMaterialByCode(code); - if (StringUtils.isEmpty(materials)){ + List checkoutMaterials = new ArrayList<>(); + QualityManufacturingCheckoutMaterial checkoutMaterial = checkoutMaterialMapper.selectCheckoutMaterialByCode(code); + checkoutMaterials.add(checkoutMaterial); + if (StringUtils.isEmpty(checkoutMaterials)){ log.warn("未查找到制程工序物料相关数据: {}"); }else { - checkoutProcessExportVOList = createExportVOListByMaterialList(materials); + checkoutProcessExportVOList = createExportVOListByMaterialList(checkoutMaterials); } } return checkoutProcessExportVOList; @@ -419,10 +538,10 @@ public class QualityManufacturingCheckoutServiceImpl implements IQualityManufact List checkoutProcessExportVOList = new ArrayList<>(); if (materials != null) { for (QualityManufacturingCheckoutMaterial material : materials) { - Map params = new HashMap<>(); - params.put("materialNo", material.getMaterialNo()); - params.put("manufacturingCheckoutCode", material.getManufacturingCheckoutCode()); - List materialProcessList = materialProcessMapper.selectCheckoutMaterialProcessByCodes(params); + QualityManufacturingMaterialProcess tempProcess = new QualityManufacturingMaterialProcess(); + tempProcess.setManufacturingCheckoutCode(material.getManufacturingCheckoutCode()); + tempProcess.setMaterialNo(material.getMaterialNo()); + List materialProcessList = materialProcessMapper.selectCheckoutMaterialProcessByCodes(tempProcess); for (QualityManufacturingMaterialProcess materialProcess : materialProcessList) { if (materialProcess.getOkAcceptedNum() != 0) { CheckoutProcessExportVO exportVO = initExportVO(material, materialProcess); @@ -438,8 +557,11 @@ public class QualityManufacturingCheckoutServiceImpl implements IQualityManufact exportVO.setProcessInspectionStatus("特采"); checkoutProcessExportVOList.add(exportVO); } - params.put("manufacturingProcessCode", materialProcess.getManufacturingProcessCode()); - List unqualifiedClassList = unqualifiedClassMapper.selectCheckoutUnqualifiedClassByCodes(params); + QualityManufacturingUnqualifiedClass tempUnqualified = new QualityManufacturingUnqualifiedClass(); + tempUnqualified.setManufacturingCheckoutCode(material.getManufacturingCheckoutCode()); + tempUnqualified.setManufacturingProcessCode(materialProcess.getManufacturingProcessCode()); + tempUnqualified.setMaterialNo(material.getMaterialNo()); + List unqualifiedClassList = unqualifiedClassMapper.selectCheckoutUnqualifiedClassByCodes(tempUnqualified); if (unqualifiedClassList != null) { for (QualityManufacturingUnqualifiedClass unqualified : unqualifiedClassList) { CheckoutProcessExportVO exportVO = initExportVO(material, materialProcess); @@ -455,4 +577,64 @@ public class QualityManufacturingCheckoutServiceImpl implements IQualityManufact return checkoutProcessExportVOList; } + /** + * 审批流程启动 + */ + @Override + public ProcessInstance submitApply(QualityManufacturingCheckoutVO manufacturingCheckoutVO) { + SysUser user = ShiroUtils.getSysUser(); + manufacturingCheckoutVO.setApplyUser(user.getLoginName()); + manufacturingCheckoutVO.setApplyTime(DateUtils.getNowDate()); + // 保存 + insertQualityManufacturingCheckout(manufacturingCheckoutVO); + // 启动流程 + String applyTitle = user.getUserName() + "发起了制程检验提交审批-" + DateUtils.dateTimeNow(); + String instanceType = "submit"; + ProcessInstance processInstance = startProcessInstance(applyTitle, instanceType, manufacturingCheckoutVO, user); + String processInstanceId = processInstance.getProcessInstanceId(); + // 提交实例id + manufacturingCheckoutVO.setSubmitInstanceId(processInstanceId); + // 存在提交完就流程结束的情况 + boolean processIsFinish = processService.judgeProcessIsFinish(processInstanceId); + if (processIsFinish) { + // 审核状态-审核通过 + manufacturingCheckoutVO.setAuditStatus("1"); + } + qualityManufacturingCheckoutMapper.updateQualityManufacturingCheckout(manufacturingCheckoutVO); + return processInstance; + + } + + /** + * 创建品质报告审核流程 + */ + private ProcessInstance startProcessInstance(String applyTitle, String instanceType, QualityManufacturingCheckoutVO manufacturingCheckoutVO, SysUser user) { + Long reportId = manufacturingCheckoutVO.getManufacturingCheckoutId(); + String businessKey = reportId.toString(); // 实体类 ID,作为流程的业务 key + String key = "qualityOrderReport"; + Map variables = new HashMap<>(); + // 构造authority传参 + buildAuthority(user, variables); + manufacturingCheckoutVO.setApplyTitle(applyTitle); + // 启动流程 + ProcessInstance processInstance = processService.submitApply(user.getLoginName(), businessKey, applyTitle, manufacturingCheckoutVO.getManufacturingCheckoutCode(), key, variables); + String processInstanceId = processInstance.getId(); + manufacturingCheckoutVO.setInstanceId(processInstanceId); // 建立双向关系 + manufacturingCheckoutVO.setInstanceType(instanceType); + return processInstance; + } + + /** + * 发起人节点判断 + */ + private void buildAuthority(SysUser user, Map variables) { + Set roleKeys = roleService.selectRoleKeys(user.getUserId()); + if (roleKeys.contains("pzwyRole")) { + variables.put("authority", 1); + } + if (roleKeys.contains("pzjlRole") || roleKeys.contains("admin")) { + variables.put("authority", 2); + } + } + } diff --git a/ruoyi-admin/src/main/resources/mapper/quality/QualityManufacturingCheckoutMapper.xml b/ruoyi-admin/src/main/resources/mapper/quality/QualityManufacturingCheckoutMapper.xml index 106062f1..7aa0d15f 100644 --- a/ruoyi-admin/src/main/resources/mapper/quality/QualityManufacturingCheckoutMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/quality/QualityManufacturingCheckoutMapper.xml @@ -4,7 +4,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + @@ -22,22 +22,45 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + + + + + + + + - select manufacturing_checkout_id, manufacturing_checkout_code, make_no, checkout_time, material_no, material_name, material_total, num_total, process_qualified_num, process_unqualified_num, manufacturing_process_code, manufacturing_process_name, remark, create_by, create_time, update_by, update_time from quality_manufacturing_checkout + select manufacturing_checkout_id, manufacturing_checkout_code, make_no, + checkout_time, material_no, material_name, material_total, + num_total, process_qualified_num, process_unqualified_num, + manufacturing_process_code, manufacturing_process_name, remark, + create_by, create_time, update_by, update_time, audit_status, + use_status, instance_id, instance_type, submit_instance_id, + apply_title, apply_user, apply_time, restore_instance_id, + cancel_instance_id, cancel_remark + from quality_manufacturing_checkout @@ -65,6 +66,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" material_photoUrl, material_brand, material_unit, + material_model, material_describe, material_process_method, make_total, @@ -91,6 +93,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{materialPhotourl}, #{materialBrand}, #{materialUnit}, + #{materialModel}, #{materialDescribe}, #{materialProcessMethod}, #{makeTotal}, @@ -121,6 +124,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" material_photoUrl = #{materialPhotourl}, material_brand = #{materialBrand}, material_unit = #{materialUnit}, + material_model = #{materialModel}, material_describe = #{materialDescribe}, material_process_method = #{materialProcessMethod}, make_total = #{makeTotal}, diff --git a/ruoyi-admin/src/main/resources/mapper/quality/QualityManufacturingMaterialProcessMapper.xml b/ruoyi-admin/src/main/resources/mapper/quality/QualityManufacturingMaterialProcessMapper.xml index 024320a0..2d338979 100644 --- a/ruoyi-admin/src/main/resources/mapper/quality/QualityManufacturingMaterialProcessMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/quality/QualityManufacturingMaterialProcessMapper.xml @@ -138,7 +138,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update quality_manufacturing_material_process set del_flag = '0' where manufacturing_material_process_id = #{manufacturingMaterialProcessId} - diff --git a/ruoyi-admin/src/main/resources/mapper/quality/QualityManufacturingUnqualifiedClassMapper.xml b/ruoyi-admin/src/main/resources/mapper/quality/QualityManufacturingUnqualifiedClassMapper.xml index 14375cca..1750685b 100644 --- a/ruoyi-admin/src/main/resources/mapper/quality/QualityManufacturingUnqualifiedClassMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/quality/QualityManufacturingUnqualifiedClassMapper.xml @@ -109,7 +109,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update quality_manufacturing_unqualified_class set del_flag = '0' where manufacturing_unqualified_class_id = #{manufacturingUnqualifiedClassId} - diff --git a/ruoyi-admin/src/main/resources/templates/quality/manufacturingCheckout/taskPzjlVerify.html b/ruoyi-admin/src/main/resources/templates/quality/manufacturingCheckout/taskPzjlVerify.html new file mode 100644 index 00000000..47c3308b --- /dev/null +++ b/ruoyi-admin/src/main/resources/templates/quality/manufacturingCheckout/taskPzjlVerify.html @@ -0,0 +1,409 @@ + + + + + + + + + +
+
+ + + + + +
+ +
+ +
+
+
+ +
+
+ + +
+
+
+ +
+ +
+ + +
+
+
+ +
+
+ + +
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+
+
+
+
+
+
+ +
+
+ +
+
+
+ + + + + + + \ No newline at end of file