From b7c3207a991fc707364afcc837a48350b38e8629 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E6=99=93=E8=BF=AA?= <2596750866@qq.com> Date: Wed, 18 Sep 2024 09:10:52 +0800 Subject: [PATCH] =?UTF-8?q?[fix]=20=E5=A7=94=E5=A4=96=E5=8A=A0=E5=B7=A5=20?= =?UTF-8?q?=E5=A7=94=E5=A4=96=E5=85=A5=E5=BA=93=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E3=80=81=E5=A7=94=E5=A4=96=E5=85=A5=E5=BA=93?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E9=A1=B5=E9=9D=A2=EF=BC=9B=20=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E5=A7=94=E5=A4=96=E5=85=A5=E5=BA=93service=E3=80=81co?= =?UTF-8?q?ntroller=E6=96=B9=E6=B3=95=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../OutsourceStorageOrderController.java | 19 +- .../IOutsourceStorageOrderService.java | 5 +- .../OutsourceStorageOrderServiceImpl.java | 86 +++++- .../system/outsource_order/addStorage.html | 282 +++++++++++------- .../system/outsource_storage/storage.html | 27 +- 5 files changed, 296 insertions(+), 123 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/controller/OutsourceStorageOrderController.java b/ruoyi-admin/src/main/java/com/ruoyi/system/controller/OutsourceStorageOrderController.java index 269823bc..ecb48757 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/controller/OutsourceStorageOrderController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/controller/OutsourceStorageOrderController.java @@ -2,6 +2,7 @@ package com.ruoyi.system.controller; import java.util.List; +import com.ruoyi.system.domain.OutsourceStorage; import com.ruoyi.system.service.IOutsourceStorageOrderService; import com.ruoyi.warehouse.domain.WarehouseStorageOrder; import org.apache.shiro.authz.annotation.RequiresPermissions; @@ -82,10 +83,10 @@ public class OutsourceStorageOrderController extends BaseController @Log(title = "委外入库", businessType = BusinessType.INSERT) @PostMapping("/addStorage") @ResponseBody - public AjaxResult addSave(@RequestBody WarehouseStorageOrder warehouseStorageOrder) + public AjaxResult addSave(@RequestBody OutsourceStorage outsourceStorage) { - System.out.println(warehouseStorageOrder); - return toAjax(outsourceStorageOrderService.insertWarehouseStorageOrder(warehouseStorageOrder)); +// System.out.println(warehouseStorageOrder); + return toAjax(outsourceStorageOrderService.insertWarehouseStorageOrder(outsourceStorage)); } /** @@ -123,4 +124,16 @@ public class OutsourceStorageOrderController extends BaseController { return toAjax(outsourceStorageOrderService.deleteWarehouseStorageOrderByWarehouseStorageIds(ids)); } + + /** + * 委外入库详情 + */ + @RequiresPermissions("system:storage:detail") + @GetMapping("/detail/{warehouseStorageCode}") + public String detail(@PathVariable("warehouseStorageCode") String warehouseStorageCode, ModelMap mmap) + { + OutsourceStorage outsourceStorage = outsourceStorageOrderService.selectStorageOrderByWarehouseStorageCode(warehouseStorageCode); + mmap.put("outsourceStorage", outsourceStorage); + return prefix + "/detail"; + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/service/IOutsourceStorageOrderService.java b/ruoyi-admin/src/main/java/com/ruoyi/system/service/IOutsourceStorageOrderService.java index eaa21efd..b0146476 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/service/IOutsourceStorageOrderService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/service/IOutsourceStorageOrderService.java @@ -1,6 +1,7 @@ package com.ruoyi.system.service; +import com.ruoyi.system.domain.OutsourceStorage; import com.ruoyi.warehouse.domain.WarehouseStorageOrder; import java.util.List; @@ -35,7 +36,7 @@ public interface IOutsourceStorageOrderService * @param warehouseStorageOrder 委外入库 * @return 结果 */ - public int insertWarehouseStorageOrder(WarehouseStorageOrder warehouseStorageOrder); + public int insertWarehouseStorageOrder(OutsourceStorage outsourceStorage); /** * 修改委外入库 @@ -60,4 +61,6 @@ public interface IOutsourceStorageOrderService * @return 结果 */ public int deleteWarehouseStorageOrderByWarehouseStorageId(Long warehouseStorageId); + + OutsourceStorage selectStorageOrderByWarehouseStorageCode(String warehouseStorageCode); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/OutsourceStorageOrderServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/OutsourceStorageOrderServiceImpl.java index 13c360da..88f1739c 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/OutsourceStorageOrderServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/OutsourceStorageOrderServiceImpl.java @@ -3,8 +3,12 @@ package com.ruoyi.system.service.impl; import java.util.List; import com.ruoyi.common.core.redis.RedisCache; +import com.ruoyi.common.exception.BusinessException; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.ShiroUtils; +import com.ruoyi.system.domain.OutsourceStorage; +import com.ruoyi.system.domain.OutsourceStorageDetail; +import com.ruoyi.system.mapper.OutsourceStorageDetailMapper; import com.ruoyi.system.service.IOutsourceStorageOrderService; import com.ruoyi.warehouse.domain.WarehouseStorageOrder; import com.ruoyi.warehouse.domain.WarehouseStorageOrderDetail; @@ -12,6 +16,7 @@ import com.ruoyi.warehouse.mapper.WarehouseStorageOrderMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; +import java.util.Map; import java.util.stream.Collectors; import com.ruoyi.common.utils.StringUtils; @@ -31,6 +36,9 @@ public class OutsourceStorageOrderServiceImpl implements IOutsourceStorageOrderS @Autowired private WarehouseStorageOrderMapper warehouseStorageOrderMapper; + @Autowired + private OutsourceStorageDetailMapper outsourceStorageDetailMapper; + @Autowired private RedisCache redisCache; @@ -50,25 +58,82 @@ public class OutsourceStorageOrderServiceImpl implements IOutsourceStorageOrderS /** * 新增委外入库 * - * @param warehouseStorageOrder 委外入库 + * @param outsourceStorage 委外入库 * @return 结果 */ @Transactional @Override - public int insertWarehouseStorageOrder(WarehouseStorageOrder warehouseStorageOrder) + public int insertWarehouseStorageOrder(OutsourceStorage outsourceStorage) { + WarehouseStorageOrder warehouseStorageOrder = new WarehouseStorageOrder(); String loginName = ShiroUtils.getLoginName(); + warehouseStorageOrder.setCreateBy(loginName); warehouseStorageOrder.setCreateTime(DateUtils.getNowDate()); warehouseStorageOrder.setWarehouseOrderType("3"); warehouseStorageOrder.setWarehouseStorageType("4"); + warehouseStorageOrder.setWarehouseStorageStatus("0"); + warehouseStorageOrder.setWarehouseQualityStatus("0"); String warehouseStorageCode = redisCache.generateBillNo("RK"); warehouseStorageOrder.setWarehouseStorageCode(warehouseStorageCode); - warehouseStorageOrder.setCreateBy(loginName); + warehouseStorageOrder.setNotifyArrivedNum(outsourceStorage.getNotifyArrivedNum()); + warehouseStorageOrder.setRelatedOrderCode(outsourceStorage.getRelatedOrderCode()); + List outsourceStorageDetails = outsourceStorage.getStorageDetailList(); + if(StringUtils.isEmpty(outsourceStorageDetails)){ + throw new BusinessException("新增委外入库单失败!入库单详情为空"); + } + for (OutsourceStorageDetail detail:outsourceStorageDetails) { + detail.setWarehouseStorageCode(warehouseStorageCode); + outsourceStorageDetailMapper.insertOutsourceStorageDetail(detail); + } + List warehouseStorageOrderDetailList = new ArrayList<>(); + // 使用 Map 分组 + Map> groupedByMaterialNo = outsourceStorageDetails.stream() + .collect(Collectors.groupingBy(OutsourceStorageDetail::getMaterialNo)); + + // 遍历 Map 的每一个条目 + for (Map.Entry> entry : groupedByMaterialNo.entrySet()) { + String materialNo = entry.getKey(); + List details = entry.getValue(); + + // 获取列表中的第一条记录 + if (!details.isEmpty()) { + OutsourceStorageDetail firstDetail = details.get(0); + System.out.println("Material No: " + materialNo + ", First Detail: " + firstDetail); + WarehouseStorageOrderDetail warehouseStorageOrderDetail = generateWarehouseStorageOrderDetail(firstDetail); + warehouseStorageOrderDetail.setWarehouseStorageCode(warehouseStorageCode); + warehouseStorageOrderDetailList.add(warehouseStorageOrderDetail); + } + } + if(warehouseStorageOrderDetailList!=null){ + warehouseStorageOrder.setWarehouseStorageOrderDetailList(warehouseStorageOrderDetailList); + insertWarehouseStorageOrderDetail(warehouseStorageOrder); + } + int rows = warehouseStorageOrderMapper.insertWarehouseStorageOrder(warehouseStorageOrder); - insertWarehouseStorageOrderDetail(warehouseStorageOrder); return rows; } - +// 根据委外入库单详情生成仓库入库单详情 + public WarehouseStorageOrderDetail generateWarehouseStorageOrderDetail(OutsourceStorageDetail outstorageDetail){ + WarehouseStorageOrderDetail storageOrderDetail = new WarehouseStorageOrderDetail(); + storageOrderDetail.setRelatedOrderCode(outstorageDetail.getOutsourceOrderNo()); + storageOrderDetail.setWarehouseStorageStatus("0"); + storageOrderDetail.setWarehouseQualityStatus("0"); + storageOrderDetail.setWarehouseStorageType("4"); + storageOrderDetail.setWarehouseOrderType("3"); + storageOrderDetail.setNotifyArriveNum(outstorageDetail.getTakingMaterial().intValue()); + storageOrderDetail.setMaterialNo(outstorageDetail.getMaterialNo()); + storageOrderDetail.setMaterialName(outstorageDetail.getMaterialName()); + storageOrderDetail.setMaterialType(outstorageDetail.getMaterialType()); + storageOrderDetail.setMaterialPhotourl(outstorageDetail.getMaterialPhotoUrl()); + storageOrderDetail.setMaterialProcessMethod(outstorageDetail.getProcessMethod()); + storageOrderDetail.setMaterialDeptType(outstorageDetail.getDescription()); + storageOrderDetail.setMaterialUnit(outstorageDetail.getUnit()); + storageOrderDetail.setMaterialBrand(outstorageDetail.getBrand()); + storageOrderDetail.setArrivedTime(DateUtils.getNowDate()); + storageOrderDetail.setCreateBy(ShiroUtils.getLoginName()); + storageOrderDetail.setCreateTime(DateUtils.getNowDate()); + return storageOrderDetail; + } /** * 修改委外入库 * @@ -137,4 +202,15 @@ public class OutsourceStorageOrderServiceImpl implements IOutsourceStorageOrderS } } } + + @Override + public OutsourceStorage selectStorageOrderByWarehouseStorageCode(String warehouseStorageCode){ + OutsourceStorage outsourceStorage = new OutsourceStorage(); + List outsourceStorageDetails = outsourceStorageDetailMapper.selectOutsourceStorageDetailByStorageCode(warehouseStorageCode); + if(StringUtils.isEmpty(outsourceStorageDetails)){ + throw new BusinessException("查询入库单详情失败!详情为空"); + } + outsourceStorage.setStorageDetailList(outsourceStorageDetails); + return outsourceStorage; + } } diff --git a/ruoyi-admin/src/main/resources/templates/system/outsource_order/addStorage.html b/ruoyi-admin/src/main/resources/templates/system/outsource_order/addStorage.html index db57077d..28ee2f0c 100644 --- a/ruoyi-admin/src/main/resources/templates/system/outsource_order/addStorage.html +++ b/ruoyi-admin/src/main/resources/templates/system/outsource_order/addStorage.html @@ -6,10 +6,31 @@ +
- +
+ +
+ +
+
+
+
+
+
@@ -17,19 +38,20 @@

订单合计:

-
- -
- +
+
+ +
+ +
-
-
- -
- +
+ +
+ +
-
@@ -38,11 +60,11 @@ diff --git a/ruoyi-admin/src/main/resources/templates/system/outsource_storage/storage.html b/ruoyi-admin/src/main/resources/templates/system/outsource_storage/storage.html index e9cc633f..9020a295 100644 --- a/ruoyi-admin/src/main/resources/templates/system/outsource_storage/storage.html +++ b/ruoyi-admin/src/main/resources/templates/system/outsource_storage/storage.html @@ -63,7 +63,11 @@ var removeFlag = [[${@permission.hasPermi('system:storage:remove')}]]; var detailFlag = [[${@permission.hasPermi('system:storage:detail')}]]; var prefix = ctx + "system/outsource_storage"; - + var warehouseStorageStatusDatas = [[${@dict.getType('warehouse_storage_status')}]]; + var warehouseQualityStatusDatas = [[${@dict.getType('warehouse_quality_status')}]]; + var warehouseStorageTypeDatas = [[${@dict.getType('warehouse_storage_type')}]]; + var warehouseOrderTypeDatas = [[${@dict.getType('storage_order_type')}]]; + var warehouseDeptTypeDatas = [[${@dict.getType('warehouse_dept_type')}]]; $(function() { var options = { url: prefix + "/list", @@ -89,11 +93,17 @@ field: 'warehouseStorageStatus', title: '入库状态', // 仓库入库状态(0待暂收、1已暂收、2待入库、3部分入库、4全部入库)' + formatter: function(value, row, index) { + return $.table.selectDictLabel(warehouseStorageStatusDatas, value); + } }, { field: 'warehouseQualityStatus', title: '品质状态', // '仓库品质状态(0待品质、1部分品质、2全部品质)' + formatter: function(value, row, index) { + return $.table.selectDictLabel(warehouseQualityStatusDatas, value); + } }, { field: 'relatedOrderCode', @@ -101,17 +111,26 @@ }, { field: 'warehouseOrderType', - title: '订单类型' + title: '订单类型', + formatter: function(value, row, index) { + return $.table.selectDictLabel(warehouseOrderTypeDatas, value); + } }, { field: 'warehouseStorageType', - title: '入库类型' + title: '入库类型', // (0采购入库、1供应商补货、2委内入库、3公司退货、4委外入库、5生产入库) + formatter: function(value, row, index) { + return $.table.selectDictLabel(warehouseStorageTypeDatas, value); + } }, { field: 'warehouseDeptType', title: '入库部门', // '仓库入库部门类型(0仓库,1采购 )' + formatter: function(value, row, index) { + return $.table.selectDictLabel(warehouseDeptTypeDatas, value); + } }, { @@ -195,7 +214,7 @@ align: 'center', formatter: function(value, row, index) { var actions = []; - actions.push('详情 '); + actions.push('详情 '); return actions.join(''); } }]