diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/controller/SysMakeOrderController.java b/ruoyi-admin/src/main/java/com/ruoyi/system/controller/SysMakeOrderController.java index f0c1d3ac..fbd406ab 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/controller/SysMakeOrderController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/controller/SysMakeOrderController.java @@ -1,5 +1,7 @@ package com.ruoyi.system.controller; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; @@ -7,13 +9,17 @@ import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.system.domain.SysMakeOrder; +import com.ruoyi.system.domain.SysMakeorderDept; +import com.ruoyi.system.dto.SysMakeorderDeptDto; import com.ruoyi.system.service.ISysMakeOrderService; +import com.ruoyi.system.service.ISysMakeorderDeptService; 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.web.bind.annotation.*; +import java.util.Collections; import java.util.List; /** @@ -31,6 +37,9 @@ public class SysMakeOrderController extends BaseController @Autowired private ISysMakeOrderService sysMakeOrderService; + @Autowired + private ISysMakeorderDeptService makeorderDeptService; + @RequiresPermissions("system:makeorder:view") @GetMapping() public String makeorder() @@ -38,6 +47,56 @@ public class SysMakeOrderController extends BaseController return prefix + "/makeorder"; } + /** + * 部门评审 + * @param makeorderDeptDto + * @return + */ + @PostMapping("/deptReview") + @ResponseBody + public AjaxResult deptReview(SysMakeorderDeptDto makeorderDeptDto){ + List makeorderDeptList = makeorderDeptDto.getMakeorderDeptList(); + if(CollectionUtil.isEmpty(makeorderDeptList)){ + AjaxResult.error("部门评审数据不能为空!"); + } + makeorderDeptService.deptReview(makeorderDeptList); + return AjaxResult.success("部门评审成功!"); + } + + /** + * 部门主管确认 + * @param makeorderDeptDto + * @return + */ + @PostMapping("/deptLeaderConfirm") + @ResponseBody + public AjaxResult deptLeaderConfirm(SysMakeorderDeptDto makeorderDeptDto){ + List makeorderDeptList = makeorderDeptDto.getMakeorderDeptList(); + if(CollectionUtil.isEmpty(makeorderDeptList)){ + AjaxResult.error("部门主管确认数据不能为空!"); + } + makeorderDeptService.deptReview(makeorderDeptList); + return AjaxResult.success("部门评审成功!"); + } + + /** + * 工程审核 + * @param makeNo + * @return + */ + @GetMapping("/gcReview/{makeNo}") + @ResponseBody + public AjaxResult gcReview(@PathVariable("makeNo") String makeNo){ + SysMakeOrder makeOrder = new SysMakeOrder(); + makeOrder.setMakeNo(makeNo); + // 待生产 + makeOrder.setMakeStatus("3"); + sysMakeOrderService.updateByMakeNo(makeOrder); + // todo 加工方式“采购”的物料生成采购计划 + return AjaxResult.success("工程审核成功!"); + } + + /** * 查询生产订单列表 */ diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/controller/SysMakeorderDeptController.java b/ruoyi-admin/src/main/java/com/ruoyi/system/controller/SysMakeorderDeptController.java new file mode 100644 index 00000000..7314f528 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/controller/SysMakeorderDeptController.java @@ -0,0 +1,151 @@ +package com.ruoyi.system.controller; + +import java.util.List; +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.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.system.domain.SysMakeorderDept; +import com.ruoyi.system.service.ISysMakeorderDeptService; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.common.core.page.TableDataInfo; + +/** + * 生产订单部门Controller + * + * @author ruoyi + * @date 2024-04-01 + */ +@Controller +@RequestMapping("/system/makeorderdept") +public class SysMakeorderDeptController extends BaseController +{ + private String prefix = "system/makeorderdept"; + + @Autowired + private ISysMakeorderDeptService sysMakeorderDeptService; + + @RequiresPermissions("system:makeorderdept:view") + @GetMapping() + public String dept() + { + return prefix + "/dept"; + } + + /** + * 查询生产订单部门列表 + */ +// @RequiresPermissions("system:makeorderdept:list") + @PostMapping("/list") + @ResponseBody + public TableDataInfo list(SysMakeorderDept sysMakeorderDept) + { + startPage(); + List list = sysMakeorderDeptService.selectSysMakeorderDeptList(sysMakeorderDept); + return getDataTable(list); + } + + /** + * 导出生产订单部门列表 + */ +// @RequiresPermissions("system:makeorderdept:export") +// @Log(title = "生产订单部门", businessType = BusinessType.EXPORT) + @PostMapping("/export") + @ResponseBody + public AjaxResult export(SysMakeorderDept sysMakeorderDept) + { + List list = sysMakeorderDeptService.selectSysMakeorderDeptList(sysMakeorderDept); + ExcelUtil util = new ExcelUtil(SysMakeorderDept.class); + return util.exportExcel(list, "生产订单部门数据"); + } + + /** + * 新增生产订单部门 + */ + @GetMapping("/add") + public String add() + { + return prefix + "/add"; + } + + /** + * 新增保存生产订单部门 + */ +// @RequiresPermissions("system:makeorderdept:add") +// @Log(title = "生产订单部门", businessType = BusinessType.INSERT) + @PostMapping("/add") + @ResponseBody + public AjaxResult addSave(SysMakeorderDept sysMakeorderDept) + { + return toAjax(sysMakeorderDeptService.insertSysMakeorderDept(sysMakeorderDept)); + } + + /** + * 修改生产订单部门 + */ + @GetMapping("/edit/{id}") + public String edit(@PathVariable("id") Long id, ModelMap mmap) + { + SysMakeorderDept sysMakeorderDept = sysMakeorderDeptService.selectSysMakeorderDeptById(id); + mmap.put("sysMakeorderDept", sysMakeorderDept); + return prefix + "/edit"; + } + + /** + * 修改保存生产订单部门 + */ +// @RequiresPermissions("system:makeorderdept:edit") +// @Log(title = "生产订单部门", businessType = BusinessType.UPDATE) + @PostMapping("/edit") + @ResponseBody + public AjaxResult editSave(SysMakeorderDept sysMakeorderDept) + { + return toAjax(sysMakeorderDeptService.updateSysMakeorderDept(sysMakeorderDept)); + } + + /** + * 删除生产订单部门 + */ +// @RequiresPermissions("system:makeorderdept:remove") +// @Log(title = "生产订单部门", businessType = BusinessType.DELETE) + @PostMapping( "/remove") + @ResponseBody + public AjaxResult remove(String ids) + { + return toAjax(sysMakeorderDeptService.deleteSysMakeorderDeptByIds(ids)); + } + + /** + * 作废生产订单部门 + */ +// @RequiresPermissions("system:makeorderdept:cancel") +// @Log(title = "生产订单部门", businessType = BusinessType.CANCEL) + @GetMapping( "/cancel/{id}") + @ResponseBody + public AjaxResult cancel(@PathVariable("id") Long id){ + return toAjax(sysMakeorderDeptService.cancelSysMakeorderDeptById(id)); + } + + /** + * 恢复生产订单部门 + */ +// @RequiresPermissions("system:makeorderdept:restore") +// @Log(title = "生产订单部门", businessType = BusinessType.RESTORE) + @GetMapping( "/restore/{id}") + @ResponseBody + public AjaxResult restore(@PathVariable("id")Long id) + { + return toAjax(sysMakeorderDeptService.restoreSysMakeorderDeptById(id)); + } + + +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/controller/SysMakeorderPickController.java b/ruoyi-admin/src/main/java/com/ruoyi/system/controller/SysMakeorderPickController.java new file mode 100644 index 00000000..3be4ae5c --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/controller/SysMakeorderPickController.java @@ -0,0 +1,262 @@ +package com.ruoyi.system.controller; + +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.utils.ShiroUtils; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.process.general.service.IProcessService; +import com.ruoyi.system.domain.SysMakeorderPick; +import com.ruoyi.system.domain.SysMakeorderPickVo; +import com.ruoyi.system.service.ISysMakeorderPickService; +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.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; +import java.util.HashMap; +import java.util.List; + +/** + * 生产领料单Controller + * + * @author ruoyi + * @date 2024-04-05 + */ +@Controller +@RequestMapping("/system/makeorderpick") +public class SysMakeorderPickController extends BaseController +{ + private String prefix = "system/makeorderpick"; + + @Autowired + private ISysMakeorderPickService sysMakeorderPickService; + + @Autowired + private TaskService taskService; + + @Autowired + private RuntimeService runtimeService; + + @Autowired + private IProcessService processService; + + + + @RequiresPermissions("system:makeorderpick:view") + @GetMapping() + public String makeorderpick(ModelMap mmap) + { + mmap.put("currentUser", ShiroUtils.getSysUser()); + return prefix + "/makeorderpick"; + } + + /** + * 查询生产领料单列表 + */ + @RequiresPermissions("system:makeorderpick:list") + @PostMapping("/list") + @ResponseBody + public TableDataInfo list(SysMakeorderPickVo makeorderPickVo) + { + startPage(); + List list = sysMakeorderPickService.selectSysMakeorderPickList(makeorderPickVo); + return getDataTable(list); + } + + /** + * 导出生产领料单列表 + */ + @RequiresPermissions("system:makeorderpick:export") + @Log(title = "生产领料单", businessType = BusinessType.EXPORT) + @PostMapping("/export") + @ResponseBody + public AjaxResult export(SysMakeorderPickVo sysMakeorderPickVo) + { + List list = sysMakeorderPickService.selectSysMakeorderPickList(sysMakeorderPickVo); + ExcelUtil util = new ExcelUtil(SysMakeorderPickVo.class); + return util.exportExcel(list, "生产领料单数据"); + } + + /** + * 新增生产领料单 + */ + @GetMapping("/add") + public String add() + { + return prefix + "/add"; + } + + /** + * 新增保存生产领料单 + */ + @RequiresPermissions("system:makeorderpick:add") + @Log(title = "生产领料单", businessType = BusinessType.INSERT) + @PostMapping("/add") + @ResponseBody + public AjaxResult addSave(SysMakeorderPick sysMakeorderPick) + { + // 审核状态-待审核 + sysMakeorderPick.setAuditStatus("0"); + sysMakeorderPickService.submitApply(sysMakeorderPick); + return AjaxResult.success(); + } + + /** + * 加载审批弹窗 + * @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(); + SysMakeorderPick makeorderPick = sysMakeorderPickService.selectSysMakeorderPickById(new Long(processInstance.getBusinessKey())); + mmap.put("formData", makeorderPick); + mmap.put("taskId", taskId); + String verifyName = task.getTaskDefinitionKey().substring(0, 1).toUpperCase() + task.getTaskDefinitionKey().substring(1); + return prefix + "/task" + verifyName; + } + + /** + * 自动绑定页面字段 + */ + @ModelAttribute("preloadObj") + public SysMakeorderPickVo getObj(@RequestParam(value = "id", required = false) Long id, HttpSession session) { + if (id != null) { + return sysMakeorderPickService.selectSysMakeorderPickById(id); + } + return new SysMakeorderPickVo(); + } + + /** + * 完成任务 + * + * @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") SysMakeorderPickVo makeorderPickVo, HttpServletRequest request) { + boolean saveEntityBoolean = BooleanUtils.toBoolean(saveEntity); + //获取实例id + String instanceId = makeorderPickVo.getInstanceId(); + //获取实例类型 + String instanceType = makeorderPickVo.getInstanceType(); + boolean approvedFlag = processService.complete(taskId, instanceId, makeorderPickVo.getApplyTitle(), makeorderPickVo.getPickNo(), "makeorderpick", new HashMap(), request); + if(!approvedFlag){ + // 审核状态-审核拒绝 + makeorderPickVo.setAuditStatus("2"); + } + // 如果任务已结束更新业务表状态 + boolean processIsFinish = processService.judgeProcessIsFinish(instanceId); + if (processIsFinish) { + // 审核通过 + makeorderPickVo.setAuditStatus("1"); + // 提交 + if("submit".equals(instanceType)){ + // 使用状态-是 +// erpBomVo.setUseStatus("1"); + } + // 作废 + else if("cancel".equals(instanceType)){ + // 使用状态-已作废 +// erpBomVo.setUseStatus("2"); + } + // 恢复 + else if("restore".equals(instanceType)){ + // 使用状态-是 +// erpBomVo.setUseStatus("1"); + } + } + sysMakeorderPickService.updateSysMakeorderPick(makeorderPickVo); + // 驳回申请后继续申请,可能修改表单 + if (saveEntityBoolean) { + sysMakeorderPickService.updateSysMakeorderPick(makeorderPickVo); + } + return success("任务已完成"); + } + + /** + * 修改生产领料单 + */ + @GetMapping("/edit/{id}") + public String edit(@PathVariable("id") Long id, ModelMap mmap) + { + SysMakeorderPick sysMakeorderPick = sysMakeorderPickService.selectSysMakeorderPickById(id); + mmap.put("sysMakeorderPick", sysMakeorderPick); + return prefix + "/edit"; + } + + @GetMapping("/detail/{id}") + public String detail(@PathVariable("id") Long id, ModelMap mmap) + { + SysMakeorderPick sysMakeorderPick = sysMakeorderPickService.selectSysMakeorderPickById(id); + mmap.put("sysMakeorderPick", sysMakeorderPick); + return prefix + "/detail"; + } + + /** + * 修改保存生产领料单 + */ + @RequiresPermissions("system:makeorderpick:edit") + @Log(title = "生产领料单", businessType = BusinessType.UPDATE) + @PostMapping("/edit") + @ResponseBody + public AjaxResult editSave(SysMakeorderPick sysMakeorderPick) + { + // 审核状态-待审核 + sysMakeorderPick.setAuditStatus("0"); + sysMakeorderPickService.submitApply(sysMakeorderPick); + return AjaxResult.success(); + } + + /** + * 删除生产领料单 + */ + @RequiresPermissions("system:makeorderpick:remove") + @Log(title = "生产领料单", businessType = BusinessType.DELETE) + @PostMapping( "/remove") + @ResponseBody + public AjaxResult remove(String ids) + { + return toAjax(sysMakeorderPickService.deleteSysMakeorderPickByIds(ids)); + } + + /** + * 作废生产领料单 + */ + @RequiresPermissions("system:makeorderpick:cancel") + @Log(title = "生产领料单", businessType = BusinessType.CANCEL) + @GetMapping( "/cancel/{id}") + @ResponseBody + public AjaxResult cancel(@PathVariable("id") Long id){ + return toAjax(sysMakeorderPickService.cancelSysMakeorderPickById(id)); + } + + /** + * 恢复生产领料单 + */ + @RequiresPermissions("system:makeorderpick:restore") + @Log(title = "生产领料单", businessType = BusinessType.RESTORE) + @GetMapping( "/restore/{id}") + @ResponseBody + public AjaxResult restore(@PathVariable("id")Long id) + { + return toAjax(sysMakeorderPickService.restoreSysMakeorderPickById(id)); + } + + +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/domain/SysMakeorderDept.java b/ruoyi-admin/src/main/java/com/ruoyi/system/domain/SysMakeorderDept.java index 1fa2d0c8..b73da927 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/domain/SysMakeorderDept.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/domain/SysMakeorderDept.java @@ -31,9 +31,9 @@ public class SysMakeorderDept extends BaseEntity @Excel(name = "料号") private String materialNo; - /** 部门id */ - @Excel(name = "部门id") - private Long deptId; + /** 部门编号 */ + @Excel(name = "部门编号") + private String deptNumber; /** 部门名称 */ @Excel(name = "部门名称") @@ -67,6 +67,9 @@ public class SysMakeorderDept extends BaseEntity @Excel(name = "实际完成结束时间", width = 30, dateFormat = "yyyy-MM-dd") private Date actualFinishEndTime; + /** 是否预审完成 */ + private String isYsFinish; + public void setId(Long id) { this.id = id; @@ -103,14 +106,14 @@ public class SysMakeorderDept extends BaseEntity { return materialNo; } - public void setDeptId(Long deptId) + public void setDeptNumber(String deptNumber) { - this.deptId = deptId; + this.deptNumber = deptNumber; } - public Long getDeptId() + public String getDeptNumber() { - return deptId; + return deptNumber; } public void setDeptName(String deptName) { @@ -176,6 +179,14 @@ public class SysMakeorderDept extends BaseEntity return actualFinishEndTime; } + public String getIsYsFinish() { + return isYsFinish; + } + + public void setIsYsFinish(String isYsFinish) { + this.isYsFinish = isYsFinish; + } + @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) @@ -188,11 +199,12 @@ public class SysMakeorderDept extends BaseEntity .append("remark", getRemark()) .append("makeNo", getMakeNo()) .append("materialNo", getMaterialNo()) - .append("deptId", getDeptId()) + .append("deptNumber", getDeptNumber()) .append("deptName", getDeptName()) .append("planFinishStartDate", getPlanFinishStartDate()) .append("planFinishEndDate", getPlanFinishEndDate()) .append("planFinishDays", getPlanFinishDays()) + .append("isYsFinish", getIsYsFinish()) .append("deptLeaderConfirmStatus", getDeptLeaderConfirmStatus()) .append("actualFinishStartTime", getActualFinishStartTime()) .append("actualFinishEndTime", getActualFinishEndTime()) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/domain/SysMakeorderPick.java b/ruoyi-admin/src/main/java/com/ruoyi/system/domain/SysMakeorderPick.java new file mode 100644 index 00000000..1789f7b1 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/domain/SysMakeorderPick.java @@ -0,0 +1,254 @@ +package com.ruoyi.system.domain; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.ruoyi.common.annotation.Excel; +import com.ruoyi.common.core.domain.BaseEntity; + +/** + * 生产领料单对象 sys_makeorder_pick + * + * @author ruoyi + * @date 2024-04-05 + */ +public class SysMakeorderPick extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 主键ID */ + private Long id; + + /** 删除标志(0代表存在 1代表删除) */ + private String delFlag; + + /** 生产订单号 */ + @Excel(name = "生产订单号") + private String makeNo; + + /** 关联销售订单号 */ + @Excel(name = "关联销售订单号") + private String saleNo; + + /** 生产领料单号 */ + @Excel(name = "生产领料单号") + private String pickNo; + + /** 领料状态 0-待领料 1-部分领料 2-全部领料 */ + @Excel(name = "领料状态 0-待领料 1-部分领料 2-全部领料") + private String pickStatus; + + /** 领料员 */ + @Excel(name = "领料员") + private String pickUser; + + /** 审核状态 0-待审核 1-审核通过 2-审核拒绝 */ + @Excel(name = "审核状态 0-待审核 1-审核通过 2-审核拒绝") + private String auditStatus; + + /** 流程实例ID */ + @Excel(name = "流程实例ID") + private String instanceId; + + /** 流程实例类型 */ + @Excel(name = "流程实例类型") + private String instanceType; + + /** 流程提交实例ID */ + @Excel(name = "流程提交实例ID") + private String submitInstanceId; + + /** 流程作废实例ID */ + @Excel(name = "流程作废实例ID") + private String cancelInstanceId; + + /** 流程恢复实例ID */ + @Excel(name = "流程恢复实例ID") + private String restoreInstanceId; + + /** 申请标题 */ + @Excel(name = "申请标题") + private String applyTitle; + + /** 申请人 */ + @Excel(name = "申请人") + private String applyUser; + + /** 申请时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "申请时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date applyTime; + + public void setId(Long id) + { + this.id = id; + } + + public Long getId() + { + return id; + } + public void setDelFlag(String delFlag) + { + this.delFlag = delFlag; + } + + public String getDelFlag() + { + return delFlag; + } + public void setMakeNo(String makeNo) + { + this.makeNo = makeNo; + } + + public String getMakeNo() + { + return makeNo; + } + public void setSaleNo(String saleNo) + { + this.saleNo = saleNo; + } + + public String getSaleNo() + { + return saleNo; + } + public void setPickNo(String pickNo) + { + this.pickNo = pickNo; + } + + public String getPickNo() + { + return pickNo; + } + public void setPickStatus(String pickStatus) + { + this.pickStatus = pickStatus; + } + + public String getPickStatus() + { + return pickStatus; + } + public void setPickUser(String pickUser) + { + this.pickUser = pickUser; + } + + public String getPickUser() + { + return pickUser; + } + public void setAuditStatus(String auditStatus) + { + this.auditStatus = auditStatus; + } + + public String getAuditStatus() + { + return auditStatus; + } + public void setInstanceId(String instanceId) + { + this.instanceId = instanceId; + } + + public String getInstanceId() + { + return instanceId; + } + public void setInstanceType(String instanceType) + { + this.instanceType = instanceType; + } + + public String getInstanceType() + { + return instanceType; + } + public void setSubmitInstanceId(String submitInstanceId) + { + this.submitInstanceId = submitInstanceId; + } + + public String getSubmitInstanceId() + { + return submitInstanceId; + } + public void setCancelInstanceId(String cancelInstanceId) + { + this.cancelInstanceId = cancelInstanceId; + } + + public String getCancelInstanceId() + { + return cancelInstanceId; + } + public void setRestoreInstanceId(String restoreInstanceId) + { + this.restoreInstanceId = restoreInstanceId; + } + + public String getRestoreInstanceId() + { + return restoreInstanceId; + } + public void setApplyTitle(String applyTitle) + { + this.applyTitle = applyTitle; + } + + public String getApplyTitle() + { + return applyTitle; + } + public void setApplyUser(String applyUser) + { + this.applyUser = applyUser; + } + + public String getApplyUser() + { + return applyUser; + } + public void setApplyTime(Date applyTime) + { + this.applyTime = applyTime; + } + + public Date getApplyTime() + { + return applyTime; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("delFlag", getDelFlag()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .append("remark", getRemark()) + .append("makeNo", getMakeNo()) + .append("saleNo", getSaleNo()) + .append("pickNo", getPickNo()) + .append("pickStatus", getPickStatus()) + .append("pickUser", getPickUser()) + .append("auditStatus", getAuditStatus()) + .append("instanceId", getInstanceId()) + .append("instanceType", getInstanceType()) + .append("submitInstanceId", getSubmitInstanceId()) + .append("cancelInstanceId", getCancelInstanceId()) + .append("restoreInstanceId", getRestoreInstanceId()) + .append("applyTitle", getApplyTitle()) + .append("applyUser", getApplyUser()) + .append("applyTime", getApplyTime()) + .toString(); + } +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/domain/SysMakeorderPickVo.java b/ruoyi-admin/src/main/java/com/ruoyi/system/domain/SysMakeorderPickVo.java new file mode 100644 index 00000000..05ddc621 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/domain/SysMakeorderPickVo.java @@ -0,0 +1,39 @@ +package com.ruoyi.system.domain; + +import lombok.Data; + +import java.util.Date; + +/** + * @author xiguniang + * @description SysMakeorderPickVo + * @date 2024/4/6 16:10 + */ +@Data +public class SysMakeorderPickVo extends SysMakeorderPick { + private static final long serialVersionUID = -3627380777050403384L; + + /** 领料员姓名 */ + private String pickUserName; + /** 申请人姓名 */ + private String applyUserName; + /** 任务ID */ + private String taskId; + /** 任务名称 */ + private String taskName; + /** 办理时间 */ + 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/system/dto/SysMakeorderDeptDto.java b/ruoyi-admin/src/main/java/com/ruoyi/system/dto/SysMakeorderDeptDto.java new file mode 100644 index 00000000..468605fd --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/dto/SysMakeorderDeptDto.java @@ -0,0 +1,18 @@ +package com.ruoyi.system.dto; + +import com.ruoyi.system.domain.SysMakeorderDept; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * @author youjianchi + * @description SysMakeorderDeptDto + * @date 2024/4/4 14:14 + */ +@Data +public class SysMakeorderDeptDto implements Serializable { + private static final long serialVersionUID = 9089739788908492404L; + List makeorderDeptList; +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/mapper/SysMakeOrderMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/system/mapper/SysMakeOrderMapper.java index 5fe49fc0..8a242f10 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/mapper/SysMakeOrderMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/mapper/SysMakeOrderMapper.java @@ -44,6 +44,8 @@ public interface SysMakeOrderMapper */ public int updateSysMakeOrder(SysMakeOrder sysMakeOrder); + int updateByMakeNo(SysMakeOrder sysMakeOrder); + /** * 删除生产订单 * diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/mapper/SysMakeorderDeptMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/system/mapper/SysMakeorderDeptMapper.java index bf2b53b8..b76720f7 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/mapper/SysMakeorderDeptMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/mapper/SysMakeorderDeptMapper.java @@ -2,6 +2,7 @@ package com.ruoyi.system.mapper; import java.util.List; import com.ruoyi.system.domain.SysMakeorderDept; +import org.apache.ibatis.annotations.Param; /** * 生产订单部门Mapper接口 @@ -27,6 +28,8 @@ public interface SysMakeorderDeptMapper */ public List selectSysMakeorderDeptList(SysMakeorderDept sysMakeorderDept); + List selectListByMakeNoAndNoDept(@Param("makeNo") String makeNo, @Param("deptNumber") String deptNumber); + /** * 新增生产订单部门 * diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/mapper/SysMakeorderPickMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/system/mapper/SysMakeorderPickMapper.java new file mode 100644 index 00000000..c440c832 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/mapper/SysMakeorderPickMapper.java @@ -0,0 +1,78 @@ +package com.ruoyi.system.mapper; + +import java.util.List; +import com.ruoyi.system.domain.SysMakeorderPick; +import com.ruoyi.system.domain.SysMakeorderPickVo; + +/** + * 生产领料单Mapper接口 + * + * @author ruoyi + * @date 2024-04-05 + */ +public interface SysMakeorderPickMapper +{ + /** + * 查询生产领料单 + * + * @param id 生产领料单ID + * @return 生产领料单 + */ + public SysMakeorderPickVo selectSysMakeorderPickById(Long id); + + /** + * 查询生产领料单列表 + * + * @param sysMakeorderPick 生产领料单 + * @return 生产领料单集合 + */ + public List selectSysMakeorderPickList(SysMakeorderPick sysMakeorderPick); + + /** + * 新增生产领料单 + * + * @param sysMakeorderPick 生产领料单 + * @return 结果 + */ + public int insertSysMakeorderPick(SysMakeorderPick sysMakeorderPick); + + /** + * 修改生产领料单 + * + * @param sysMakeorderPick 生产领料单 + * @return 结果 + */ + public int updateSysMakeorderPick(SysMakeorderPick sysMakeorderPick); + + /** + * 删除生产领料单 + * + * @param id 生产领料单ID + * @return 结果 + */ + public int deleteSysMakeorderPickById(Long id); + + /** + * 批量删除生产领料单 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + public int deleteSysMakeorderPickByIds(String[] ids); + + /** + * 作废生产领料单 + * + * @param id 生产领料单ID + * @return 结果 + */ + public int cancelSysMakeorderPickById(Long id); + + /** + * 恢复生产领料单 + * + * @param id 生产领料单ID + * @return 结果 + */ + public int restoreSysMakeorderPickById(Long id); +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/service/ISysMakeOrderService.java b/ruoyi-admin/src/main/java/com/ruoyi/system/service/ISysMakeOrderService.java index b4e7b997..c02338fc 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/service/ISysMakeOrderService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/service/ISysMakeOrderService.java @@ -44,6 +44,8 @@ public interface ISysMakeOrderService */ public int updateSysMakeOrder(SysMakeOrder sysMakeOrder); + int updateByMakeNo(SysMakeOrder sysMakeOrder); + /** * 批量删除生产订单 * diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/service/ISysMakeorderDeptService.java b/ruoyi-admin/src/main/java/com/ruoyi/system/service/ISysMakeorderDeptService.java index ca8298c4..7960c0e6 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/service/ISysMakeorderDeptService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/service/ISysMakeorderDeptService.java @@ -72,4 +72,16 @@ public interface ISysMakeorderDeptService * @return */ int restoreSysMakeorderDeptById(Long id); + + /** + * 部门评审 + * @param makeorderDeptList + */ + void deptReview(List makeorderDeptList); + + /** + * 部门主管确认 + * @param makeorderDeptList + */ + void deptLeaderConfirm(List makeorderDeptList); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/service/ISysMakeorderPickService.java b/ruoyi-admin/src/main/java/com/ruoyi/system/service/ISysMakeorderPickService.java new file mode 100644 index 00000000..306d76ea --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/service/ISysMakeorderPickService.java @@ -0,0 +1,79 @@ +package com.ruoyi.system.service; + +import java.util.List; +import com.ruoyi.system.domain.SysMakeorderPick; +import com.ruoyi.system.domain.SysMakeorderPickVo; +import org.activiti.engine.runtime.ProcessInstance; + +/** + * 生产领料单Service接口 + * + * @author ruoyi + * @date 2024-04-05 + */ +public interface ISysMakeorderPickService +{ + /** + * 查询生产领料单 + * + * @param id 生产领料单ID + * @return 生产领料单 + */ + public SysMakeorderPickVo selectSysMakeorderPickById(Long id); + + /** + * 查询生产领料单列表 + * + * @param makeorderPickVo 生产领料单 + * @return 生产领料单集合 + */ + public List selectSysMakeorderPickList(SysMakeorderPickVo makeorderPickVo); + + /** + * 新增生产领料单 + * + * @param sysMakeorderPick 生产领料单 + * @return 结果 + */ + public int insertSysMakeorderPick(SysMakeorderPick sysMakeorderPick); + + /** + * 修改生产领料单 + * + * @param sysMakeorderPick 生产领料单 + * @return 结果 + */ + public int updateSysMakeorderPick(SysMakeorderPick sysMakeorderPick); + + /** + * 批量删除生产领料单 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + public int deleteSysMakeorderPickByIds(String ids); + + /** + * 删除生产领料单信息 + * + * @param id 生产领料单ID + * @return 结果 + */ + public int deleteSysMakeorderPickById(Long id); + + /** + * 作废生产领料单 + * @param id 生产领料单ID + * @return + */ + int cancelSysMakeorderPickById(Long id); + + /** + * 恢复生产领料单 + * @param id 生产领料单ID + * @return + */ + int restoreSysMakeorderPickById(Long id); + + ProcessInstance submitApply(SysMakeorderPick makeorderPick); +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysMakeOrderServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysMakeOrderServiceImpl.java index 46cf0584..2562e37a 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysMakeOrderServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysMakeOrderServiceImpl.java @@ -87,6 +87,14 @@ public class SysMakeOrderServiceImpl implements ISysMakeOrderService return sysMakeOrderMapper.updateSysMakeOrder(sysMakeOrder); } + @Override + public int updateByMakeNo(SysMakeOrder sysMakeOrder) { + String loginName = ShiroUtils.getLoginName(); + sysMakeOrder.setUpdateBy(loginName); + sysMakeOrder.setUpdateTime(DateUtils.getNowDate()); + return sysMakeOrderMapper.updateByMakeNo(sysMakeOrder); + } + /** * 删除生产订单对象 * diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysMakeorderDeptServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysMakeorderDeptServiceImpl.java index 1582ca49..9296c885 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysMakeorderDeptServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysMakeorderDeptServiceImpl.java @@ -1,14 +1,19 @@ package com.ruoyi.system.service.impl; import java.util.List; + +import cn.hutool.core.collection.CollectionUtil; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.ShiroUtils; +import com.ruoyi.system.domain.SysMakeOrder; +import com.ruoyi.system.service.ISysMakeOrderService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ruoyi.system.mapper.SysMakeorderDeptMapper; import com.ruoyi.system.domain.SysMakeorderDept; import com.ruoyi.system.service.ISysMakeorderDeptService; import com.ruoyi.common.core.text.Convert; +import org.springframework.transaction.annotation.Transactional; /** * 生产订单部门Service业务层处理 @@ -22,6 +27,9 @@ public class SysMakeorderDeptServiceImpl implements ISysMakeorderDeptService @Autowired private SysMakeorderDeptMapper sysMakeorderDeptMapper; + @Autowired + private ISysMakeOrderService makeOrderService; + /** * 查询生产订单部门 * @@ -123,4 +131,60 @@ public class SysMakeorderDeptServiceImpl implements ISysMakeorderDeptService { return sysMakeorderDeptMapper.restoreSysMakeorderDeptById(id); } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deptReview(List makeorderDeptList) { + SysMakeorderDept makeorderDept = makeorderDeptList.get(0); + String makeNo = makeorderDept.getMakeNo(); + // 部门预审数据是一起录入 + /*String deptNumber = ShiroUtils.getSysUser().getDept().getDeptNumber(); + // 判断其他部门是否都已预审完成,预审完成更新生产订单状态 + List makeorderOtherDepts = sysMakeorderDeptMapper.selectListByMakeNoAndNoDept(makeNo, deptNumber); + boolean isYsAllFinish = true; + if(CollectionUtil.isNotEmpty(makeorderOtherDepts)){ + for (int i = 0; i < makeorderOtherDepts.size(); i++) { + SysMakeorderDept makeorderDept1 = makeorderOtherDepts.get(i); + String isYsFinish = makeorderDept1.getIsYsFinish(); + if("0".equals(isYsFinish)){ + isYsAllFinish = false; + break; + } + } + }*/ + SysMakeOrder makeOrder = new SysMakeOrder(); + makeOrder.setMakeNo(makeNo); + // 待部门主管确认 + makeOrder.setMakeStatus("1"); + makeOrderService.updateByMakeNo(makeOrder); + makeorderDeptList.forEach(dept->{ + // 业务部门 无需部门领导确认 + if("SED".equals(dept.getDeptNumber())){ + // 已确认 + dept.setDeptLeaderConfirmStatus("1"); + }else{ + dept.setDeptLeaderConfirmStatus("0"); + } + sysMakeorderDeptMapper.updateSysMakeorderDept(dept); + }); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deptLeaderConfirm(List makeorderDeptList) { + SysMakeorderDept makeorderDept = makeorderDeptList.get(0); + String makeNo = makeorderDept.getMakeNo(); + String deptNumber = ShiroUtils.getSysUser().getDept().getDeptNumber(); + // 工程部门领导确认完,生产状态更新为待工程审核 + if("END".equals(deptNumber)){ + SysMakeOrder makeOrder = new SysMakeOrder(); + makeOrder.setMakeNo(makeNo); + // 待工程审核 + makeOrder.setMakeStatus("2"); + makeOrderService.updateByMakeNo(makeOrder); + } + makeorderDeptList.forEach(dept->{ + sysMakeorderDeptMapper.updateSysMakeorderDept(dept); + }); + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysMakeorderPickServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysMakeorderPickServiceImpl.java new file mode 100644 index 00000000..f1219fa1 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysMakeorderPickServiceImpl.java @@ -0,0 +1,284 @@ +package com.ruoyi.system.service.impl; + +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.core.text.Convert; +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.system.domain.SysMakeorderPick; +import com.ruoyi.system.domain.SysMakeorderPickVo; +import com.ruoyi.system.mapper.SysMakeorderPickMapper; +import com.ruoyi.system.mapper.SysUserMapper; +import com.ruoyi.system.service.ISysMakeorderPickService; +import com.ruoyi.system.service.ISysRoleService; +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 java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + * 生产领料单Service业务层处理 + * + * @author ruoyi + * @date 2024-04-05 + */ +@Service +public class SysMakeorderPickServiceImpl implements ISysMakeorderPickService +{ + @Autowired + private SysMakeorderPickMapper sysMakeorderPickMapper; + + @Autowired + private RedisCache redisCache; + + @Autowired + private IProcessService processService; + + @Autowired + private ISysRoleService roleService; + + @Autowired + private SysUserMapper userMapper; + + @Autowired + private TaskService taskService; + + @Autowired + private BizTodoItemMapper todoItemMapper; + + /** + * 查询生产领料单 + * + * @param id 生产领料单ID + * @return 生产领料单 + */ + @Override + public SysMakeorderPickVo selectSysMakeorderPickById(Long id) + { + SysMakeorderPickVo makeorderPickVo = sysMakeorderPickMapper.selectSysMakeorderPickById(id); + SysUser pickUser = userMapper.selectUserByLoginName(makeorderPickVo.getPickUser()); + makeorderPickVo.setPickUserName(pickUser.getUserName()); + SysUser applyUser = userMapper.selectUserByLoginName(makeorderPickVo.getApplyUser()); + makeorderPickVo.setApplyUserName(applyUser.getUserName()); + return makeorderPickVo; + } + + /** + * 查询生产领料单列表 + * + * @param makeorderPickVo 生产领料单 + * @return 生产领料单 + */ + @Override + public List selectSysMakeorderPickList(SysMakeorderPickVo makeorderPickVo) + { + PageDomain pageDomain = TableSupport.buildPageRequest(); + Integer pageNum = pageDomain.getPageNum(); + Integer pageSize = pageDomain.getPageSize(); + + // PageHelper 仅对第一个 List 分页 + Page list = (Page) sysMakeorderPickMapper.selectSysMakeorderPickList(makeorderPickVo); + Page returnList = new Page<>(); + for (SysMakeorderPickVo pickVo: list) { + SysUser sysUser = userMapper.selectUserByLoginName(pickVo.getCreateBy()); + if (sysUser != null) { + pickVo.setCreateUserName(sysUser.getUserName()); + } + SysUser sysUser2 = userMapper.selectUserByLoginName(pickVo.getApplyUser()); + if (sysUser2 != null) { + pickVo.setApplyUserName(sysUser2.getUserName()); + } + String instanceId = pickVo.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(); + pickVo.setTaskId(taskId); + // 设置待办用户 + List todoUserList = todoItemMapper.selectUndealTodoUserList(taskId); + if(!org.springframework.util.CollectionUtils.isEmpty(taskList)){ + pickVo.setTodoUserId(String.join(",",todoUserList)); + } + if (task.getSuspensionState() == 2) { + pickVo.setTaskName("已挂起"); + pickVo.setSuspendState("2"); + } else { + pickVo.setTaskName(task.getName()); + pickVo.setSuspendState("1"); + } + } else { + // 已办结或者已撤销 + pickVo.setTaskName("已结束"); + } + } else { + pickVo.setTaskName("未启动"); + } + returnList.add(pickVo); + } + returnList.setTotal(org.springframework.util.CollectionUtils.isEmpty(list) ? 0 : list.getTotal()); + returnList.setPageNum(pageNum); + returnList.setPageSize(pageSize); + return returnList; + } + + /** + * 新增生产领料单 + * + * @param sysMakeorderPick 生产领料单 + * @return 结果 + */ + @Override + public int insertSysMakeorderPick(SysMakeorderPick sysMakeorderPick) + { + String loginName = ShiroUtils.getLoginName(); + sysMakeorderPick.setCreateBy(loginName); + sysMakeorderPick.setCreateTime(DateUtils.getNowDate()); + // 生成编号,年月日规则 + String billNo = redisCache.generateBillNo("SCLL"); + sysMakeorderPick.setPickNo(billNo); + int id = sysMakeorderPickMapper.insertSysMakeorderPick(sysMakeorderPick); + // yjc todo 子表插入领料数量 + return id; + } + + /** + * 修改生产领料单 + * + * @param sysMakeorderPick 生产领料单 + * @return 结果 + */ + @Override + public int updateSysMakeorderPick(SysMakeorderPick sysMakeorderPick) + { + String loginName = ShiroUtils.getLoginName(); + sysMakeorderPick.setUpdateBy(loginName); + sysMakeorderPick.setUpdateTime(DateUtils.getNowDate()); + return sysMakeorderPickMapper.updateSysMakeorderPick(sysMakeorderPick); + } + + /** + * 删除生产领料单对象 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + @Override + public int deleteSysMakeorderPickByIds(String ids) + { + return sysMakeorderPickMapper.deleteSysMakeorderPickByIds(Convert.toStrArray(ids)); + } + + /** + * 删除生产领料单信息 + * + * @param id 生产领料单ID + * @return 结果 + */ + @Override + public int deleteSysMakeorderPickById(Long id) + { + return sysMakeorderPickMapper.deleteSysMakeorderPickById(id); + } + + /** + * 作废生产领料单 + * + * @param id 生产领料单ID + * @return 结果 + */ + @Override + public int cancelSysMakeorderPickById(Long id) + { + return sysMakeorderPickMapper.cancelSysMakeorderPickById(id); + } + + /** + * 恢复生产领料单信息 + * + * @param id 生产领料单ID + * @return 结果 + */ + @Override + public int restoreSysMakeorderPickById(Long id) + { + return sysMakeorderPickMapper.restoreSysMakeorderPickById(id); + } + + @Override + public ProcessInstance submitApply(SysMakeorderPick makeorderPick) { + SysUser user = ShiroUtils.getSysUser(); + makeorderPick.setApplyUser(user.getLoginName()); + makeorderPick.setApplyTime(DateUtils.getNowDate()); + //获取插入的Bom列表的id + insertSysMakeorderPick(makeorderPick); + // 启动流程 + String applyTitle = user.getUserName()+"发起了生产领料单提交审批-"+DateUtils.dateTimeNow(); + String instanceType = "submit"; + ProcessInstance processInstance = startProcessInstance(applyTitle,instanceType,makeorderPick, user); + String processInstanceId = processInstance.getProcessInstanceId(); + // 提交实例id + makeorderPick.setSubmitInstanceId(processInstanceId); + // 存在提交完就流程结束的情况 + boolean processIsFinish = processService.judgeProcessIsFinish(processInstanceId); + if(processIsFinish){ + // 审核状态-审核通过 + makeorderPick.setAuditStatus("1"); + } + sysMakeorderPickMapper.updateSysMakeorderPick(makeorderPick); + return processInstance; + } + + /** + * 创建erpBom审核流程 + * @param applyTitle + * @param instanceType + * @param makeorderPick + * @param user + * @return + */ + private ProcessInstance startProcessInstance(String applyTitle, String instanceType, SysMakeorderPick makeorderPick, SysUser user) { + Long pickId = makeorderPick.getId(); + String businessKey = pickId.toString(); // 实体类 ID,作为流程的业务 key + String key = "makeorderpick"; + Map variables = new HashMap<>(); + // 构造authority传参 + buildAuthority(user, variables); + makeorderPick.setApplyTitle(applyTitle); + // 启动流程 + ProcessInstance processInstance = processService.submitApply(user.getLoginName(), businessKey, applyTitle, makeorderPick.getPickNo(), key, variables); + String processInstanceId = processInstance.getId(); + makeorderPick.setInstanceId(processInstanceId); // 建立双向关系 + makeorderPick.setInstanceType(instanceType); + return processInstance; + } + + private void buildAuthority(SysUser user, Map variables) { + Set roleKeys = roleService.selectRoleKeys(user.getUserId()); + // 角色不同审核人不同 + if(roleKeys.contains("scyRole")){ + variables.put("authority",1); + }else if(roleKeys.contains("scjlRole")){ + variables.put("authority",2); + }else if(roleKeys.contains("sczgRole")){ + variables.put("authority",3); + } + } +} diff --git a/ruoyi-admin/src/main/resources/mapper/system/SysMakeOrderMapper.xml b/ruoyi-admin/src/main/resources/mapper/system/SysMakeOrderMapper.xml index de83fa62..161bb2bf 100644 --- a/ruoyi-admin/src/main/resources/mapper/system/SysMakeOrderMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/system/SysMakeOrderMapper.xml @@ -155,6 +155,33 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update sys_makeorder set del_flag = '0' where id = #{id} + + update sys_makeorder + + make_status = #{makeStatus}, + eceipt_status = #{eceiptStatus}, + quality_status = #{qualityStatus}, + use_status = #{useStatus}, + saleNo = #{saleNo}, + Salesman = #{Salesman}, + customerId = #{customerId}, + customerName = #{customerName}, + customerOderCode = #{customerOderCode}, + material = #{material}, + materialSum = #{materialSum}, + finishNum = #{finishNum}, + eceiptNum = #{eceiptNum}, + noRate = #{noRate}, + rate = #{rate}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + remark = #{remark}, + del_flag = #{delFlag}, + + where makeNo = #{makeNo} + @@ -33,11 +34,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and makeNo = #{makeNo} and material_no = #{materialNo} - and dept_id = #{deptId} + and dept_number = #{deptNumber} and dept_name like concat('%', #{deptName}, '%') and plan_finish_start_date = #{planFinishStartDate} and plan_finish_end_date = #{planFinishEndDate} and plan_finish_days = #{planFinishDays} + and is_ys_finish = #{isYsFinish} and dept_leader_confirm_status = #{deptLeaderConfirmStatus} and actual_finish_start_time = #{actualFinishStartTime} and actual_finish_end_time = #{actualFinishEndTime} @@ -48,7 +50,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where id = #{id} - + + insert into sys_makeorder_dept @@ -60,11 +67,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" remark, makeNo, material_no, - dept_id, + dept_number, dept_name, plan_finish_start_date, plan_finish_end_date, plan_finish_days, + is_ys_finish, dept_leader_confirm_status, actual_finish_start_time, actual_finish_end_time, @@ -78,11 +86,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{remark}, #{makeNo}, #{materialNo}, - #{deptId}, + #{deptNumber}, #{deptName}, #{planFinishStartDate}, #{planFinishEndDate}, #{planFinishDays}, + #{isYsFinish}, #{deptLeaderConfirmStatus}, #{actualFinishStartTime}, #{actualFinishEndTime}, @@ -100,11 +109,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" remark = #{remark}, makeNo = #{makeNo}, material_no = #{materialNo}, - dept_id = #{deptId}, + dept_number = #{deptNumber}, dept_name = #{deptName}, plan_finish_start_date = #{planFinishStartDate}, plan_finish_end_date = #{planFinishEndDate}, plan_finish_days = #{planFinishDays}, + is_ys_finish = #{isYsFinish}, dept_leader_confirm_status = #{deptLeaderConfirmStatus}, actual_finish_start_time = #{actualFinishStartTime}, actual_finish_end_time = #{actualFinishEndTime}, diff --git a/ruoyi-admin/src/main/resources/mapper/system/SysMakeorderPickMapper.xml b/ruoyi-admin/src/main/resources/mapper/system/SysMakeorderPickMapper.xml new file mode 100644 index 00000000..0dfcb3b1 --- /dev/null +++ b/ruoyi-admin/src/main/resources/mapper/system/SysMakeorderPickMapper.xml @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, del_flag, create_by, create_time, update_by, update_time, remark, make_no, sale_no, pick_no, pick_status, pick_user, audit_status, instance_id, instance_type, submit_instance_id, cancel_instance_id, restore_instance_id, apply_title, apply_user, apply_time from sys_makeorder_pick + + + + + + + + insert into sys_makeorder_pick + + del_flag, + create_by, + create_time, + update_by, + update_time, + remark, + make_no, + sale_no, + pick_no, + pick_status, + pick_user, + audit_status, + instance_id, + instance_type, + submit_instance_id, + cancel_instance_id, + restore_instance_id, + apply_title, + apply_user, + apply_time, + + + #{delFlag}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + #{remark}, + #{makeNo}, + #{saleNo}, + #{pickNo}, + #{pickStatus}, + #{pickUser}, + #{auditStatus}, + #{instanceId}, + #{instanceType}, + #{submitInstanceId}, + #{cancelInstanceId}, + #{restoreInstanceId}, + #{applyTitle}, + #{applyUser}, + #{applyTime}, + + + + + update sys_makeorder_pick + + del_flag = #{delFlag}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + remark = #{remark}, + make_no = #{makeNo}, + sale_no = #{saleNo}, + pick_no = #{pickNo}, + pick_status = #{pickStatus}, + pick_user = #{pickUser}, + audit_status = #{auditStatus}, + instance_id = #{instanceId}, + instance_type = #{instanceType}, + submit_instance_id = #{submitInstanceId}, + cancel_instance_id = #{cancelInstanceId}, + restore_instance_id = #{restoreInstanceId}, + apply_title = #{applyTitle}, + apply_user = #{applyUser}, + apply_time = #{applyTime}, + + where id = #{id} + + + + delete from sys_makeorder_pick where id = #{id} + + + + delete from sys_makeorder_pick where id in + + #{id} + + + + + update sys_makeorder_pick set del_flag = '1' where id = #{id} + + + + update sys_makeorder_pick set del_flag = '0' where id = #{id} + + + \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/templates/system/makeorder/makeorder.html b/ruoyi-admin/src/main/resources/templates/system/makeorder/makeorder.html index 9509996d..fc35cd66 100644 --- a/ruoyi-admin/src/main/resources/templates/system/makeorder/makeorder.html +++ b/ruoyi-admin/src/main/resources/templates/system/makeorder/makeorder.html @@ -215,6 +215,11 @@ var actions = []; actions.push('编辑 '); actions.push('删除 '); + + if(row.makeStatus == '0'){ + actions.push('评审 '); + } + if(row.delFlag == '0'){ actions.push('作废 '); }else{ diff --git a/ruoyi-admin/src/main/resources/templates/system/makeorderpick/add.html b/ruoyi-admin/src/main/resources/templates/system/makeorderpick/add.html new file mode 100644 index 00000000..9b08c4a0 --- /dev/null +++ b/ruoyi-admin/src/main/resources/templates/system/makeorderpick/add.html @@ -0,0 +1,54 @@ + + + + + + + +
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+ + +
+
+ + + + + \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/templates/system/makeorderpick/detail.html b/ruoyi-admin/src/main/resources/templates/system/makeorderpick/detail.html new file mode 100644 index 00000000..d005fb48 --- /dev/null +++ b/ruoyi-admin/src/main/resources/templates/system/makeorderpick/detail.html @@ -0,0 +1,61 @@ + + + + + + + +
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ + +
+
+ + +
+
+ + + + + \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/templates/system/makeorderpick/edit.html b/ruoyi-admin/src/main/resources/templates/system/makeorderpick/edit.html new file mode 100644 index 00000000..53417984 --- /dev/null +++ b/ruoyi-admin/src/main/resources/templates/system/makeorderpick/edit.html @@ -0,0 +1,61 @@ + + + + + + + +
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ + +
+
+ + +
+
+ + + + + \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/templates/system/makeorderpick/makeorderpick.html b/ruoyi-admin/src/main/resources/templates/system/makeorderpick/makeorderpick.html new file mode 100644 index 00000000..25be5112 --- /dev/null +++ b/ruoyi-admin/src/main/resources/templates/system/makeorderpick/makeorderpick.html @@ -0,0 +1,218 @@ + + + + + + +
+
+
+
+
+
    +
  • + + +
  • +
  • + + +
  • +
  • + + +
  • +
  • + + + - + +
  • +
  • +  搜索 +  重置 +
  • +
+
+
+
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/templates/system/makeorderpick/taskModifyApply.html b/ruoyi-admin/src/main/resources/templates/system/makeorderpick/taskModifyApply.html new file mode 100644 index 00000000..471860c7 --- /dev/null +++ b/ruoyi-admin/src/main/resources/templates/system/makeorderpick/taskModifyApply.html @@ -0,0 +1,96 @@ + + + + + + + +
+
+ + + + +
+ +
+ +
+
+
+ +
+
+ + +
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ + +
+
+ + +
+
+ +
+ +
+
+
+
+ + + + + \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/templates/system/makeorderpick/taskScjlVerify.html b/ruoyi-admin/src/main/resources/templates/system/makeorderpick/taskScjlVerify.html new file mode 100644 index 00000000..92ec9043 --- /dev/null +++ b/ruoyi-admin/src/main/resources/templates/system/makeorderpick/taskScjlVerify.html @@ -0,0 +1,105 @@ + + + + + + + +
+
+ + + +
+ +
+ +
+
+
+ +
+
+ + +
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ + +
+
+ + +
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+ + + + + \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/templates/system/makeorderpick/taskSczgVerify.html b/ruoyi-admin/src/main/resources/templates/system/makeorderpick/taskSczgVerify.html new file mode 100644 index 00000000..74163538 --- /dev/null +++ b/ruoyi-admin/src/main/resources/templates/system/makeorderpick/taskSczgVerify.html @@ -0,0 +1,105 @@ + + + + + + + +
+
+ + + +
+ +
+ +
+
+
+ +
+
+ + +
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ + +
+
+ + +
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+ + + + + \ No newline at end of file diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml index 52bf817a..7b16c3c3 100644 --- a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml @@ -32,6 +32,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -50,7 +51,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select u.user_id, u.dept_id, u.login_name, u.user_name, u.user_type, u.email, u.avatar, u.phonenumber, u.sex, u.password, u.salt, u.status, u.del_flag, u.login_ip, u.login_date, u.pwd_update_date, u.create_time, u.remark, - d.dept_id, d.parent_id, d.dept_name, d.order_num, d.leader, d.status as dept_status, + d.dept_id, d.dept_number,d.parent_id, d.dept_name, d.order_num, d.leader, d.status as dept_status, r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status from sys_user u left join sys_dept d on u.dept_id = d.dept_id