Browse Source

[feat]

品质管理 制程检验
修改制程检验实体类,int类型字段改为Integer,新增审批相关字段;
修改制程检验导出、保存、详情controller方法,新增审批相关controller方法;
修改查询列表、新增、根据制程检验单号查找制程检验service方法,新增审批相关service方法;
修改制程检验mapper,新增审批相关字段;
修改制程检验物料mapper,新增物料型号字段,修改根据制程检验单号查找制程检验物料方法;
修改制程检验工序mapper和不合格分类mapper,修改根据多单号查找工序列表/不合格分类方法,传参由map改为对象;
新增制程检验vo类;
新增品质经理审批制程检验页面;
dev
王晓迪 3 months ago
parent
commit
2ad4555aac
  1. 122
      ruoyi-admin/src/main/java/com/ruoyi/quality/controller/QualityManufacturingCheckoutController.java
  2. 146
      ruoyi-admin/src/main/java/com/ruoyi/quality/domain/QualityManufacturingCheckout.java
  3. 12
      ruoyi-admin/src/main/java/com/ruoyi/quality/domain/QualityManufacturingCheckoutMaterial.java
  4. 35
      ruoyi-admin/src/main/java/com/ruoyi/quality/domain/VO/QualityManufacturingCheckoutVO.java
  5. 7
      ruoyi-admin/src/main/java/com/ruoyi/quality/mapper/QualityManufacturingCheckoutMapper.java
  6. 2
      ruoyi-admin/src/main/java/com/ruoyi/quality/mapper/QualityManufacturingCheckoutMaterialMapper.java
  7. 2
      ruoyi-admin/src/main/java/com/ruoyi/quality/mapper/QualityManufacturingMaterialProcessMapper.java
  8. 2
      ruoyi-admin/src/main/java/com/ruoyi/quality/mapper/QualityManufacturingUnqualifiedClassMapper.java
  9. 9
      ruoyi-admin/src/main/java/com/ruoyi/quality/service/IQualityManufacturingCheckoutService.java
  10. 316
      ruoyi-admin/src/main/java/com/ruoyi/quality/service/impl/QualityManufacturingCheckoutServiceImpl.java
  11. 70
      ruoyi-admin/src/main/resources/mapper/quality/QualityManufacturingCheckoutMapper.xml
  12. 6
      ruoyi-admin/src/main/resources/mapper/quality/QualityManufacturingCheckoutMaterialMapper.xml
  13. 2
      ruoyi-admin/src/main/resources/mapper/quality/QualityManufacturingMaterialProcessMapper.xml
  14. 2
      ruoyi-admin/src/main/resources/mapper/quality/QualityManufacturingUnqualifiedClassMapper.xml
  15. 409
      ruoyi-admin/src/main/resources/templates/quality/manufacturingCheckout/taskPzjlVerify.html

122
ruoyi-admin/src/main/java/com/ruoyi/quality/controller/QualityManufacturingCheckoutController.java

@ -1,18 +1,29 @@
package com.ruoyi.quality.controller; package com.ruoyi.quality.controller;
import java.util.HashMap;
import java.util.List; import java.util.List;
import com.ruoyi.aftersales.domain.AftersalesComplaintNoticeDetail; import com.ruoyi.aftersales.domain.AftersalesComplaintNoticeDetail;
import com.ruoyi.aftersales.domain.vo.AftersalesMaterialVO; import com.ruoyi.aftersales.domain.vo.AftersalesMaterialVO;
import com.ruoyi.erp.domain.ErpBom; import com.ruoyi.erp.domain.ErpBom;
import com.ruoyi.process.general.service.IProcessService;
import com.ruoyi.quality.domain.QualityManufacturingCheckoutMaterial; import com.ruoyi.quality.domain.QualityManufacturingCheckoutMaterial;
import com.ruoyi.quality.domain.QualityManufacturingProcess; 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.CheckoutMaterialVO;
import com.ruoyi.quality.domain.VO.CheckoutProcessExportVO; 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.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap; import org.springframework.ui.ModelMap;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.enums.BusinessType; 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.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.page.TableDataInfo;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
/** /**
* 品质管理制程检验Controller * 品质管理制程检验Controller
* *
@ -38,6 +52,15 @@ public class QualityManufacturingCheckoutController extends BaseController
@Autowired @Autowired
private IQualityManufacturingCheckoutService qualityManufacturingCheckoutService; private IQualityManufacturingCheckoutService qualityManufacturingCheckoutService;
@Autowired
private TaskService taskService;
@Autowired
private RuntimeService runtimeService;
@Autowired
private IProcessService processService;
@RequiresPermissions("quality:manufacturingCheckout:view") @RequiresPermissions("quality:manufacturingCheckout:view")
@GetMapping() @GetMapping()
public String manufacturingCheckout() public String manufacturingCheckout()
@ -51,10 +74,10 @@ public class QualityManufacturingCheckoutController extends BaseController
@RequiresPermissions("quality:manufacturingCheckout:list") @RequiresPermissions("quality:manufacturingCheckout:list")
@PostMapping("/list") @PostMapping("/list")
@ResponseBody @ResponseBody
public TableDataInfo list(QualityManufacturingCheckout qualityManufacturingCheckout) public TableDataInfo list(QualityManufacturingCheckoutVO manufacturingCheckoutVO)
{ {
startPage(); startPage();
List<QualityManufacturingCheckout> list = qualityManufacturingCheckoutService.selectQualityManufacturingCheckoutList(qualityManufacturingCheckout); List<QualityManufacturingCheckoutVO> list = qualityManufacturingCheckoutService.selectQualityManufacturingCheckoutList(manufacturingCheckoutVO);
return getDataTable(list); return getDataTable(list);
} }
@ -65,26 +88,18 @@ public class QualityManufacturingCheckoutController extends BaseController
@Log(title = "品质管理制程检验", businessType = BusinessType.EXPORT) @Log(title = "品质管理制程检验", businessType = BusinessType.EXPORT)
@PostMapping("/export") @PostMapping("/export")
@ResponseBody @ResponseBody
public AjaxResult export(@RequestBody String[] checkouts) public AjaxResult export(QualityManufacturingCheckout manufacturingCheckout,String ids)
{ {
String checkoutString = String.join(",", checkouts); // 带分隔符 if (StringUtils.isEmpty(ids)){
List<CheckoutProcessExportVO> exportVOS = qualityManufacturingCheckoutService.getExportList(checkouts); List<CheckoutProcessExportVO> list = qualityManufacturingCheckoutService.getAllExportList(manufacturingCheckout);
ExcelUtil<CheckoutProcessExportVO> util = new ExcelUtil<CheckoutProcessExportVO>(CheckoutProcessExportVO.class); ExcelUtil<CheckoutProcessExportVO> util = new ExcelUtil<CheckoutProcessExportVO>(CheckoutProcessExportVO.class);
return util.exportExcel(exportVOS, checkoutString); return util.exportExcel(list, "品质报告单数据");
} }else {
String[] checkCodes = ids.split(",");
/** List<CheckoutProcessExportVO> list = qualityManufacturingCheckoutService.getExportList(checkCodes);
* 导出品质管理制程检验列表
*/
@RequiresPermissions("quality:manufacturingCheckout:export")
@Log(title = "品质管理制程检验", businessType = BusinessType.EXPORT)
@PostMapping("/exportAll")
@ResponseBody
public AjaxResult export(QualityManufacturingCheckout qualityManufacturingCheckout)
{
List<CheckoutProcessExportVO> list = qualityManufacturingCheckoutService.getAllExportList(qualityManufacturingCheckout);
ExcelUtil<CheckoutProcessExportVO> util = new ExcelUtil<CheckoutProcessExportVO>(CheckoutProcessExportVO.class); ExcelUtil<CheckoutProcessExportVO> util = new ExcelUtil<CheckoutProcessExportVO>(CheckoutProcessExportVO.class);
return util.exportExcel(list, "品质管理制程检验数据"); return util.exportExcel(list, ids);
}
} }
/** /**
@ -103,9 +118,11 @@ public class QualityManufacturingCheckoutController extends BaseController
@Log(title = "品质管理制程检验", businessType = BusinessType.INSERT) @Log(title = "品质管理制程检验", businessType = BusinessType.INSERT)
@PostMapping("/add") @PostMapping("/add")
@ResponseBody @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}") @GetMapping("/detail/{manufacturingCheckoutCode}")
public String detail(@PathVariable("manufacturingCheckoutCode") String manufacturingCheckoutCode, ModelMap mmap) public String detail(@PathVariable("manufacturingCheckoutCode") String manufacturingCheckoutCode, ModelMap mmap)
{ {
QualityManufacturingCheckout qualityManufacturingCheckout = qualityManufacturingCheckoutService.selectQualityManufacturingCheckoutByCode(manufacturingCheckoutCode); QualityManufacturingCheckoutVO qualityManufacturingCheckout = qualityManufacturingCheckoutService.selectQualityManufacturingCheckoutByCode(manufacturingCheckoutCode);
mmap.put("qualityManufacturingCheckout", qualityManufacturingCheckout); mmap.put("qualityManufacturingCheckout", qualityManufacturingCheckout);
return prefix + "/detail"; return prefix + "/detail";
} }
@ -248,6 +265,67 @@ public class QualityManufacturingCheckoutController extends BaseController
return getDataTable(list); 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<String, Object>(), 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("任务已完成");
}
/** /**
* 制程检验报告详情 * 制程检验报告详情
*/ */

146
ruoyi-admin/src/main/java/com/ruoyi/quality/domain/QualityManufacturingCheckout.java

@ -45,19 +45,19 @@ public class QualityManufacturingCheckout extends BaseEntity
/** 物料数合计 */ /** 物料数合计 */
@Excel(name = "物料数合计") @Excel(name = "物料数合计")
private int materialTotal; private Integer materialTotal;
/** 数量合计 */ /** 数量合计 */
@Excel(name = "数量合计") @Excel(name = "数量合计")
private int numTotal; private Integer numTotal;
/** 制程工序合格数 */ /** 制程工序合格数 */
@Excel(name = "制程工序合格数") @Excel(name = "制程工序合格数")
private int processQualifiedNum; private Integer processQualifiedNum;
/** 制程工序不合格数 */ /** 制程工序不合格数 */
@Excel(name = "制程工序不合格数") @Excel(name = "制程工序不合格数")
private int processUnqualifiedNum; private Integer processUnqualifiedNum;
/** 制程工序编号 */ /** 制程工序编号 */
private String manufacturingProcessCode; private String manufacturingProcessCode;
@ -66,7 +66,38 @@ public class QualityManufacturingCheckout extends BaseEntity
private String manufacturingProcessName; private String manufacturingProcessName;
/**品质管理制程检验物料对象 */ /**品质管理制程检验物料对象 */
private List<QualityManufacturingCheckoutMaterial> 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) public void setManufacturingCheckoutId(Long manufacturingCheckoutId)
{ {
@ -122,39 +153,39 @@ public class QualityManufacturingCheckout extends BaseEntity
{ {
return materialName; return materialName;
} }
public void setMaterialTotal(int materialTotal) public void setMaterialTotal(Integer materialTotal)
{ {
this.materialTotal = materialTotal; this.materialTotal = materialTotal;
} }
public int getMaterialTotal() public Integer getMaterialTotal()
{ {
return materialTotal; return materialTotal;
} }
public void setNumTotal(int numTotal) public void setNumTotal(Integer numTotal)
{ {
this.numTotal = numTotal; this.numTotal = numTotal;
} }
public int getNumTotal() public Integer getNumTotal()
{ {
return numTotal; return numTotal;
} }
public void setProcessQualifiedNum(int processQualifiedNum) public void setProcessQualifiedNum(Integer processQualifiedNum)
{ {
this.processQualifiedNum = processQualifiedNum; this.processQualifiedNum = processQualifiedNum;
} }
public int getProcessQualifiedNum() public Integer getProcessQualifiedNum()
{ {
return processQualifiedNum; return processQualifiedNum;
} }
public void setProcessUnqualifiedNum(int processUnqualifiedNum) public void setProcessUnqualifiedNum(Integer processUnqualifiedNum)
{ {
this.processUnqualifiedNum = processUnqualifiedNum; this.processUnqualifiedNum = processUnqualifiedNum;
} }
public int getProcessUnqualifiedNum() public Integer getProcessUnqualifiedNum()
{ {
return processUnqualifiedNum; return processUnqualifiedNum;
} }
@ -177,12 +208,92 @@ public class QualityManufacturingCheckout extends BaseEntity
return manufacturingProcessName; return manufacturingProcessName;
} }
public List<QualityManufacturingCheckoutMaterial> getCheckoutMaterialList() { public QualityManufacturingCheckoutMaterial getCheckoutMaterial() {
return checkoutMaterialList; 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<QualityManufacturingCheckoutMaterial> checkoutMaterialList) { public void setApplyTime(Date applyTime) {
this.checkoutMaterialList = checkoutMaterialList; this.applyTime = applyTime;
} }
@Override @Override
@ -205,7 +316,6 @@ public class QualityManufacturingCheckout extends BaseEntity
.append("createTime", getCreateTime()) .append("createTime", getCreateTime())
.append("updateBy", getUpdateBy()) .append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime()) .append("updateTime", getUpdateTime())
.append("checkoutMaterialList()",getCheckoutMaterialList())
.toString(); .toString();
} }
} }

12
ruoyi-admin/src/main/java/com/ruoyi/quality/domain/QualityManufacturingCheckoutMaterial.java

@ -47,6 +47,10 @@ public class QualityManufacturingCheckoutMaterial extends BaseEntity
@Excel(name = "物料类型") @Excel(name = "物料类型")
private String materialType; private String materialType;
/** 物料型号 */
@Excel(name = "物料型号")
private String materialModel;
/** 物料图片地址 */ /** 物料图片地址 */
@Excel(name = "物料图片地址") @Excel(name = "物料图片地址")
private String materialPhotourl; private String materialPhotourl;
@ -291,6 +295,14 @@ public class QualityManufacturingCheckoutMaterial extends BaseEntity
this.materialProcessList = materialProcessList; this.materialProcessList = materialProcessList;
} }
public String getMaterialModel() {
return materialModel;
}
public void setMaterialModel(String materialModel) {
this.materialModel = materialModel;
}
@Override @Override
public String toString() { public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

35
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;
}

7
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 java.util.List;
import com.ruoyi.quality.domain.QualityManufacturingCheckout; import com.ruoyi.quality.domain.QualityManufacturingCheckout;
import com.ruoyi.quality.domain.VO.QualityManufacturingCheckoutVO;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
/** /**
@ -18,7 +19,7 @@ public interface QualityManufacturingCheckoutMapper
* @param manufacturingCheckoutId 品质管理制程检验ID * @param manufacturingCheckoutId 品质管理制程检验ID
* @return 品质管理制程检验 * @return 品质管理制程检验
*/ */
public QualityManufacturingCheckout selectQualityManufacturingCheckoutById(Long manufacturingCheckoutId); public QualityManufacturingCheckoutVO selectQualityManufacturingCheckoutById(Long manufacturingCheckoutId);
/** /**
* 查询品质管理制程检验列表 * 查询品质管理制程检验列表
@ -26,7 +27,7 @@ public interface QualityManufacturingCheckoutMapper
* @param qualityManufacturingCheckout 品质管理制程检验 * @param qualityManufacturingCheckout 品质管理制程检验
* @return 品质管理制程检验集合 * @return 品质管理制程检验集合
*/ */
public List<QualityManufacturingCheckout> selectQualityManufacturingCheckoutList(QualityManufacturingCheckout qualityManufacturingCheckout); public List<QualityManufacturingCheckoutVO> selectQualityManufacturingCheckoutList(QualityManufacturingCheckoutVO qualityManufacturingCheckout);
/** /**
* 新增品质管理制程检验 * 新增品质管理制程检验
@ -85,5 +86,5 @@ public interface QualityManufacturingCheckoutMapper
/* /*
* 根据制程检验单号查找制程检验 * 根据制程检验单号查找制程检验
* */ * */
QualityManufacturingCheckout selectQualityManufacturingCheckoutByCode(String manufacturingCheckoutCode); QualityManufacturingCheckoutVO selectQualityManufacturingCheckoutByCode(String manufacturingCheckoutCode);
} }

2
ruoyi-admin/src/main/java/com/ruoyi/quality/mapper/QualityManufacturingCheckoutMaterialMapper.java

@ -81,7 +81,7 @@ public interface QualityManufacturingCheckoutMaterialMapper
/* /*
* 根据制程检验单号查找制程检验物料 * 根据制程检验单号查找制程检验物料
* */ * */
List<QualityManufacturingCheckoutMaterial> selectCheckoutMaterialByCode(String manufacturingCheckoutCode); QualityManufacturingCheckoutMaterial selectCheckoutMaterialByCode(String manufacturingCheckoutCode);
/* /*
* 根据制程检验单号和料号查找制程检验物料 * 根据制程检验单号和料号查找制程检验物料

2
ruoyi-admin/src/main/java/com/ruoyi/quality/mapper/QualityManufacturingMaterialProcessMapper.java

@ -81,7 +81,7 @@ public interface QualityManufacturingMaterialProcessMapper
/* /*
* 根据料号和制程检验单号查找工序列表 * 根据料号和制程检验单号查找工序列表
* */ * */
public List<QualityManufacturingMaterialProcess> selectCheckoutMaterialProcessByCodes(Map codes); public List<QualityManufacturingMaterialProcess> selectCheckoutMaterialProcessByCodes(QualityManufacturingMaterialProcess materialProcess);
} }

2
ruoyi-admin/src/main/java/com/ruoyi/quality/mapper/QualityManufacturingUnqualifiedClassMapper.java

@ -78,6 +78,6 @@ public interface QualityManufacturingUnqualifiedClassMapper
public int restoreQualityManufacturingUnqualifiedClassById(Long manufacturingUnqualifiedClassId); public int restoreQualityManufacturingUnqualifiedClassById(Long manufacturingUnqualifiedClassId);
// 根据制程检验单号、料号、检验工序号查询不合格分类列表 // 根据制程检验单号、料号、检验工序号查询不合格分类列表
List<QualityManufacturingUnqualifiedClass> selectCheckoutUnqualifiedClassByCodes(Map codes); List<QualityManufacturingUnqualifiedClass> selectCheckoutUnqualifiedClassByCodes(QualityManufacturingUnqualifiedClass unqualifiedClass);
} }

9
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.QualityManufacturingProcess;
import com.ruoyi.quality.domain.VO.CheckoutMaterialVO; import com.ruoyi.quality.domain.VO.CheckoutMaterialVO;
import com.ruoyi.quality.domain.VO.CheckoutProcessExportVO; import com.ruoyi.quality.domain.VO.CheckoutProcessExportVO;
import com.ruoyi.quality.domain.VO.QualityManufacturingCheckoutVO;
import org.activiti.engine.runtime.ProcessInstance;
/** /**
* 品质管理制程检验Service接口 * 品质管理制程检验Service接口
@ -21,7 +23,7 @@ public interface IQualityManufacturingCheckoutService
* @param manufacturingCheckoutId 品质管理制程检验ID * @param manufacturingCheckoutId 品质管理制程检验ID
* @return 品质管理制程检验 * @return 品质管理制程检验
*/ */
public QualityManufacturingCheckout selectQualityManufacturingCheckoutById(Long manufacturingCheckoutId); public QualityManufacturingCheckoutVO selectQualityManufacturingCheckoutById(Long manufacturingCheckoutId);
/** /**
* 查询品质管理制程检验列表 * 查询品质管理制程检验列表
@ -29,7 +31,7 @@ public interface IQualityManufacturingCheckoutService
* @param qualityManufacturingCheckout 品质管理制程检验 * @param qualityManufacturingCheckout 品质管理制程检验
* @return 品质管理制程检验集合 * @return 品质管理制程检验集合
*/ */
public List<QualityManufacturingCheckout> selectQualityManufacturingCheckoutList(QualityManufacturingCheckout qualityManufacturingCheckout); public List<QualityManufacturingCheckoutVO> 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<CheckoutProcessExportVO> getAllExportList(QualityManufacturingCheckout qualityManufacturingCheckout); List<CheckoutProcessExportVO> getAllExportList(QualityManufacturingCheckout qualityManufacturingCheckout);
ProcessInstance submitApply(QualityManufacturingCheckoutVO manufacturingCheckoutVO);
} }

316
ruoyi-admin/src/main/java/com/ruoyi/quality/service/impl/QualityManufacturingCheckoutServiceImpl.java

@ -1,26 +1,38 @@
package com.ruoyi.quality.service.impl; package com.ruoyi.quality.service.impl;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; 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.exception.BusinessException;
import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.ShiroUtils; import com.ruoyi.common.utils.ShiroUtils;
import com.ruoyi.common.utils.StringUtils; 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.*;
import com.ruoyi.quality.domain.VO.CheckoutMaterialVO; import com.ruoyi.quality.domain.VO.CheckoutMaterialVO;
import com.ruoyi.quality.domain.VO.CheckoutProcessExportVO; 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.quality.mapper.*;
import com.ruoyi.system.domain.SysMakeOrder; import com.ruoyi.system.domain.SysMakeOrder;
import com.ruoyi.system.domain.SysMakeorderBom;
import com.ruoyi.system.domain.SysSalesOrderChild; import com.ruoyi.system.domain.SysSalesOrderChild;
import com.ruoyi.system.mapper.SysMakeOrderMapper; import com.ruoyi.system.mapper.SysMakeOrderMapper;
import com.ruoyi.system.mapper.SysMakeorderBomMapper; import com.ruoyi.system.mapper.SysMakeorderBomMapper;
import com.ruoyi.system.mapper.SysSalesOrderChildMapper; import com.ruoyi.system.mapper.SysSalesOrderChildMapper;
import com.ruoyi.system.mapper.SysUserMapper;
import com.ruoyi.system.service.ISysRoleService;
import lombok.extern.slf4j.Slf4j; 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.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.ruoyi.quality.service.IQualityManufacturingCheckoutService; import com.ruoyi.quality.service.IQualityManufacturingCheckoutService;
@ -61,6 +73,24 @@ public class QualityManufacturingCheckoutServiceImpl implements IQualityManufact
@Autowired @Autowired
private QualityManufacturingUnqualifiedClassMapper unqualifiedClassMapper; 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 品质管理制程检验 * @return 品质管理制程检验
*/ */
@Override @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 品质管理制程检验 * @return 品质管理制程检验
*/ */
@Override @Override
public List<QualityManufacturingCheckout> selectQualityManufacturingCheckoutList(QualityManufacturingCheckout qualityManufacturingCheckout) public List<QualityManufacturingCheckoutVO> selectQualityManufacturingCheckoutList(QualityManufacturingCheckoutVO manufacturingCheckoutVO)
{ {
return qualityManufacturingCheckoutMapper.selectQualityManufacturingCheckoutList(qualityManufacturingCheckout); PageDomain pageDomain = TableSupport.buildPageRequest();
Integer pageNum = pageDomain.getPageNum();
Integer pageSize = pageDomain.getPageSize();
// PageHelper 仅对第一个 List 分页
Page<QualityManufacturingCheckoutVO> list = (Page<QualityManufacturingCheckoutVO>) qualityManufacturingCheckoutMapper.selectQualityManufacturingCheckoutList(manufacturingCheckoutVO);
Page<QualityManufacturingCheckoutVO> 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<Task> 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<String> 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,50 +182,40 @@ public class QualityManufacturingCheckoutServiceImpl implements IQualityManufact
* @param qualityManufacturingCheckout 品质管理制程检验 * @param qualityManufacturingCheckout 品质管理制程检验
* @return 结果 * @return 结果
*/ */
@Transactional @Transactional(rollbackFor = Exception.class)
@Override @Override
public int insertQualityManufacturingCheckout(QualityManufacturingCheckout qualityManufacturingCheckout) public int insertQualityManufacturingCheckout(QualityManufacturingCheckout qualityManufacturingCheckout)
{ {
String loginName = ShiroUtils.getLoginName(); String loginName = ShiroUtils.getLoginName();
//格式化日期格式 String newCode = redisCache.generateBillNo("ZCJY");
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);
int numTotal = 0; int numTotal = 0;
int processQualifiedNum = 0; int processQualifiedNum = 0;
int processUnqualifiedNum = 0; int processUnqualifiedNum = 0;
qualityManufacturingCheckout.setManufacturingCheckoutCode(newCode); qualityManufacturingCheckout.setManufacturingCheckoutCode(newCode);
List<QualityManufacturingCheckoutMaterial> checkoutMaterialList = qualityManufacturingCheckout.getCheckoutMaterialList(); QualityManufacturingCheckoutMaterial checkoutMaterial = qualityManufacturingCheckout.getCheckoutMaterial();
if (StringUtils.isEmpty(checkoutMaterialList)){ numTotal += checkoutMaterial.getCurrentCheckoutNum();
log.warn("与生产订单号有关的物料数据为空:{}",qualityManufacturingCheckout.getCheckoutMaterialList()); processQualifiedNum += checkoutMaterial.getProcessQualifiedNum();
} processUnqualifiedNum += checkoutMaterial.getProcessUnqualifiedNum();
for (QualityManufacturingCheckoutMaterial qualityManufacturingCheckoutMaterial : checkoutMaterialList) { checkoutMaterial.setMakeNo(qualityManufacturingCheckout.getMakeNo());
numTotal += qualityManufacturingCheckoutMaterial.getCurrentCheckoutNum(); checkoutMaterial.setManufacturingCheckoutCode(newCode);
processQualifiedNum += qualityManufacturingCheckoutMaterial.getProcessQualifiedNum(); checkoutMaterial.setCreateBy(loginName);
processUnqualifiedNum += qualityManufacturingCheckoutMaterial.getProcessUnqualifiedNum(); checkoutMaterial.setCreateTime(DateUtils.getNowDate());
qualityManufacturingCheckoutMaterial.setMakeNo(qualityManufacturingCheckout.getMakeNo()); checkoutMaterial.setCheckoutTime(qualityManufacturingCheckout.getCheckoutTime());
qualityManufacturingCheckoutMaterial.setManufacturingCheckoutCode(newCode); List<QualityManufacturingMaterialProcess> materialProcessList = checkoutMaterial.getMaterialProcessList();
qualityManufacturingCheckoutMaterial.setCreateBy(loginName);
qualityManufacturingCheckoutMaterial.setCreateTime(DateUtils.getNowDate());
qualityManufacturingCheckoutMaterial.setCheckoutTime(qualityManufacturingCheckout.getCheckoutTime());
List<QualityManufacturingMaterialProcess> materialProcessList = qualityManufacturingCheckoutMaterial.getMaterialProcessList();
if (StringUtils.isEmpty(materialProcessList)){ if (StringUtils.isEmpty(materialProcessList)){
log.warn("与生产订单号有关的物料数据为空:{}",qualityManufacturingCheckout.getCheckoutMaterialList()); throw new BusinessException("制程检验工序列表为空!");
}else{ }
for (QualityManufacturingMaterialProcess process:materialProcessList) { for (QualityManufacturingMaterialProcess process:materialProcessList) {
if(process.getManufacturingProcessCode()==null||process.getManufacturingProcessCode()==""){
throw new BusinessException("制程检验工序信息为空!请检查");
}
process.setManufacturingCheckoutCode(newCode); process.setManufacturingCheckoutCode(newCode);
process.setMaterialNo(checkoutMaterial.getMaterialNo());
process.setMaterialName(checkoutMaterial.getMaterialName());
process.setCreateBy(loginName); process.setCreateBy(loginName);
process.setCreateTime(DateUtils.getNowDate()); process.setCreateTime(DateUtils.getNowDate());
List<QualityManufacturingUnqualifiedClass> unqualifiedClassList = process.getUnqualifiedClassList(); List<QualityManufacturingUnqualifiedClass> unqualifiedClassList = process.getUnqualifiedClassList();
if (StringUtils.isEmpty(unqualifiedClassList)){ if (StringUtils.isNotEmpty(unqualifiedClassList)){
log.warn("与生产订单号有关的物料数据为空:{}",qualityManufacturingCheckout.getCheckoutMaterialList());
}else{
for (QualityManufacturingUnqualifiedClass unqualified:unqualifiedClassList) { for (QualityManufacturingUnqualifiedClass unqualified:unqualifiedClassList) {
unqualified.setManufacturingCheckoutCode(newCode); unqualified.setManufacturingCheckoutCode(newCode);
unqualified.setMaterialNo(process.getMaterialNo()); unqualified.setMaterialNo(process.getMaterialNo());
@ -147,11 +228,9 @@ public class QualityManufacturingCheckoutServiceImpl implements IQualityManufact
} }
materialProcessMapper.insertQualityManufacturingMaterialProcess(process); materialProcessMapper.insertQualityManufacturingMaterialProcess(process);
} }
} checkoutMaterialMapper.insertQualityManufacturingCheckoutMaterial(checkoutMaterial);
checkoutMaterialMapper.insertQualityManufacturingCheckoutMaterial(qualityManufacturingCheckoutMaterial);
}
qualityManufacturingCheckout.setMaterialTotal(checkoutMaterialList.size()); qualityManufacturingCheckout.setMaterialTotal(1);
qualityManufacturingCheckout.setNumTotal(numTotal); qualityManufacturingCheckout.setNumTotal(numTotal);
qualityManufacturingCheckout.setProcessQualifiedNum(processQualifiedNum); qualityManufacturingCheckout.setProcessQualifiedNum(processQualifiedNum);
qualityManufacturingCheckout.setProcessUnqualifiedNum(processUnqualifiedNum); qualityManufacturingCheckout.setProcessUnqualifiedNum(processUnqualifiedNum);
@ -273,11 +352,27 @@ public class QualityManufacturingCheckoutServiceImpl implements IQualityManufact
checkoutMaterialVO.setMaterialPhotourl(sysSalesOrderChild.getPhotoUrl()); checkoutMaterialVO.setMaterialPhotourl(sysSalesOrderChild.getPhotoUrl());
checkoutMaterialVO.setMaterialUnit(sysSalesOrderChild.getUnit()); checkoutMaterialVO.setMaterialUnit(sysSalesOrderChild.getUnit());
checkoutMaterialVO.setMaterialType(sysSalesOrderChild.getMaterialType()); checkoutMaterialVO.setMaterialType(sysSalesOrderChild.getMaterialType());
checkoutMaterialVO.setMaterialModel(sysSalesOrderChild.getMaterialModel());
checkoutMaterialVO.setMakeTotal(sysSalesOrderChild.getMaterialNum().toString()); checkoutMaterialVO.setMakeTotal(sysSalesOrderChild.getMaterialNum().toString());
checkoutMaterialVOS.add(checkoutMaterialVO);
}
QualityManufacturingCheckoutVO tempCheckOut = new QualityManufacturingCheckoutVO();
tempCheckOut.setMakeNo(makeNo);
tempCheckOut.setMaterialNo(sysSalesOrderChild.getMaterialCode());
tempCheckOut.setAuditStatus("1");
List<QualityManufacturingCheckoutVO> checkoutList = qualityManufacturingCheckoutMapper.selectQualityManufacturingCheckoutList(tempCheckOut);
if(StringUtils.isEmpty(checkoutList)){
checkoutMaterialVO.setCheckedNum(0);
}else{
//过滤出待审批/审批通过的数据
List<QualityManufacturingCheckoutVO> 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; return checkoutMaterialVOS;
} }
@ -322,19 +417,37 @@ public class QualityManufacturingCheckoutServiceImpl implements IQualityManufact
* 根据制程检验单号查找制程检验 * 根据制程检验单号查找制程检验
* */ * */
@Override @Override
public QualityManufacturingCheckout selectQualityManufacturingCheckoutByCode(String manufacturingCheckoutCode) { public QualityManufacturingCheckoutVO selectQualityManufacturingCheckoutByCode(String manufacturingCheckoutCode) {
QualityManufacturingCheckoutVO qualityManufacturingCheckout = qualityManufacturingCheckoutMapper.selectQualityManufacturingCheckoutByCode(manufacturingCheckoutCode);
QualityManufacturingCheckout qualityManufacturingCheckout = qualityManufacturingCheckoutMapper.selectQualityManufacturingCheckoutByCode(manufacturingCheckoutCode); QualityManufacturingCheckoutMaterial checkoutMaterial = checkoutMaterialMapper.selectCheckoutMaterialByCode(manufacturingCheckoutCode);
String materialNo = checkoutMaterial.getMaterialNo();
QualityManufacturingMaterialProcess tempProcess = new QualityManufacturingMaterialProcess();
tempProcess.setManufacturingCheckoutCode(manufacturingCheckoutCode);
tempProcess.setMaterialNo(materialNo);
List<QualityManufacturingMaterialProcess> 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<QualityManufacturingUnqualifiedClass> unqualifiedClassList = unqualifiedClassMapper.selectCheckoutUnqualifiedClassByCodes(tempUnqualified);
if(StringUtils.isNotEmpty(unqualifiedClassList)){
process.setUnqualifiedClassList(unqualifiedClassList);
}
}
checkoutMaterial.setMaterialProcessList(materialProcessList);
qualityManufacturingCheckout.setCheckoutMaterial(checkoutMaterial);
return qualityManufacturingCheckout; return qualityManufacturingCheckout;
} }
@Override @Override
public List<QualityManufacturingCheckoutMaterial> selectMaterialListByCode(String manufacturingCheckoutCode) { public List<QualityManufacturingCheckoutMaterial> selectMaterialListByCode(String manufacturingCheckoutCode) {
List<QualityManufacturingCheckoutMaterial> checkoutMaterials = checkoutMaterialMapper.selectCheckoutMaterialByCode(manufacturingCheckoutCode); List<QualityManufacturingCheckoutMaterial> checkoutMaterials = new ArrayList<>();
if (StringUtils.isEmpty(checkoutMaterials)){ QualityManufacturingCheckoutMaterial checkoutMaterial = checkoutMaterialMapper.selectCheckoutMaterialByCode(manufacturingCheckoutCode);
// 记录日志 checkoutMaterials.add(checkoutMaterial);
log.warn("未查找到与制程检验单号关联的物料相关数据, 制程检验单号: {}", manufacturingCheckoutCode);
}
return checkoutMaterials; return checkoutMaterials;
} }
@ -348,21 +461,25 @@ public class QualityManufacturingCheckoutServiceImpl implements IQualityManufact
* */ * */
@Override @Override
public QualityManufacturingCheckoutMaterial selectDetailByCodes(String materialNo, String manufacturingCheckoutCode) { public QualityManufacturingCheckoutMaterial selectDetailByCodes(String materialNo, String manufacturingCheckoutCode) {
Map<String, Object> params = new HashMap<>(); Map<String, Object> params = new HashMap<>();
params.put("materialNo", materialNo); params.put("materialNo", materialNo);
params.put("manufacturingCheckoutCode", manufacturingCheckoutCode); params.put("manufacturingCheckoutCode", manufacturingCheckoutCode);
QualityManufacturingCheckoutMaterial checkoutMaterial = checkoutMaterialMapper.selectCheckoutMaterialByCodes(params); QualityManufacturingCheckoutMaterial checkoutMaterial = checkoutMaterialMapper.selectCheckoutMaterialByCodes(params);
List<QualityManufacturingMaterialProcess> materialProcessList = materialProcessMapper.selectCheckoutMaterialProcessByCodes(params); QualityManufacturingMaterialProcess tempProcess = new QualityManufacturingMaterialProcess();
tempProcess.setManufacturingCheckoutCode(manufacturingCheckoutCode);
tempProcess.setMaterialNo(materialNo);
List<QualityManufacturingMaterialProcess> materialProcessList = materialProcessMapper.selectCheckoutMaterialProcessByCodes(tempProcess);
if (StringUtils.isEmpty(materialProcessList)){ if (StringUtils.isEmpty(materialProcessList)){
// 记录日志 // 记录日志
log.warn("未查找到与制程检验单号和料号关联的工序相关数据, 制程检验单号: {}", manufacturingCheckoutCode); log.warn("未查找到与制程检验单号和料号关联的工序相关数据, 制程检验单号: {}", manufacturingCheckoutCode);
}else{ }else{
for (QualityManufacturingMaterialProcess process:materialProcessList) { for (QualityManufacturingMaterialProcess process:materialProcessList) {
Map<String, Object> codes = new HashMap<>(); QualityManufacturingUnqualifiedClass tempUnqualified = new QualityManufacturingUnqualifiedClass();
codes.put("manufacturingCheckoutCode", manufacturingCheckoutCode); tempUnqualified.setManufacturingCheckoutCode(manufacturingCheckoutCode);
codes.put("materialNo", materialNo); tempUnqualified.setManufacturingProcessCode(process.getManufacturingProcessCode());
codes.put("manufacturingProcessCode", process.getManufacturingProcessCode()); tempUnqualified.setMaterialNo(materialNo);
List<QualityManufacturingUnqualifiedClass> unqualifiedClassList = unqualifiedClassMapper.selectCheckoutUnqualifiedClassByCodes(codes); List<QualityManufacturingUnqualifiedClass> unqualifiedClassList = unqualifiedClassMapper.selectCheckoutUnqualifiedClassByCodes(tempUnqualified);
process.setUnqualifiedClassList(unqualifiedClassList); process.setUnqualifiedClassList(unqualifiedClassList);
} }
} }
@ -392,11 +509,13 @@ public class QualityManufacturingCheckoutServiceImpl implements IQualityManufact
List<CheckoutProcessExportVO> checkoutProcessExportVOList = new ArrayList<>(); List<CheckoutProcessExportVO> checkoutProcessExportVOList = new ArrayList<>();
for (String code:checkoutCodes) { for (String code:checkoutCodes) {
List<QualityManufacturingCheckoutMaterial> materials = checkoutMaterialMapper.selectCheckoutMaterialByCode(code); List<QualityManufacturingCheckoutMaterial> checkoutMaterials = new ArrayList<>();
if (StringUtils.isEmpty(materials)){ QualityManufacturingCheckoutMaterial checkoutMaterial = checkoutMaterialMapper.selectCheckoutMaterialByCode(code);
checkoutMaterials.add(checkoutMaterial);
if (StringUtils.isEmpty(checkoutMaterials)){
log.warn("未查找到制程工序物料相关数据: {}"); log.warn("未查找到制程工序物料相关数据: {}");
}else { }else {
checkoutProcessExportVOList = createExportVOListByMaterialList(materials); checkoutProcessExportVOList = createExportVOListByMaterialList(checkoutMaterials);
} }
} }
return checkoutProcessExportVOList; return checkoutProcessExportVOList;
@ -419,10 +538,10 @@ public class QualityManufacturingCheckoutServiceImpl implements IQualityManufact
List<CheckoutProcessExportVO> checkoutProcessExportVOList = new ArrayList<>(); List<CheckoutProcessExportVO> checkoutProcessExportVOList = new ArrayList<>();
if (materials != null) { if (materials != null) {
for (QualityManufacturingCheckoutMaterial material : materials) { for (QualityManufacturingCheckoutMaterial material : materials) {
Map<String, Object> params = new HashMap<>(); QualityManufacturingMaterialProcess tempProcess = new QualityManufacturingMaterialProcess();
params.put("materialNo", material.getMaterialNo()); tempProcess.setManufacturingCheckoutCode(material.getManufacturingCheckoutCode());
params.put("manufacturingCheckoutCode", material.getManufacturingCheckoutCode()); tempProcess.setMaterialNo(material.getMaterialNo());
List<QualityManufacturingMaterialProcess> materialProcessList = materialProcessMapper.selectCheckoutMaterialProcessByCodes(params); List<QualityManufacturingMaterialProcess> materialProcessList = materialProcessMapper.selectCheckoutMaterialProcessByCodes(tempProcess);
for (QualityManufacturingMaterialProcess materialProcess : materialProcessList) { for (QualityManufacturingMaterialProcess materialProcess : materialProcessList) {
if (materialProcess.getOkAcceptedNum() != 0) { if (materialProcess.getOkAcceptedNum() != 0) {
CheckoutProcessExportVO exportVO = initExportVO(material, materialProcess); CheckoutProcessExportVO exportVO = initExportVO(material, materialProcess);
@ -438,8 +557,11 @@ public class QualityManufacturingCheckoutServiceImpl implements IQualityManufact
exportVO.setProcessInspectionStatus("特采"); exportVO.setProcessInspectionStatus("特采");
checkoutProcessExportVOList.add(exportVO); checkoutProcessExportVOList.add(exportVO);
} }
params.put("manufacturingProcessCode", materialProcess.getManufacturingProcessCode()); QualityManufacturingUnqualifiedClass tempUnqualified = new QualityManufacturingUnqualifiedClass();
List<QualityManufacturingUnqualifiedClass> unqualifiedClassList = unqualifiedClassMapper.selectCheckoutUnqualifiedClassByCodes(params); tempUnqualified.setManufacturingCheckoutCode(material.getManufacturingCheckoutCode());
tempUnqualified.setManufacturingProcessCode(materialProcess.getManufacturingProcessCode());
tempUnqualified.setMaterialNo(material.getMaterialNo());
List<QualityManufacturingUnqualifiedClass> unqualifiedClassList = unqualifiedClassMapper.selectCheckoutUnqualifiedClassByCodes(tempUnqualified);
if (unqualifiedClassList != null) { if (unqualifiedClassList != null) {
for (QualityManufacturingUnqualifiedClass unqualified : unqualifiedClassList) { for (QualityManufacturingUnqualifiedClass unqualified : unqualifiedClassList) {
CheckoutProcessExportVO exportVO = initExportVO(material, materialProcess); CheckoutProcessExportVO exportVO = initExportVO(material, materialProcess);
@ -455,4 +577,64 @@ public class QualityManufacturingCheckoutServiceImpl implements IQualityManufact
return checkoutProcessExportVOList; 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<String, Object> 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<String, Object> variables) {
Set<String> roleKeys = roleService.selectRoleKeys(user.getUserId());
if (roleKeys.contains("pzwyRole")) {
variables.put("authority", 1);
}
if (roleKeys.contains("pzjlRole") || roleKeys.contains("admin")) {
variables.put("authority", 2);
}
}
} }

70
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"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.quality.mapper.QualityManufacturingCheckoutMapper"> <mapper namespace="com.ruoyi.quality.mapper.QualityManufacturingCheckoutMapper">
<resultMap type="QualityManufacturingCheckout" id="QualityManufacturingCheckoutResult"> <resultMap type="QualityManufacturingCheckoutVO" id="QualityManufacturingCheckoutResult">
<result property="manufacturingCheckoutId" column="manufacturing_checkout_id" /> <result property="manufacturingCheckoutId" column="manufacturing_checkout_id" />
<result property="manufacturingCheckoutCode" column="manufacturing_checkout_code" /> <result property="manufacturingCheckoutCode" column="manufacturing_checkout_code" />
<result property="makeNo" column="make_no" /> <result property="makeNo" column="make_no" />
@ -22,22 +22,45 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="createTime" column="create_time" /> <result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" /> <result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" /> <result property="updateTime" column="update_time" />
<result property="auditStatus" column="audit_status"/>
<result property="useStatus" column="use_status"/>
<result property="instanceId" column="instance_id"/>
<result property="instanceType" column="instance_type"/>
<result property="submitInstanceId" column="submit_instance_id"/>
<result property="applyTitle" column="apply_title"/>
<result property="applyUser" column="apply_user"/>
<result property="applyTime" column="apply_time"/>
<result property="restoreInstanceId" column="restore_instance_id"/>
<result property="cancelInstanceId" column="cancel_instance_id"/>
<result property="cancelRemark" column="cancel_remark"/>
</resultMap> </resultMap>
<sql id="selectQualityManufacturingCheckoutVo"> <sql id="selectQualityManufacturingCheckoutVo">
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
</sql> </sql>
<select id="selectQualityManufacturingCheckoutList" parameterType="QualityManufacturingCheckout" resultMap="QualityManufacturingCheckoutResult"> <select id="selectQualityManufacturingCheckoutList" parameterType="QualityManufacturingCheckout" resultMap="QualityManufacturingCheckoutResult">
<include refid="selectQualityManufacturingCheckoutVo"/> <include refid="selectQualityManufacturingCheckoutVo"/>
<where> <where>
<if test="manufacturingCheckoutCode != null and manufacturingCheckoutCode != ''"> and manufacturing_checkout_code = #{manufacturingCheckoutCode}</if> <if test="manufacturingCheckoutCode != null and manufacturingCheckoutCode != ''"> and manufacturing_checkout_code like concat('%', #{manufacturingCheckoutCode}, '%')</if>
<if test="makeNo != null and makeNo != ''"> and make_no = #{makeNo}</if> <if test="makeNo != null and makeNo != ''"> and make_no like concat('%', #{makeNo}, '%')</if>
<if test="params.beginCheckoutTime != null and params.beginCheckoutTime != '' and params.endCheckoutTime != null and params.endCheckoutTime != ''"> and checkout_time between #{params.beginCheckoutTime} and #{params.endCheckoutTime}</if> <if test="params.beginCheckoutTime != null and params.beginCheckoutTime != '' and params.endCheckoutTime != null and params.endCheckoutTime != ''"> and Date(checkout_time) between #{params.beginCheckoutTime} and #{params.endCheckoutTime}</if>
<if test="materialNo != null and materialNo != ''"> and material_no = #{materialNo}</if> <if test="materialNo != null and materialNo != ''"> and material_no like concat('%', #{materialNo}, '%')</if>
<if test="materialName != null and materialName != ''"> and material_name like concat('%', #{materialName}, '%')</if> <if test="materialName != null and materialName != ''"> and material_name like concat('%', #{materialName}, '%')</if>
<if test="params.beginCreateTime != null and params.beginCreateTime != '' and params.endCreateTime != null and params.endCreateTime != ''"> and create_time between #{params.beginCreateTime} and #{params.endCreateTime}</if> <if test="auditStatus != null and auditStatus != ''"> and audit_status = #{auditStatus}</if>
<if test="applyUser != null and applyUser != ''"> and apply_user = #{applyUser}</if>
<if test="createBy != null and createBy != ''"> and create_by = #{createBy}</if>
<if test="params.beginCreateTime != null and params.beginCreateTime != '' and params.endCreateTime != null and params.endCreateTime != ''"> and Date(create_time) between #{params.beginCreateTime} and #{params.endCreateTime}</if>
</where> </where>
order by create_time desc,audit_status asc
</select> </select>
<select id="selectQualityManufacturingCheckoutById" parameterType="Long" resultMap="QualityManufacturingCheckoutResult"> <select id="selectQualityManufacturingCheckoutById" parameterType="Long" resultMap="QualityManufacturingCheckoutResult">
@ -71,6 +94,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="createTime != null">create_time,</if> <if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if> <if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if> <if test="updateTime != null">update_time,</if>
<if test="auditStatus != null">audit_status,</if>
<if test="useStatus != null">use_status,</if>
<if test="instanceId != null">instance_id,</if>
<if test="instanceType != null">instance_type,</if>
<if test="submitInstanceId != null">submit_instance_id,</if>
<if test="applyTitle != null">apply_title,</if>
<if test="applyUser != null">apply_user,</if>
<if test="applyTime != null">apply_time,</if>
<if test="restoreInstanceId != null">restore_instance_id,</if>
<if test="cancelInstanceId != null">cancel_instance_id,</if>
<if test="cancelRemark != null">cancel_remark,</if>
</trim> </trim>
<trim prefix="values (" suffix=")" suffixOverrides=","> <trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="manufacturingCheckoutCode != null">#{manufacturingCheckoutCode},</if> <if test="manufacturingCheckoutCode != null">#{manufacturingCheckoutCode},</if>
@ -89,6 +123,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="createTime != null">#{createTime},</if> <if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if> <if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if> <if test="updateTime != null">#{updateTime},</if>
<if test="auditStatus != null">#{auditStatus},</if>
<if test="useStatus != null">#{useStatus},</if>
<if test="instanceId != null">#{instanceId},</if>
<if test="instanceType != null">#{instanceType},</if>
<if test="submitInstanceId != null">#{submitInstanceId},</if>
<if test="applyTitle != null">#{applyTitle},</if>
<if test="applyUser != null">#{applyUser},</if>
<if test="applyTime != null">#{applyTime},</if>
<if test="restoreInstanceId != null">#{restoreInstanceId},</if>
<if test="cancelInstanceId != null">#{cancelInstanceId},</if>
<if test="cancelRemark != null">#{cancelRemark},</if>
</trim> </trim>
</insert> </insert>
@ -111,6 +156,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="createTime != null">create_time = #{createTime},</if> <if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if> <if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if> <if test="updateTime != null">update_time = #{updateTime},</if>
<if test="auditStatus != null">audit_status = #{auditStatus},</if>
<if test="useStatus != null">use_status = #{useStatus},</if>
<if test="instanceId != null">instance_id = #{instanceId},</if>
<if test="instanceType != null">instance_type = #{instanceType},</if>
<if test="submitInstanceId != null">submit_instance_id = #{submitInstanceId},</if>
<if test="applyTitle != null">apply_title = #{applyTitle},</if>
<if test="applyUser != null">apply_user = #{applyUser},</if>
<if test="applyTime != null">apply_time = #{applyTime},</if>
<if test="restoreInstanceId != null">restore_instance_id = #{restoreInstanceId},</if>
<if test="cancelInstanceId != null">cancel_instance_id = #{cancelInstanceId},</if>
<if test="cancelRemark != null">cancel_remark = #{cancelRemark},</if>
</trim> </trim>
where manufacturing_checkout_id = #{manufacturingCheckoutId} where manufacturing_checkout_id = #{manufacturingCheckoutId}
</update> </update>

6
ruoyi-admin/src/main/resources/mapper/quality/QualityManufacturingCheckoutMaterialMapper.xml

@ -15,6 +15,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="materialPhotourl" column="material_photoUrl" /> <result property="materialPhotourl" column="material_photoUrl" />
<result property="materialBrand" column="material_brand" /> <result property="materialBrand" column="material_brand" />
<result property="materialUnit" column="material_unit" /> <result property="materialUnit" column="material_unit" />
<result property="materialModel" column="material_model" />
<result property="materialDescribe" column="material_describe" /> <result property="materialDescribe" column="material_describe" />
<result property="materialProcessMethod" column="material_process_method" /> <result property="materialProcessMethod" column="material_process_method" />
<result property="makeTotal" column="make_total" /> <result property="makeTotal" column="make_total" />
@ -33,7 +34,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap> </resultMap>
<sql id="selectQualityManufacturingCheckoutMaterialVo"> <sql id="selectQualityManufacturingCheckoutMaterialVo">
select manufacturing_checkout_material_id, manufacturing_checkout_code, make_no, checkout_time, material_no, material_name, material_type, material_photoUrl, material_brand, material_unit, material_describe, material_process_method, make_total, checked_num, current_checkout_num, process_qualified_num, process_unqualified_num, manufacturing_process_code, manufacturing_process_name, remark, checkout_completion_time, create_by, create_time, update_by, update_time from quality_manufacturing_checkout_material select manufacturing_checkout_material_id, manufacturing_checkout_code, make_no, checkout_time, material_no, material_name, material_type, material_photoUrl, material_brand, material_unit, material_model, material_describe, material_process_method, make_total, checked_num, current_checkout_num, process_qualified_num, process_unqualified_num, manufacturing_process_code, manufacturing_process_name, remark, checkout_completion_time, create_by, create_time, update_by, update_time from quality_manufacturing_checkout_material
</sql> </sql>
<select id="selectQualityManufacturingCheckoutMaterialList" parameterType="QualityManufacturingCheckoutMaterial" resultMap="QualityManufacturingCheckoutMaterialResult"> <select id="selectQualityManufacturingCheckoutMaterialList" parameterType="QualityManufacturingCheckoutMaterial" resultMap="QualityManufacturingCheckoutMaterialResult">
@ -65,6 +66,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="materialPhotourl != null">material_photoUrl,</if> <if test="materialPhotourl != null">material_photoUrl,</if>
<if test="materialBrand != null">material_brand,</if> <if test="materialBrand != null">material_brand,</if>
<if test="materialUnit != null">material_unit,</if> <if test="materialUnit != null">material_unit,</if>
<if test="materialModel != null">material_model,</if>
<if test="materialDescribe != null">material_describe,</if> <if test="materialDescribe != null">material_describe,</if>
<if test="materialProcessMethod != null">material_process_method,</if> <if test="materialProcessMethod != null">material_process_method,</if>
<if test="makeTotal != null">make_total,</if> <if test="makeTotal != null">make_total,</if>
@ -91,6 +93,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="materialPhotourl != null">#{materialPhotourl},</if> <if test="materialPhotourl != null">#{materialPhotourl},</if>
<if test="materialBrand != null">#{materialBrand},</if> <if test="materialBrand != null">#{materialBrand},</if>
<if test="materialUnit != null">#{materialUnit},</if> <if test="materialUnit != null">#{materialUnit},</if>
<if test="materialModel != null">#{materialModel},</if>
<if test="materialDescribe != null">#{materialDescribe},</if> <if test="materialDescribe != null">#{materialDescribe},</if>
<if test="materialProcessMethod != null">#{materialProcessMethod},</if> <if test="materialProcessMethod != null">#{materialProcessMethod},</if>
<if test="makeTotal != null">#{makeTotal},</if> <if test="makeTotal != null">#{makeTotal},</if>
@ -121,6 +124,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="materialPhotourl != null">material_photoUrl = #{materialPhotourl},</if> <if test="materialPhotourl != null">material_photoUrl = #{materialPhotourl},</if>
<if test="materialBrand != null">material_brand = #{materialBrand},</if> <if test="materialBrand != null">material_brand = #{materialBrand},</if>
<if test="materialUnit != null">material_unit = #{materialUnit},</if> <if test="materialUnit != null">material_unit = #{materialUnit},</if>
<if test="materialModel != null">material_model = #{materialModel},</if>
<if test="materialDescribe != null">material_describe = #{materialDescribe},</if> <if test="materialDescribe != null">material_describe = #{materialDescribe},</if>
<if test="materialProcessMethod != null">material_process_method = #{materialProcessMethod},</if> <if test="materialProcessMethod != null">material_process_method = #{materialProcessMethod},</if>
<if test="makeTotal != null">make_total = #{makeTotal},</if> <if test="makeTotal != null">make_total = #{makeTotal},</if>

2
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} update quality_manufacturing_material_process set del_flag = '0' where manufacturing_material_process_id = #{manufacturingMaterialProcessId}
</update> </update>
<select id="selectCheckoutMaterialProcessByCodes" parameterType="map" resultMap="QualityManufacturingMaterialProcessResult"> <select id="selectCheckoutMaterialProcessByCodes" parameterType="QualityManufacturingMaterialProcess" resultMap="QualityManufacturingMaterialProcessResult">
<include refid="selectQualityManufacturingMaterialProcessVo"/> <include refid="selectQualityManufacturingMaterialProcessVo"/>
<where> <where>
<if test="manufacturingCheckoutCode != null"> <if test="manufacturingCheckoutCode != null">

2
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} update quality_manufacturing_unqualified_class set del_flag = '0' where manufacturing_unqualified_class_id = #{manufacturingUnqualifiedClassId}
</update> </update>
<select id="selectCheckoutUnqualifiedClassByCodes" parameterType="map" resultMap="QualityManufacturingUnqualifiedClassResult"> <select id="selectCheckoutUnqualifiedClassByCodes" parameterType="QualityManufacturingUnqualifiedClass" resultMap="QualityManufacturingUnqualifiedClassResult">
<include refid="selectQualityManufacturingUnqualifiedClassVo"/> <include refid="selectQualityManufacturingUnqualifiedClassVo"/>
<where> <where>
<if test="manufacturingCheckoutCode != null"> <if test="manufacturingCheckoutCode != null">

409
ruoyi-admin/src/main/resources/templates/quality/manufacturingCheckout/taskPzjlVerify.html

@ -0,0 +1,409 @@
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
<head>
<th:block th:include="include :: header('品质管理制程检验审批')" />
<th:block th:include="include:: select2-css" />
<th:block th:include="include :: datetimepicker-css" />
</head>
<style>
.fixed-table-container {
border: 0px solid #ddd;
min-height: 140px;
}
.table-striped-two{
overflow: hidden;
scroll: auto;
}
.bordered-container {
/* 自动高度,根据内容自动调整 */
min-height: 0; /* 确保高度能收缩至内容高度 */
/* 自动宽度,对于块级元素已经是默认行为,但如果你想强调这一点或针对特定情况,可以显式声明 */
width: auto;
height: auto;
border: 1px dashed blue; /* 灰色边框,可根据需要调整颜色 */
/* 以下可选,根据需要添加,用于控制内外边距和布局 */
padding: 1rem;
box-sizing: border-box; /* 包含边框和内边距在宽度计算中 */
margin-bottom: 20px;
}
</style>
<body class="white-bg">
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
<form class="form-horizontal m" id="form-manufacturingCheckout-pzjl" th:object="${formData}">
<input name="manufacturingCheckoutId" th:field="*{manufacturingCheckoutId}" type="hidden">
<input name="taskId" th:field="*{taskId}" type="hidden">
<input name="taskName" th:field="*{taskName}" type="hidden">
<input name="instanceId" th:field="*{instanceId}" type="hidden">
<input name="instanceType" th:field="*{instanceType}" type="hidden">
<div class="form-group">
<label class="col-sm-4 control-label">申请人:</label>
<div class="col-sm-8">
<input name="applyUserName" th:field="*{applyUserName}" class="form-control" type="text" readonly>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label">申请时间:</label>
<div class="col-sm-8">
<div class="input-group date">
<input name="applyTime" th:value="${#dates.format(formData.applyTime, 'yyyy-MM-dd')}" class="form-control" placeholder="yyyy-MM-dd" type="text" disabled>
<span class="input-group-addon"><i class="fa fa-calendar"></i></span>
</div>
</div>
</div>
<input type="hidden" name="p_COM_comment" />
<div class="form-group">
<label class="col-sm-4 control-label">生产单号:</label>
<div class="col-sm-8">
<input class="form-control" id="makeNo" name="makeNo" th:field="*{makeNo}" disabled>
<!-- 这里动态生成生产单号选项 -->
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label">检验时间:</label>
<div class="col-sm-8">
<div class="input-group date">
<input name="checkoutTime" th:value="${#dates.format(formData.checkoutTime, 'yyyy-MM-dd')}" class="form-control" placeholder="yyyy-MM-dd" type="text" disabled>
<span class="input-group-addon"><i class="fa fa-calendar"></i></span>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label is-required" for="pzjlVerifyApproved">审批意见:</label>
<div class="col-sm-8">
<select name="p_B_pzjlVerifyApproved" id="pzjlVerifyApproved" class="form-control m-b" required>
<option value=""></option>
<option value="true">同意</option>
<option value="false">拒绝</option>
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label">批注:</label>
<div class="col-sm-8">
<textarea name="comment" class="form-control"></textarea>
</div>
</div>
</form>
<div class="container">
<div class="row">
<div class="col-sm-12 select-table table-striped">
<table id="bootstrap-table"></table>
</div>
</div>
</div>
<div class="container mt-5" style="margin-top: 10px;">
<div id="contentArea" class="mt-3">
<!-- 初始内容可以在这里,例如一个列表项和一个表单 -->
</div>
</div>
</div>
<th:block th:include="include :: footer" />
<th:block th:include="include:: select2-js" />
<th:block th:include="include :: datetimepicker-js" />
<script th:src="@{/js/activiti.js}"></script>
<script th:inline="javascript">
var qualityManufacturingCheckout = [[${formData}]];
var makeNo = [[${formData.makeNo}]];
var prefix = ctx + "quality/manufacturingCheckout";
var processMethodDatas = [[${@dict.getType('processMethod')}]];
var materialTypeDatas = [[${@category.getChildByCode('materialType')}]];
var processBadClassificationDatas = [[${@dict.getType('process_bad_classification')}]];
var processBadGradeDatas = [[${@dict.getType('process_bad_grade')}]];
var checkoutMaterial = qualityManufacturingCheckout.checkoutMaterial;
var processList = checkoutMaterial.materialProcessList;
$("#form-manufacturingCheckout-pzjl").validate({focusCleanup: true });
var curIndex = 0;
//物料信息展示列表
$(function() {
$('#makeNo').val(makeNo);
var options = {
url: ctx + "quality/manufacturingCheckout/getMaterialListByCode",
showSearch: false,
showRefresh: false,
showToggle: false,
showColumns: false,
height: 40,
pagination: false, // 设置不分页
queryParams: queryParams,
modalName: "选择物料",
columns: [
{
title: '料号',
field: 'materialNo',
align: 'center',
},
{
title: '图片',
align: 'center',
field: 'materialPhotourl',
},
{
title: '物料名称',
align: 'center',
field: 'materialName',
},
{
title: '物料类型',
align: 'center',
field: 'materialType',
},
{
title: '物料型号',
align: 'center',
field: 'materialModel',
formatter: function(value, row, index) {
return $.table.selectCategoryLabel(materialTypeDatas, value);
}
},
{
title: '描述',
align: 'center',
field: 'materialDescribe',
},
{
title: '品牌',
align: 'center',
field: 'materialBrand',
},
{
title: '单位',
align: 'center',
field: 'materialUnit',
},
{
title: '加工方式',
align: 'center',
field: 'materialProcessMethod',
formatter: function(value, row, index) {
return $.table.selectDictLabel(processMethodDatas, value);
}
},
{
title: '订单数',
align: 'center',
field: 'makeTotal',
},
{
title: '已检验数',
align: 'center',
field: 'checkedNum',
},
{
title: '本次检验数',
align: 'center',
field: 'currentCheckoutNum',
},
{
title: '工序合格数',
align: 'center',
field: 'processQualifiedNum',
},
{
title: '工序不合格数',
align: 'center',
field: 'processUnqualifiedNum',
},
]
};
$.table.init(options);
processList.forEach(function (process){
insertCheckProcess(process);
})
})
//新增制程工序模块
function insertCheckProcess(process) {
curIndex ++;
var uniqueId = "unique_" + curIndex;
var newItem =
'<div class="container bordered-container" id="div_'+ uniqueId +'">' +
"<div class='col-sm-12 my-3'>" +
`<h5>制程工序${curIndex}</h5>` +
"<div class='col-sm-12 select-table table-striped'>" +
'<table class="table-container checkoutMaterial-edit-table" id="bootstrap-manufacturingProcess-table-'+uniqueId+'"></table>' +
"</div>" +
"</div>" +
"<div class='col-sm-12 move-right'>" +
"<h3>合格数</h3>\n" +
" <div class='row'>" +
" <div class='form-group col-sm-6'>" +
" <label class='col-sm-4 control-label is-required'>ok允收数:</label>" +
" <div class='col-sm-8'>" +
` <input readonly id='okAcceptedNum' name='okAcceptedNum' oninput='okAcceptedHandler()' class='form-control' type='number' value='${process.okAcceptedNum}' required>` +
" </div>" +
" </div>" +
" <div class='form-group col-sm-6'>" +
" <label class='col-sm-4 control-label'>ok报告图片:</label>" +
" <div class='col-sm-8'>" +
" <input readonly name='okReportUrl' class='form-control' type='text'>" +
" </div>" +
" </div>" +
" </div>" +
" <div class='row'>" +
" <div class='form-group col-sm-6'>" +
" <label class='col-sm-4 control-label is-required'>特采/让步数:</label>" +
" <div class='col-sm-8'>" +
` <input readonly id='specialConcessionsNum' name='specialConcessionsNum' oninput='okAcceptedHandler()' class='form-control' type='number' value='${process.specialConcessionsNum}' required>` +
" </div>" +
" </div>" +
" <div class='form-group col-sm-6'>" +
" <label class='col-sm-4 control-label'>特采报告图片:</label>" +
" <div class='col-sm-8'>" +
" <input readonly name='specialReportUrl' class='form-control' type='text'>" +
" </div>\n" +
" </div>\n" +
" </div>"+
"</form>"+
"</div>" +
"<div class='col-sm-12 my-3'>" +
"<h5>不合格数</h5>" +
'<div class="col-sm-12 select-table table-striped-two" id="unqualified_'+uniqueId+'">' +
'<table class="table-container checkoutMaterial-edit-table" id="bootstrap-unqualifiedClass-table-' + uniqueId + '"></table>' +
"</div>" +
"</div>" +
"</div>";
$("#contentArea").append(newItem);
var bootstarpId = "bootstrap-manufacturingProcess-table-" + uniqueId;
var processList = [];
processList.push(process);
console.log(processList);
var unQualifiedList = process.unqualifiedClassList;
var options1 = {
id:bootstarpId,
showSearch: false,
showRefresh: false,
showToggle: false,
showColumns: false,
pagination: false, // 设置不分页
modalName: "制程工序",
data: processList,
height:30,
columns: [
{
title: '制程工序编号',
field: 'manufacturingProcessCode',
align: 'center',
},
{
title: '制程工序名称',
align: 'center',
field: 'manufacturingProcessName',
},
{
title: '设备名称',
align: 'center',
field: 'deviceName',
},
{
title: '设备型号',
align: 'center',
field: 'deviceModelCode',
},
{
title: '工序顺序',
align: 'center',
field: 'processSequence',
},
{
title: '车间名称',
align: 'center',
field: 'workshopName',
},
{
title: '零件名称',
align: 'center',
field: 'modName',
},
{
title: '工序检验项目',
align: 'center',
field: 'processInspectionItem',
},
],
};
$.table.init(options1);
//初始化不合格分类表格
var unqualifiedTableId = 'bootstrap-unqualifiedClass-table-' + uniqueId;
var options2 = {
id:'bootstrap-unqualifiedClass-table-' + uniqueId,
showSearch: false,
showRefresh: false,
showToggle: false,
showColumns: false,
height: 40,
data: unQualifiedList,
pagination: false, // 设置不分页
modalName: "添加不合格分类",
columns: [
{
title: '不合格分类Id',
field: 'unqualifiedClassId',
visible: false,
},
{
title: '不良分类',
align: 'center',
field: 'processBadClassification',
formatter: function(value, row, index) {
return $.table.selectDictLabel(processBadClassificationDatas, value);
}
},
{
title: '不良等级',
align: 'center',
field: 'processBadGrade',
formatter: function(value, row, index) {
return $.table.selectDictLabel(processBadGradeDatas, value);
}
},
{
title: '不良数量',
align: 'center',
field: 'processBadNum',
},
{
title: '报告',
align: 'center',
field: 'processBadPhotourl',
},
]
};
$.table.init(options2);
$(".fixed-table-container","#unqualified_" + uniqueId).css("min-height","200px");
};
function queryParams(params) {
var curParams = {
// 传递参数查询参数
manufacturingCheckoutCode: qualityManufacturingCheckout.manufacturingCheckoutCode
};
return curParams;
}
$("input[name='checkoutTime']").datetimepicker({
format: "yyyy-mm-dd",
minView: "month",
autoclose: true
});
function submitHandler() {
if ($.validate.form()) {
if ($('textarea[name="comment"]').val()) {
$('input[name="p_COM_comment"]').val($('textarea[name="comment"]').val());
}
var taskId = [[${taskId}]];
$.operate.save(prefix + "/complete/" + taskId, $('#form-manufacturingCheckout-pzjl').serialize());
}
}
</script>
</body>
</html>
Loading…
Cancel
Save