From 9b4fcb409ccb3a6ead134099f0ad6ba2c08fc6a8 Mon Sep 17 00:00:00 2001 From: zhangsiqi <2825463979@qq.com> Date: Wed, 3 Jul 2024 08:24:33 +0800 Subject: [PATCH] =?UTF-8?q?[feat]=20=E9=87=87=E8=B4=AD=E8=AE=A1=E5=88=92?= =?UTF-8?q?=E7=94=9F=E6=88=90=E9=87=87=E8=B4=AD=E5=8D=95=EF=BC=8C=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E5=90=8E=E5=AE=A1=E6=A0=B8=E9=80=9A=E8=BF=87=EF=BC=8C?= =?UTF-8?q?=E8=AE=A1=E7=AE=97=E7=89=A9=E6=96=99=E5=90=88=E8=AE=A1=E5=8D=95?= =?UTF-8?q?=E4=BB=B7=EF=BC=8C=E8=AE=A1=E7=AE=97=E7=89=A9=E6=96=99=E5=90=88?= =?UTF-8?q?=E8=AE=A1=E4=B8=8D=E5=90=AB=E7=A8=8E=E5=8D=95=E4=BB=B7=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MaterialRequisitionHeadServiceImpl.java | 4 +- .../controller/PurchaseOrderController.java | 292 ++++++------- .../ruoyi/purchase/domain/PurchaseOrder.java | 318 +++++++------- .../purchase/domain/PurchaseOrderVo.java | 122 ++++++ .../purchase/mapper/PurchaseOrderMapper.java | 13 +- .../service/IPurchaseOrderService.java | 19 +- .../impl/PurchaseOrderServiceImpl.java | 407 +++++++++++++++++- .../purchase/PurchaseOrderChildMapper.xml | 20 +- .../mapper/purchase/PurchaseOrderMapper.xml | 125 ++++-- .../purchaseOrder/addPurchaseStorage.html | 2 - .../purchasePlan/addPurchaseOrder.html | 108 ++--- .../purchase/purchasePlan/purchasePlan.html | 4 +- 12 files changed, 965 insertions(+), 469 deletions(-) create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/purchase/domain/PurchaseOrderVo.java diff --git a/ruoyi-admin/src/main/java/com/ruoyi/produce/service/impl/MaterialRequisitionHeadServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/produce/service/impl/MaterialRequisitionHeadServiceImpl.java index 6b628832..0f224e4e 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/produce/service/impl/MaterialRequisitionHeadServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/produce/service/impl/MaterialRequisitionHeadServiceImpl.java @@ -75,7 +75,7 @@ public class MaterialRequisitionHeadServiceImpl implements IMaterialRequisitionH materialRequisitionHead.setEndFlag("0"); materialRequisitionHead.setGetFlag("0"); StockInfo stockInfo = new StockInfo(); - stockInfo.setStockname(materialRequisitionHead.getStockName()); + stockInfo.setStockName(materialRequisitionHead.getStockName()); stockInfo = stockInfoMapper.selectStockInfoList(stockInfo).get(0); materialRequisitionHead.setStockNo(stockInfo.getStockNO()); return materialRequisitionHeadMapper.insertMaterialRequisitionHead(materialRequisitionHead); @@ -99,7 +99,7 @@ public class MaterialRequisitionHeadServiceImpl implements IMaterialRequisitionH materialRequisitionListMapper.insertMaterialRequisitionList(each); } StockInfo stockInfo = new StockInfo(); - stockInfo.setStockname(materialRequisitionHead.getStockName()); + stockInfo.setStockName(materialRequisitionHead.getStockName()); stockInfo = stockInfoMapper.selectStockInfoList(stockInfo).get(0); materialRequisitionHead.setStockNo(stockInfo.getStockNO()); return materialRequisitionHeadMapper.updateMaterialRequisitionHead(materialRequisitionHead); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/purchase/controller/PurchaseOrderController.java b/ruoyi-admin/src/main/java/com/ruoyi/purchase/controller/PurchaseOrderController.java index 945d0ea8..3afe0925 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/purchase/controller/PurchaseOrderController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/purchase/controller/PurchaseOrderController.java @@ -12,12 +12,15 @@ import com.ruoyi.ck.utils.Result; 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.core.redis.RedisCache; 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.ErpMaterialVo; +import com.ruoyi.process.general.service.IProcessService; import com.ruoyi.purchase.domain.*; import com.ruoyi.purchase.domain.exportDto.PurchaseMaterialDto; import com.ruoyi.purchase.domain.exportDto.PurchaseOrderDto; @@ -28,7 +31,14 @@ import com.ruoyi.purchase.service.IPurchaseOrderService; import com.ruoyi.purchase.service.IPurchasePlanService; import com.ruoyi.quality.domain.QualityOrderDetail; import com.ruoyi.storehouse.utils.CustomRowWriteCellHandler; +import com.ruoyi.system.service.ISysRoleService; +import com.ruoyi.system.service.ISysUserService; import com.ruoyi.warehouse.domain.WarehouseStorageOrder; +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.poi.ss.usermodel.HorizontalAlignment; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.BeanUtils; @@ -38,7 +48,9 @@ import org.springframework.ui.ModelMap; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; import javax.validation.Valid; import java.io.IOException; import java.math.BigDecimal; @@ -71,6 +83,20 @@ public class PurchaseOrderController extends BaseController @Autowired private RedisCache redisCache; + @Autowired + private ISysUserService sysUserService; + @Autowired + private ISysRoleService roleService; + + @Autowired + private TaskService taskService; + + @Autowired + private RuntimeService runtimeService; + + @Autowired + private IProcessService processService; + @RequiresPermissions("purchase:purchaseOrder:view") @GetMapping() public String purchaseOrder() @@ -84,10 +110,14 @@ public class PurchaseOrderController extends BaseController @RequiresPermissions("purchase:purchaseOrder:list") @PostMapping("/list") @ResponseBody - public TableDataInfo list(PurchaseOrder purchaseOrder) + public TableDataInfo list(PurchaseOrderVo purchaseOrderVo) { + SysUser curUser = ShiroUtils.getSysUser(); + Long userId = curUser.getUserId(); + Set roleKeys = roleService.selectRoleKeys(userId); + // 采购角色只能看到自己创建的数据 startPage(); - List list = purchaseOrderService.selectPurchaseOrderList(purchaseOrder); + List list = purchaseOrderService.selectPurchaseOrderList(purchaseOrderVo); return getDataTable(list); } @@ -98,10 +128,10 @@ public class PurchaseOrderController extends BaseController @Log(title = "采购订单", businessType = BusinessType.EXPORT) @PostMapping("/export") @ResponseBody - public AjaxResult export(PurchaseOrder purchaseOrder) + public AjaxResult export(PurchaseOrderVo purchaseOrder) { - List list = purchaseOrderService.selectPurchaseOrderList(purchaseOrder); - ExcelUtil util = new ExcelUtil(PurchaseOrder.class); + List list = purchaseOrderService.selectPurchaseOrderList(purchaseOrder); + ExcelUtil util = new ExcelUtil(PurchaseOrderVo.class); return util.exportExcel(list, "采购订单数据"); } @@ -122,176 +152,27 @@ public class PurchaseOrderController extends BaseController @PostMapping("/add") @ResponseBody public AjaxResult addSave( @RequestBody PurchaseOrder purchaseOrder) { + purchaseOrder.setAuditStatus("0"); + purchaseOrder.setUseStatus("0"); + purchaseOrder.setDelFlag("0"); // 数据校验,确保前端传入数据格式正确 // 生成采购订单编号 // 执行主表插入操作 - return toAjax(purchaseOrderService.insertPurchaseOrder(purchaseOrder)); // 假设toAjax方法处理成功逻辑 + purchaseOrderService.insertPurchaseOrder(purchaseOrder); + return AjaxResult.success(); // 假设toAjax方法处理成功逻辑 } @RequiresPermissions("purchase:purchaseOrder:add") @Log(title = "采购订单", businessType = BusinessType.INSERT) @PostMapping("/addPurchaseOrder") @ResponseBody public AjaxResult addPurchasePlanToPurchaseOrder(@RequestBody PurchaseOrder purchaseOrder) { + purchaseOrder.setAuditStatus("0"); + purchaseOrder.setUseStatus("0"); + purchaseOrder.setDelFlag("0"); + purchaseOrderService.insertPurchaseOrder(purchaseOrder); // 数据校验,确保前端传入数据格式正确 - // 生成采购订单编号 - purchaseOrder.setPurchaseOrderCode(redisCache.generateBillNo("CG")); - // 初始化累加变量 - BigDecimal materialNoRmb = BigDecimal.ZERO; - BigDecimal materialRmb = BigDecimal.ZERO; - BigDecimal materialNoRmbSum = BigDecimal.ZERO; - BigDecimal materialRmbSum = BigDecimal.ZERO; - Long materialNum = 0L; - int supplierNum = 0; - if (!CollectionUtils.isEmpty(purchaseOrder.getPurchaseOrderChildList())) { - supplierNum = purchaseOrder.getPurchaseOrderChildList().size(); - } - if (purchaseOrder.getPurchaseOrderChildList() != null) { - for (PurchaseOrderChild child : purchaseOrder.getPurchaseOrderChildList()) { - if (child.getCorrelationCode().contains(",")) { - String[] correlationCodes = child.getCorrelationCode().split(","); - String[] planCodes = child.getPurchasePlanCode().split(","); - String[] purchaseQuoteCodes = child.getPurchaseQuoteCode().split(","); - for (int i = 0; i < planCodes.length - 1; i++) { - String planCode = planCodes[i]; - String correlationCode = correlationCodes[i]; - if (planCode != null) { - PurchaseOrderChild material = new PurchaseOrderChild(); - child.setPurchaseOrderCode(purchaseOrder.getPurchaseOrderCode()); - // 累加物料数量和金额 - //获取物料供应商采购价格 - BigDecimal suplierMaterialNoRmb = child.getMaterialNoRmb(); - // 获取物料供应商采购价格 - BigDecimal suplierMaterialRmb = child.getMaterialRmb(); - // 获取物料数量 - Long suplierMaterialNum = child.getMaterialNum(); - if (suplierMaterialNum == null) {suplierMaterialNum = 0L;} - if (suplierMaterialRmb == null) {suplierMaterialRmb = BigDecimal.ZERO;} - if (suplierMaterialNoRmb == null) {suplierMaterialNoRmb = BigDecimal.ZERO;} - // 累加物料数量 - materialNum += suplierMaterialNum; - // 累加不含税物料价格 - materialNoRmb = materialNoRmb.add(suplierMaterialNoRmb); - // 累加含税物料价格 - materialRmb = materialRmb.add(suplierMaterialRmb); - // 计算不含税物料总价 - BigDecimal suplierMaterialNoRmbSumLocal = suplierMaterialNoRmb.multiply(BigDecimal.valueOf(suplierMaterialNum)); - // 计算物料含税总价 - BigDecimal suplierMaterialRmbSumLocal = suplierMaterialRmb.multiply(BigDecimal.valueOf(suplierMaterialNum)); - // 累加物料总价 - materialNoRmbSum = materialNoRmbSum.add(suplierMaterialNoRmbSumLocal); - // 累加物料含税总价 - materialRmbSum = materialRmbSum.add(suplierMaterialRmbSumLocal); - // 设置采购报价单编号和供应商信息到QuoteChild - material.setPurchaseQuoteCode(purchaseOrder.getPurchaseOrderCode()); - material.setSupplierCode(child.getSupplierCode()); - material.setMaterialUnit(child.getMaterialUnit()); - material.setWarehouseDept(child.getWarehouseDept()); - material.setSupplierName(child.getSupplierName()); - material.setMaterialCode(child.getMaterialCode()); - material.setMaterialName(child.getMaterialName()); - material.setMaterialBrand(child.getMaterialBrand()); - material.setMaterialDescribe(child.getMaterialDescribe()); - material.setMaterialPhotoUrl(child.getMaterialPhotoUrl()); - material.setMaterialProcessMethod(child.getMaterialProcessMethod()); - material.setMaterialNoRmb(child.getMaterialNoRmb()); - material.setMaterialRmb(child.getMaterialRmb()); - material.setMaterialNum(child.getMaterialNum()); - material.setMaterialNoRmbSum(child.getMaterialNoRmbSum()); - material.setMaterialRmbSum(child.getMaterialRmbSum()); - material.setMaterialRealNum(child.getMaterialRealNum()); - material.setMaterialRealNoRmb(child.getMaterialRealNoRmb()); - material.setMaterialRealRmb(child.getMaterialRealRmb()); - material.setMaterialRealRmbSum(child.getMaterialRealRmbSum()); - material.setMaterialRealNoRmbSum(child.getMaterialRealNoRmbSum()); - material.setMaterialNoRmbSum(child.getMaterialNoRmbSum()); - material.setCorrelationCode(correlationCode); - material.setPurchasePlanCode(planCode); - material.setPurchaseQuoteCode(child.getPurchaseQuoteCode()); - material.setEceiptStatus("0"); - material.setPaymentStatus("0"); - material.setDelFlag("0"); - // 执行子表插入操作 - purchaseOrderChildService.insertPurchaseOrderChild(child); - PurchasePlan plan = new PurchasePlan(); - plan.setPurchasePlanCode(child.getPurchasePlanCode()); - plan.setPurchasePlanStatus("1"); - int result = purchasePlanService.updatePurchasePlan(plan); - } - } - child.setMaterialNoRmb(BigDecimal.ZERO); - } - else if ((child.getCorrelationCode().contains(",")==false) - && child.getPurchasePlanCode() != null) { - PurchaseOrderChild material = new PurchaseOrderChild(); - child.setPurchaseOrderCode(purchaseOrder.getPurchaseOrderCode()); - //获取物料供应商采购价格 - BigDecimal suplierMaterialNoRmb = child.getMaterialNoRmb(); - // 获取物料供应商采购价格 - BigDecimal suplierMaterialRmb = child.getMaterialRmb(); - // 获取物料数量 - Long suplierMaterialNum = child.getMaterialNum(); - // 累加物料数量 - materialNum += suplierMaterialNum; - if(suplierMaterialNoRmb == null){suplierMaterialNoRmb = BigDecimal.ZERO;} - if(suplierMaterialRmb == null){suplierMaterialRmb = BigDecimal.ZERO;} - if(suplierMaterialNum == null){suplierMaterialNum = 0L;} - // 累加不含税物料价格 - materialNoRmb = materialNoRmb.add(suplierMaterialNoRmb); - // 累加含税物料价格 - materialRmb = materialRmb.add(suplierMaterialRmb); - // 计算不含税物料总价 - BigDecimal suplierMaterialNoRmbSumLocal = suplierMaterialNoRmb.multiply(BigDecimal.valueOf(suplierMaterialNum)); - // 计算物料含税总价 - BigDecimal suplierMaterialRmbSumLocal = suplierMaterialRmb.multiply(BigDecimal.valueOf(suplierMaterialNum)); - // 累加物料总价 - materialNoRmbSum = materialNoRmbSum.add(suplierMaterialNoRmbSumLocal); - // 累加物料含税总价 - materialRmbSum = materialRmbSum.add(suplierMaterialRmbSumLocal); - // 设置采购报价单编号和供应商信息到QuoteChild - material.setPurchaseOrderCode(purchaseOrder.getPurchaseOrderCode()); - material.setSupplierCode(child.getSupplierCode()); - material.setMaterialUnit(child.getMaterialUnit()); - material.setWarehouseDept(child.getWarehouseDept()); - material.setSupplierName(child.getSupplierName()); - material.setMaterialCode(child.getMaterialCode()); - material.setMaterialName(child.getMaterialName()); - material.setMaterialBrand(child.getMaterialBrand()); - material.setMaterialDescribe(child.getMaterialDescribe()); - material.setMaterialPhotoUrl(child.getMaterialPhotoUrl()); - material.setMaterialProcessMethod(child.getMaterialProcessMethod()); - material.setMaterialNoRmb(child.getMaterialNoRmb()); - material.setMaterialRmb(child.getMaterialRmb()); - material.setMaterialNum(child.getMaterialNum()); - material.setMaterialNoRmbSum(child.getMaterialNoRmbSum()); - material.setMaterialRmbSum(child.getMaterialRmbSum()); - material.setMaterialRealNum(child.getMaterialRealNum()); - material.setMaterialRealNoRmb(child.getMaterialRealNoRmb()); - material.setMaterialRealRmb(child.getMaterialRealRmb()); - material.setMaterialNoRmbSum(child.getMaterialNoRmbSum()); - material.setCorrelationCode(child.getCorrelationCode()); - material.setPurchasePlanCode(child.getPurchasePlanCode()); - material.setPurchaseQuoteCode(child.getPurchaseQuoteCode()); - material.setEceiptStatus("0"); - material.setPaymentStatus("0"); - material.setDelFlag("0"); - // 执行子表插入操作 - purchaseOrderChildService.insertPurchaseOrderChild(child); - PurchasePlan plan = new PurchasePlan(); - plan.setPurchasePlanCode(child.getPurchasePlanCode()); - plan.setPurchasePlanStatus("1"); - int result = purchasePlanService.updatePurchasePlan(plan); - } - } - } - // 遍历处理采购订单子表 - // 设置累加的物料信息到子表 - purchaseOrder.setMaterialSum(Math.toIntExact(materialNum)); - purchaseOrder.setNoRmbSum(materialNoRmbSum); - purchaseOrder.setRmbSum(materialRmbSum); - // 设置主表的供应商数量 - purchaseOrder.setSupplierNum(supplierNum); // 执行主表插入操作 - return toAjax(purchaseOrderService.insertPurchaseOrder(purchaseOrder)); // 假设toAjax方法处理成功逻辑 + return AjaxResult.success(); // 假设toAjax方法处理成功逻辑 } /** @@ -357,7 +238,82 @@ public class PurchaseOrderController extends BaseController { return toAjax(purchaseOrderService.updatePurchaseOrder(purchaseOrder)); } + /** + * 加载审批弹窗 + * @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(); + PurchaseOrderVo purchaseOrderVo = purchaseOrderService.selectPurchaseOrderById(new Long(processInstance.getBusinessKey())); + mmap.put("formData", purchaseOrderVo); + mmap.put("taskId", taskId); + String verifyName = task.getTaskDefinitionKey().substring(0, 1).toUpperCase() + task.getTaskDefinitionKey().substring(1); + return prefix + "/task" + verifyName; + } + + /** + * 完成任务 + * + * @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") PurchaseOrderVo purchaseOrderVo, HttpServletRequest request) { + boolean saveEntityBoolean = BooleanUtils.toBoolean(saveEntity); + String instanceId = purchaseOrderVo.getInstanceId(); + + String instanceType = purchaseOrderVo.getInstanceType(); + boolean approvedFlag = processService.complete(taskId, instanceId, purchaseOrderVo.getApplyTitle(), purchaseOrderVo.getPurchaseOrderCode(), + "purchaseOrder", new HashMap(), request); + if(!approvedFlag){ + // 审核状态-审核拒绝 + purchaseOrderVo.setAuditStatus("2"); + } + // 如果任务已结束更新业务表状态 + boolean processIsFinish = processService.judgeProcessIsFinish(instanceId); + if (processIsFinish) { + // 审核通过 + purchaseOrderVo.setAuditStatus("1"); + // 提交 + if("submit".equals(instanceType)){ + // 使用状态-是 + purchaseOrderVo.setUseStatus("1"); + } + // 作废 + else if("cancel".equals(instanceType)){ + // 使用状态-已作废 + purchaseOrderVo.setUseStatus("2"); + } + // 恢复 + else if("restore".equals(instanceType)){ + // 使用状态-是 + purchaseOrderVo.setUseStatus("1"); + } + } + purchaseOrderService.updatePurchaseOrder(purchaseOrderVo); + // 驳回申请后继续申请,可能修改表单 + if (saveEntityBoolean) { + purchaseOrderService.updatePurchaseOrder(purchaseOrderVo); + } + return success("任务已完成"); + } + /** + * 自动绑定页面字段 + */ + @ModelAttribute("/preloadObj") + public PurchaseOrderVo getObj(@RequestParam(value = "id", required = false) Long id, HttpSession session) { + if (id != null) { + return purchaseOrderService.selectPurchaseOrderById(id); + } + return new PurchaseOrderVo(); + } /** * 删除采购订单 */ @@ -503,4 +459,12 @@ public class PurchaseOrderController extends BaseController public Result getId() throws Exception { return Result.getSuccessResult(purchaseOrderService.getId()); } + + @GetMapping ("/getEngineerList") + @ResponseBody + public TableDataInfo getEngineerList(){ + startPage(); + List list = sysUserService.selectRoleToUserList("cgyRole,cgjlRole,cgzgRole,fzjlRole"); + return getDataTable(list); + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/purchase/domain/PurchaseOrder.java b/ruoyi-admin/src/main/java/com/ruoyi/purchase/domain/PurchaseOrder.java index 2640098d..e55eb6eb 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/purchase/domain/PurchaseOrder.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/purchase/domain/PurchaseOrder.java @@ -127,41 +127,6 @@ public class PurchaseOrder extends BaseEntity @Excel(name = "结案时间") private String closeCaseTime; - /** 确认否 */ - @Excel(name = "确认否") - private String confirmNo; - - /** 确认人 */ - @Excel(name = "确认人") - private String confirmName; - - /** 确认时间 */ - @Excel(name = "确认时间") - private String confirmTime; - - /** 审核否 */ - @Excel(name = "审核否") - private String auditNo; - - /** 审核人 */ - @Excel(name = "审核人") - private String auditName; - - /** 审核时间 */ - @Excel(name = "审核时间") - private String auditTime; - - /** 核准否 */ - @Excel(name = "核准否") - private String approveNo; - - /** 核准人 */ - @Excel(name = "核准人") - private String approveName; - - /** 核准时间 */ - @Excel(name = "核准时间") - private String approveTime; /** 对账否 */ @Excel(name = "对账否") @@ -175,12 +140,6 @@ public class PurchaseOrder extends BaseEntity @Excel(name = "对账时间") private String accountReconciliationTime; /** 录入时间 */ - @Excel(name = "录入时间") - private String firstAddTime; - - /** 修改时间 */ - @Excel(name = "修改时间") - private String updateInfoTime; /** 删除标志(0代表存在 2代表删除) */ private String delFlag; @@ -202,63 +161,38 @@ public class PurchaseOrder extends BaseEntity /** 备用二 */ private String standbyTwo; - private List purchaseOrderChildList; - - public String getDelFlag() { - return delFlag; - } - - public void setDelFlag(String delFlag) { - this.delFlag = delFlag; - } - - public String getStockNo() { - return stockNo; - } + /** 流程实例ID */ + private String instanceId; - public void setStockNo(String stockNo) { - this.stockNo = stockNo; - } + /** 流程实例类型 */ + private String instanceType; - public String getStockName() { - return stockName; - } + /** 提交流程实例ID */ + private String submitInstanceId; - public void setStockName(String stockName) { - this.stockName = stockName; - } + /** 作废流程实例ID */ + private String cancelInstanceId; - public String getStockAddress() { - return stockAddress; - } + /** 恢复流程实例ID */ + private String restoreInstanceId; - public void setStockAddress(String stockAddress) { - this.stockAddress = stockAddress; - } + /** 申请人 */ + private String applyTitle; - public String getStockPhone() { - return stockPhone; - } + /** 申请人 */ + private String applyUser; - public void setStockPhone(String stockPhone) { - this.stockPhone = stockPhone; - } + /** 申请时间 */ + private Date applyTime; - public String getStockContact() { - return stockContact; - } + private Long photoAttachId; - public void setStockContact(String stockContact) { - this.stockContact = stockContact; - } + private String fileIdStr; - public List getPurchaseOrderChildList() { - return purchaseOrderChildList; - } + private String removeFileIdStr; - public void setPurchaseOrderChildList(List purchaseOrderChildList) { - this.purchaseOrderChildList = purchaseOrderChildList; - } + /** 子表信息 */ + private List purchaseOrderChildList; public Long getPurchaseOrderId() { return purchaseOrderId; @@ -372,6 +306,22 @@ public class PurchaseOrder extends BaseEntity this.supplierName = supplierName; } + public String getEceiptType() { + return eceiptType; + } + + public void setEceiptType(String eceiptType) { + this.eceiptType = eceiptType; + } + + public Date getArrivedTime() { + return arrivedTime; + } + + public void setArrivedTime(Date arrivedTime) { + this.arrivedTime = arrivedTime; + } + public String getCustomerContact() { return customerContact; } @@ -508,149 +458,188 @@ public class PurchaseOrder extends BaseEntity this.closeCaseTime = closeCaseTime; } - public String getConfirmNo() { - return confirmNo; + public String getAccountReconciliationFlag() { + return accountReconciliationFlag; } - public void setConfirmNo(String confirmNo) { - this.confirmNo = confirmNo; + public void setAccountReconciliationFlag(String accountReconciliationFlag) { + this.accountReconciliationFlag = accountReconciliationFlag; } - public String getConfirmName() { - return confirmName; + public String getAccountReconciliationPerson() { + return accountReconciliationPerson; } - public void setConfirmName(String confirmName) { - this.confirmName = confirmName; + public void setAccountReconciliationPerson(String accountReconciliationPerson) { + this.accountReconciliationPerson = accountReconciliationPerson; } - public String getConfirmTime() { - return confirmTime; + public String getAccountReconciliationTime() { + return accountReconciliationTime; } - public void setConfirmTime(String confirmTime) { - this.confirmTime = confirmTime; + public void setAccountReconciliationTime(String accountReconciliationTime) { + this.accountReconciliationTime = accountReconciliationTime; } - public String getAuditNo() { - return auditNo; + public String getDelFlag() { + return delFlag; } - public void setAuditNo(String auditNo) { - this.auditNo = auditNo; + public void setDelFlag(String delFlag) { + this.delFlag = delFlag; } - public String getAuditName() { - return auditName; + public String getStockNo() { + return stockNo; } - public void setAuditName(String auditName) { - this.auditName = auditName; + public void setStockNo(String stockNo) { + this.stockNo = stockNo; } - public String getAuditTime() { - return auditTime; + public String getStockName() { + return stockName; } - public void setAuditTime(String auditTime) { - this.auditTime = auditTime; + public void setStockName(String stockName) { + this.stockName = stockName; } - public String getApproveNo() { - return approveNo; + public String getStockAddress() { + return stockAddress; } - public void setApproveNo(String approveNo) { - this.approveNo = approveNo; + public void setStockAddress(String stockAddress) { + this.stockAddress = stockAddress; } - public String getApproveName() { - return approveName; + public String getStockPhone() { + return stockPhone; } - public void setApproveName(String approveName) { - this.approveName = approveName; + public void setStockPhone(String stockPhone) { + this.stockPhone = stockPhone; } - public String getApproveTime() { - return approveTime; + public String getStockContact() { + return stockContact; } - public void setApproveTime(String approveTime) { - this.approveTime = approveTime; + public void setStockContact(String stockContact) { + this.stockContact = stockContact; } - public String getAccountReconciliationFlag() { - return accountReconciliationFlag; + public String getStandbyOne() { + return standbyOne; } - public void setAccountReconciliationFlag(String accountReconciliationFlag) { - this.accountReconciliationFlag = accountReconciliationFlag; + public void setStandbyOne(String standbyOne) { + this.standbyOne = standbyOne; } - public String getAccountReconciliationPerson() { - return accountReconciliationPerson; + public String getStandbyTwo() { + return standbyTwo; } - public void setAccountReconciliationPerson(String accountReconciliationPerson) { - this.accountReconciliationPerson = accountReconciliationPerson; + public void setStandbyTwo(String standbyTwo) { + this.standbyTwo = standbyTwo; } - public String getAccountReconciliationTime() { - return accountReconciliationTime; + public String getInstanceId() { + return instanceId; } - public void setAccountReconciliationTime(String accountReconciliationTime) { - this.accountReconciliationTime = accountReconciliationTime; + public void setInstanceId(String instanceId) { + this.instanceId = instanceId; } - public String getFirstAddTime() { - return firstAddTime; + public String getInstanceType() { + return instanceType; } - public void setFirstAddTime(String firstAddTime) { - this.firstAddTime = firstAddTime; + public void setInstanceType(String instanceType) { + this.instanceType = instanceType; } - public String getUpdateInfoTime() { - return updateInfoTime; + public String getSubmitInstanceId() { + return submitInstanceId; } - public void setUpdateInfoTime(String updateInfoTime) { - this.updateInfoTime = updateInfoTime; + public void setSubmitInstanceId(String submitInstanceId) { + this.submitInstanceId = submitInstanceId; } - public String getStandbyOne() { - return standbyOne; + public String getCancelInstanceId() { + return cancelInstanceId; } - public void setStandbyOne(String standbyOne) { - this.standbyOne = standbyOne; + public void setCancelInstanceId(String cancelInstanceId) { + this.cancelInstanceId = cancelInstanceId; } - public String getStandbyTwo() { - return standbyTwo; + public String getRestoreInstanceId() { + return restoreInstanceId; } - public void setStandbyTwo(String standbyTwo) { - this.standbyTwo = standbyTwo; + public void setRestoreInstanceId(String restoreInstanceId) { + this.restoreInstanceId = restoreInstanceId; } + public String getApplyTitle() { + return applyTitle; + } - public Date getArrivedTime() { - return arrivedTime; + public void setApplyTitle(String applyTitle) { + this.applyTitle = applyTitle; } - public void setArrivedTime(Date arrivedTime) { - this.arrivedTime = arrivedTime; + public String getApplyUser() { + return applyUser; } - public String getEceiptType() { - return eceiptType; + public void setApplyUser(String applyUser) { + this.applyUser = applyUser; } - public void setEceiptType(String eceiptType) { - this.eceiptType = eceiptType; + 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; + } + + public List getPurchaseOrderChildList() { + return purchaseOrderChildList; + } + + public void setPurchaseOrderChildList(List purchaseOrderChildList) { + this.purchaseOrderChildList = purchaseOrderChildList; } @Override @@ -677,20 +666,9 @@ public class PurchaseOrder extends BaseEntity .append("closeCaseNo", getCloseCaseNo()) .append("closeCaseName", getCloseCaseName()) .append("closeCaseTime", getCloseCaseTime()) - .append("confirmNo", getConfirmNo()) - .append("confirmName", getConfirmName()) - .append("confirmTime", getConfirmTime()) - .append("auditNo", getAuditNo()) - .append("auditName", getAuditName()) - .append("auditTime", getAuditTime()) - .append("approveNo", getApproveNo()) - .append("approveName", getApproveName()) - .append("approveTime", getApproveTime()) .append("accountReconciliationFlag", getAccountReconciliationFlag()) .append("accountReconciliationPerson", getAccountReconciliationPerson()) .append("accountReconciliationTime", getAccountReconciliationTime()) - .append("firstAddTime", getFirstAddTime()) - .append("updateInfoTime", getUpdateInfoTime()) .append("standbyOne", getStandbyOne()) .append("standbyTwo", getStandbyTwo()) .toString(); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/purchase/domain/PurchaseOrderVo.java b/ruoyi-admin/src/main/java/com/ruoyi/purchase/domain/PurchaseOrderVo.java new file mode 100644 index 00000000..2e4dd356 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/purchase/domain/PurchaseOrderVo.java @@ -0,0 +1,122 @@ +package com.ruoyi.purchase.domain; + +import com.ruoyi.erp.domain.ErpBom; + +import java.util.Date; + +/** + * + * @Description 采购订单审核信息Vo + */ + +public class PurchaseOrderVo extends PurchaseOrder { + 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 "PurchaseOrderVo{" + + "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/purchase/mapper/PurchaseOrderMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/purchase/mapper/PurchaseOrderMapper.java index 3efcbfa0..a4f6cfb1 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/purchase/mapper/PurchaseOrderMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/purchase/mapper/PurchaseOrderMapper.java @@ -1,6 +1,7 @@ package com.ruoyi.purchase.mapper; import com.ruoyi.purchase.domain.PurchaseOrder; +import com.ruoyi.purchase.domain.PurchaseOrderVo; import java.util.List; @@ -18,7 +19,7 @@ public interface PurchaseOrderMapper * @param purchaseOrderId 采购订单ID * @return 采购订单 */ - public PurchaseOrder selectPurchaseOrderById(Long purchaseOrderId); + public PurchaseOrderVo selectPurchaseOrderById(Long purchaseOrderId); /** * 查询采购订单列表 @@ -26,7 +27,7 @@ public interface PurchaseOrderMapper * @param purchaseOrder 采购订单 * @return 采购订单集合 */ - public List selectPurchaseOrderList(PurchaseOrder purchaseOrder); + public List selectPurchaseOrderList(PurchaseOrder purchaseOrder); /** * 新增采购订单 @@ -60,7 +61,11 @@ public interface PurchaseOrderMapper */ public int deletePurchaseOrderByIds(String[] purchaseOrderIds); - public List selectOrderByIdDesc(); + //查询关联类型为生产订单的采购订单列表 + public List selectOrderByIdDesc(); - PurchaseOrder selectPurchaseOrderByOrderCode(String purchaseOrderCode); + //根据采购订单编号查询采购订单 + PurchaseOrderVo selectPurchaseOrderByOrderCode(String purchaseOrderCode); + //校验采购订单编号是否唯一 + public Integer checkPurchaseOrderCodeUnique(String purchaseOrderCode); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/IPurchaseOrderService.java b/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/IPurchaseOrderService.java index 4c433972..de4840bb 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/IPurchaseOrderService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/IPurchaseOrderService.java @@ -1,7 +1,10 @@ package com.ruoyi.purchase.service; import com.ruoyi.purchase.domain.PurchaseOrder; +import com.ruoyi.purchase.domain.PurchaseOrderVo; import com.ruoyi.warehouse.domain.WarehouseStorageOrder; +import org.activiti.engine.runtime.ProcessInstance; +import org.springframework.transaction.annotation.Transactional; import java.util.List; @@ -15,19 +18,19 @@ public interface IPurchaseOrderService { /** * 查询采购订单 - * + * * @param purchaseOrderId 采购订单ID * @return 采购订单 */ - public PurchaseOrder selectPurchaseOrderById(Long purchaseOrderId); + public PurchaseOrderVo selectPurchaseOrderById(Long purchaseOrderId); /** * 查询采购订单列表 - * + * * @param purchaseOrder 采购订单 * @return 采购订单集合 */ - public List selectPurchaseOrderList(PurchaseOrder purchaseOrder); + public List selectPurchaseOrderList(PurchaseOrderVo purchaseOrder); /** * 新增采购订单 @@ -70,4 +73,12 @@ public interface IPurchaseOrderService * */ int addPurchaseOrderStorage(WarehouseStorageOrder warehouseStorageOrder); + + @Transactional(rollbackFor = Exception.class) + ProcessInstance submitApply(PurchaseOrder purchaseOrder); + + @Transactional(rollbackFor = Exception.class) + ProcessInstance cancelPurchaseOrderById(Long id); + + ProcessInstance restorePurchaseOrderById(Long id); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/impl/PurchaseOrderServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/impl/PurchaseOrderServiceImpl.java index 1097121c..de043dfb 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/impl/PurchaseOrderServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/impl/PurchaseOrderServiceImpl.java @@ -1,26 +1,50 @@ package com.ruoyi.purchase.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.process.general.service.IProcessService; +import com.ruoyi.process.todoitem.mapper.BizTodoItemMapper; import com.ruoyi.purchase.domain.PurchaseOrder; import com.ruoyi.purchase.domain.PurchaseOrderChild; +import com.ruoyi.purchase.domain.PurchaseOrderVo; +import com.ruoyi.purchase.domain.PurchasePlan; +import com.ruoyi.purchase.mapper.PurchaseOrderChildMapper; import com.ruoyi.purchase.mapper.PurchaseOrderMapper; +import com.ruoyi.purchase.mapper.PurchasePlanMapper; import com.ruoyi.purchase.service.IPurchaseOrderService; +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 com.ruoyi.warehouse.domain.WarehouseStorageOrder; import com.ruoyi.warehouse.domain.WarehouseStorageOrderDetail; import com.ruoyi.warehouse.mapper.WarehouseStorageOrderDetailMapper; import com.ruoyi.warehouse.mapper.WarehouseStorageOrderMapper; import lombok.extern.slf4j.Slf4j; +import org.activiti.engine.TaskService; +import org.activiti.engine.impl.persistence.entity.TaskEntityImpl; +import org.activiti.engine.runtime.ProcessInstance; +import org.activiti.engine.task.Task; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; -import org.springframework.util.ObjectUtils; -import java.text.SimpleDateFormat; +import java.math.BigDecimal; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; /** * 采购订单Service业务层处理 @@ -44,28 +68,66 @@ public class PurchaseOrderServiceImpl implements IPurchaseOrderService @Autowired private WarehouseStorageOrderDetailMapper storageOrderDetailMapper; + @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 PurchaseOrderChildMapper purchaseOrderChildService; + + @Autowired + private PurchasePlanMapper purchasePlanService; /** * 查询采购订单 - * + * * @param purchaseOrderId 采购订单ID * @return 采购订单 */ @Override - public PurchaseOrder selectPurchaseOrderById(Long purchaseOrderId) + public PurchaseOrderVo selectPurchaseOrderById(Long purchaseOrderId) { - return purchaseOrderMapper.selectPurchaseOrderById(purchaseOrderId); + PurchaseOrderVo purchaseOrderVo = purchaseOrderMapper.selectPurchaseOrderById(purchaseOrderId); + SysUser sysUser = userMapper.selectUserByLoginName(purchaseOrderVo.getApplyUser()); + if (sysUser != null) { + purchaseOrderVo.setApplyUserName(sysUser.getUserName()); + } + return purchaseOrderVo ; } /** * 查询采购订单列表 - * - * @param purchaseOrder 采购订单 + * + * @param purchaseOrderVo 采购订单 * @return 采购订单 */ @Override - public List selectPurchaseOrderList(PurchaseOrder purchaseOrder) + public List selectPurchaseOrderList(PurchaseOrderVo purchaseOrderVo) { - return purchaseOrderMapper.selectPurchaseOrderList(purchaseOrder); + + // PageHelper 仅对第一个 List 分页 + List list = purchaseOrderMapper.selectPurchaseOrderList(purchaseOrderVo); + return list; + } /** @@ -81,7 +143,166 @@ public class PurchaseOrderServiceImpl implements IPurchaseOrderService //根据上传的物料信息做采购订单子项 purchaseOrder.setCreateTime(DateUtils.getNowDate()); purchaseOrder.setCreateBy(ShiroUtils.getLoginName()); - // + // 生成采购订单编号 + purchaseOrder.setPurchaseOrderCode(redisCache.generateBillNo("CG")); + // 初始化累加变量 + BigDecimal materialNoRmb = BigDecimal.ZERO; + BigDecimal materialRmb = BigDecimal.ZERO; + BigDecimal materialNoRmbSum = BigDecimal.ZERO; + BigDecimal materialRmbSum = BigDecimal.ZERO; + Long materialNum = 0L; + int supplierNum = 0; + if (!CollectionUtils.isEmpty(purchaseOrder.getPurchaseOrderChildList())) { + supplierNum = purchaseOrder.getPurchaseOrderChildList().size(); + } + if (purchaseOrder.getPurchaseOrderChildList() != null) { + for (PurchaseOrderChild child : purchaseOrder.getPurchaseOrderChildList()) { + if (child.getCorrelationCode().contains(",")) { + String[] correlationCodes = child.getCorrelationCode().split(","); + String[] planCodes = child.getPurchasePlanCode().split(","); + String[] purchaseQuoteCodes = child.getPurchaseQuoteCode().split(","); + for (int i = 0; i < planCodes.length - 1; i++) { + String planCode = planCodes[i]; + String correlationCode = correlationCodes[i]; + if (planCode != null) { + PurchaseOrderChild material = new PurchaseOrderChild(); + child.setPurchaseOrderCode(purchaseOrder.getPurchaseOrderCode()); + // 累加物料数量和金额 + //获取物料供应商采购价格 + BigDecimal suplierMaterialNoRmb = child.getMaterialNoRmb(); + // 获取物料供应商采购价格 + BigDecimal suplierMaterialRmb = child.getMaterialRmb(); + // 获取物料数量 + Long suplierMaterialNum = child.getMaterialNum(); + if (suplierMaterialNum == null) {suplierMaterialNum = 0L;} + if (suplierMaterialRmb == null) {suplierMaterialRmb = BigDecimal.ZERO;} + if (suplierMaterialNoRmb == null) {suplierMaterialNoRmb = BigDecimal.ZERO;} + // 累加物料数量 + materialNum += suplierMaterialNum; + // 累加不含税物料价格 + materialNoRmb = materialNoRmb.add(suplierMaterialNoRmb); + // 累加含税物料价格 + materialRmb = materialRmb.add(suplierMaterialRmb); + // 计算不含税物料总价 + BigDecimal suplierMaterialNoRmbSumLocal = suplierMaterialNoRmb.multiply(BigDecimal.valueOf(suplierMaterialNum)); + // 计算物料含税总价 + BigDecimal suplierMaterialRmbSumLocal = suplierMaterialRmb.multiply(BigDecimal.valueOf(suplierMaterialNum)); + // 累加物料总价 + materialNoRmbSum = materialNoRmbSum.add(suplierMaterialNoRmbSumLocal); + // 累加物料含税总价 + materialRmbSum = materialRmbSum.add(suplierMaterialRmbSumLocal); + // 设置采购报价单编号和供应商信息到QuoteChild + material.setPurchaseQuoteCode(purchaseOrder.getPurchaseOrderCode()); + material.setSupplierCode(child.getSupplierCode()); + material.setMaterialUnit(child.getMaterialUnit()); + material.setWarehouseDept(child.getWarehouseDept()); + material.setSupplierName(child.getSupplierName()); + material.setMaterialCode(child.getMaterialCode()); + material.setMaterialName(child.getMaterialName()); + material.setMaterialBrand(child.getMaterialBrand()); + material.setMaterialDescribe(child.getMaterialDescribe()); + material.setMaterialPhotoUrl(child.getMaterialPhotoUrl()); + material.setMaterialProcessMethod(child.getMaterialProcessMethod()); + material.setMaterialNoRmb(child.getMaterialNoRmb()); + material.setMaterialRmb(child.getMaterialRmb()); + material.setMaterialNum(child.getMaterialNum()); + material.setMaterialNoRmbSum(child.getMaterialNoRmbSum()); + material.setMaterialRmbSum(child.getMaterialRmbSum()); + material.setMaterialRealNum(child.getMaterialRealNum()); + material.setMaterialRealNoRmb(child.getMaterialRealNoRmb()); + material.setMaterialRealRmb(child.getMaterialRealRmb()); + material.setMaterialRealRmbSum(child.getMaterialRealRmbSum()); + material.setMaterialRealNoRmbSum(child.getMaterialRealNoRmbSum()); + material.setMaterialNoRmbSum(child.getMaterialNoRmbSum()); + material.setCorrelationCode(correlationCode); + material.setPurchasePlanCode(planCode); + material.setPurchaseQuoteCode(child.getPurchaseQuoteCode()); + material.setEceiptStatus("0"); + material.setPaymentStatus("0"); + material.setDelFlag("0"); + // 执行子表插入操作 + purchaseOrderChildService.insertPurchaseOrderChild(child); + PurchasePlan plan = new PurchasePlan(); + plan.setPurchasePlanCode(child.getPurchasePlanCode()); + plan.setPurchasePlanStatus("1"); + int result = purchasePlanService.updatePurchasePlan(plan); + } + } + child.setMaterialNoRmb(BigDecimal.ZERO); + } + else if ((child.getCorrelationCode().contains(",")==false) + && child.getPurchasePlanCode() != null) { + PurchaseOrderChild material = new PurchaseOrderChild(); + child.setPurchaseOrderCode(purchaseOrder.getPurchaseOrderCode()); + //获取物料供应商采购价格 + BigDecimal suplierMaterialNoRmb = child.getMaterialNoRmb(); + // 获取物料供应商采购价格 + BigDecimal suplierMaterialRmb = child.getMaterialRmb(); + // 获取物料数量 + Long suplierMaterialNum = child.getMaterialNum(); + // 累加物料数量 + materialNum += suplierMaterialNum; + if(suplierMaterialNoRmb == null){suplierMaterialNoRmb = BigDecimal.ZERO;} + if(suplierMaterialRmb == null){suplierMaterialRmb = BigDecimal.ZERO;} + if(suplierMaterialNum == null){suplierMaterialNum = 0L;} + // 累加不含税物料价格 + materialNoRmb = materialNoRmb.add(suplierMaterialNoRmb); + // 累加含税物料价格 + materialRmb = materialRmb.add(suplierMaterialRmb); + // 计算不含税物料总价 + BigDecimal suplierMaterialNoRmbSumLocal = suplierMaterialNoRmb.multiply(BigDecimal.valueOf(suplierMaterialNum)); + // 计算物料含税总价 + BigDecimal suplierMaterialRmbSumLocal = suplierMaterialRmb.multiply(BigDecimal.valueOf(suplierMaterialNum)); + // 累加物料总价 + materialNoRmbSum = materialNoRmbSum.add(suplierMaterialNoRmbSumLocal); + // 累加物料含税总价 + materialRmbSum = materialRmbSum.add(suplierMaterialRmbSumLocal); + // 设置采购报价单编号和供应商信息到QuoteChild + material.setPurchaseOrderCode(purchaseOrder.getPurchaseOrderCode()); + material.setSupplierCode(child.getSupplierCode()); + material.setMaterialUnit(child.getMaterialUnit()); + material.setWarehouseDept(child.getWarehouseDept()); + material.setSupplierName(child.getSupplierName()); + material.setMaterialCode(child.getMaterialCode()); + material.setMaterialName(child.getMaterialName()); + material.setMaterialBrand(child.getMaterialBrand()); + material.setMaterialDescribe(child.getMaterialDescribe()); + material.setMaterialPhotoUrl(child.getMaterialPhotoUrl()); + material.setMaterialProcessMethod(child.getMaterialProcessMethod()); + material.setMaterialNoRmb(child.getMaterialNoRmb()); + material.setMaterialRmb(child.getMaterialRmb()); + material.setMaterialNum(child.getMaterialNum()); + material.setMaterialNoRmbSum(child.getMaterialNoRmbSum()); + material.setMaterialRmbSum(child.getMaterialRmbSum()); + material.setMaterialRealNum(child.getMaterialRealNum()); + material.setMaterialRealNoRmb(child.getMaterialRealNoRmb()); + material.setMaterialRealRmb(child.getMaterialRealRmb()); + material.setMaterialRealRmbSum(child.getMaterialRmbSum()); + material.setMaterialRealNoRmbSum(child.getMaterialRealNoRmbSum()); + material.setMaterialNoRmbSum(child.getMaterialNoRmbSum()); + material.setCorrelationCode(child.getCorrelationCode()); + material.setPurchasePlanCode(child.getPurchasePlanCode()); + material.setPurchaseQuoteCode(child.getPurchaseQuoteCode()); + material.setEceiptStatus("0"); + material.setPaymentStatus("0"); + material.setDelFlag("0"); + // 执行子表插入操作 + purchaseOrderChildService.insertPurchaseOrderChild(child); + PurchasePlan plan = new PurchasePlan(); + plan.setPurchasePlanCode(child.getPurchasePlanCode()); + plan.setPurchasePlanStatus("1"); + int result = purchasePlanService.updatePurchasePlan(plan); + } + } + } + // 遍历处理采购订单子表 + // 设置累加的物料信息到子表 + purchaseOrder.setMaterialSum(Math.toIntExact(materialNum)); + purchaseOrder.setNoRmbSum(materialNoRmbSum); + purchaseOrder.setRmbSum(materialRmbSum); + // 设置主表的供应商数量 + purchaseOrder.setSupplierNum(supplierNum); + return purchaseOrderMapper.insertPurchaseOrder(purchaseOrder); } @@ -137,26 +358,168 @@ public class PurchaseOrderServiceImpl implements IPurchaseOrderService * 采购订单创建采购入库通知单 * */ @Override + @Transactional(rollbackFor = Exception.class) public int addPurchaseOrderStorage(WarehouseStorageOrder warehouseStorageOrder){ WarehouseStorageOrder warehouseStorageOrder1 = new WarehouseStorageOrder(); warehouseStorageOrder1.setRelatedOrderCode(warehouseStorageOrder.getRelatedOrderCode()); List warehouseStorageOrderList = warehouseStorageOrderMapper.selectWarehouseStorageOrderList(warehouseStorageOrder1); List list = warehouseStorageOrder.getWarehouseStorageOrderDetailList(); - String warehouseStorageCode = redisCache.generateBillNo("RK"); - if(CollectionUtils.isEmpty(warehouseStorageOrderList)){ - for (WarehouseStorageOrderDetail warehouseStorageOrderDetail : list) { - //查询暂收(采购入库)物料表中是否存在该物料 - warehouseStorageOrderDetail.setWarehouseStorageCode(warehouseStorageCode); + if(CollectionUtils.isEmpty(warehouseStorageOrderList)) { + //根据物料入库部门划分入库单,入库单类型:0 仓库,1 采购,生成入库单号 + List list1 = list.stream().filter(e -> e.getMaterialDeptType().equals("0")).collect(Collectors.toList()); + List list2 = list.stream().filter(e -> e.getMaterialDeptType().equals("1")).collect(Collectors.toList()); + //WarehouseStorageStatus 仓库入库状态(0待暂收、1已暂收、2待入库、3部分入库、4全部入库), + //WarehouseStorageType 仓库入库类型(0采购入库、1供应商补货、2委内入库、3公司退货、4委外入库、5生产入库), + //setWarehouseOrderType仓库订单类型(0采购订单、1生产订单、2退换货订单、3委外订单), + //WarehouseDeptType 仓库入库部门类型(0仓库,1采购 ), + if(!CollectionUtils.isEmpty(list1)) { + //采购入库单,物料入库列表信息读取,放入生成的入库订单号 + String warehouseStorageCode = redisCache.generateBillNo("RK"); + for (WarehouseStorageOrderDetail warehouseStorageOrderDetail: list1) { + warehouseStorageOrderDetail.setWarehouseStorageCode(warehouseStorageCode); + warehouseStorageOrderDetail.setWarehouseStorageType("0"); + warehouseStorageOrderDetail.setMaterialDeptType("0"); + warehouseStorageOrderDetail.setWarehouseDeptType("0"); + storageOrderDetailMapper.insertWarehouseStorageOrderDetail(warehouseStorageOrderDetail); + } + //入库代表为采购部分的入库单 + warehouseStorageOrder.setWarehouseStorageCode(warehouseStorageCode); + warehouseStorageOrder.setWarehouseStorageType("0"); + warehouseStorageOrder.setWarehouseDeptType("0"); + warehouseStorageOrder.setWarehouseStorageStatus("0"); + warehouseStorageOrderMapper.insertWarehouseStorageOrder(warehouseStorageOrder); + } + if(!CollectionUtils.isEmpty(list2)) { + String warehouseStorageCode1 = redisCache.generateBillNo("RK"); + //仓库入库单 + for (WarehouseStorageOrderDetail warehouseStorageOrderDetail: list2) { + warehouseStorageOrderDetail.setWarehouseStorageCode(warehouseStorageCode1); + warehouseStorageOrderDetail.setWarehouseStorageType("1"); + warehouseStorageOrderDetail.setMaterialDeptType("0"); + warehouseStorageOrderDetail.setWarehouseDeptType("0"); + storageOrderDetailMapper.insertWarehouseStorageOrderDetail(warehouseStorageOrderDetail); + } + //入库代表为仓库部分的入库单 + warehouseStorageOrder.setWarehouseStorageCode(warehouseStorageCode1); + warehouseStorageOrder.setWarehouseStorageStatus("0"); + warehouseStorageOrder.setWarehouseStorageType("1"); + warehouseStorageOrder.setWarehouseOrderType("0"); + warehouseStorageOrder.setWarehouseDeptType("1"); + warehouseStorageOrder.setWarehouseStorageOrderDetailList(list2); + warehouseStorageOrderMapper.insertWarehouseStorageOrder(warehouseStorageOrder); - storageOrderDetailMapper.insertWarehouseStorageOrderDetail(warehouseStorageOrderDetail); } } - warehouseStorageOrder.setWarehouseStorageStatus("0"); - warehouseStorageOrder.setWarehouseQualityStatus("0"); - warehouseStorageOrder.setWarehouseStorageType("0"); - warehouseStorageOrder.setWarehouseOrderType("0"); - warehouseStorageOrder.setWarehouseStorageCode(warehouseStorageCode); - return warehouseStorageOrderMapper.insertWarehouseStorageOrder(warehouseStorageOrder); + return 0; + } + @Override + @Transactional(rollbackFor = Exception.class) + public ProcessInstance submitApply(PurchaseOrder purchaseOrder) { + SysUser user = ShiroUtils.getSysUser(); + purchaseOrder.setApplyUser(user.getLoginName()); + purchaseOrder.setApplyTime(DateUtils.getNowDate()); + insertPurchaseOrder(purchaseOrder); + // 启动流程 + String applyTitle = user.getUserName()+"发起了采购订单信息提交审批-"+DateUtils.dateTimeNow(); + String instanceType = "submit"; + ProcessInstance processInstance = startProcessInstance(applyTitle,instanceType,purchaseOrder, user); + String processInstanceId = processInstance.getProcessInstanceId(); + // 提交实例id + purchaseOrder.setSubmitInstanceId(processInstanceId); + // 存在提交完就流程结束的情况 + boolean processIsFinish = processService.judgeProcessIsFinish(processInstanceId); + if(processIsFinish){ + // 审核状态-审核通过 + purchaseOrder.setAuditStatus("1"); + // 使用状态-是 + purchaseOrder.setUseStatus("1"); + } + purchaseOrderMapper.updatePurchaseOrder(purchaseOrder); + return processInstance; + } + @Override + @Transactional(rollbackFor = Exception.class) + public ProcessInstance cancelPurchaseOrderById(Long id) { + PurchaseOrderVo purchaseOrderVo = purchaseOrderMapper.selectPurchaseOrderById(id); + // 审核状态-待审核 + purchaseOrderVo.setAuditStatus("0"); + SysUser user = ShiroUtils.getSysUser(); + // 启动流程 + String applyTitle = user.getUserName()+"发起了物料信息作废审批-"+DateUtils.dateTimeNow(); + String instanceType = "cancel"; + PurchaseOrder purchaseOrder = new PurchaseOrder(); + BeanUtils.copyProperties(purchaseOrderVo,purchaseOrder); + ProcessInstance processInstance = startProcessInstance(applyTitle,instanceType,purchaseOrder, user); + String processInstanceId = processInstance.getProcessInstanceId(); + // 作废实例id + purchaseOrder.setCancelInstanceId(processInstanceId); + // 存在提交完就流程结束的情况 + boolean processIsFinish = processService.judgeProcessIsFinish(processInstanceId); + if(processIsFinish){ + // 审核状态-审核通过 + purchaseOrder.setAuditStatus("1"); + // 使用状态-已作废 + purchaseOrder.setUseStatus("2"); + } + purchaseOrderMapper.updatePurchaseOrder(purchaseOrder); + return processInstance; + } + + @Override + public ProcessInstance restorePurchaseOrderById(Long id) { + PurchaseOrderVo purchaseOrderVo = purchaseOrderMapper.selectPurchaseOrderById(id); + // 审核状态-待审核 + purchaseOrderVo.setAuditStatus("0"); + SysUser user = ShiroUtils.getSysUser(); + // 启动流程 + String applyTitle = user.getUserName()+"发起了物料信息恢复审批-"+DateUtils.dateTimeNow(); + String instanceType = "restore"; + PurchaseOrder purchaseOrder = new PurchaseOrder(); + BeanUtils.copyProperties(purchaseOrderVo,purchaseOrder); + ProcessInstance processInstance = startProcessInstance(applyTitle,instanceType,purchaseOrder, user); + String processInstanceId = processInstance.getProcessInstanceId(); + // 恢复实例id + purchaseOrder.setRestoreInstanceId(processInstanceId); + // 存在提交完就流程结束的情况 + boolean processIsFinish = processService.judgeProcessIsFinish(processInstanceId); + if(processIsFinish){ + // 审核状态-审核通过 + purchaseOrder.setAuditStatus("1"); + // 使用状态-是 + purchaseOrder.setUseStatus("1"); + } + purchaseOrderMapper.updatePurchaseOrder(purchaseOrder); + return processInstance; + } + private ProcessInstance startProcessInstance(String applyTitle, String instanceType, PurchaseOrder purchaseOrder, SysUser user) { + Long materialId = purchaseOrder.getPurchaseOrderId(); + String businessKey = materialId.toString(); // 实体类 ID,作为流程的业务 key + String key = "material"; + Map variables = new HashMap<>(); + // 构造authority传参 + buildAuthority(user, variables); + purchaseOrder.setApplyTitle(applyTitle); + // 启动流程 + ProcessInstance processInstance = processService.submitApply(user.getLoginName(), businessKey, + applyTitle, purchaseOrder.getPurchaseOrderCode(), key, variables); + String processInstanceId = processInstance.getId(); + purchaseOrder.setInstanceId(processInstanceId); // 建立双向关系 + purchaseOrder.setInstanceType(instanceType); + return processInstance; + } + + private void buildAuthority(SysUser user, Map variables) { + Set roleKeys = roleService.selectRoleKeys(user.getUserId()); + // 角色不同审核人不同 + if(roleKeys.contains("fzjlRole") || roleKeys.contains("admin")){ + variables.put("authority",4); + }else if(roleKeys.contains("cgzgRole")){ + variables.put("authority",3); + }else if(roleKeys.contains("cgjlRole")){ + variables.put("authority",2); + }else if(roleKeys.contains("cgyRole")){ + variables.put("authority",1); + } } } diff --git a/ruoyi-admin/src/main/resources/mapper/purchase/PurchaseOrderChildMapper.xml b/ruoyi-admin/src/main/resources/mapper/purchase/PurchaseOrderChildMapper.xml index 423b7e9d..28123289 100644 --- a/ruoyi-admin/src/main/resources/mapper/purchase/PurchaseOrderChildMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/purchase/PurchaseOrderChildMapper.xml @@ -48,16 +48,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select purchase_order_child_id, purchase_order_code, purchase_plan_code,purchase_plan_correlation_code, - supplier_code, supplier_name, - material_code, material_name,material_type, material_describe,material_brand, - material_photoUrl, material_process_method,material_unit,warehouseDept, - material_no_rmb, material_rmb, material_num, - material_amount, material_sum, material_no_rmb_sum, material_rmb_sum, - material_real_num, material_real_no_rmb, material_real_rmb, material_real_no_rmb_sum, - material_real_rmb_sum,delivery_time,eceipt_status, payment_status, tax_rate, create_by, - create_time, update_by, update_time,del_flag, standby_one, standby_two - from purchase_order_child + select purchase_order_child_id, purchase_order_code, purchase_plan_code, purchase_plan_correlation_code, supplier_code, supplier_name, material_code, material_name, material_type, material_brand, material_ + `describe`, material_photoUrl, warehouseDept, material_process_method, material_unit, has_storage_num, notify_arrived_num, material_no_rmb, material_rmb, material_num, material_amount, + material_sum, material_no_rmb_sum, material_rmb_sum, material_real_num, material_real_no_rmb, material_real_rmb, material_real_no_rmb_sum, material_real_rmb_sum, delivery_time, eceipt_status, payment_status, tax_ + rate, create_by, create_time, update_by, update_time, del_flag, standby_one, standby_two from purchase_order_child \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/mapper/purchase/PurchaseOrderMapper.xml b/ruoyi-admin/src/main/resources/mapper/purchase/PurchaseOrderMapper.xml index 17056d48..e775bcea 100644 --- a/ruoyi-admin/src/main/resources/mapper/purchase/PurchaseOrderMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/purchase/PurchaseOrderMapper.xml @@ -3,8 +3,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - - + @@ -38,17 +37,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - - - - - - - - - - - @@ -57,6 +45,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + + + + + + + + + + @@ -65,21 +66,54 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" customer_contact, contact_number, customer_fax, delivery_address, payment_terms, delivery_conditions, delivery_method, purchase_name, billing_date, tax_rate, purchase_category, purchase_commander, customer_order_number, remark_content, - close_case_no, close_case_name, close_case_time, confirm_no, confirm_name, - confirm_time, audit_no, audit_name, audit_time, approve_no, approve_name, + close_case_no, close_case_name, close_case_time, del_flag, stock_no, stock_name, stock_address, stock_contact, stock_phone, - approve_time, standby_one, standby_two from purchase_order + approve_time, standby_one, standby_two, instance_id, instance_type, instance_type_name, + submit_instance_id, cancel_instance_id, restore_instance_id, apply_title, apply_user, apply_time, + create_time, create_by, update_time, update_by from purchase_order + select count(1) from purchase_order where purchase_ordre_code = #{purchaseOrderCode} limit 1 + delete from purchase_order where purchase_order_id in diff --git a/ruoyi-admin/src/main/resources/templates/purchase/purchaseOrder/addPurchaseStorage.html b/ruoyi-admin/src/main/resources/templates/purchase/purchaseOrder/addPurchaseStorage.html index 9235ef9e..7e09361b 100644 --- a/ruoyi-admin/src/main/resources/templates/purchase/purchaseOrder/addPurchaseStorage.html +++ b/ruoyi-admin/src/main/resources/templates/purchase/purchaseOrder/addPurchaseStorage.html @@ -4,9 +4,7 @@ diff --git a/ruoyi-admin/src/main/resources/templates/purchase/purchasePlan/addPurchaseOrder.html b/ruoyi-admin/src/main/resources/templates/purchase/purchasePlan/addPurchaseOrder.html index 34d2d5c9..f18c051d 100644 --- a/ruoyi-admin/src/main/resources/templates/purchase/purchasePlan/addPurchaseOrder.html +++ b/ruoyi-admin/src/main/resources/templates/purchase/purchasePlan/addPurchaseOrder.html @@ -4,6 +4,7 @@ +
@@ -56,25 +57,25 @@
- +
- +
- +
- +
@@ -188,7 +189,7 @@ '
' + '' + '
' + - '' + + '' + '
' + '
' + '
' + @@ -220,10 +221,15 @@ }); // 给实际采购数的输入框绑定事件处理器 $('.supplierMaterialNum').off('keyup').on('keyup', function(event,element) { + //实际采购数不能超过计划采购数 var tableId = $(element).closest('.table-materialCode').attr('id'); if (event.keyCode === 13) { // 获取当前供应商的采购数量 var purchaseNum = parseFloat($(event).val()) || 0; + if (purchaseNum > parseFloat($(event).closest('.supplier-card').find('.supplierMaterialNum').text().trim())) { + $(event).val($(event).closest('.supplier-card').find('.supplierMaterialNum').text().trim()); + purchaseNum = parseFloat($(event).val()) || 0; + } // 获取当前供应商的采购价格 var noRmbPrice = parseFloat($(event).closest('.supplier-card').find('.supplierMaterialNoRmb').text().trim()); var rmbPrice = parseFloat($(event).closest('.supplier-card').find('.supplierMaterialRmb').text().trim()); @@ -250,41 +256,45 @@ var actualPurchaseTotal = 0; var materialNoRmbTotal = 0; var materialRmbTotal = 0; - - $('#' + 'supplier-' + tableId).find('.supplier-card').each(function(supplierIndex, supplierCard) { - var purchaseNum = parseFloat($(supplierCard).find('.supplierMaterialNum').val()) || 0; - var noRmbPrice = parseFloat($(supplierCard).find('.supplierMaterialNoRmb').text().trim()); - var rmbPrice = parseFloat($(supplierCard).find('.supplierMaterialRmb').text().trim()); - - actualPurchaseTotal += purchaseNum; - materialNoRmbTotal += purchaseNum * noRmbPrice; - materialRmbTotal += purchaseNum * rmbPrice; - }); - // 更新合计显示 - $('#materialNoRmbSum_' + tableId).val(materialNoRmbTotal.toFixed(2)); // 格式化为两位小数 - $('#materialRmbSum_' + tableId).val(materialRmbTotal.toFixed(2)); - } - function calculateGlobalTotals() { var totalMaterialSum = 0; var totalPurchaseSum = 0; - var totalNoRmbSum = 0; - var totalRmbSum = 0; - tableIdList.forEach(function(tableId) { - var materialNoRmbTotal = parseFloat($('#materialNoRmbSum_' + tableId).val()) || 0; - var materialRmbTotal = parseFloat($('#materialRmbSum_' + tableId).val()) || 0; - - totalMaterialSum += materialNoRmbTotal; // 假设物料合计就是不含税采购总价 - totalPurchaseSum += materialNoRmbTotal; // 假设采购合计也是不含税采购总价(如果逻辑不同,请相应调整) - totalNoRmbSum += materialNoRmbTotal; - totalRmbSum += materialRmbTotal; - }); + $('#' + 'supplier-' + tableId).find('.supplier-card').each(function (supplierIndex, supplierCard) { + var purchaseNum = parseFloat($(supplierCard).find('.supplierMaterialNum').val()) || 0; + var noRmbPrice = parseFloat($(supplierCard).find('.supplierMaterialNoRmb').text().trim()); + var rmbPrice = parseFloat($(supplierCard).find('.supplierMaterialRmb').text().trim()); + if (purchaseNum > 0) { + // 如果采购数量大于0,则显示供应商采购总价 + $(supplierCard).find('.supplierPurchaseTotal').removeClass('hidden'); + $(supplierCard).find('.supplierPurchaseTotalRmb').removeClass('hidden'); + } else { + // 否则隐藏供应商采购总价 + $(supplierCard).find('.supplierPurchaseTotal').addClass('hidden'); + $(supplierCard).find('.supplierPurchaseTotalRmb').addClass('hidden'); + } + //物料的供应商合计 + totalMaterialSum += purchaseNum; + if (rmbPrice) { + totalPurchaseSum += purchaseNum * rmbPrice; + } + if (noRmbPrice) { + totalNoRmbSum += purchaseNum * noRmbPrice; + } + if (noRmbPrice) { + totalNoRmbSum += purchaseNum * noRmbPrice; + } + $('#purchaseMaterialSum').val(isNaN(totalMaterialSum) ? '' : totalMaterialSum.toFixed(2)); + $('#purchaseSum').val(isNaN(totalPurchaseSum) ? '' : totalPurchaseSum.toFixed(2)); + $('#purchaseNoRmbSum').val(isNaN(totalNoRmbSum) ? '' : totalNoRmbSum.toFixed(2)); + }) + }) // 设置合计值,确保处理NaN $('#purchaseMaterialSum').val(isNaN(totalMaterialSum) ? '' : totalMaterialSum.toFixed(2)); $('#purchaseSum').val(isNaN(totalPurchaseSum) ? '' : totalPurchaseSum.toFixed(2)); $('#purchaseNoRmbSum').val(isNaN(totalNoRmbSum) ? '' : totalNoRmbSum.toFixed(2)); $('#purchaseRmbSum').val(isNaN(totalRmbSum) ? '' : totalRmbSum.toFixed(2)); } + function tableSetup(element, tableId) { var $totalSection = $( '
' + @@ -350,22 +360,6 @@ ], }); } - function selectSupplierQuote(){ - $('.table-materialCode').each(function(index, tableElement) { - var tableId = tableIdList[index]; - let materialObj = materialList[index]; - if (typeof materialObj === 'undefined') return; - $('#' + 'material-' + tableId).find('.supplier-card').each(function(supplierIndex, supplierCard) { - var supplierCode = $(supplierCard).find('.supplierCode').text().trim(); - var supplierName = $(supplierCard).find('.supplierName').text().trim(); - var materialRealNum = parseInt($(supplierCard).find('.supplierMaterialNum').val(), 10) || 0; - var materialRealRmb = parseInt($(supplierCard).find('.supplierMaterialRmb').val(), 10) || 0; - var materialRealNoRmb = parseInt($(supplierCard).find('.supplierMaterialNoRmb').val(), 10) || 0; - //计划供应商下面的采购数量 - purchaseOrder.purchaseOrderChildList.push(materialData); - }); - }); - } function submitHandler() { if ($.validate.form()) { var purchaseOrder = { @@ -454,14 +448,16 @@ processResults: function (data) { var resultList = data; var options = []; - for (var i = 0; i < resultList.length; i++) { - var result = resultList[i]; - options.push({id: result.stockNo, text: result.stockNo}); + for(var i= 0, len=resultList.length;i diff --git a/ruoyi-admin/src/main/resources/templates/purchase/purchasePlan/purchasePlan.html b/ruoyi-admin/src/main/resources/templates/purchase/purchasePlan/purchasePlan.html index e1509241..4a8f317a 100644 --- a/ruoyi-admin/src/main/resources/templates/purchase/purchasePlan/purchasePlan.html +++ b/ruoyi-admin/src/main/resources/templates/purchase/purchasePlan/purchasePlan.html @@ -103,9 +103,7 @@ }, {title: '采购计划单号',field: 'purchasePlanCode'}, {title: '关联单号', field: 'correlationCode',}, - {title: '采购来源',field: 'purchasePlanType', - formatter: function(value, row, index) {return $.table.selectDictLabel(purchasePlanTypeDatas, value);} - }, + {title: '采购来源',field: 'purchasePlanType',formatter: function(value, row, index) {return $.table.selectDictLabel(purchasePlanTypeDatas, value);}}, {title: '物料合计',field: 'materialAmount',}, {title: '数量总计', field: 'materialSum',}, {title: '不含税总价(RMB)',field: 'noRmbSum',},