diff --git a/ruoyi-admin/src/main/java/com/ruoyi/erp/controller/ErpBomController.java b/ruoyi-admin/src/main/java/com/ruoyi/erp/controller/ErpBomController.java index caa02244..fcdf2abf 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/erp/controller/ErpBomController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/erp/controller/ErpBomController.java @@ -1,17 +1,27 @@ package com.ruoyi.erp.controller; +import com.ruoyi.ck.domain.Bom; import com.ruoyi.ck.domain.ItemInfo; 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.domain.entity.SysUser; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.DateUtils; +import com.ruoyi.common.utils.ShiroUtils; import com.ruoyi.common.utils.poi.ExcelUtil; -import com.ruoyi.erp.domain.ErpBom; -import com.ruoyi.erp.domain.ErpBomImportVo; +import com.ruoyi.erp.domain.*; import com.ruoyi.erp.service.IErpBomService; +import com.ruoyi.process.general.service.IProcessService; +import com.ruoyi.system.domain.SysOutGood; +import com.ruoyi.system.service.ISysRoleService; import com.ruoyi.web.controller.demo.domain.UserOperateModel; +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; @@ -19,8 +29,12 @@ import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Set; /** * bomController @@ -33,14 +47,28 @@ import java.util.List; public class ErpBomController extends BaseController { private String prefix = "erp/bom"; + @Autowired + private ISysRoleService roleService; + + @Autowired + private TaskService taskService; + + @Autowired + private RuntimeService runtimeService; + + @Autowired + private IProcessService processService; @Autowired private IErpBomService erpBomService; + private ErpBomVo erpBomVo; + @RequiresPermissions("erp:bom:view") @GetMapping() - public String bom() + public String bom(ModelMap mmap) { + mmap.put("currentUser", ShiroUtils.getSysUser()); return prefix + "/bom"; } @@ -50,10 +78,17 @@ public class ErpBomController extends BaseController @RequiresPermissions("erp:bom:list") @PostMapping("/list") @ResponseBody - public TableDataInfo list(ErpBom erpBom) + public TableDataInfo list(ErpBomVo erpBomVo) { + SysUser curUser = ShiroUtils.getSysUser(); + Long userId = curUser.getUserId(); + Set roleKeys = roleService.selectRoleKeys(userId); + // 工程文员角色只能看到自己创建的数据 + if(roleKeys.contains("gcwyRole")){ + erpBomVo.setCreateBy(curUser.getLoginName()); + } startPage(); - List list = erpBomService.selectErpBomList(erpBom); + List list = erpBomService.selectErpBomList(erpBomVo); return getDataTable(list); } @@ -67,6 +102,7 @@ public class ErpBomController extends BaseController startPage(); List list = erpBomService.selectErpBomSubList(erpBom); return getDataTable(list); + } /** @@ -85,7 +121,7 @@ public class ErpBomController extends BaseController * 导出bom列表 */ @RequiresPermissions("erp:bom:export") - @Log(title = "bom", businessType = BusinessType.EXPORT) + @Log(title = "ErpBom", businessType = BusinessType.EXPORT) @PostMapping("/export") @ResponseBody public AjaxResult export(ErpBom erpBom) @@ -105,16 +141,99 @@ public class ErpBomController extends BaseController return prefix + "/add"; } + /** - * 新增保存bom + * 新增并提交物料BOM信息 */ @RequiresPermissions("erp:bom:add") - @Log(title = "bom", businessType = BusinessType.INSERT) + @Log(title = "erpBom", businessType = BusinessType.INSERT) @PostMapping("/add") @ResponseBody public AjaxResult addSave(@RequestBody ErpBom erpBom) { - return toAjax(erpBomService.insertErpBom(erpBom)); + // 使用状态-否 + erpBom.setUseStatus("0"); + // 审核状态-待审核 + erpBom.setAuditStatus("0"); + erpBomService.submitApply(erpBom); + 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(); + ErpBom erpBom = erpBomService.selectErpBomById(new Long(processInstance.getBusinessKey())); + mmap.put("formData", erpBom); + mmap.put("taskId", taskId); + String verifyName = task.getTaskDefinitionKey().substring(0, 1).toUpperCase() + task.getTaskDefinitionKey().substring(1); + return prefix + "/task" + verifyName; + } + /** + * 自动绑定页面字段 + */ + @ModelAttribute("preloadObj") + public ErpBomVo getObj(@RequestParam(value = "id", required = false) Long id, HttpSession session) { + if (id != null) { + return erpBomService.selectErpBomById(id); + } + return new ErpBomVo(); + } + + + /** + * 完成任务 + * + * @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") ErpBomVo erpBomVo, HttpServletRequest request) { + boolean saveEntityBoolean = BooleanUtils.toBoolean(saveEntity); + //获取实例id + String instanceId = erpBomVo.getInstanceId(); + //获取实例类型 + String instanceType = erpBomVo.getInstanceType(); + boolean approvedFlag = processService.complete(taskId, instanceId, erpBomVo.getApplyTitle(), erpBomVo.getMaterialNo(), "erpBom", new HashMap(), request); + if(!approvedFlag){ + // 审核状态-审核拒绝 + erpBomVo.setAuditStatus("2"); + } + // 如果任务已结束更新业务表状态 + boolean processIsFinish = processService.judgeProcessIsFinish(instanceId); + if (processIsFinish) { + // 审核通过 + erpBomVo.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"); + } + } + erpBomService.updateErpBom(erpBomVo); + // 驳回申请后继续申请,可能修改表单 + if (saveEntityBoolean) { + erpBomService.updateErpBom(erpBomVo); + } + return success("任务已完成"); } /** @@ -135,9 +254,9 @@ public class ErpBomController extends BaseController @Log(title = "bom", businessType = BusinessType.UPDATE) @PostMapping("/edit") @ResponseBody - public AjaxResult editSave(@RequestBody ErpBom erpBom) + public AjaxResult editSave(@RequestBody ErpBomVo erpBomVo) { - return toAjax(erpBomService.updateErpBom(erpBom)); + return toAjax(erpBomService.updateErpBom(erpBomVo)); } /** @@ -199,10 +318,17 @@ public class ErpBomController extends BaseController public TableDataInfo bomEqulasList() { startPage(); - ErpBom erpBom = new ErpBom(); - List list = erpBomService.selectErpBomList(erpBom); + ErpBomVo erpBomVo = new ErpBomVo(); + List list = erpBomService.selectErpBomList(erpBomVo); return getDataTable(list); } + + /** + * BOM信息一阶对比 + * @param bomNo1 + * @param bomNo2 + * @return + */ @RequiresPermissions("erp:bom:equals") @PostMapping("/equalsBom") @ResponseBody @@ -264,28 +390,4 @@ public class ErpBomController extends BaseController return erpBomService.checkMaterialNoUnique(materialNo); } - /**、 - * 导出模板 - */ - @GetMapping("/importTemplate") - @ResponseBody - public AjaxResult importTemplate() - { - ExcelUtil util = new ExcelUtil(ErpBomImportVo.class); - return util.importTemplateExcel("物料模板"); - } - - /** - * 导入数据 - */ - @PostMapping("/importData") - @ResponseBody - public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception - { - ExcelUtil util = new ExcelUtil(ErpBomImportVo.class); - List bomImportVos = util.importExcel(file.getInputStream()); - String message = erpBomService.importData(bomImportVos, updateSupport); - return AjaxResult.success(message); - } - } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/erp/domain/ErpBom.java b/ruoyi-admin/src/main/java/com/ruoyi/erp/domain/ErpBom.java index bfb2502a..0f5f1276 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/erp/domain/ErpBom.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/erp/domain/ErpBom.java @@ -2,10 +2,12 @@ package com.ruoyi.erp.domain; import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.core.domain.BaseEntity; +import com.ruoyi.system.domain.SysProductItem; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import java.math.BigDecimal; +import java.util.Date; import java.util.List; /** @@ -77,6 +79,36 @@ public class ErpBom extends BaseEntity /** 使用状态 */ private String useStatus; + /** 流程实例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; + + /** 申请时间 */ + private Date applyTime; + + private Long photoAttachId; + + private String fileIdStr; + + private String removeFileIdStr; + /** bom信息 */ private List erpBomList; @@ -253,33 +285,128 @@ public class ErpBom extends BaseEntity this.erpBomList = erpBomList; } + 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 setApplyTime(Date applyTime) { + this.applyTime = applyTime; + } + + + public Long getPhotoAttachId() { + return photoAttachId; + } + + public void setPhotoAttachId(Long photoAttachId) { + this.photoAttachId = photoAttachId; + } + + public String getFileIdStr() { + return fileIdStr; + } + + public void setFileIdStr(String fileIdStr) { + this.fileIdStr = fileIdStr; + } + + public String getRemoveFileIdStr() { + return removeFileIdStr; + } + + public void setRemoveFileIdStr(String removeFileIdStr) { + this.removeFileIdStr = removeFileIdStr; + } + @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("bomNo", getBomNo()) - .append("materialNo", getMaterialNo()) - .append("photoUrl", getPhotoUrl()) - .append("materialName", getMaterialName()) - .append("materialType", getMaterialType()) - .append("processMethod", getProcessMethod()) - .append("unit", getUnit()) - .append("brand", getBrand()) - .append("describe", getDescribe()) - .append("useNum", getUseNum()) - .append("lossRate", getLossRate()) - .append("parentId", getParentId()) - .append("level", getLevel()) - .append("sortNo", getSortNo()) - .append("auditStatus", getAuditStatus()) - .append("useStatus", getUseStatus()) - .append("erpBomList", getErpBomList()) - .toString(); + return "ErpBom{" + + "id=" + id + + ", delFlag='" + delFlag + '\'' + + ", bomNo='" + bomNo + '\'' + + ", materialNo='" + materialNo + '\'' + + ", photoUrl='" + photoUrl + '\'' + + ", materialName='" + materialName + '\'' + + ", materialType='" + materialType + '\'' + + ", processMethod='" + processMethod + '\'' + + ", unit='" + unit + '\'' + + ", brand='" + brand + '\'' + + ", describe='" + describe + '\'' + + ", useNum=" + useNum + + ", lossRate=" + lossRate + + ", parentId=" + parentId + + ", level=" + level + + ", sortNo=" + sortNo + + ", auditStatus='" + auditStatus + '\'' + + ", useStatus='" + useStatus + '\'' + + ", instanceId='" + instanceId + '\'' + + ", instanceType='" + instanceType + '\'' + + ", submitInstanceId='" + submitInstanceId + '\'' + + ", cancelInstanceId='" + cancelInstanceId + '\'' + + ", restoreInstanceId='" + restoreInstanceId + '\'' + + ", applyTitle='" + applyTitle + '\'' + + ", applyUser='" + applyUser + '\'' + + ", applyTime=" + applyTime + + ", photoAttachId=" + photoAttachId + + ", fileIdStr='" + fileIdStr + '\'' + + ", removeFileIdStr='" + removeFileIdStr + '\'' + + ", erpBomList=" + erpBomList + + '}'; } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/erp/domain/ErpBomVo.java b/ruoyi-admin/src/main/java/com/ruoyi/erp/domain/ErpBomVo.java new file mode 100644 index 00000000..156ba28d --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/erp/domain/ErpBomVo.java @@ -0,0 +1,123 @@ +package com.ruoyi.erp.domain; + +import com.ruoyi.common.core.domain.BaseEntity; + +import java.util.Date; + +/** + * + * @Description BOM信息Vo + */ + +public class ErpBomVo extends ErpBom{ + private static final long serialVersionUID = 1L; + /** 申请人姓名 */ + 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; + + public String getApplyUserName() { + return applyUserName; + } + + public void setApplyUserName(String applyUserName) { + this.applyUserName = applyUserName; + } + + public String getTaskId() { + return taskId; + } + + public void setTaskId(String taskId) { + this.taskId = taskId; + } + + public String getTaskName() { + return taskName; + } + + public void setTaskName(String taskName) { + this.taskName = taskName; + } + + public Date getDoneTime() { + return doneTime; + } + + public void setDoneTime(Date doneTime) { + this.doneTime = doneTime; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getSuspendState() { + return suspendState; + } + + public void setSuspendState(String suspendState) { + this.suspendState = suspendState; + } + + public String getTodoUserId() { + return todoUserId; + } + + public void setTodoUserId(String todoUserId) { + this.todoUserId = todoUserId; + } + + public String getInstanceTypeName() { + return instanceTypeName; + } + + public void setInstanceTypeName(String instanceTypeName) { + this.instanceTypeName = instanceTypeName; + } + + public String getKeyword() { + return keyword; + } + + public void setKeyword(String keyword) { + this.keyword = keyword; + } + + @Override + public String toString() { + return "ErpMaterialVo{" + + "applyUserName='" + applyUserName + '\'' + + ", taskId='" + taskId + '\'' + + ", taskName='" + taskName + '\'' + + ", doneTime=" + doneTime + + ", createUserName='" + createUserName + '\'' + + ", suspendState='" + suspendState + '\'' + + ", todoUserId='" + todoUserId + '\'' + + ", instanceTypeName='" + instanceTypeName + '\'' + + ", keyword='" + keyword + '\'' + + "} " + super.toString(); + } + +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/erp/domain/ErpMaterial.java b/ruoyi-admin/src/main/java/com/ruoyi/erp/domain/ErpMaterial.java index 46fa6707..976f79c3 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/erp/domain/ErpMaterial.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/erp/domain/ErpMaterial.java @@ -3,7 +3,7 @@ package com.ruoyi.erp.domain; import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.core.domain.BaseEntity; import com.ruoyi.system.domain.SysProductItem; -import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import java.util.Date; @@ -362,29 +362,35 @@ public class ErpMaterial extends BaseEntity @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("materialNo", getMaterialNo()) - .append("materialName", getMaterialName()) - .append("auditStatus", getAuditStatus()) - .append("useStatus", getUseStatus()) - .append("havaProductTem", getHavaProductTem()) - .append("productItem", getProductItem()) - .append("materialType", getMaterialType()) - .append("processMethod", getProcessMethod()) - .append("unit", getUnit()) - .append("brand", getBrand()) - .append("describe", getDescribe()) - .append("warehouseDept", getWarehouseDept()) - .append("sysProductItems", getSysProductItems().stream().toArray()) - .append("bomNo",getBomNo()) - .append("itemName",getItemName()) - .toString(); + return new ToStringBuilder(this) + .append("id", getId()) + .append("delFlag", getDelFlag()) + .append("materialNo", getMaterialNo()) + .append("materialName", getMaterialName()) + .append("bomNo", getBomNo()) + .append("auditStatus", getAuditStatus()) + .append("useStatus", getUseStatus()) + .append("havaProductTem", getHavaProductTem()) + .append("materialType", getMaterialType()) + .append("processMethod", getProcessMethod()) + .append("unit", getUnit()) + .append("brand", getBrand()) + .append("describe", getDescribe()) + .append("warehouseDept", getWarehouseDept()) + .append("instanceId", getInstanceId()) + .append("instanceType", getInstanceType()) + .append("submitInstanceId", getSubmitInstanceId()) + .append("cancelInstanceId", getCancelInstanceId()) + .append("restoreInstanceId", getRestoreInstanceId()) + .append("applyTitle", getApplyTitle()) + .append("applyUser", getApplyUser()) + .append("applyTime", getApplyTime()) + .append("photoAttachId", getPhotoAttachId()) + .append("photoUrl", getPhotoUrl()) + .append("fileIdStr", getFileIdStr()) + .append("removeFileIdStr", getRemoveFileIdStr()) + .append("sysProductItems", getSysProductItems()) + .append("itemName", getItemName()) + .toString(); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/erp/mapper/ErpBomMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/erp/mapper/ErpBomMapper.java index d6c146ee..a2e83480 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/erp/mapper/ErpBomMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/erp/mapper/ErpBomMapper.java @@ -1,6 +1,8 @@ package com.ruoyi.erp.mapper; import com.ruoyi.erp.domain.ErpBom; +import com.ruoyi.erp.domain.ErpBomVo; +import com.ruoyi.erp.domain.ErpMaterialVo; import java.util.List; @@ -18,11 +20,13 @@ public interface ErpBomMapper * @param id bomID * @return bom */ - public ErpBom selectErpBomById(Long id); + public ErpBomVo selectErpBomById(Long id); public ErpBom selectErpBomByOneMaterialNo(String materialNo); + public List selectErpBomList(ErpBomVo erpBomVo); + /** * 查询bom列表 * @@ -84,7 +88,7 @@ public interface ErpBomMapper /** * 批量删除bom * - * @param customerIds 需要删除的数据ID + * @param ids 需要删除的数据ID * @return 结果 */ public int deleteErpBomByParentIds(String[] ids); @@ -100,7 +104,7 @@ public interface ErpBomMapper /** * 通过bomID删除bom信息 * - * @param roleId 角色ID + * @param id 角色ID * @return 结果 */ public int deleteErpBomByParentId(Long id); @@ -128,4 +132,6 @@ public interface ErpBomMapper public List selectErpBomList1(); + ErpBomVo selectErpBomByMaterialNo(String materialNo); + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/erp/service/IErpBomService.java b/ruoyi-admin/src/main/java/com/ruoyi/erp/service/IErpBomService.java index e0625845..31ccb45f 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/erp/service/IErpBomService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/erp/service/IErpBomService.java @@ -2,6 +2,8 @@ package com.ruoyi.erp.service; import com.ruoyi.erp.domain.ErpBom; import com.ruoyi.erp.domain.ErpBomImportVo; +import com.ruoyi.erp.domain.ErpBomVo; +import org.activiti.engine.runtime.ProcessInstance; import java.util.List; @@ -14,20 +16,20 @@ import java.util.List; public interface IErpBomService { /** - * 查询bom - * + * 查询物料bom信息 + * * @param id bomID * @return bom */ - public ErpBom selectErpBomById(Long id); + public ErpBomVo selectErpBomById(Long id); /** - * 查询bom列表 + * 查询物料bom信息列表 * - * @param erpBom bom + * @param erpBomVo bom * @return bom集合 */ - public List selectErpBomList(ErpBom erpBom); + public List selectErpBomList(ErpBomVo erpBomVo); List selectErpBomSubList(ErpBom erpBom); @@ -44,10 +46,10 @@ public interface IErpBomService /** * 修改bom * - * @param erpBom bom + * @param erpBomVo bom * @return 结果 */ - public int updateErpBom(ErpBom erpBom); + public int updateErpBom(ErpBomVo erpBomVo); /** * 批量删除bom @@ -70,14 +72,14 @@ public interface IErpBomService * @param id bomID * @return */ - int cancelErpBomById(Long id); + public int cancelErpBomById(Long id); /** * 恢复bom * @param id bomID * @return */ - int restoreErpBomById(Long id); + public int restoreErpBomById(Long id); /** * 审批信息 @@ -106,4 +108,5 @@ public interface IErpBomService String importData(List bomImportVos,boolean updateSupport); + public ProcessInstance submitApply(ErpBom erpBom); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/erp/service/impl/ErpBomServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/erp/service/impl/ErpBomServiceImpl.java index a7713102..7ca16c26 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/erp/service/impl/ErpBomServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/erp/service/impl/ErpBomServiceImpl.java @@ -1,33 +1,37 @@ package com.ruoyi.erp.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.service.ICommonService; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.ShiroUtils; import com.ruoyi.common.utils.StringUtils; -import com.ruoyi.erp.domain.ErpBom; -import com.ruoyi.erp.domain.ErpBomImportVo; -import com.ruoyi.erp.domain.ErpMaterial; -import com.ruoyi.erp.domain.ErpMaterialVo; +import com.ruoyi.erp.domain.*; import com.ruoyi.erp.mapper.ErpBomMapper; import com.ruoyi.erp.mapper.ErpMaterialMapper; import com.ruoyi.erp.service.IErpBomService; import com.ruoyi.erp.service.IErpMaterialService; -import com.ruoyi.web.controller.demo.domain.UserOperateModel; +import com.ruoyi.process.general.service.IProcessService; +import com.ruoyi.process.todoitem.mapper.BizTodoItemMapper; +import com.ruoyi.system.mapper.SysUserMapper; +import com.ruoyi.system.service.ISysAttachFileService; +import com.ruoyi.system.service.ISysAttachService; +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.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.logging.Level; -import java.util.stream.Collectors; - -import static org.apache.shiro.web.filter.mgt.DefaultFilter.user; +import java.util.*; /** * bomService业务层处理 @@ -37,7 +41,30 @@ import static org.apache.shiro.web.filter.mgt.DefaultFilter.user; */ @Service("erpBomL") public class ErpBomServiceImpl implements IErpBomService -{ +{ @Autowired +private ISysAttachService attachService; + + @Autowired + private ISysAttachFileService attachFileService; + + @Autowired + private ICommonService commonService; + + @Autowired + private SysUserMapper userMapper; + + @Autowired + private TaskService taskService; + + @Autowired + private BizTodoItemMapper todoItemMapper; + + @Autowired + private IProcessService processService; + + @Autowired + private ISysRoleService roleService; + @Autowired private ErpBomMapper erpBomMapper; @@ -52,26 +79,82 @@ public class ErpBomServiceImpl implements IErpBomService /** * 查询bom - * + * * @param id bomID * @return bom */ + @Override - public ErpBom selectErpBomById(Long id) + public ErpBomVo selectErpBomById(Long id) { - return erpBomMapper.selectErpBomById(id); + ErpBomVo erpBomVo = erpBomMapper.selectErpBomById(id); + SysUser sysUser = userMapper.selectUserByLoginName(erpBomVo.getCreateBy()); + if (sysUser != null) { + erpBomVo.setCreateUserName(sysUser.getUserName()); + } + return erpBomVo; } - /** * 查询bom列表 * - * @param erpBom bom + * @param erpBomVo bom * @return bom */ @Override - public List selectErpBomList(ErpBom erpBom) + public List selectErpBomList(ErpBomVo erpBomVo) { - return erpBomMapper.selectErpBomList(erpBom); + PageDomain pageDomain = TableSupport.buildPageRequest(); + Integer pageNum = pageDomain.getPageNum(); + Integer pageSize = pageDomain.getPageSize(); + + // PageHelper 仅对第一个 List 分页 + Page list = (Page) erpBomMapper.selectErpBomList(erpBomVo); + Page returnList = new Page<>(); + for (ErpBomVo bomVo: list) { + SysUser sysUser = userMapper.selectUserByLoginName(bomVo.getCreateBy()); + if (sysUser != null) { + bomVo.setCreateUserName(sysUser.getUserName()); + } + SysUser sysUser2 = userMapper.selectUserByLoginName(bomVo.getApplyUser()); + if (sysUser2 != null) { + bomVo.setApplyUserName(sysUser2.getUserName()); + } + String instanceId = bomVo.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(); + bomVo.setTaskId(taskId); + // 设置待办用户 + List todoUserList = todoItemMapper.selectUndealTodoUserList(taskId); + if(!org.springframework.util.CollectionUtils.isEmpty(taskList)){ + bomVo.setTodoUserId(String.join(",",todoUserList)); + } + if (task.getSuspensionState() == 2) { + bomVo.setTaskName("已挂起"); + bomVo.setSuspendState("2"); + } else { + bomVo.setTaskName(task.getName()); + bomVo.setSuspendState("1"); + } + } else { + // 已办结或者已撤销 + bomVo.setTaskName("已结束"); + } + } else { + bomVo.setTaskName("未启动"); + } + returnList.add(bomVo); + } + returnList.setTotal(org.springframework.util.CollectionUtils.isEmpty(list) ? 0 : list.getTotal()); + returnList.setPageNum(pageNum); + returnList.setPageSize(pageSize); + return returnList; } @Override @@ -121,57 +204,76 @@ public class ErpBomServiceImpl implements IErpBomService * @param erpBom bom * @return 结果 */ + @Transactional @Override public int insertErpBom(ErpBom erpBom) { + //插入审核信息 String loginName = ShiroUtils.getLoginName(); + //获取创建人 erpBom.setCreateBy(loginName); + //创建时间 erpBom.setCreateTime(DateUtils.getNowDate()); + //初始化BOM编号父类 erpBom.setParentId(0L); + //初始化Bom编号层级 erpBom.setLevel(0L); + //生成BOM编号,年月日规则 String billNo = redisCache.generateBillNo("BOM"); erpBom.setBomNo(billNo); - int rows = erpBomMapper.insertErpBom(erpBom); + int result = erpBomMapper.insertErpBom(erpBom); + //todo 使用useGeneratedKeys="true" keyProperty="id"关键子,插入后完成后需要获取新的id就需要重新getId() + Long id = erpBom.getId(); insertErpBomSub(erpBom); - ErpMaterial erpMaterial = new ErpMaterial(); - erpMaterial.setMaterialNo(erpBom.getMaterialNo()); - erpMaterial.setBomNo(erpBom.getBomNo()); + + ErpMaterial erpMaterial = materialMapper.selectErpMaterialByMaterialNo(erpBom.getMaterialNo()); + if (!Objects.isNull(erpMaterial)) { + ErpMaterial erpMaterial1 = new ErpMaterial(); + erpMaterial1.setMaterialNo(erpBom.getMaterialNo()); + erpMaterial1.setBomNo(erpBom.getBomNo()); + materialMapper.updateMaterialBomNo(erpMaterial1); + } //添加物料关联的bom信息 - iErpMaterialService.updateMaterialBomNo(erpMaterial); - return rows; + + return result; } /** * 修改bom * - * @param erpBom bom + * @param erpBomVo bom * @return 结果 */ @Transactional @Override - public int updateErpBom(ErpBom erpBom) + public int updateErpBom(ErpBomVo erpBomVo) { String loginName = ShiroUtils.getLoginName(); - erpBom.setUpdateBy(loginName); - erpBom.setUpdateTime(DateUtils.getNowDate()); - int editFlag = erpBomMapper.updateErpBom(erpBom); - Long id = erpBom.getId(); - erpBomMapper.deleteErpBomByParentId(id); - List erpBomSubList = erpBom.getErpBomList(); - if(CollectionUtils.isNotEmpty(erpBomSubList)){ - for (int i=0;i erpBomSubList = erpBomVo.getErpBomList(); + if(CollectionUtils.isNotEmpty(erpBomSubList)){ + for (int i=0;i list = new ArrayList(); for (int i=0;i 0) -// { -// erpBomMapper.batchErpBom(list); -// } } } public List selectErpBomList1(){ List bomList = erpBomMapper.selectErpBomList1(); return bomList; } + + + /** + * 提交申请 + * @param erpBom + * @return + */ + @Override + @Transactional(rollbackFor = Exception.class) + public ProcessInstance submitApply(ErpBom erpBom) { + SysUser user = ShiroUtils.getSysUser(); + erpBom.setApplyUser(user.getLoginName()); + erpBom.setApplyTime(DateUtils.getNowDate()); + //获取插入的Bom列表的id + insertErpBom(erpBom); + // 启动流程 + String applyTitle = user.getUserName()+"发起了物料BOM信息提交审批-"+DateUtils.dateTimeNow(); + String instanceType = "submit"; + ProcessInstance processInstance = startProcessInstance(applyTitle,instanceType,erpBom, user); + String processInstanceId = processInstance.getProcessInstanceId(); + // 提交实例id + erpBom.setSubmitInstanceId(processInstanceId); + // 存在提交完就流程结束的情况 + boolean processIsFinish = processService.judgeProcessIsFinish(processInstanceId); + if(processIsFinish){ + // 审核状态-审核通过 + erpBom.setAuditStatus("1"); + // 使用状态-是 + erpBom.setUseStatus("1"); + } + erpBomMapper.updateErpBom(erpBom); + + return processInstance; + } + + /** + * 创建erpBom审核流程 + * @param applyTitle + * @param instanceType + * @param erpBom + * @param user + * @return + */ + private ProcessInstance startProcessInstance(String applyTitle,String instanceType,ErpBom erpBom, SysUser user) { + Long erpBomId = erpBom.getId(); + String businessKey = erpBomId.toString(); // 实体类 ID,作为流程的业务 key + String key = "erpBom"; + Map variables = new HashMap<>(); + // 构造authority传参 + buildAuthority(user, variables); + erpBom.setApplyTitle(applyTitle); + // 启动流程 + ProcessInstance processInstance = processService.submitApply(user.getLoginName(), businessKey, applyTitle, erpBom.getBomNo(), key, variables); + String processInstanceId = processInstance.getId(); + erpBom.setInstanceId(processInstanceId); // 建立双向关系 + erpBom.setInstanceType(instanceType); + return processInstance; + } + + private void buildAuthority(SysUser user, Map variables) { + Set roleKeys = roleService.selectRoleKeys(user.getUserId()); + // 角色不同审核人不同 + if(roleKeys.contains("yfzjRole")){ + variables.put("authority",4); + }else if(roleKeys.contains("gczgRole")){ + variables.put("authority",3); + }else if(roleKeys.contains("gcjlRole")){ + variables.put("authority",2); + }else if(roleKeys.contains("gcwyRole")){ + variables.put("authority",1); + } + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java index 663b872b..65706f42 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java @@ -298,7 +298,14 @@ public class SysUserController extends BaseController @ResponseBody public AjaxResult selectUserSelList(@RequestParam(required = false,value = "userName")String userName) { + //获取用户的下拉列表 List> userSelList = userService.selectUserSelList(userName); + //过滤为获取工程部成员信息 + //过滤为工程文员时获取个人用户信息 + //过滤为工程主管时获取工程文员的信息 + //过滤为工程经理时获取工程主管的信息,工程文员的信息 + userSelList = userSelList.stream().filter(map -> map.get("userType").equals("1")).collect(Collectors.toList()); return success(userSelList); } + } \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/mapper/erp/ErpBomMapper.xml b/ruoyi-admin/src/main/resources/mapper/erp/ErpBomMapper.xml index fe9ae754..e0e32d0e 100644 --- a/ruoyi-admin/src/main/resources/mapper/erp/ErpBomMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/erp/ErpBomMapper.xml @@ -3,8 +3,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - - + @@ -27,6 +26,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + + + + + + @@ -59,47 +67,95 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select id, del_flag, create_by, create_time, update_by, update_time, remark, bom_no, material_no, material_name, material_type, process_method, unit, brand, `describe`, use_num, loss_rate, parent_id, `level`, sort_no, audit_status, use_status from erp_bom + select id, del_flag, create_by, create_time, update_by, update_time, remark, bom_no, material_no, material_name, material_type, process_method, unit, brand, `describe`, use_num, loss_rate, parent_id, `level`, sort_no, audit_status, use_status,instance_id,instance_type,submit_instance_id,cancel_instance_id,restore_instance_id,apply_title,apply_user,apply_time from erp_bom - + select erp.id, erp.del_flag, erp.create_by, erp.create_time, erp.update_by, erp.update_time + , erp.remark,erp.bom_no,erp.material_no,erp.material_name, erp.audit_status, erp.use_status + , erp.material_type, erp.process_method,erp.unit, erp.brand, erp.`describe`,erp.use_num + , erp.loss_rate, erp.parent_id, erp.`level`, erp.sort_no, erp.instance_id,erp.instance_type + , processDict.dict_label as instance_type_name, erp.submit_instance_id,erp.cancel_instance_id + , erp.restore_instance_id,erp.apply_title,erp.apply_user,erp.apply_time + , file.url as photo_url,cate.name as material_type_name + from erp_bom as erp + left join ( + select id,material_no,material_name from erp_material + ) erp_material + on erp.material_no = erp_material.material_no + left join( + select dict_value,dict_label from sys_dict_data + where dict_type = 'processType' + ) processDict + on erp.instance_type = processDict.dict_value + left join ( + select code,name from sys_category + where parent_id in( + select id from sys_category + where parent_id = (select id from sys_category where code = 'materialType') ) + ) cate + on erp.material_type = cate.code + left join ( + select att.rel_id,file.url,min(file.create_time) as create_time from sys_attach as att + left join sys_attach_file as file + on att.id = file.attach_id + where att.source_type = 'erpMaterial' and att.source_sub_type = 'photo' + group by att.rel_id + ) file + on erp_material.id = file.rel_id - and id = #{id} - and del_flag = #{delFlag} + and erp.create_by = #{createBy} and erp.create_time between #{params.beginCreateTime} and #{params.endCreateTime} - and create_by = #{createBy} - and create_time = #{createTime} - and update_by = #{updateBy} - and update_time = #{updateTime} - and remark = #{remark} - and bom_no = #{bomNo} - and material_no = #{materialNo} - and material_name like concat('%', #{materialName}, '%') - and material_type = #{materialType} - and process_method = #{processMethod} - and unit = #{unit} - and brand = #{brand} - and `describe` = #{describe} - and use_num = #{useNum} - and loss_rate = #{lossRate} - and parent_id = #{parentId} - and level = #{level} - and sort_no = #{sortNo} - and audit_status = #{auditStatus} - and use_status = #{useStatus} + and erp.material_no like concat('%', #{params.materialNo}, '%') + and erp.material_no = #{materialNo} + and erp.bomNo = #{bomNo} + and erp.material_name like concat('%', #{materialName}, '%') + and erp.audit_status = #{auditStatus} + and erp.use_status = #{useStatus} + and erp.material_type = #{materialType} + and erp.process_method = #{processMethod} + and erp.unit = #{unit} + and erp.brand = #{brand} + and erp.`describe` = #{describe} + and erp.use_num = #{useNum} + and erp.loss_rate = #{lossRate} + and erp.parent_id = #{parentId} + and erp.level = #{level} + and erp.sort_no = #{sortNo} + and erp.instance_id = #{instanceId} + and erp.instance_type = #{instanceType} + and erp.submit_instance_id = #{submitInstanceId} + and erp.cancel_instance_id = #{cancelInstanceId} + and erp.restore_instance_id = #{restoreInstanceId} + and erp.apply_title = #{applyTitle} + and erp.apply_user = #{applyUser} + and erp.apply_time = #{applyTime} + and (erp.material_no like concat('%',#{keyword},'%') or erp.material_name like concat('%',#{keyword},'%')) + and erp.bom_no != '' + order by erp.update_time desc + \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/mapper/erp/ErpMaterialMapper.xml b/ruoyi-admin/src/main/resources/mapper/erp/ErpMaterialMapper.xml index e353e2cc..3ff87fd4 100644 --- a/ruoyi-admin/src/main/resources/mapper/erp/ErpMaterialMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/erp/ErpMaterialMapper.xml @@ -47,7 +47,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select erp.id, erp.del_flag, erp.create_by, erp.create_time, erp.update_by, erp.update_time, erp.remark,erp.bomNo, erp.material_no , erp.material_name, erp.audit_status, erp.use_status, erp.hava_product_tem, erp.product_item,erp.`itemName`, erp.material_type, erp.process_method , erp.unit, erp.brand, erp.`describe`, erp.warehouse_dept - ,erp.instance_id,erp.instance_type,process_type_dict.dict_label as instance_type_name,erp.submit_instance_id,erp.cancel_instance_id,erp.restore_instance_id,erp.apply_title,erp.apply_user,erp.apply_time + ,erp.instance_id,erp.instance_type,process_type_dict.dict_label as instance_type_name, + erp.submit_instance_id,erp.cancel_instance_id,erp.restore_instance_id,erp.apply_title,erp.apply_user,erp.apply_time ,file.url as photo_url,cate.name as material_type_name from erp_material erp left join( diff --git a/ruoyi-admin/src/main/resources/templates/erp/bom/add.html b/ruoyi-admin/src/main/resources/templates/erp/bom/add.html index 660e9b4a..ce5e09f3 100644 --- a/ruoyi-admin/src/main/resources/templates/erp/bom/add.html +++ b/ruoyi-admin/src/main/resources/templates/erp/bom/add.html @@ -22,10 +22,10 @@
- - + +
@@ -35,11 +35,12 @@ - +
+
@@ -133,8 +134,8 @@ focusCleanup: true }); - $(function() { + //todo 物料编号下拉框 $("#materialNo").select2({ theme: "bootstrap", allowClear: true, @@ -172,69 +173,59 @@ minimumInputLength: 1 } }); - $('#materialNo').on('select2:select', function (e) { - // debugger - var data = e.params.data; - $("#materialName").val(data.materialName).select2("trigger", "select", { - data: { id: data.materialName, text: data.materialName } - }) - $("input[name='brand']").val(data.brand); - $("textarea[name='describe']").val(data.describe); - $("#selectMaterialType").val([data.materialType]).trigger("change"); - $("#selectProcessMethod").val([data.processMethod]).trigger("change"); - $("#selectUnit").val([data.unit]).trigger("change"); - }); //todo 物料名称下拉框 - $("#materialName").select2({ - theme: "bootstrap", - allowClear: true, - placeholder: "请选择一个料号名称", - ajax:{ - type: "get", - url:ctx + "erp/material/getMaterialSelList", - dataType:"json", - delay:250, - data:function(params){ - var searchVal = params.term; - var obj = { - keyword: searchVal - }; - return obj; - }, - cache:true, - processResults: function (res, params) { - var options = []; - if(res.code==0){ - var resultList = res.data; - console.log(resultList); - for(var i= 0, len=resultList.length;i选择 '); return actions.join(''); }*/ - }); + function materilalSelect(data) { + var materialType1 = data.materialType.indexOf('yl'); + if(materialType1 != -1){ + $.modal.msgError("原料不能作为BOM主体"); + $("#materialNo").val(''); + $("input[materialName]").val(''); + return; + }; + $("input[name='brand']").val(data.brand); + $("textarea[name='describe']").val(data.describe); + $("#selectMaterialType").val([data.materialType]).trigger("change"); + $("#selectProcessMethod").val([data.processMethod]).trigger("change"); + $("#selectUnit").val([data.unit]).trigger("change"); + } /** window.optEvent = { 'click .optRow': function(e, value, row, index) { console.log("optRow"); @@ -429,6 +433,10 @@ console.log(uniqueId); var iframeWin = window[layero.find('iframe')[0]['name']]; var rowData = iframeWin.$('#bootstrap-select-table').bootstrapTable('getSelections')[0]; + if($("#materialNo").val()==rowData.materialNo){ + $.modal.alertError("不能选择与主体bom相同的料号"); + return; + } var totalNum = $("#bootstrap-sub-table-1").bootstrapTable('getData').length; console.log("rowData: "+rowData); $("#bootstrap-sub-table-1").bootstrapTable('insertRow',{ diff --git a/ruoyi-admin/src/main/resources/templates/erp/bom/bom.html b/ruoyi-admin/src/main/resources/templates/erp/bom/bom.html index 763c2d0c..3e5cd772 100644 --- a/ruoyi-admin/src/main/resources/templates/erp/bom/bom.html +++ b/ruoyi-admin/src/main/resources/templates/erp/bom/bom.html @@ -26,11 +26,11 @@
  • - - + @@ -99,7 +99,9 @@
  • - + + + + + + + + \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/templates/erp/bom/taskGczgVerify.html b/ruoyi-admin/src/main/resources/templates/erp/bom/taskGczgVerify.html new file mode 100644 index 00000000..385bf7ef --- /dev/null +++ b/ruoyi-admin/src/main/resources/templates/erp/bom/taskGczgVerify.html @@ -0,0 +1,266 @@ + + + + + + + + +
    +
    + + + +
    + +
    + +
    +
    +
    + +
    +
    + + +
    +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    + +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + + 点击上传 +
    只能上传jpg/png文件,第一张图片为主图
    +
    +
    + + + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    +
    + + + + + + + + \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/templates/erp/bom/taskModifyApply.html b/ruoyi-admin/src/main/resources/templates/erp/bom/taskModifyApply.html new file mode 100644 index 00000000..c0fb7fee --- /dev/null +++ b/ruoyi-admin/src/main/resources/templates/erp/bom/taskModifyApply.html @@ -0,0 +1,277 @@ + + + + + + + + +
    +
    + + + + +
    + +
    + +
    +
    +
    + +
    +
    + + +
    +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    + +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + + 点击上传 +
    只能上传jpg/png文件,第一张图片为主图
    +
    +
    + + + +
    +
    +
    + +
    + +
    +
    +
    +
    + + + + + + + + \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/templates/erp/bom/taskYfzjVerify.html b/ruoyi-admin/src/main/resources/templates/erp/bom/taskYfzjVerify.html new file mode 100644 index 00000000..66aa3aa1 --- /dev/null +++ b/ruoyi-admin/src/main/resources/templates/erp/bom/taskYfzjVerify.html @@ -0,0 +1,258 @@ + + + + + + + + +
    +
    + + + +
    + +
    + +
    +
    +
    + +
    +
    + + +
    +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    + +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + + 点击上传 +
    只能上传jpg/png文件,第一张图片为主图
    +
    +
    + + + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    +
    + + + + + + + + \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/templates/erp/material/material.html b/ruoyi-admin/src/main/resources/templates/erp/material/material.html index bbee3462..19338094 100644 --- a/ruoyi-admin/src/main/resources/templates/erp/material/material.html +++ b/ruoyi-admin/src/main/resources/templates/erp/material/material.html @@ -49,6 +49,9 @@