浏览代码

配件配置

FengChaoYu 9 月之前
父节点
当前提交
305ebbc6cb

+ 18 - 0
mall-server-api/src/main/java/com/gree/mall/manager/controller/material/base/PartsBaseController.java

@@ -9,6 +9,7 @@ import com.gree.mall.manager.enums.material.PartBaseTypeEnum;
 import com.gree.mall.manager.exception.RemoteServiceException;
 import com.gree.mall.manager.helper.ResponseHelper;
 import com.gree.mall.manager.logic.material.base.PartsBaseLogic;
+import com.gree.mall.manager.plus.entity.MaterialConfig;
 import com.gree.mall.manager.plus.entity.WebsitPartsBase;
 import com.gree.mall.manager.utils.CommonUtils;
 import com.gree.mall.manager.utils.excel.ExcelUtils;
@@ -110,6 +111,23 @@ public class PartsBaseController {
         return ResponseHelper.success();
     }
 
+    @PostMapping("/config")
+    @ApiOperation(value = "配件基础-配置")
+    public ResponseHelper<MaterialConfig> config() throws Exception {
+
+        MaterialConfig config = partsBaseLogic.config();
+        return ResponseHelper.success(config);
+    }
+
+    @PostMapping("/config/edit")
+    @ApiOperation(value = "配件基础-配置编辑")
+    public ResponseHelper configEdit(
+            @RequestBody MaterialConfig materialConfig
+    ) throws Exception {
+        partsBaseLogic.configEdit(materialConfig);
+        return ResponseHelper.success();
+    }
+
     @GetMapping("/template/excel")
     @ApiOperation("模板下载")
     public void excelDownload(

+ 35 - 0
mall-server-api/src/main/java/com/gree/mall/manager/logic/material/base/PartsBaseLogic.java

@@ -9,7 +9,9 @@ import com.gree.mall.manager.commonmapper.MaterialMapper;
 import com.gree.mall.manager.enums.material.StateEnum;
 import com.gree.mall.manager.exception.RemoteServiceException;
 import com.gree.mall.manager.logic.common.CommonLogic;
+import com.gree.mall.manager.plus.entity.MaterialConfig;
 import com.gree.mall.manager.plus.entity.WebsitPartsBase;
+import com.gree.mall.manager.plus.service.MaterialConfigService;
 import com.gree.mall.manager.plus.service.WebsitGoodsService;
 import com.gree.mall.manager.plus.service.WebsitPartsBaseService;
 import com.gree.mall.manager.zfire.bean.ZfireParamBean;
@@ -20,6 +22,7 @@ import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.math.BigDecimal;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -35,6 +38,7 @@ public class PartsBaseLogic {
     private final MaterialMapper materialMapper;
     private final WebsitPartsBaseService websitPartsBaseService;
     private final WebsitGoodsService websitGoodsService;
+    private final MaterialConfigService materialConfigService;
 
 
     public IPage<PartsBaseVO> page(ZfireParamBean zfireParamBean) {
@@ -150,4 +154,35 @@ public class PartsBaseLogic {
 
         websitPartsBaseService.saveBatch(PartsBaseManageMap.values());
     }
+
+    public MaterialConfig config() {
+        final AdminUserCom adminUser = commonLogic.getAdminUser();
+        if (adminUser.getType() == 2) {
+            throw new RemoteServiceException("平台账号禁止操作");
+        }
+
+        MaterialConfig config = materialConfigService.lambdaQuery()
+                .eq(MaterialConfig::getCompanyWechatId, adminUser.getAdminCompanyWechat().getCompanyWechatId())
+                .one();
+
+        config.setWorkerGoodsIncrId(0);
+
+        return config;
+    }
+
+    public void configEdit(MaterialConfig materialConfig) {
+        final AdminUserCom adminUser = commonLogic.getAdminUser();
+        if (adminUser.getType() == 2) {
+            throw new RemoteServiceException("平台账号禁止操作");
+        }
+
+        materialConfigService.lambdaUpdate()
+                .set(Objects.nonNull(materialConfig.getPriceRate1()) && materialConfig.getPriceRate1().compareTo(BigDecimal.ONE) > 0, MaterialConfig::getPriceRate1, materialConfig.getPriceRate1())
+                .set(Objects.nonNull(materialConfig.getPriceRate2()) && materialConfig.getPriceRate2().compareTo(BigDecimal.ONE) > 0, MaterialConfig::getPriceRate2, materialConfig.getPriceRate2())
+                .set(Objects.nonNull(materialConfig.getPriceRate3()) && materialConfig.getPriceRate3().compareTo(BigDecimal.ONE) > 0, MaterialConfig::getPriceRate3, materialConfig.getPriceRate3())
+                .set(MaterialConfig::getUpdateBy, adminUser.getNickName())
+                .set(MaterialConfig::getUpdateTime, DateUtil.date())
+                .eq(MaterialConfig::getCompanyWechatId, adminUser.getAdminCompanyWechat().getCompanyWechatId())
+                .update();
+    }
 }

+ 45 - 16
mall-server-api/src/main/java/com/gree/mall/manager/logic/websit/WebsitSalesRetLogic.java

@@ -70,7 +70,7 @@ public class WebsitSalesRetLogic {
         List<String> companyWechatIds = adminUser.getCompanyWechatIds();
 
         //1.组装查询条件
-        ZfireParamBean zfireParam = FieldUtils.supplyParam(zfireParamBean, WebsitSalesRetVO.class,adminUser);
+        ZfireParamBean zfireParam = FieldUtils.supplyParam(zfireParamBean, WebsitSalesRetVO.class, adminUser);
 
 
         IPage<WebsitSalesRetVO> websitSalesRetVOIPage = websitSalesRetCMapper.pageV2(new Page(zfireParamBean.getPageNum(),
@@ -89,6 +89,11 @@ public class WebsitSalesRetLogic {
             throw new RemoteServiceException("请选择退货仓库");
         }
 
+//        final Integer count = websitSalesRetService.lambdaQuery()
+//                .eq(WebsitSalesRet::getSalesId, websitSalesRetAddUP.getSalesId())
+//                .eq(WebsitSalesRet::get)
+//                .count();
+
         WebsitSales websitSales = websitSalesService.getById(websitSalesRetAddUP.getSalesId());
         if (!websitSales.getFlag().equals("PAY_TAKE"))
             throw new RemoteServiceException("未提货不能退货");
@@ -98,7 +103,7 @@ public class WebsitSalesRetLogic {
         websitSalesRetAddUP.setPayNo(websitSales.getPayNo());
         websitSalesRetAddUP.setTotalAmount(websitSales.getTotalAmount());
         websitSalesRetAddUP.setPayTime(websitSales.getPayTime());
-        websitSalesRetAddUP.setSalesRetId("TF"+ IdWorker.getIdStr());
+        websitSalesRetAddUP.setSalesRetId("TF" + IdWorker.getIdStr());
         websitSalesRetAddUP.setCompanyWechatId(adminUser.getCompanyWechatId());
         websitSalesRetAddUP.setCompanyName(adminUser.getCompanyName());
         websitSalesRetAddUP.setBuyPeople(websitSales.getBuyPeople());
@@ -127,9 +132,11 @@ public class WebsitSalesRetLogic {
             one.setRetQty(one.getRetQty().add(websitSalesRetItem.getRetQty()));
 
             if (one.getRetQty().doubleValue() > one.getSalesQty().doubleValue()) {
-                throw new RemoteServiceException(websitSalesRetItem.getGoodsName()+"超过销售数量");
-
+                throw new RemoteServiceException(websitSalesRetItem.getGoodsName() + "超过销售数量");
             }
+
+            this.checkConvertRetQty(one, websitSalesRetItem);
+
             one.updateById();
 
             websitSales.setRetAmount(websitSales.getRetAmount()
@@ -137,7 +144,7 @@ public class WebsitSalesRetLogic {
 
             websitSales.updateById();
             websitSalesRetItem.setSalesRetId(websitSalesRetAddUP.getSalesRetId());
-            websitSalesRetItem.setConvertQty(websitSalesRetItem.getRetQty());
+            websitSalesRetItem.setConvertQty(one.getConvertQty());
             websitSalesRetItem.setExamineQty(websitSalesRetItem.getRetQty());
             if (websitSalesRetItem.getSaleAmount() != null)
                 allAmount = allAmount.add(websitSalesRetItem.getRetQty().multiply(websitSalesRetItem.getPrice()));
@@ -147,6 +154,25 @@ public class WebsitSalesRetLogic {
         websitSalesRetItemService.saveBatch(websitSalesRetAddUP.getWebsitSalesRetItems());
     }
 
+    private void checkConvertRetQty(WebsitSalesItem salesItem, WebsitSalesRetItem websitSalesRetItem) {
+        // 退货单明细退货转换数量
+        BigDecimal retConvertQty = websitSalesRetItem.getRetQty().divide(salesItem.getGoodsSalesConvertQty(), 1, BigDecimal.ROUND_UP);
+        websitSalesRetItem.setRetConvertQty(retConvertQty);
+        websitSalesRetItem.setWorkerGoodsId(salesItem.getWorkerGoodsId());
+        websitSalesRetItem.setWorkerGoodsName(salesItem.getWorkerGoodsName());
+
+        if (salesItem.getRetQty().compareTo(salesItem.getSalesQty()) >= 0) {
+            // 退货数量大于等于销售数量,全退转换数量
+            retConvertQty = websitSalesRetItem.getConvertQty().subtract(websitSalesRetItem.getRetConvertQty());
+            websitSalesRetItem.setRetConvertQty(retConvertQty);
+            salesItem.setConvertRetQty(retConvertQty);
+        } else {
+            // 历史退货转换数量加上本次退货转换数量
+            salesItem.setConvertRetQty(salesItem.getConvertRetQty().add(retConvertQty));
+        }
+
+    }
+
     @Transactional(rollbackFor = Exception.class)
     public void update(WebsitSalesRetAddUP websitSalesRetAddUP) throws Exception {
         AdminUserCom adminUser = commonLogic.getAdminUser();
@@ -186,8 +212,8 @@ public class WebsitSalesRetLogic {
 
             if (websitSales.getSalesType().equals(WebsitSalesTypeEnum.ENGIN.getName())) {
                 websitGoodsMangerLogic.givePrice((websitSales.getRetAmount().multiply(new BigDecimal("-1"))),
-                        websitSales.getOrderEnginBaseId(),null,"退货金额记录,退货单号:"+websitSales.getSalesRetId(),websitSales.getSalesRetId(),websitSales.getGoodsType());
-                websitGoodsMangerLogic.upManage(websitSales.getOrderEnginBaseId(),websitSales.getGoodsType());
+                        websitSales.getOrderEnginBaseId(), null, "退货金额记录,退货单号:" + websitSales.getSalesRetId(), websitSales.getSalesRetId(), websitSales.getGoodsType());
+                websitGoodsMangerLogic.upManage(websitSales.getOrderEnginBaseId(), websitSales.getGoodsType());
             }
             return;
         }
@@ -196,12 +222,15 @@ public class WebsitSalesRetLogic {
             throw new RemoteServiceException("没有产品不能提交");
 
         BigDecimal allAmount = new BigDecimal("0");
-        websitSalesRetItemService.lambdaUpdate().eq(WebsitSalesRetItem::getSalesRetId, websitSalesRetAddUP.getSalesRetId()).remove();
-        for (WebsitSalesRetItem websitSalesRetItem : websitSalesRetAddUP.getWebsitSalesRetItems()) {
-            websitSalesRetItem.setId(null);
-            websitSalesRetItem.setSalesRetId(websitSalesRetAddUP.getSalesRetId());
-            websitSalesRetItem.setConvertQty(websitSalesRetItem.getRetQty());
-            websitSalesRetItem.setExamineQty(websitSalesRetItem.getRetQty());
+//        websitSalesRetItemService.lambdaUpdate().eq(WebsitSalesRetItem::getSalesRetId, websitSalesRetAddUP.getSalesRetId()).remove();
+        final List<WebsitSalesRetItem> retItems = websitSalesRetItemService.lambdaQuery()
+                .eq(WebsitSalesRetItem::getSalesRetId, websitSalesRetAddUP.getSalesRetId())
+                .list();
+        for (WebsitSalesRetItem websitSalesRetItem : retItems) {
+//            websitSalesRetItem.setId(null);
+//            websitSalesRetItem.setSalesRetId(websitSalesRetAddUP.getSalesRetId());
+//            websitSalesRetItem.setConvertQty(websitSalesRetItem.getRetQty());
+//            websitSalesRetItem.setExamineQty(websitSalesRetItem.getRetQty());
             allAmount = allAmount.add(websitSalesRetItem.getRetQty().multiply(websitSalesRetItem.getSaleAmount()));
         }
         websitSalesRetAddUP.setRetAmount(allAmount);
@@ -313,8 +342,8 @@ public class WebsitSalesRetLogic {
     @Transactional(rollbackFor = Exception.class)
     public void del(List<String> salesRetId) {
 
-        websitSalesRetService.lambdaUpdate().in(WebsitSalesRet::getSalesRetId,salesRetId).remove();
-        websitSalesRetItemService.lambdaUpdate().in(WebsitSalesRetItem::getSalesRetId,salesRetId).remove();
+        websitSalesRetService.lambdaUpdate().in(WebsitSalesRet::getSalesRetId, salesRetId).remove();
+        websitSalesRetItemService.lambdaUpdate().in(WebsitSalesRetItem::getSalesRetId, salesRetId).remove();
     }
 
     public WebsitSalesRetDetail detail(String id) {
@@ -342,7 +371,7 @@ public class WebsitSalesRetLogic {
             websitSalesRetDetail.setAddress(websitSales.getAddress());
         }
 
-        websitSalesRetDetail.setWebsitSalesRetItems(websitSalesRetItemService.lambdaQuery().eq(WebsitSalesRetItem::getSalesRetId,id).list());
+        websitSalesRetDetail.setWebsitSalesRetItems(websitSalesRetItemService.lambdaQuery().eq(WebsitSalesRetItem::getSalesRetId, id).list());
         return websitSalesRetDetail;
     }
 }