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 50fc93eb..5c2ea0e2 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 @@ -214,15 +214,13 @@ public class PurchaseOrderController extends BaseController /** * 新增采购入库通知单 */ - @RequiresPermissions("purchase:purchaseOrder:addPurchaseOrderStorage") + @RequiresPermissions("purchase:purchaseOrder:addPurchaseStorage") @Log(title = "采购订单", businessType = BusinessType.INSERT) - @PostMapping("/addPurchaseOrderStorageSave") + @PostMapping("/addPurchaseStorage") @ResponseBody - public AjaxResult addPurchaseOrderStorageSave(@RequestBody WarehouseStorageOrder warehouseStorageOrder) { - // 数据校验,确保前端传入数据格式正确 - // 生成采购订单编号 - // 执行主表插入操作 - return toAjax(purchaseOrderService.addPurchaseOrderStorage(warehouseStorageOrder)); // 假设toAjax方法处理成功逻辑 + public AjaxResult addPurchaseStorageSave(@RequestBody PurchaseOrder purchaseOrder) { + + return toAjax(purchaseOrderService.addPurchaseStorageSave(purchaseOrder)); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/purchase/controller/PurchaseStorageController.java b/ruoyi-admin/src/main/java/com/ruoyi/purchase/controller/PurchaseStorageController.java index d4a20160..7f4de215 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/purchase/controller/PurchaseStorageController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/purchase/controller/PurchaseStorageController.java @@ -1,6 +1,9 @@ package com.ruoyi.purchase.controller; import java.util.List; + +import com.ruoyi.purchase.domain.PurchaseStorageChild; +import com.ruoyi.purchase.service.IPurchaseStorageChildService; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; @@ -34,6 +37,10 @@ public class PurchaseStorageController extends BaseController @Autowired private IPurchaseStorageService purchaseStorageService; + @Autowired + private IPurchaseStorageChildService purchaseStorageChildService; + + @RequiresPermissions("purchase:purchaseStorage:view") @GetMapping() public String purchaseStorage() @@ -112,6 +119,46 @@ public class PurchaseStorageController extends BaseController return toAjax(purchaseStorageService.updatePurchaseStorage(purchaseStorage)); } + + /** + * 采购入库单详情 + * + * */ + @GetMapping("/detail/{purchaseStorageId}") + public String detail(@PathVariable("purchaseStorageId") Long purchaseStorageId, ModelMap mmap) + { + PurchaseStorage purchaseStorage = purchaseStorageService.selectPurchaseStorageById(purchaseStorageId); + mmap.put("purchaseStorage", purchaseStorage); + return prefix + "/detail"; + } + + /** + * 修改保存采购入库单详情 + */ + @Log(title = "采购入库单", businessType = BusinessType.UPDATE) + @PostMapping("/detail") + @ResponseBody + public AjaxResult detailSave(PurchaseStorage purchaseStorage) + { + return toAjax(purchaseStorageService.detailPurchaseStorage(purchaseStorage)); + } + + + /** + * 查询采购入库单详情物料信息 + */ + @PostMapping("/selectStorageChildMaterialList") + @ResponseBody + public TableDataInfo selectStorageChildMaterialList(PurchaseStorage purchaseStorage) + { + startPage(); + + String warehouseStorageCode = purchaseStorage.getWarehouseStorageCode(); + List list = purchaseStorageChildService.selectPurchaseStorageChildListByCode(warehouseStorageCode); + 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 55ddc6e9..fb1e7667 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 @@ -31,8 +31,8 @@ public class PurchaseOrder extends BaseEntity @Excel(name = "采购计划单号") private String purchasePlanCode; - /** 采购入库状态(0待采购、1采购中、2待暂收、3部分暂收、4全部暂收、5已暂收、6待入库、7部分入库、8全部入库、9已入库) */ - @Excel(name = "采购入库状态",dictType = "eceiptStatus") + /** 入库状态(0待暂收、1已暂收、2待入库、3部分入库、4全部入库) */ + @Excel(name = "采购入库状态",dictType = "warehouse_storage_status") private String warehouseStorageStatus; /** 打款结案状态(0待打款、1部分打款、2全部打款、3部分结案、4已结案) */ @@ -67,6 +67,11 @@ public class PurchaseOrder extends BaseEntity @Excel(name = "入库数") private Integer storageSum; + /** 通知已到货总数 */ + @Excel(name = "通知已到货总数") + private Integer notifyHasArrivedSum; + + /** 不含税总价(RMB) */ @Excel(name = "不含税总价(RMB)") private BigDecimal noRmbSum; @@ -249,6 +254,14 @@ public class PurchaseOrder extends BaseEntity return noRmbSum; } + public Integer getNotifyHasArrivedSum() { + return notifyHasArrivedSum; + } + + public void setNotifyHasArrivedSum(Integer notifyHasArrivedSum) { + this.notifyHasArrivedSum = notifyHasArrivedSum; + } + public void setNoRmbSum(BigDecimal noRmbSum) { this.noRmbSum = noRmbSum; } @@ -457,6 +470,7 @@ public class PurchaseOrder extends BaseEntity .append("sharedInventoryOccupancySum", getSharedInventoryOccupancySum()) .append("refundsExchangesSum", getRefundsExchangesSum()) .append("storageSum", getStorageSum()) + .append("notifyHasArrivedSum", getNotifyHasArrivedSum()) .append("noRmbSum", getNoRmbSum()) .append("rmbSum", getRmbSum()) .append("eceiptType", getEceiptType()) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/purchase/mapper/PurchaseStorageChildMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/purchase/mapper/PurchaseStorageChildMapper.java index 9dcd401f..f0163dc3 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/purchase/mapper/PurchaseStorageChildMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/purchase/mapper/PurchaseStorageChildMapper.java @@ -74,4 +74,14 @@ public interface PurchaseStorageChildMapper * @return 结果 */ public int restorePurchaseStorageChildById(Long purchaseStorageChildId); + + /** + * 批量新增采购入库单子表 + * */ + int insertBatchPurchaseStorageChild(List purchaseStorageChildren); + + /** + * 根据采购入库单号查询采购入库单子表 + * */ + List selectPurchaseStorageChildListByCode(String warehouseStorageCode); } 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 40052372..06bff188 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 @@ -122,4 +122,9 @@ public interface IPurchaseOrderService AjaxResult uploadSingleFile(MultipartFile file,String purchaseOrderCode); + /** + * 创建采购入库单 + * */ + + int addPurchaseStorageSave(PurchaseOrder purchaseOrder); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/IPurchaseQuoteService.java b/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/IPurchaseQuoteService.java index 003a3138..8ef72f7d 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/IPurchaseQuoteService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/IPurchaseQuoteService.java @@ -76,7 +76,7 @@ public interface IPurchaseQuoteService */ ProcessInstance cancelPurchaseQuoteById(Long purchaseQuoteId); - @Transactional(rollbackFor = Exception.class) + ProcessInstance submitApply(PurchaseQuote purchaseQuote); /** diff --git a/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/IPurchaseStorageChildService.java b/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/IPurchaseStorageChildService.java index 8bd07eac..f8e61e34 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/IPurchaseStorageChildService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/IPurchaseStorageChildService.java @@ -72,4 +72,9 @@ public interface IPurchaseStorageChildService * @return */ int restorePurchaseStorageChildById(Long purchaseStorageChildId); + + /** + * 通过采购入库单号查询采购入库单子表 + * */ + List selectPurchaseStorageChildListByCode(String warehouseStorageCode); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/IPurchaseStorageService.java b/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/IPurchaseStorageService.java index 22dc2dd7..0ecd03b7 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/IPurchaseStorageService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/IPurchaseStorageService.java @@ -72,4 +72,10 @@ public interface IPurchaseStorageService * @return */ int restorePurchaseStorageById(Long purchaseStorageId); + + /** + * 保存采购入库单详情 + * + * */ + int detailPurchaseStorage(PurchaseStorage purchaseStorage); } 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 69273fba..86cdf310 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 @@ -31,10 +31,7 @@ import com.ruoyi.process.general.service.IProcessService; import com.ruoyi.process.todoitem.mapper.BizTodoItemMapper; import com.ruoyi.purchase.domain.*; import com.ruoyi.purchase.domain.Vo.*; -import com.ruoyi.purchase.mapper.PurchaseOrderChildMapper; -import com.ruoyi.purchase.mapper.PurchaseOrderMapper; -import com.ruoyi.purchase.mapper.PurchasePlanChildMapper; -import com.ruoyi.purchase.mapper.PurchasePlanMapper; +import com.ruoyi.purchase.mapper.*; import com.ruoyi.purchase.service.IPurchaseOrderService; import com.ruoyi.system.domain.SysAttachFile; import com.ruoyi.system.domain.SysCompanyInformation; @@ -97,12 +94,23 @@ public class PurchaseOrderServiceImpl implements IPurchaseOrderService @Autowired private PurchasePlanMapper purchasePlanMapper; + + @Autowired + private PurchaseStorageMapper purchaseStorageMapper; + + + @Autowired + private PurchaseStorageChildMapper purchaseStorageChildMapper; + @Autowired private RedisCache redisCache; @Autowired private WarehouseStorageOrderMapper warehouseStorageOrderMapper; + @Autowired + private WarehouseStorageOrderDetailMapper warehouseStorageOrderDetailMapper; + @Autowired private WarehouseStorageOrderDetailMapper storageOrderDetailMapper; @@ -1156,6 +1164,245 @@ public class PurchaseOrderServiceImpl implements IPurchaseOrderService } + /** + * 创建采购入库单 + * */ + @Transactional(rollbackFor = Exception.class) + @Override + public int addPurchaseStorageSave(PurchaseOrder purchaseOrder) { + Long purchaseOrderId = purchaseOrder.getPurchaseOrderId(); + + List purchaseOrderChildList = purchaseOrder.getPurchaseOrderChildList(); + + + //过滤掉通知已到货数为空的数据 + purchaseOrderChildList = purchaseOrderChildList.stream().filter(item -> item.getNotifyArriveNum() != null).collect(Collectors.toList()); + + boolean allNotifyArriveNum = purchaseOrderChildList.stream().allMatch(item -> item.getNotifyArriveNum() == 0); + if (allNotifyArriveNum){ + throw new BusinessException("通知到货数不能都为0"); + } + + + //过滤掉通知到货数为0的数据 + List filterPurchaseOrderChildList = purchaseOrderChildList.stream().filter(item -> item.getNotifyArriveNum() != 0).collect(Collectors.toList()); + + + purchaseOrder = purchaseOrderMapper.selectPurchaseOrderById(purchaseOrderId); + + + String warehouseStorageCode = redisCache.generateBillNo("RK"); + + + //生成采购入库单子表 + buildPurchaseStorageChild(purchaseOrder, warehouseStorageCode,filterPurchaseOrderChildList); + + //生成采购入库单主表 + buildPurchaseStorage(purchaseOrder, filterPurchaseOrderChildList, warehouseStorageCode); + + //生成仓库入库单 + buildWarehouseStorage(purchaseOrder, warehouseStorageCode,filterPurchaseOrderChildList); + + //生成仓库入库单子表 + buildWarehouseChild(purchaseOrder, warehouseStorageCode,filterPurchaseOrderChildList); + + int allNotifyArrivedNum = filterPurchaseOrderChildList.stream().mapToInt(PurchaseOrderChild::getNotifyArriveNum).sum(); + int allNotifyHasArrivedNum = filterPurchaseOrderChildList.stream().mapToInt(PurchaseOrderChild::getNotifyHasArrivedNum).sum(); + + if (purchaseOrder.getNotifyHasArrivedSum() == null || purchaseOrder.getNotifyHasArrivedSum() == 0 ){ + purchaseOrder.setNotifyHasArrivedSum(allNotifyArrivedNum); + }else { + purchaseOrder.setNotifyHasArrivedSum(allNotifyArrivedNum + purchaseOrder.getNotifyHasArrivedSum()); + } + + + //更新采购订单子表 + updatePurchaseOrderChildData(purchaseOrder, filterPurchaseOrderChildList); + + if (purchaseOrder.getNotifyHasArrivedSum().equals(purchaseOrder.getActualPurchaseSum())){ + purchaseOrder.setWarehouseStorageStatus("4"); + }if (purchaseOrder.getNotifyHasArrivedSum() < purchaseOrder.getActualPurchaseSum()){ + purchaseOrder.setWarehouseStorageStatus("3"); + } + + return purchaseOrderMapper.updatePurchaseOrder(purchaseOrder); + } + + //采购入库更新采购订单子表的数据 + private void updatePurchaseOrderChildData(PurchaseOrder purchaseOrder, List filterPurchaseOrderChildList) { + + for (PurchaseOrderChild purchaseOrderChild : filterPurchaseOrderChildList) { + if (purchaseOrderChild.getNotifyHasArrivedNum() == null || purchaseOrderChild.getNotifyHasArrivedNum() == 0){ + purchaseOrderChild.setNotifyHasArrivedNum(purchaseOrderChild.getNotifyArriveNum()); + }else { + purchaseOrderChild.setNotifyHasArrivedNum(purchaseOrderChild.getNotifyHasArrivedNum() + purchaseOrderChild.getNotifyArriveNum()); + } + int updatePurchaseOrderChild = purchaseOrderChildMapper.updatePurchaseOrderChild(purchaseOrderChild); + if (updatePurchaseOrderChild <= 0){ + throw new BusinessException("更新采购订单子表数据失败"); + } + } + } + + + //采购入库生成采购入库单主表 + private void buildPurchaseStorage(PurchaseOrder purchaseOrder, List filterPurchaseOrderChildList, String warehouseStorageCode) { + PurchaseStorage purchaseStorage = new PurchaseStorage(); + + PurchaseOrderChild purchaseOrderChild = filterPurchaseOrderChildList.get(0); + purchaseStorage.setWarehouseStorageStatus("0"); + purchaseStorage.setWarehouseStorageType("5"); + purchaseStorage.setWarehouseDeptType(purchaseOrderChild.getWarehouseDept()); + purchaseStorage.setWarehouseQualityStatus("0"); + purchaseStorage.setWarehouseOrderType("0"); + + + purchaseStorage.setArrivedTime(purchaseOrder.getArrivedTime()); + purchaseStorage.setRelatedOrderCode(purchaseOrder.getPurchaseOrderCode()); + purchaseStorage.setSupplierCode(purchaseOrder.getSupplierCode()); + purchaseStorage.setSupplierName(purchaseOrder.getSupplierName()); + purchaseStorage.setWarehouseStorageCode(warehouseStorageCode); + + int allNotifyArrivedNum = filterPurchaseOrderChildList.stream().mapToInt(PurchaseOrderChild::getNotifyArriveNum).sum(); + int allNotifyHasArrivedNum = filterPurchaseOrderChildList.stream().mapToInt(PurchaseOrderChild::getNotifyHasArrivedNum).sum(); + + if (allNotifyHasArrivedNum == 0){ + purchaseStorage.setNotifyArrivedSum(allNotifyArrivedNum); + }else { + purchaseStorage.setNotifyArrivedSum(allNotifyHasArrivedNum + allNotifyArrivedNum); + } + int insertResult = purchaseStorageMapper.insertPurchaseStorage(purchaseStorage); + if (insertResult <= 0){ + throw new BusinessException("生成采购入库单数据失败"); + } + + } + + //采购入库生成仓库入库主表数据 + private void buildWarehouseStorage(PurchaseOrder purchaseOrder, String warehouseStorageCode, List filterPurchaseOrderChildList) { + + PurchaseOrderChild purchaseOrderChild = filterPurchaseOrderChildList.get(0); + WarehouseStorageOrder warehouseStorageOrder = new WarehouseStorageOrder(); + warehouseStorageOrder.setWarehouseStorageCode(warehouseStorageCode); + warehouseStorageOrder.setWarehouseStorageStatus("0"); + warehouseStorageOrder.setWarehouseStorageType("5"); + warehouseStorageOrder.setWarehouseDeptType(purchaseOrderChild.getWarehouseDept()); + warehouseStorageOrder.setWarehouseQualityStatus("0"); + warehouseStorageOrder.setWarehouseOrderType("0"); + warehouseStorageOrder.setArrivedTime(purchaseOrder.getArrivedTime()); + int allNotifyArrivedNum = filterPurchaseOrderChildList.stream().mapToInt(PurchaseOrderChild::getNotifyArriveNum).sum(); + int allNotifyHasArrivedNum = filterPurchaseOrderChildList.stream().mapToInt(PurchaseOrderChild::getNotifyHasArrivedNum).sum(); + if (allNotifyHasArrivedNum == 0){ + warehouseStorageOrder.setNotifyArrivedNum(allNotifyArrivedNum); + }else { + warehouseStorageOrder.setNotifyArrivedNum(allNotifyHasArrivedNum + allNotifyArrivedNum); + } + warehouseStorageOrder.setArrivedTime(purchaseOrder.getArrivedTime()); + warehouseStorageOrder.setRelatedOrderCode(purchaseOrder.getPurchaseOrderCode()); + warehouseStorageOrder.setCreateTime(new Date()); + warehouseStorageOrder.setCreateBy(ShiroUtils.getLoginName()); + + int insertResult = warehouseStorageOrderMapper.insertWarehouseStorageOrder(warehouseStorageOrder); + if (insertResult <= 0){ + throw new BusinessException("生成仓库入库单数据失败"); + } + + } + + //采购入库生成仓库入库子表数据 + private void buildWarehouseChild(PurchaseOrder purchaseOrder, String warehouseStorageCode, List filterPurchaseOrderChildList) { + + String purchaseOrderCode = purchaseOrder.getPurchaseOrderCode(); + List warehouseStorageOrderDetailChildren = new ArrayList<>(); + for (PurchaseOrderChild purchaseOrderChild : filterPurchaseOrderChildList) { + WarehouseStorageOrderDetail warehouseStorageOrderDetail = new WarehouseStorageOrderDetail(); + warehouseStorageOrderDetail.setWarehouseStorageCode(warehouseStorageCode); + warehouseStorageOrderDetail.setRelatedOrderCode(purchaseOrderCode); + warehouseStorageOrderDetail.setMaterialNo(purchaseOrderChild.getMaterialNo()); + warehouseStorageOrderDetail.setMaterialName(purchaseOrderChild.getMaterialName()); + warehouseStorageOrderDetail.setMaterialPhotourl(purchaseOrderChild.getMaterialPhotourl()); + warehouseStorageOrderDetail.setMaterialBrand(purchaseOrderChild.getMaterialBrand()); + warehouseStorageOrderDetail.setMaterialDescribe(purchaseOrderChild.getMaterialDescribe()); + warehouseStorageOrderDetail.setMaterialModel(purchaseOrderChild.getMaterialModel()); + warehouseStorageOrderDetail.setMaterialProcessMethod(purchaseOrderChild.getMaterialProcessMethod()); + warehouseStorageOrderDetail.setMaterialUnit(purchaseOrderChild.getMaterialUnit()); + warehouseStorageOrderDetail.setMaterialPhotourl(purchaseOrderChild.getMaterialPhotourl()); + warehouseStorageOrderDetail.setMaterialType(purchaseOrderChild.getMaterialType()); + warehouseStorageOrderDetail.setMaterialDeptType(purchaseOrderChild.getWarehouseDept()); + warehouseStorageOrderDetail.setArrivedTime(purchaseOrderChild.getPlanDeliveryTime()); + warehouseStorageOrderDetail.setSupplierCode(purchaseOrder.getSupplierCode()); + warehouseStorageOrderDetail.setSupplierName(purchaseOrder.getSupplierName()); + warehouseStorageOrderDetail.setCreateTime(new Date()); + warehouseStorageOrderDetail.setCreateBy(ShiroUtils.getLoginName()); + Integer notifyArriveNum = purchaseOrderChild.getNotifyArriveNum(); + Integer notifyHasArrivedNum = purchaseOrderChild.getNotifyHasArrivedNum(); + + //通知到货数<= 实际采购数 + if (notifyArriveNum > purchaseOrderChild.getActualPurchaseNum()){ + throw new BusinessException("通知到货数不能大于实际采购数"); + } + + if (notifyHasArrivedNum == null){ + warehouseStorageOrderDetail.setNotifyHasArrivedNum(notifyArriveNum); + }else { + warehouseStorageOrderDetail.setNotifyHasArrivedNum(notifyHasArrivedNum + notifyArriveNum); + } + warehouseStorageOrderDetailChildren.add(warehouseStorageOrderDetail); + } + int result = warehouseStorageOrderDetailMapper.insertBatchWarehouseStorageOrderDetail(warehouseStorageOrderDetailChildren); + if (result <= 0){ + throw new RuntimeException("生成仓库入库子表数据失败"); + } + } + + + + + //采购入库生成采购入库子表数据 + private void buildPurchaseStorageChild(PurchaseOrder purchaseOrder, String warehouseStorageCode, List purchaseOrderChildList) { + String purchaseOrderCode = purchaseOrder.getPurchaseOrderCode(); + List purchaseStorageChildren = new ArrayList<>(); + for (PurchaseOrderChild purchaseOrderChild : purchaseOrderChildList) { + PurchaseStorageChild purchaseStorageChild = new PurchaseStorageChild(); + purchaseStorageChild.setWarehouseStorageCode(warehouseStorageCode); + purchaseStorageChild.setRelatedOrderCode(purchaseOrderCode); + purchaseStorageChild.setMaterialNo(purchaseOrderChild.getMaterialNo()); + purchaseStorageChild.setMaterialName(purchaseOrderChild.getMaterialName()); + purchaseStorageChild.setMaterialBrand(purchaseOrderChild.getMaterialBrand()); + purchaseStorageChild.setMaterialDescribe(purchaseOrderChild.getMaterialDescribe()); + purchaseStorageChild.setMaterialPhotourl(purchaseOrderChild.getMaterialPhotourl()); + purchaseStorageChild.setMaterialModel(purchaseOrderChild.getMaterialModel()); + purchaseStorageChild.setMaterialProcessMethod(purchaseOrderChild.getMaterialProcessMethod()); + purchaseStorageChild.setMaterialUnit(purchaseOrderChild.getMaterialUnit()); + purchaseStorageChild.setMaterialPhotourl(purchaseOrderChild.getMaterialPhotourl()); + purchaseStorageChild.setMaterialType(purchaseOrderChild.getMaterialType()); + purchaseStorageChild.setMaterialDeptType(purchaseOrderChild.getWarehouseDept()); + purchaseStorageChild.setArrivedTime(purchaseOrderChild.getPlanDeliveryTime()); + purchaseStorageChild.setSupplierCode(purchaseOrder.getSupplierCode()); + purchaseStorageChild.setSupplierName(purchaseOrder.getSupplierName()); + purchaseStorageChild.setCreateTime(new Date()); + purchaseStorageChild.setCreateBy(ShiroUtils.getLoginName()); + Integer notifyArriveNum = purchaseOrderChild.getNotifyArriveNum(); + Integer notifyHasArrivedNum = purchaseOrderChild.getNotifyHasArrivedNum(); + + //通知到货数<= 实际采购数 + if (notifyArriveNum > purchaseOrderChild.getActualPurchaseNum()){ + throw new BusinessException("通知到货数不能大于实际采购数"); + } + + if (notifyHasArrivedNum == null){ + purchaseStorageChild.setNotifyHasArrivedNum(notifyArriveNum); + }else { + purchaseStorageChild.setNotifyHasArrivedNum(notifyHasArrivedNum + notifyArriveNum); + } + purchaseStorageChildren.add(purchaseStorageChild); + } + int result = purchaseStorageChildMapper.insertBatchPurchaseStorageChild(purchaseStorageChildren); + if (result <= 0){ + throw new RuntimeException("生成采购入库子表数据失败"); + } + } + /** * 启动流程实例 * */ diff --git a/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/impl/PurchaseQuoteServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/impl/PurchaseQuoteServiceImpl.java index 5912efac..90d0add4 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/impl/PurchaseQuoteServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/impl/PurchaseQuoteServiceImpl.java @@ -420,15 +420,16 @@ public class PurchaseQuoteServiceImpl implements IPurchaseQuoteService private void buildAuthority(SysUser user, Map variables) { Set roleKeys = roleService.selectRoleKeys(user.getUserId()); + variables.put("cgjlExist",false); + + // 角色不同审核人不同 if(roleKeys.contains("cgyRole")){ variables.put("authority",1); }else if(roleKeys.contains("cgjlRole")){ - variables.put("authority",2); - }else if(roleKeys.contains("cgzgRole")){ + variables.put("cgjlExist",true); + }else if(roleKeys.contains("admin")){ variables.put("authority",3); - } - // 角色不同审核人不同 - if(roleKeys.contains("admin")){ + }else if(roleKeys.contains("fzjlRole")){ variables.put("authority",4); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/impl/PurchaseStorageChildServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/impl/PurchaseStorageChildServiceImpl.java index 330f3673..b00d5d7f 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/impl/PurchaseStorageChildServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/impl/PurchaseStorageChildServiceImpl.java @@ -46,6 +46,17 @@ public class PurchaseStorageChildServiceImpl implements IPurchaseStorageChildSer return purchaseStorageChildMapper.selectPurchaseStorageChildList(purchaseStorageChild); } + /** + * 根据采购入库单号查询采购入库单子表列表 + * + * @param warehouseStorageCode 采购入库单号 + * @return 采购入库单子表 + */ + @Override + public List selectPurchaseStorageChildListByCode(String warehouseStorageCode) { + return purchaseStorageChildMapper.selectPurchaseStorageChildListByCode(warehouseStorageCode); + } + /** * 新增采购入库单子表 * diff --git a/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/impl/PurchaseStorageServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/impl/PurchaseStorageServiceImpl.java index e20cbef3..edb384cd 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/impl/PurchaseStorageServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/impl/PurchaseStorageServiceImpl.java @@ -76,6 +76,18 @@ public class PurchaseStorageServiceImpl implements IPurchaseStorageService return purchaseStorageMapper.updatePurchaseStorage(purchaseStorage); } + + /** + * 详情采购入库单 + * + * @param purchaseStorage 采购入库单 + * @return 结果 + */ + @Override + public int detailPurchaseStorage(PurchaseStorage purchaseStorage) { + return 1; + } + /** * 删除采购入库单对象 * diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/controller/SysSupplierController.java b/ruoyi-admin/src/main/java/com/ruoyi/system/controller/SysSupplierController.java index 878ae357..e25a9675 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/controller/SysSupplierController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/controller/SysSupplierController.java @@ -16,6 +16,7 @@ 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.process.general.service.IProcessService; import com.ruoyi.system.domain.*; import com.ruoyi.system.domain.Vo.SysSupplierVo; @@ -95,35 +96,10 @@ public class SysSupplierController extends BaseController @ResponseBody public TableDataInfo list(SysSupplier sysSupplier) { - try { + startPage(); List list = sysSupplierService.selectSysSupplierList(sysSupplier); - SysUser curUser = ShiroUtils.getSysUser(); - String loginName = ShiroUtils.getLoginName(); - Long userId = curUser.getUserId(); - Set roleKeys = roleService.selectRoleKeys(userId); -// List sysUserlist = sysUserService.selectRoleToUserList("cgyRole"); -// sysUserlist.add(curUser); - //如果主管审批,查看当前自己部门的审核 - //如果经理审计需要查询自己部门下所有业务员的提交的订单,以及自身的提交的订单 -// if (roleKeys.contains("cgjlRole")) { -// List findUser = sysUserlist.stream().filter(item -> (item.getDeptId().equals(curUser.getDeptId()))).collect(Collectors.toList()); -// Set user = findUser.stream().map(SysUser::getLoginName).collect(Collectors.toSet()); -// startPage(); -// List list2 = list.stream().filter(item -> user.contains(item.getCreateBy())).collect(Collectors.toList()); -// return getDataTable(list2); -// } - // 业务员角色只能看到自己创建的数据 - if (roleKeys.contains("cgyRole")) { - sysSupplier.setCreateBy(curUser.getLoginName()); - startPage(); - List list2 = sysSupplierService.selectSysSupplierList(sysSupplier); - return getDataTable(list2); - } return getDataTable(list); - }catch(NullPointerException e){ - throw new NullPointerException("当前用户没有申请客户资料"); - } } /** @@ -220,53 +196,25 @@ public class SysSupplierController extends BaseController } - //导出 + /** + * 导出供应商资料列表 + */ + @RequiresPermissions("system:supplier:export") @Log(title = "供应商资料", businessType = BusinessType.EXPORT) - @RequestMapping("/exportSupplierInfo") + @PostMapping("/export") @ResponseBody - public void exportSupplierInfo(@RequestBody String selectData, HttpServletResponse response) throws IOException { - - //数据处理 - JSONObject jsonObject = (JSONObject) JSONObject.parse(selectData); - JSONArray jsonArray = jsonObject.getJSONArray("selectData"); - List selectDataList = JSONObject.parseArray(String.valueOf(jsonArray), SysSupplierDto.class); - - - //获取发票基础信息 - SysSupplier sysSupplier = sysSupplierService.selectSysSupplierById(selectDataList.get(0).getSupplierId()); - SysSupplierDto sysSupplierDto = new SysSupplierDto(); - BeanUtils.copyProperties(sysSupplier,sysSupplierDto); - - //填充表格 - response.setCharacterEncoding("utf-8"); - String fileName = URLEncoder.encode("国税发票", "UTF-8").replaceAll("\\+", "%20"); - response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); - String templateFileName = "C:\\exportTemplates\\exportSupplierInfo.xlsx"; - try (ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).withTemplate(templateFileName).build()) { - WriteSheet writeSheet = EasyExcel.writerSheet().build(); - Map map = MapUtils.newHashMap(); -// map.put("date", DateTimeFormatter.ofPattern("yyyy/MM/dd").format(LocalDateTime.now())); - map.put("enterpriseName", sysSupplierDto.getEnterpriseName()); - map.put("customerAddress", sysSupplierDto.getCustomerAddress()); - map.put("postalCode", sysSupplierDto.getPostalCode()); - map.put("contactNumber", sysSupplierDto.getContactNumber()); - map.put("customerFax", sysSupplierDto.getCustomerFax()); - map.put("customerContact", sysSupplierDto.getCustomerContact()); - map.put("paymentTerms", sysSupplierDto.getPaymentTerms()); - map.put("taxRate", sysSupplierDto.getTaxRate()); - - List exportSalesData = sysDictTypeService.selectDictDataByType("sys_export_sales"); - for (int i = 0;i list = sysSupplierService.exportSelectSupplierList(sysSupplier); + ExcelUtil util = new ExcelUtil(SysSupplier.class); -// System.out.println(exportSalesData); - excelWriter.fill(map, writeSheet); - } + return util.exportExcel(list, "供应商资料"); } + + + + @PostMapping("/getId") @ResponseBody public Result getId() throws Exception { diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/domain/SysSupplier.java b/ruoyi-admin/src/main/java/com/ruoyi/system/domain/SysSupplier.java index d8801454..162ab57c 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/domain/SysSupplier.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/domain/SysSupplier.java @@ -24,11 +24,6 @@ public class SysSupplier extends BaseEntity /*使用状态*/ private String useStatus; - /** 供应商类型 (0采购供应商、1委外供应商)*/ - private String supplierType; - - /** 供应商资质(1合格、2不合格、3特殊供应商)*/ - private String supplierQualification; /*采购员*/ private String purchaseBuyer; /** 供应商编号 */ @@ -39,8 +34,18 @@ public class SysSupplier extends BaseEntity @Excel(name = "供应商名称") private String supplierName; + + /** 供应商类型 (0采购供应商、1委外供应商)*/ + @Excel( name = "供应商类型",dictType = "sys_supplier_type") + private String supplierType; + + /** 供应商资质(1合格、2不合格、3特殊供应商)*/ + @Excel( name = "供应商资质",dictType = "sys_supplier_qualification") + private String supplierQualification; + + /** 内外销 */ - @Excel(name = "内外销") + @Excel(name = "内外销",dictType = "sys_export_sales") private String exportSales; /** 企业名称 */ @@ -48,7 +53,7 @@ public class SysSupplier extends BaseEntity private String enterpriseName; /** 企业性质 */ - @Excel(name = "企业性质") + @Excel(name = "企业性质",dictType = "sys_enterprise_nature") private String enterpriseNature; /** 企业地址 */ @@ -154,7 +159,7 @@ public class SysSupplier extends BaseEntity private String financialContact; /** 是否含税 */ - @Excel(name = "是否含税") + @Excel(name = "是否含税", dictType = "sys_confirm_tax") private String confirmTax; /** 税率 */ diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/domain/Vo/SysSupplierVo.java b/ruoyi-admin/src/main/java/com/ruoyi/system/domain/Vo/SysSupplierVo.java index 4ae7b39f..4011c33a 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/domain/Vo/SysSupplierVo.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/domain/Vo/SysSupplierVo.java @@ -18,6 +18,11 @@ public class SysSupplierVo extends SysSupplier { private String taskId; /** 任务名称 */ private String taskName; + + // 当前状态 + private String taskStatus; + + /** 办理时间 */ private Date doneTime; /** 创建人 */ @@ -95,12 +100,21 @@ public class SysSupplierVo extends SysSupplier { } + public String getTaskStatus() { + return taskStatus; + } + + public void setTaskStatus(String taskStatus) { + this.taskStatus = taskStatus; + } + @Override public String toString() { return "SysSupplierVo{" + "applyUserName='" + applyUserName + '\'' + ", taskId='" + taskId + '\'' + ", taskName='" + taskName + '\'' + + ", taskStatus='" + taskStatus + '\'' + ", doneTime=" + doneTime + ", createUserName='" + createUserName + '\'' + ", suspendState='" + suspendState + '\'' + diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/mapper/SysSupplierMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/system/mapper/SysSupplierMapper.java index a35f95ee..bd7f0d7e 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/mapper/SysSupplierMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/mapper/SysSupplierMapper.java @@ -61,6 +61,13 @@ public interface SysSupplierMapper */ public int deleteSysSupplierByIds(String[] supplierIds); + + /** + * 可以筛选资质和类型导出全部 + */ + public List exportSelectSupplierList(SysSupplier sysSupplier); + + public List selectSysSupplierBycode(); /** diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/service/ISysSupplierService.java b/ruoyi-admin/src/main/java/com/ruoyi/system/service/ISysSupplierService.java index 38dd7fab..1be5df36 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/service/ISysSupplierService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/service/ISysSupplierService.java @@ -67,6 +67,11 @@ public interface ISysSupplierService public List selectSysSupplierBycode(); + /** + * 可以筛选资质和类型导出全部 + */ + public List exportSelectSupplierList(SysSupplier sysSupplier); + /** * 新增物料信息的时候查关联应商信息 */ diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysSupplierServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysSupplierServiceImpl.java index 566adc44..7ed6a01b 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysSupplierServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysSupplierServiceImpl.java @@ -146,6 +146,14 @@ public class SysSupplierServiceImpl implements ISysSupplierService{ } else { sysSupplierVo.setTaskName("未启动"); } + + sysSupplierVo.setTaskStatus(sysSupplierVo.getTaskName()); + if(sysSupplierVo.getAuditStatus()!=null && sysSupplierVo.getAuditStatus().equals("1")){ + sysSupplierVo.setTaskStatus("审核通过"); + }else if(sysSupplierVo.getAuditStatus()!=null && sysSupplierVo.getAuditStatus().equals("2")){ + sysSupplierVo.setTaskStatus("审核拒绝"); + } + returnList.add(sysSupplierVo); } returnList.setTotal(CollectionUtils.isEmpty(list) ? 0 : list.getTotal()); @@ -259,6 +267,16 @@ public class SysSupplierServiceImpl implements ISysSupplierService{ return sysSupplierMapper.selectSysSupplierBycode(); } + /** + * 可以筛选资质和类型导出全部 + */ + @Override + public List exportSelectSupplierList(SysSupplier sysSupplier) { + return sysSupplierMapper.exportSelectSupplierList(sysSupplier); + } + + + /** * 新增物料信息的时候查关联应商信息 */ @@ -433,15 +451,16 @@ public class SysSupplierServiceImpl implements ISysSupplierService{ private void buildAuthority(SysUser user, Map variables) { Set roleKeys = roleService.selectRoleKeys(user.getUserId()); + variables.put("cgjlExist",false); + + // 角色不同审核人不同 if(roleKeys.contains("cgyRole")){ variables.put("authority",1); }else if(roleKeys.contains("cgjlRole")){ - variables.put("authority",2); - }else if(roleKeys.contains("cgzgRole")){ + variables.put("cgjlExist",true); + }else if(roleKeys.contains("admin")){ variables.put("authority",3); - } - // 角色不同审核人不同 - if(roleKeys.contains("admin")){ + }else if(roleKeys.contains("fzjlRole")){ variables.put("authority",4); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/domain/WarehouseStorageOrder.java b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/domain/WarehouseStorageOrder.java index 1c10a17f..659e1ddc 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/domain/WarehouseStorageOrder.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/domain/WarehouseStorageOrder.java @@ -28,27 +28,28 @@ public class WarehouseStorageOrder extends BaseEntity private String warehouseStorageCode; /** 关联订单号(多种订单类型) */ - @Excel(name = "关联订单号", readConverterExp = "多=种订单类型") + @Excel(name = "关联订单号") private String relatedOrderCode; - /** 仓库入库状态 */ - @Excel(name = "仓库入库状态") + /** 仓库入库状态(0待暂收、1已暂收、2待入库、3部分入库、4全部入库) */ + @Excel(name = "仓库入库状态",dictType = "warehouse_storage_status") private String warehouseStorageStatus; - /** 仓库品质状态 */ - @Excel(name = "仓库品质状态") + /** 品质状态(0待品质、1部分品质、2全部品质) */ + @Excel(name = "品质状态",dictType = "warehouse_quality_status") private String warehouseQualityStatus; - /** 仓库入库类型 */ - @Excel(name = "仓库入库类型") + + /** 入库类型(0采购入库、1供应商补货、2委内入库、3公司退货、4委外入库、5生产入库) */ + @Excel(name = "入库类型",dictType ="warehouse_storage_type" ) private String warehouseStorageType; - /** 仓库订单类型 */ - @Excel(name = "仓库订单类型") + /** 订单类型(0采购订单、1生产订单、2退换货订单、3委外订单) */ + @Excel(name = "订单类型",dictType = "storage_order_type") private String warehouseOrderType; - /** 仓库入库部门类型 */ - @Excel(name = "仓库入库部门类型") + /** 入库部门类型(0仓库,1采购 ) */ + @Excel(name = "入库部门类型",dictType = "warehouse_dept_type") private String warehouseDeptType; /** 通知已到货数量 */ diff --git a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/domain/WarehouseStorageOrderDetail.java b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/domain/WarehouseStorageOrderDetail.java index 0d536378..ea163c81 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/domain/WarehouseStorageOrderDetail.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/domain/WarehouseStorageOrderDetail.java @@ -105,6 +105,10 @@ public class WarehouseStorageOrderDetail extends BaseEntity @Excel(name = "物料图片地址") private String materialPhotourl; + /** 物料型号*/ + @Excel(name = "物料型号") + private String materialModel; + /** 物料品牌 */ @Excel(name = "物料品牌") private String materialBrand; @@ -445,7 +449,16 @@ public class WarehouseStorageOrderDetail extends BaseEntity { return materialBrand; } - public void setMaterialUnit(String materialUnit) + + public String getMaterialModel() { + return materialModel; + } + + public void setMaterialModel(String materialModel) { + this.materialModel = materialModel; + } + + public void setMaterialUnit(String materialUnit) { this.materialUnit = materialUnit; } @@ -745,6 +758,7 @@ public class WarehouseStorageOrderDetail extends BaseEntity .append("materialType", getMaterialType()) .append("materialPhotourl", getMaterialPhotourl()) .append("materialBrand", getMaterialBrand()) + .append("materialModel", getMaterialModel()) .append("materialUnit", getMaterialUnit()) .append("materialDescribe", getMaterialDescribe()) .append("materialProcessMethod", getMaterialProcessMethod()) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/mapper/WarehouseStorageOrderDetailMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/mapper/WarehouseStorageOrderDetailMapper.java index 4ccba705..4f6b55aa 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/mapper/WarehouseStorageOrderDetailMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/mapper/WarehouseStorageOrderDetailMapper.java @@ -114,4 +114,9 @@ public interface WarehouseStorageOrderDetailMapper * */ int updateWarehouseStorageOrderDetailByCode(WarehouseStorageOrderDetail storageOrderDetail); + /** + * 批量插入仓库入库详情数据 + * */ + int insertBatchWarehouseStorageOrderDetail(List warehouseStorageOrderDetailChildren); + } diff --git a/ruoyi-admin/src/main/resources/mapper/purchase/PurchaseOrderMapper.xml b/ruoyi-admin/src/main/resources/mapper/purchase/PurchaseOrderMapper.xml index b1fe8d8d..22d39026 100644 --- a/ruoyi-admin/src/main/resources/mapper/purchase/PurchaseOrderMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/purchase/PurchaseOrderMapper.xml @@ -17,6 +17,7 @@ + @@ -45,7 +46,7 @@ - select purchase_order_id, purchase_order_code, purchase_plan_code, warehouse_storage_status, payment_status, supplier_code, supplier_name, material_sum, actual_purchase_sum, shared_inventory_occupancy_sum, refunds_exchanges_sum, storage_sum, noRmb_sum, rmb_sum, eceipt_type, arrived_time, stock_no, stock_name, receive_person, receive_person_phone, receive_address, purchase_buyer, use_status, audit_status, create_by, create_time, update_by, update_time, del_flag, instance_id, instance_type, submit_instance_id, cancel_instance_id, restore_instance_id, apply_title, apply_user, apply_time from purchase_order + select purchase_order_id, purchase_order_code, purchase_plan_code, warehouse_storage_status, payment_status, supplier_code, supplier_name, material_sum, actual_purchase_sum, shared_inventory_occupancy_sum, refunds_exchanges_sum, storage_sum, notify_has_arrived_sum,noRmb_sum, rmb_sum, eceipt_type, arrived_time, stock_no, stock_name, receive_person, receive_person_phone, receive_address, purchase_buyer, use_status, audit_status, create_by, create_time, update_by, update_time, del_flag, instance_id, instance_type, submit_instance_id, cancel_instance_id, restore_instance_id, apply_title, apply_user, apply_time from purchase_order - + + + insert into purchase_storage_child @@ -142,6 +147,92 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + insert into purchase_storage_child ( + warehouse_storage_code, + related_order_code, + supplier_code, + supplier_name, + material_no, + material_name, + material_type, + material_photoUrl, + material_model, + material_brand, + material_unit, + material_describe, + material_process_method, + material_dept_type, + make_total, + notify_has_arrived_num, + notify_arrive_num, + actual_has_arrived_num, + actual_arrive_num, + temporary_has_qualified_num, + temporary_qualified_num, + has_storage_num, + storage_num, + make_storage_num, + quality_has_qualified_num, + quality_qualified_num, + refunds_exchanges_num, + make_in_unit_price, + arrived_time, + temporary_time, + delivery_inspection_time, + quality_time, + storage_time, + create_time, + create_by + ) values + + ( + #{item.warehouseStorageCode}, + #{item.relatedOrderCode}, + #{item.supplierCode}, + #{item.supplierName}, + #{item.materialNo}, + #{item.materialName}, + #{item.materialType}, + #{item.materialPhotourl}, + #{item.materialModel}, + #{item.materialBrand}, + #{item.materialUnit}, + #{item.materialDescribe}, + #{item.materialProcessMethod}, + #{item.materialDeptType}, + #{item.makeTotal}, + #{item.notifyHasArrivedNum}, + #{item.notifyArriveNum}, + #{item.actualHasArrivedNum}, + #{item.actualArriveNum}, + #{item.temporaryHasQualifiedNum}, + #{item.temporaryQualifiedNum}, + #{item.hasStorageNum}, + #{item.storageNum}, + #{item.makeStorageNum}, + #{item.qualityHasQualifiedNum}, + #{item.qualityQualifiedNum}, + #{item.refundsExchangesNum}, + #{item.makeInUnitPrice}, + #{item.arrivedTime}, + #{item.temporaryTime}, + #{item.deliveryInspectionTime}, + #{item.qualityTime}, + #{item.storageTime}, + #{item.createTime}, + #{item.createBy} + ) + + + + + + + + + update purchase_storage_child diff --git a/ruoyi-admin/src/main/resources/mapper/system/SysSupplierMapper.xml b/ruoyi-admin/src/main/resources/mapper/system/SysSupplierMapper.xml index fbd02f5e..2045cac0 100644 --- a/ruoyi-admin/src/main/resources/mapper/system/SysSupplierMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/system/SysSupplierMapper.xml @@ -114,6 +114,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and sup.supplier_code like concat('%', #{supplierCode}, '%') and sup.supplier_name like concat('%', #{supplierName}, '%') and sup.supplier_type = #{supplierType} + and sup.supplier_qualification = #{supplierQualification} and sup.use_status = #{useStatus} and sup.audit_status = #{auditStatus} and sup.purchase_buyer = #{purchaseBuyer} @@ -129,18 +130,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" or sup.receive_address like concat('%',#{receiveAddress},'%') and sup.invoice_company_name like concat('%', #{invoiceCompanyName}, '%') and sup.company_tax_number like concat('%', #{companyTaxNumber}, '%') - - and sup.instance_id = #{instanceId} - and sup.instance_type = #{instanceType} - and sup.submit_instance_id = #{submitInstanceId} - and sup.cancel_instance_id = #{cancelInstanceId} - and sup.restore_instance_id = #{restoreInstanceId} - and sup.apply_title = #{applyTitle} - and sup.apply_user = #{applyUser} - and sup.apply_time = #{applyTime} - and sup.create_time between #{params.beginCreateTime} and #{params.endCreateTime} - - and ((sup.supplierCode like concat('%',#{keyword},'%') or sup.suppplierName like concat('%',#{keyword},'%')) order by sup.apply_time asc, sup.create_time desc @@ -176,6 +165,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" on sup.supplier_id = file.rel_id where sup.supplier_id = #{supplierId} + + + + + + +
@@ -69,6 +70,76 @@ $("#form-addPurchaseStorage-edit").validate({ focusCleanup: true}); + + + function submitHandler() { + // 获取表单数据 + const purchaseStorageData = $("#form-addPurchaseStorage-edit").serializeArray().reduce((obj, item) => { + obj[item.name] = item.value; + return obj; + }, {}); + + + var table = $('#bootstrap-table').bootstrapTable("getSelections"); + + + if (table.length === 0){ + $.modal.alertWarning("请至少选择一条要入库的物料"); + return; + } + + // 检查是否有同时存在 warehouseDept 为 1 和 0 的记录 + var hasWarehouseDept1 = false; + var hasWarehouseDept0 = false; + for (var i = 0; i < table.length; i++) { + var warehouseDept = table[i].warehouseDept; + if (warehouseDept === "1") { + hasWarehouseDept1 = true; + } else if (warehouseDept === "0") { + hasWarehouseDept0 = true; + } + } + + if (hasWarehouseDept1 && hasWarehouseDept0) { + $.modal.alertWarning("入库物料中同时包含仓库入库和采购入库,需要分开入库"); + return; + } + + var materialDataList = table.map(function(item) { + // 根据实际字段名调整 + return { + "purchaseOrderChildId":item.purchaseOrderChildId, + "materialNo": item.materialNo, + "materialName": item.materialName, + "materialPhotourl" : item.materialPhotourl, + "materialType": item.materialType, + "materialDescribe": item.materialDescribe, + "materialBrand": item.materialBrand, + "materialUnit": item.materialUnit, + "materialProcessMethod": item.materialProcessMethod, + "warehouseDept": item.warehouseDept, + "planPurchaseNum": item.planPurchaseNum, + "actualPurchaseNum": item.actualPurchaseNum, + "planDeliveryTime": item.planDeliveryTime, + "notifyHasArrivedNum": item.notifyHasArrivedNum, + "temporaryNum": item.temporaryNum, + "hasStorageNum": item.hasStorageNum, + "notifyArriveNum": item.notifyArriveNum, + }; + }); + + const combinedData = Object.assign({}, purchaseStorageData, { + purchaseOrderChildList: materialDataList, + }); + // 合并表单数据和表格数据 + console.log(combinedData) + // 使用 JSON.stringify() 序列化数据 + const jsonData = JSON.stringify(combinedData); + // 发送 AJAX 请求到后端接口 + $.operate.saveJson(prefix + "/addPurchaseStorage", jsonData); + } + + //物料信息展示列表 $(function() { var options = { @@ -83,7 +154,11 @@ columns: [{ checkbox: true }, - + { + field: 'purchaseOrderChildId', + title: '主键', + visible: false + }, { title: '料号', field: 'materialNo', @@ -92,11 +167,16 @@ title: '物料名称', field: 'materialName', }, + { + title: '图片', + field: 'materialPhotourl', + visible: false + }, { title: '物料类型', field: 'materialType', formatter: function (value,row, index) { - $.table.selectCategoryLabel(materialTypeDatas, value) + return $.table.selectCategoryLabel(materialTypeDatas, value) } }, { @@ -127,7 +207,7 @@ }, { title: '物料入库部门', - field: 'materialDeptType', + field: 'warehouseDept', formatter:function (value) { return $.table.selectDictLabel(warehouseDeptDatas, value); } @@ -141,7 +221,51 @@ {title: '已入库数',field: 'hasStorageNum', }, - {title: '通知到货数',field: 'notifyArriveNum' + {title: '通知到货数',field: 'notifyArriveNum', + editable: { + //动态禁用行内编辑 + noEditFormatter: function(value, row, index){ + if (row.temporaryNum === row.actualPurchaseNum || row.actualPurchaseNum === row.notifyHasArrivedNum){ + return "不可入库"; + }else { + return false; + } + }, + validate: function(value) { + if ($.trim(value) === '') { + return '通知到货数不能为空'; + } + if (isNaN(value)) { + return '请输入有效的数字'; + } + if (value < 0) { + return '通知到货数不能小于0'; + } + //不能为小数 + if (value % 1 !== 0) { + return '本次验收数不能为小数'; + } + }, + }, + formatter: function (value, row) { + // 检查 row 是否存在 + if (!row) { + return ""; + } + + // 检查 notifyArriveNum 是否存在 + if (row.notifyArriveNum === undefined || row.notifyArriveNum === null) { + return ""; + } + + // 根据 notifyArriveNum 的值决定返回值 + if (row.notifyArriveNum) { + return row.notifyArriveNum; + } else { + return value; + } + } + } ] }; diff --git a/ruoyi-admin/src/main/resources/templates/purchase/purchaseOrder/purchaseOrder.html b/ruoyi-admin/src/main/resources/templates/purchase/purchaseOrder/purchaseOrder.html index 0643b3b2..41d3336a 100644 --- a/ruoyi-admin/src/main/resources/templates/purchase/purchaseOrder/purchaseOrder.html +++ b/ruoyi-admin/src/main/resources/templates/purchase/purchaseOrder/purchaseOrder.html @@ -20,7 +20,7 @@
  • - @@ -75,7 +75,7 @@ var addPurchaseStorageFlag = [[${@permission.hasPermi('purchase:purchaseOrder:addPurchaseStorage')}]]; - var warehouseStorageStatusDatas = [[${@dict.getType('eceiptStatus')}]]; + var warehouseStorageStatusDatas = [[${@dict.getType('warehouse_storage_status')}]]; var paymentStatusDatas = [[${@dict.getType('sys_pay_close')}]]; var useStatusDatas = [[${@dict.getType('useStatus')}]]; var auditStatusDatas = [[${@dict.getType('auditStatus')}]]; @@ -239,8 +239,12 @@ if(row.auditStatus=="1" && row.useStatus=="1" && !row.cancelInstanceId) { // 作废 actions.push(' 作废'); - //入库通知 - actions.push(' 入库通知'); + + //入库状态(0待暂收、1已暂收、2待入库、3部分入库、4全部入库) + if(row.warehouseStorageStatus=="2" || row.warehouseStorageStatus=="3"){ + //入库通知 + actions.push(' 入库通知'); + } // 已作废 } @@ -344,6 +348,7 @@ //入库通知 function addPurchaseStorage(purchaseOrderId) { + //入库状态(0待暂收、1已暂收、2待入库、3部分入库、4全部入库) var url = prefix + "/addPurchaseStorage/" + purchaseOrderId; $.modal.open("入库通知", url); } diff --git a/ruoyi-admin/src/main/resources/templates/purchase/purchaseQuote/purchaseQuote.html b/ruoyi-admin/src/main/resources/templates/purchase/purchaseQuote/purchaseQuote.html index b26e7fa5..2fc31fca 100644 --- a/ruoyi-admin/src/main/resources/templates/purchase/purchaseQuote/purchaseQuote.html +++ b/ruoyi-admin/src/main/resources/templates/purchase/purchaseQuote/purchaseQuote.html @@ -66,12 +66,16 @@ 添加 - + 导出 + + 导入 + +
  • -
    +
    @@ -147,14 +151,14 @@ // 审核状态-审核通过 使用状态-是 未发起作废流程 if (row.auditStatus == "1" && row.useStatus == "1") { // 作废 - actions.push(' 作废'); + actions.push(' 作废'); // 编辑 - actions.push(' 编辑 '); + actions.push(' 编辑 '); } // 已作废 if (row.useStatus == "2") { // 恢复 - actions.push(' 恢复 '); + actions.push(' 恢复 '); } // 有流程实例id if (row.instanceId) { @@ -163,17 +167,18 @@ var todoUserIdList = row.todoUserId.split(","); if (todoUserIdList.includes(loginName)) { var nodeName = row.taskName == '驳回调整' ? ' 调整申请' : ' 审批'; - actions.push(' ' + nodeName + ' '); + actions.push(' ' + nodeName + ' '); } } // 审批历史 - actions.push(' 审批历史 '); + actions.push(' 审批历史 '); // 进度查看 - actions.push(' 进度查看 '); + actions.push(' 进度查看 '); } // 详情 - actions.push(' 详情 '); - return actions.join(''); + actions.push(' 详情 '); + var actionLinks = actions.join(''); + return $.table.dropdownToggle(actionLinks); } } ], diff --git a/ruoyi-admin/src/main/resources/templates/purchase/purchaseQuote/taskCgzgVerify.html b/ruoyi-admin/src/main/resources/templates/purchase/purchaseQuote/taskFzjlVerify.html similarity index 97% rename from ruoyi-admin/src/main/resources/templates/purchase/purchaseQuote/taskCgzgVerify.html rename to ruoyi-admin/src/main/resources/templates/purchase/purchaseQuote/taskFzjlVerify.html index 9cfb602f..d75393dd 100644 --- a/ruoyi-admin/src/main/resources/templates/purchase/purchaseQuote/taskCgzgVerify.html +++ b/ruoyi-admin/src/main/resources/templates/purchase/purchaseQuote/taskFzjlVerify.html @@ -9,7 +9,7 @@
    -
    + @@ -100,9 +100,9 @@
    - +
    - @@ -115,7 +115,7 @@
    - +
    @@ -204,7 +204,7 @@ } }); - $("#form-purchaseQuote-cgzg-audit").validate({focusCleanup: true}); + $("#form-purchaseQuote-fzjl-audit").validate({focusCleanup: true}); $(function() { var options = { id:'bootstrap-sub-table-purchaseQuoteChild', @@ -319,7 +319,7 @@ } else { // 将子表数据添加到FormData中 $('input[name="purchaseQuoteChildLists"]').val(JSON.stringify(tableData)); - var formData = $("#form-purchaseQuote-cgzg-audit").serialize(); + var formData = $("#form-purchaseQuote-fzjl-audit").serialize(); // 发送请求 $.operate.save(prefix + "/complete/" + taskId, formData) } diff --git a/ruoyi-admin/src/main/resources/templates/purchase/purchaseStorage/detail.html b/ruoyi-admin/src/main/resources/templates/purchase/purchaseStorage/detail.html index 8ecfe64a..b07de413 100644 --- a/ruoyi-admin/src/main/resources/templates/purchase/purchaseStorage/detail.html +++ b/ruoyi-admin/src/main/resources/templates/purchase/purchaseStorage/detail.html @@ -3,194 +3,115 @@ -
    -
    - + + +
    + +
    + +
    +
    - +
    - +
    - +
    - +
    + +
    - +
    - +
    -
    - -
    -
    - -
    + + + + + +
    +
    +
    +
    - +
    +
    - diff --git a/ruoyi-admin/src/main/resources/templates/purchase/purchaseStorage/purchaseStorage.html b/ruoyi-admin/src/main/resources/templates/purchase/purchaseStorage/purchaseStorage.html index c3580eed..1131ddcd 100644 --- a/ruoyi-admin/src/main/resources/templates/purchase/purchaseStorage/purchaseStorage.html +++ b/ruoyi-admin/src/main/resources/templates/purchase/purchaseStorage/purchaseStorage.html @@ -1,196 +1,282 @@ - + -
    -
    -
    -
    -
    -
      -
    • - - -
    • -
    • - - -
    • -
    • - - -
    • -
    • - - -
    • - -
    • - - -
    • -
    • - - -
    • -
    • - - - - - -
    • -
    • -  搜索 -  重置 -
    • -
    -
    -
    -
    +
    +
    +
    +
    +
    +
      +
    • + + +
    • +
    • + + +
    • +
    • + + +
    • +
    • + + +
    • +
    • + + +
    • +
    • + + +
    • +
    • + + +
    • +
    • + + +
    • +
    • + + +
    • +
    • + + + - + +
    • +
    • +  搜索 +  重置 +
    • +
    +
    +
    +
    - -
    -
    -
    + +
    +
    - - + //详情 + function detail(purchaseStorageId) { + var url = prefix + "/detail/" + purchaseStorageId; + $.modal.open("详情", url); + } + \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/templates/system/supplier/supplier.html b/ruoyi-admin/src/main/resources/templates/system/supplier/supplier.html index 131de1d2..0ca5de27 100644 --- a/ruoyi-admin/src/main/resources/templates/system/supplier/supplier.html +++ b/ruoyi-admin/src/main/resources/templates/system/supplier/supplier.html @@ -28,21 +28,24 @@
  • -
  • - -
  • - - + +
  •  搜索 @@ -57,6 +60,9 @@ 添加 + + 导出 +
  • @@ -92,50 +98,48 @@ removeUrl: prefix + "/remove", exportUrl: prefix + "/export", detailUrl: prefix + "/detail/{id}", - search: false, - showExport: true, - showSearch: false, - showRefresh: false, - showToggle: false, - showColumns: false, - showExport: false, - showExport: true, - showColumns: true, - showToggle: true, - clickToSelect: true, modalName: "供应商资料", fixedColumns:true, fixedRightNumber:1, columns: [{checkbox: true}, {title: '供应商id',field: 'supplierId',visible: false}, - {title: '审核状态',field: 'auditStatus',formatter: function(value, row, index) { - return $.table.selectDictLabel(auditStatusDatas, value); - }}, - {title: '使用状态',field: 'useStatus',formatter: function(value, row, index) { - return $.table.selectDictLabel(useStatusDatas, value); - }}, {title: '流程实例ID',field: 'instanceId',visible: false}, { title: '流程提交实例ID',field: 'submitInstanceId',visible: false}, { title:'流程作废实例ID',field: 'cancelInstanceId',visible: false}, {title: '流程恢复实例ID',field: 'restoreInstanceId', visible: false}, { title: '流程实例类型', field: 'instanceTypeName',visible: false}, {title: '申请人ID',field: 'applyUser', visible: false}, + {title: '审核状态',field: 'auditStatus',visible: false,formatter: function(value, row, index) { + return $.table.selectDictLabel(auditStatusDatas, value); + }}, { field: 'applyUserName', title: '申请人', + visible: false, formatter: function(value, row, index) { return '' + (value ? value : "-") + ''; } }, - {field: 'applyTime',title: '申请时间'}, {title: '当前任务ID',field: 'taskId',visible: false}, { title: '待办用户ID',field: 'todoUserId', visible: false}, - { title: '当前任务名称',field: 'taskName', + { title: '当前任务名称',field: 'taskName', visible: false, align: 'center', formatter: function(value, row, index) { return '' + value + ''; } }, + + {title: '当前状态',field: 'taskStatus', align: 'center', + formatter: function(value, row, index) { + if(row.auditStatus!="1"&&value != "未启动"){ + return '' + value + ''; + } + if(value === "未启动"){ + return '' + value + ''; + } + return '' + value + '';} + }, + { title: '供应商编号',field: 'supplierCode'}, {title: '供应商名称',field: 'supplierName'}, {title: '供应商类型',field: 'supplierType',formatter: function(value, row, index) { @@ -197,6 +201,13 @@ } } }, + {field: 'applyTime',title: '申请时间'}, + + {title: '使用状态',field: 'useStatus',formatter: function(value, row, index) { + return $.table.selectDictLabel(useStatusDatas, value); + }}, + + { field: 'updateInfoTime', title: '上次修改时间', @@ -216,17 +227,17 @@ var actions = []; if(row.auditStatus=="1" && row.useStatus=="1" && !row.cancelInstanceId) { // 作废 - actions.push(' 作废'); + actions.push(' 作废'); // 编辑 - actions.push(' 编辑 '); + actions.push(' 编辑 '); // 已作废 }else{ - actions.push(' 编辑 '); + actions.push(' 编辑 '); } // 有流程实例id if(row.useStatus=="2" && !row.restoreInstanceId){ // 恢复 - actions.push(' 恢复 '); + actions.push(' 恢复 '); } // 有流程实例id if (row.instanceId) { @@ -235,17 +246,18 @@ var todoUserIdList = row.todoUserId.split(","); if(todoUserIdList.includes(loginName)){ var nodeName = row.taskName=='驳回调整'?' 调整申请':' 审批'; - actions.push(' '+nodeName+' '); + actions.push(' '+nodeName+' '); } } // 审批历史 - actions.push(' 审批历史 '); + actions.push(' 审批历史 '); // 进度查看 - actions.push(' 进度查看 '); + actions.push(' 进度查看 '); } // 详情 - actions.push(' 详情 '); - return actions.join(''); + actions.push(' 详情 '); + var actionLinks = actions.join(''); + return $.table.dropdownToggle(actionLinks); } } ], diff --git a/ruoyi-admin/src/main/resources/templates/system/supplier/taskCgzgVerify.html b/ruoyi-admin/src/main/resources/templates/system/supplier/taskFzjlVerify.html similarity index 98% rename from ruoyi-admin/src/main/resources/templates/system/supplier/taskCgzgVerify.html rename to ruoyi-admin/src/main/resources/templates/system/supplier/taskFzjlVerify.html index c2537d61..96d36e91 100644 --- a/ruoyi-admin/src/main/resources/templates/system/supplier/taskCgzgVerify.html +++ b/ruoyi-admin/src/main/resources/templates/system/supplier/taskFzjlVerify.html @@ -8,7 +8,7 @@
    -
    + @@ -328,9 +328,9 @@
    - +
    - @@ -354,14 +354,14 @@