FengChaoYu 3 dagar sedan
förälder
incheckning
0dfb93300d

+ 2 - 2
mall-server-api/src/main/java/com/gree/mall/manager/bean/StorageVO.java

@@ -23,8 +23,8 @@ public class StorageVO   {
     @ApiModelProperty(value = "网点名称")
     private String websitName;
 
-    @ApiModelProperty(value = "仓储属性")
-    private String type;
+//    @ApiModelProperty(value = "仓储属性")
+//    private String type;
 
     @ApiModelProperty(value = "状态")
     private StatusEnum status;

+ 8 - 7
mall-server-api/src/main/java/com/gree/mall/manager/controller/StorageController.java

@@ -24,7 +24,7 @@ import java.util.List;
 
 @Slf4j
 @RestController
-@Api(value = "仓储管理", tags ={"仓储管理"} )
+@Api(value = "仓储管理", tags = {"仓储管理"})
 @RequestMapping(value = "/storage", produces = "application/json; charset=utf-8")
 public class StorageController {
 
@@ -38,7 +38,8 @@ public class StorageController {
             @RequestBody ZfireParamBean zfireParamBean
     ) {
         IPage<StorageVO> page = storageLogic.pageV2(zfireParamBean);
-        return ResponseHelper.success(page, new TypeReference<StorageVO>() {});
+        return ResponseHelper.success(page, new TypeReference<StorageVO>() {
+        });
     }
 
     @PostMapping("/pageExport")
@@ -69,7 +70,7 @@ public class StorageController {
     @GetMapping("/detail")
     @ApiOperation(value = "仓储详情")
     public ResponseHelper<Storage> detail(
-            @ApiParam(value = "id",required = true) @RequestParam() String id
+            @ApiParam(value = "id", required = true) @RequestParam() String id
     ) throws RemoteServiceException {
         Storage detail = storageLogic.detail(id);
         return ResponseHelper.success(detail);
@@ -80,15 +81,15 @@ public class StorageController {
     @ApiOperation(value = "新增仓储")
     public ResponseHelper add(
             HttpServletRequest request,
-            @ApiParam(value = "object",required = true) @RequestBody Storage storage) {
-        storageLogic.add(request,storage);
+            @ApiParam(value = "object", required = true) @RequestBody Storage storage) {
+        storageLogic.add(request, storage);
         return ResponseHelper.success();
     }
 
     @PostMapping("/update")
     @ApiOperation(value = "修改仓储")
     public ResponseHelper update(
-            @ApiParam(value = "object",required = true) @RequestBody Storage storage) {
+            @ApiParam(value = "object", required = true) @RequestBody Storage storage) {
         storageLogic.update(storage);
         return ResponseHelper.success();
     }
@@ -96,7 +97,7 @@ public class StorageController {
     @PostMapping("/delete")
     @ApiOperation(value = "删除仓储")
     public ResponseHelper delete(
-            @ApiParam(value = "仓储id",required = true) @RequestParam String storageId
+            @ApiParam(value = "仓储id", required = true) @RequestParam String storageId
     ) {
         storageLogic.delete(storageId);
         return ResponseHelper.success();

+ 62 - 6
mall-server-api/src/main/java/com/gree/mall/manager/logic/goods/GoodsMaterialStockAccLogic.java

@@ -25,6 +25,7 @@ import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
 import java.util.Date;
+import java.util.Objects;
 
 /**
  * 商品物料库存三级台账
@@ -56,7 +57,6 @@ public class GoodsMaterialStockAccLogic {
         return list;
     }
 
-
     /**
      * 新增三级帐
      * @param goodsMaterialId 物料id
@@ -66,15 +66,69 @@ public class GoodsMaterialStockAccLogic {
      * @param refBillNo 相关单号
      * @param refBillType 相关单据类型
      */
-    public void add(String goodsMaterialId, BigDecimal price, Integer changeQty, DirectFlagEnum directFlagEnum,  String refBillNo,
-                    GoodsMaterialStockAccBillTypeEnum refBillType,String storageId,String storageName){
+    public void add(String goodsMaterialId, BigDecimal price, Integer changeQty, DirectFlagEnum directFlagEnum, String refBillNo,
+                    GoodsMaterialStockAccBillTypeEnum refBillType, String storageId, String storageName){
 
         GoodsMaterialStorage goodsMaterialStorage = goodsMaterialStorageService.lambdaQuery()
                 .eq(GoodsMaterialStorage::getGoodsMaterialId, goodsMaterialId)
-                .eq(GoodsMaterialStorage::getStorageId, storageId).last("limit 1").one();
+                .eq(GoodsMaterialStorage::getStorageId, storageId)
+                .last("limit 1")
+                .one();
 
+        GoodsMaterial goodsMaterial = goodsMaterialService.getById(goodsMaterialId);
+        if(goodsMaterial == null){
+            throw new RemoteServiceException("物料id不存在");
+        }
+        GoodsMaterialStockAcc goodsMaterialStockAcc = new GoodsMaterialStockAcc()
+                .setGoodsMaterialId(goodsMaterialId)
+                .setGoodsMaterialName(goodsMaterial.getGoodsName())
+                .setGoodsSpecsName(goodsMaterial.getSpecsName())
+                .setCompanyWechatId(goodsMaterial.getCompanyWechatId())
+                .setCompanyWechatName(goodsMaterial.getCompanyWechatName())
+                .setBrandId(goodsMaterial.getBrandId())
+                .setBrandName(goodsMaterial.getBrandName())
+                .setMainId(goodsMaterial.getMainId())
+                .setMainName(goodsMaterial.getMainName())
+                .setSmallId(goodsMaterial.getSmallId())
+                .setSmallName(goodsMaterial.getSmallName())
+                .setUnit(goodsMaterial.getUnit())
+                .setPrice(price)
+                .setSdate(new Date())
+                .setDirectFlag(directFlagEnum.getKey())
+                //.setQty(goodsMaterial.getStockQty())
+                .setChangeQty(changeQty)
+                .setCloseQty(goodsMaterialStorage != null ? goodsMaterialStorage.getStockQty():changeQty)
+                .setRefBillNo(refBillNo)
+                .setStorageId(storageId)
+                .setStorageName(Objects.nonNull(goodsMaterialStorage) ? goodsMaterialStorage.getStorageName() : storageName)
+                .setRefBillType(refBillType.getKey());
+        //反向算出原库存数量
+        if(directFlagEnum == DirectFlagEnum.ADD){
+            goodsMaterialStockAcc.setQty(goodsMaterialStockAcc.getCloseQty() - changeQty);
+        }else{
+            goodsMaterialStockAcc.setQty(goodsMaterialStockAcc.getCloseQty() + changeQty);
+        }
+        goodsMaterialStockAcc.insert();
+    }
 
+    /**
+     * 新增三级帐
+     * @param goodsMaterialId 物料id
+     * @param price 变动价格
+     * @param changeQty 变动数量
+     * @param directFlagEnum 变动方向 ADD=增加 SUB=减少
+     * @param refBillNo 相关单号
+     * @param refBillType 相关单据类型
+     */
+    public void add(String goodsMaterialId, BigDecimal price, Integer changeQty, DirectFlagEnum directFlagEnum, String refBillNo,
+                    GoodsMaterialStockAccBillTypeEnum refBillType, String websitId, String websitName, String storageId, String storageName){
 
+        GoodsMaterialStorage goodsMaterialStorage = goodsMaterialStorageService.lambdaQuery()
+                .eq(GoodsMaterialStorage::getGoodsMaterialId, goodsMaterialId)
+                .eq(GoodsMaterialStorage::getWebsitId, websitId)
+                .eq(GoodsMaterialStorage::getStorageId, storageId)
+                .last("limit 1")
+                .one();
 
         GoodsMaterial goodsMaterial = goodsMaterialService.getById(goodsMaterialId);
         if(goodsMaterial == null){
@@ -98,10 +152,12 @@ public class GoodsMaterialStockAccLogic {
                 .setDirectFlag(directFlagEnum.getKey())
                 //.setQty(goodsMaterial.getStockQty())
                 .setChangeQty(changeQty)
-                .setCloseQty(goodsMaterialStorage != null?goodsMaterialStorage.getStockQty():changeQty)
+                .setCloseQty(goodsMaterialStorage != null ? goodsMaterialStorage.getStockQty():changeQty)
                 .setRefBillNo(refBillNo)
+                .setWebsitId(websitId)
+                .setWebsitName(websitName)
                 .setStorageId(storageId)
-                .setStorageName(goodsMaterialStorage.getStorageName())
+                .setStorageName(Objects.nonNull(goodsMaterialStorage) ? goodsMaterialStorage.getStorageName() : storageName)
                 .setRefBillType(refBillType.getKey());
         //反向算出原库存数量
         if(directFlagEnum == DirectFlagEnum.ADD){

+ 13 - 8
mall-server-api/src/main/java/com/gree/mall/manager/logic/goods/GoodsPurchaseLogic.java

@@ -128,18 +128,24 @@ public class GoodsPurchaseLogic {
     public GoodsPurchaseBean add(GoodsPurchaseBean bean) {
         AdminUserCom adminUser = commonLogic.getAdminUser();
 
+        if (StringUtils.isBlank(bean.getWebsitId())) {
+            throw new RemoteServiceException("请选择网点");
+        }
+
         if (StringUtil.isEmpty(bean.getStorageId())){
-            Storage storage = storageService.lambdaQuery().eq(Storage::getCompanyWechatId, adminUser.getCompanyWechatId())
+            Storage storage = storageService.lambdaQuery()
+                    .eq(Storage::getCompanyWechatId, adminUser.getCompanyWechatId())
+                    .eq(Storage::getWebsitId, bean.getWebsitId())
                     .eq(Storage::getIsDefault, true)
                     .like(Storage::getType, "商品")
-                    .last("limit 1").one();
+                    .last("limit 1")
+                    .one();
 
             if(storage == null)
                 throw new RemoteServiceException("未初始化配置");
 
             bean.setStorageId(storage.getStorageId());
             bean.setStorageName(storage.getStorageName());
-
         }
 
         if (Objects.nonNull(adminUser.getAdminCompanyWechat())) {
@@ -148,7 +154,7 @@ public class GoodsPurchaseLogic {
         }
 
         AdminWebsit adminWebsit = adminWebsitService.lambdaQuery()
-                .eq(AdminWebsit::getCompanyWechatId,adminUser.getCompanyWechatId())
+                .eq(AdminWebsit::getCompanyWechatId, adminUser.getCompanyWechatId())
                 .eq(AdminWebsit::getType, AdminWebsitTypeEnum.B.getKey())
                 .last("limit 1")
                 .one();
@@ -174,7 +180,6 @@ public class GoodsPurchaseLogic {
 
         List<GoodsPurchaseItem> items = this.handleItemMethod(bean.getItems(), bean.getId(), true);
 
-
         goodsPurchaseItemService.saveBatch(items);
 
         Integer totalQty = items.stream().mapToInt(GoodsPurchaseItem::getQty).sum();
@@ -392,9 +397,9 @@ public class GoodsPurchaseLogic {
         AdminUserCom adminUser = commonLogic.getAdminUser();
 
         String companyId = null;
-        if (Objects.nonNull(adminUser.getAdminCompanyWechat())) {
-            companyId = adminUser.getAdminCompanyWechat().getCompanyWechatId();
-        }
+//        if (Objects.nonNull(adminUser.getAdminCompanyWechat())) {
+//            companyId = adminUser.getAdminCompanyWechat().getCompanyWechatId();
+//        }
         GoodsPurchase purchase = goodsPurchaseService.lambdaQuery()
                 .eq(GoodsPurchase::getId, id)
                 .eq(GoodsPurchase::getCompanyWechatId, companyId)

+ 65 - 7
mall-server-api/src/main/java/com/gree/mall/manager/logic/goods/JxGoodsLogic.java

@@ -195,10 +195,19 @@ public class JxGoodsLogic {
             try {
                 //添加库存
                 this.addMaterialNum(goodsPurchaseItem.getGoodsMaterialId(), goodsPurchaseItem.getInsideQty(), goodsPurchaseItem.getOutQty(),
-                        goodsPurchaseItem.getPartsQty(), goodsPurchaseItem.getQty(), id, goodsPurchaseItem.getPrice(),goodsPurchase.getStorageId(),goodsPurchase.getStorageName());
+                        goodsPurchaseItem.getPartsQty(), goodsPurchaseItem.getQty(), id, goodsPurchaseItem.getPrice(),
+                        goodsPurchase.getStorageId(), goodsPurchase.getStorageName());
+//                this.addMaterialNum(goodsPurchaseItem.getGoodsMaterialId(), goodsPurchaseItem.getInsideQty(), goodsPurchaseItem.getOutQty(),
+//                        goodsPurchaseItem.getPartsQty(), goodsPurchaseItem.getQty(), id, goodsPurchaseItem.getPrice(),
+//                        goodsPurchase.getWebsitId(), goodsPurchase.getWebsitName(), goodsPurchase.getStorageId(), goodsPurchase.getStorageName());
 
                 goodsMaterialStockAccLogic.add(goodsPurchaseItem.getGoodsMaterialId(), goodsPurchaseItem.getPrice(), goodsPurchaseItem.getQty(),
-                        DirectFlagEnum.ADD, goodsPurchaseItem.getGoodsPurchaseId(), GoodsMaterialStockAccBillTypeEnum.B,goodsPurchase.getStorageId(),goodsPurchase.getStorageName());
+                        DirectFlagEnum.ADD, goodsPurchaseItem.getGoodsPurchaseId(), GoodsMaterialStockAccBillTypeEnum.B,
+                        goodsPurchase.getStorageId(), goodsPurchase.getStorageName());
+
+//                goodsMaterialStockAccLogic.add(goodsPurchaseItem.getGoodsMaterialId(), goodsPurchaseItem.getPrice(), goodsPurchaseItem.getQty(),
+//                        DirectFlagEnum.ADD, goodsPurchaseItem.getGoodsPurchaseId(), GoodsMaterialStockAccBillTypeEnum.B,
+//                        goodsPurchase.getWebsitId(), goodsPurchase.getWebsitName(), goodsPurchase.getStorageId(), goodsPurchase.getStorageName());
 
                 //变化成本价
                 this.changeCost(goodsPurchaseItem.getGoodsMaterialId(), goodsPurchaseItem);
@@ -534,11 +543,57 @@ public class JxGoodsLogic {
 
     }
 
+    private void addMaterialNum(String goodsMaterialId, Integer insideQty, Integer outQty, Integer partsQty, Integer qty,
+                                String id, BigDecimal price, String storageId, String storageName) {
 
-    private void addMaterialNum(String goodsMaterialId, Integer insideQty, Integer outQty, Integer partsQty, Integer qty, String id, BigDecimal price,String storageId,String storageName) {
+        GoodsMaterialStorage goodsMaterialStorage = goodsMaterialStorageService.lambdaQuery()
+                .eq(GoodsMaterialStorage::getGoodsMaterialId, goodsMaterialId)
+                .eq(GoodsMaterialStorage::getStorageId, storageId)
+                .last("limit 1")
+                .one();
 
-        GoodsMaterialStorage goodsMaterialStorage = goodsMaterialStorageService.lambdaQuery().eq(GoodsMaterialStorage::getGoodsMaterialId, goodsMaterialId)
-                .eq(GoodsMaterialStorage::getStorageId, storageId).last("limit 1").one();
+        GoodsMaterial goodsMaterial = goodsMaterialService.getById(goodsMaterialId);
+
+        if (goodsMaterialStorage == null) {
+            GoodsMaterialStorage goodsMaterialStoragein = BeanUtil.toBean(goodsMaterial, GoodsMaterialStorage.class);
+            goodsMaterialStoragein.setId(null);
+            goodsMaterialStoragein.setGoodsMaterialId(goodsMaterialId);
+            goodsMaterialStoragein.setStorageId(storageId);
+            goodsMaterialStoragein.setStorageName(storageName);
+            goodsMaterialStoragein.setInsideQty(insideQty);
+            goodsMaterialStoragein.setOutQty(outQty);
+            goodsMaterialStoragein.setPartsQty(partsQty);
+            goodsMaterialStoragein.setStockQty(qty);
+            goodsMaterialStoragein.setAmount(price);
+            goodsMaterialStoragein.insert();
+        } else {
+            goodsMaterialStorage.setInsideQty(goodsMaterial.getInsideQty() + insideQty);
+            goodsMaterialStorage.setOutQty(goodsMaterial.getOutQty() + outQty);
+            goodsMaterialStorage.setPartsQty(goodsMaterial.getPartsQty() + partsQty);
+            goodsMaterialStorage.setStockQty(goodsMaterialStorage.getStockQty() + qty);
+            goodsMaterialStorage.setAmount(price);
+            goodsMaterialStorage.updateById();
+        }
+
+        //添加批次库存
+        GoodsMaterialAcc goodsMaterialAcc = new GoodsMaterialAcc();
+        goodsMaterialAcc.setGoodsMaterialId(goodsMaterialId);
+        goodsMaterialAcc.setOrderId(id);
+        goodsMaterialAcc.setStockQty(qty);
+        goodsMaterialAcc.setPrice(price);
+        goodsMaterialAcc.insert();
+
+    }
+
+    private void addMaterialNum(String goodsMaterialId, Integer insideQty, Integer outQty, Integer partsQty, Integer qty,
+                                String id, BigDecimal price, String websitId, String websitName, String storageId, String storageName) {
+
+        GoodsMaterialStorage goodsMaterialStorage = goodsMaterialStorageService.lambdaQuery()
+                .eq(GoodsMaterialStorage::getGoodsMaterialId, goodsMaterialId)
+                .eq(GoodsMaterialStorage::getWebsitId, websitId)
+                .eq(GoodsMaterialStorage::getStorageId, storageId)
+                .last("limit 1")
+                .one();
 
         GoodsMaterial goodsMaterial = goodsMaterialService.getById(goodsMaterialId);
 
@@ -546,6 +601,8 @@ public class JxGoodsLogic {
             GoodsMaterialStorage goodsMaterialStoragein = BeanUtil.toBean(goodsMaterial, GoodsMaterialStorage.class);
             goodsMaterialStoragein.setId(null);
             goodsMaterialStoragein.setGoodsMaterialId(goodsMaterialId);
+            goodsMaterialStoragein.setWebsitId(websitId);
+            goodsMaterialStoragein.setWebsitName(websitName);
             goodsMaterialStoragein.setStorageId(storageId);
             goodsMaterialStoragein.setStorageName(storageName);
             goodsMaterialStoragein.setInsideQty(insideQty);
@@ -554,7 +611,7 @@ public class JxGoodsLogic {
             goodsMaterialStoragein.setStockQty(qty);
             goodsMaterialStoragein.setAmount(price);
             goodsMaterialStoragein.insert();
-        }else {
+        } else {
             goodsMaterialStorage.setInsideQty(goodsMaterial.getInsideQty() + insideQty);
             goodsMaterialStorage.setOutQty(goodsMaterial.getOutQty() + outQty);
             goodsMaterialStorage.setPartsQty(goodsMaterial.getPartsQty() + partsQty);
@@ -1127,7 +1184,8 @@ public class JxGoodsLogic {
                 this.subMaterialStock(goodsPurchaseRetItem.getGoodsMaterialId(), goodsPurchaseRetItem.getRetQty(), goodsPurchaseRet.getGoodsPurchaseId(),goodsPurchaseRet.getStorageId());
 
                 goodsMaterialStockAccLogic.add(goodsPurchaseRetItem.getGoodsMaterialId(), goodsPurchaseRetItem.getPrice(), goodsPurchaseRetItem.getRetQty(),
-                        DirectFlagEnum.SUB, goodsPurchaseRetItem.getGoodsPurchaseRetId(), GoodsMaterialStockAccBillTypeEnum.C,goodsPurchaseRet.getStorageId(),goodsPurchaseRet.getStorageName());
+                        DirectFlagEnum.SUB, goodsPurchaseRetItem.getGoodsPurchaseRetId(),
+                        GoodsMaterialStockAccBillTypeEnum.C,goodsPurchaseRet.getStorageId(), goodsPurchaseRet.getStorageName());
 
                 //变化成本价
                 this.changeRefundCost(goodsPurchaseRetItem.getGoodsMaterialId(), goodsPurchaseRetItem);