yzc преди 1 година
родител
ревизия
0394906821

+ 2 - 2
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/controller/excess/ExcessGoodsDetailsController.java

@@ -84,8 +84,8 @@ public class ExcessGoodsDetailsController {
     }
 
     @PostMapping("/inStock")
-    public void inStock(@RequestBody ExcessGoodsDetailsDto dto) {
-        excessGoodsDetailsService.inStock(dto);
+    public void inStock(@RequestBody List<Long> excessGoodsDetailsIds) {
+        excessGoodsDetailsService.inStock(excessGoodsDetailsIds);
     }
 
 }

+ 1 - 1
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/excess/ExcessGoodsDetailsService.java

@@ -51,5 +51,5 @@ public interface ExcessGoodsDetailsService extends BaseService<ExcessGoodsDetail
 
     void backGoods(ExcessGoodsDetailsDto dto);
 
-    void inStock(ExcessGoodsDetailsDto dto);
+    void inStock(List<Long> excessGoodsDetailsIds);
 }

+ 55 - 15
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/excess/impl/ExcessGoodsDetailsServiceImpl.java

@@ -2,12 +2,17 @@ package com.fjhx.victoriatourist.service.excess.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.extra.spring.SpringUtil;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
+import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.common.constant.SourceConstant;
 import com.fjhx.common.utils.Assert;
 import com.fjhx.item.entity.product.po.ProductInfo;
 import com.fjhx.item.service.product.ProductInfoService;
+import com.fjhx.kd100.util.KD100Util;
 import com.fjhx.victoriatourist.entity.excess.dto.ExcessGoodsDetailsDto;
 import com.fjhx.victoriatourist.entity.excess.dto.ExcessGoodsDetailsSelectDto;
 import com.fjhx.victoriatourist.entity.excess.po.ExcessGoodsDetails;
@@ -57,6 +62,8 @@ public class ExcessGoodsDetailsServiceImpl extends ServiceImpl<ExcessGoodsDetail
     private IWrapper<ExcessGoodsDetails> getWrapper(ExcessGoodsDetailsSelectDto dto) {
         IWrapper<ExcessGoodsDetails> wrapper = getWrapper();
         wrapper.eq("egd", ExcessGoodsDetails::getStockWaitId, dto.getStockWaitId());
+
+        wrapper.orderByDesc("egd", ExcessGoodsDetails::getCreateTime);
         wrapper.orderByDesc("egd", ExcessGoodsDetails::getId);
         return wrapper;
     }
@@ -92,6 +99,7 @@ public class ExcessGoodsDetailsServiceImpl extends ServiceImpl<ExcessGoodsDetail
                     .or().like("lis.logistics_company_code", keyword)
                     .or().like("lis.`code`", keyword)
                     .or().like("egd", ExcessGoodsDetails::getQuantity, keyword)
+                    .or().like("egd", ExcessGoodsDetails::getBackLogisticsCode, keyword)
                     .or().in("egd", ExcessGoodsDetails::getProductId, productIds)
             );
         }
@@ -197,12 +205,8 @@ public class ExcessGoodsDetailsServiceImpl extends ServiceImpl<ExcessGoodsDetail
      */
     @DSTransactional
     @Override
-    public void inStock(ExcessGoodsDetailsDto dto) {
-        ExcessGoodsDetails byId = this.getById(dto.getId());
-        Assert.notEmpty(byId, "查询不到多货信息!");
-        dto.setProcessingMethod(20);//入库
-        this.updateById(dto);
-
+    public void inStock(List<Long> excessGoodsDetailsIds) {
+        ExcessGoodsDetails byId = this.getById(excessGoodsDetailsIds.get(0));
         StockWait byId1 = stockWaitService.getById(byId.getStockWaitId());
 
         //添加一份待出库数据
@@ -210,20 +214,56 @@ public class ExcessGoodsDetailsServiceImpl extends ServiceImpl<ExcessGoodsDetail
         stockWait.setType(1);
         stockWait.setStatus(0);
         stockWait.setBusinessId(byId.getId());
-        stockWait.setBusinessType(StockWaitType.EXCESS_GOODS_IN.getDetailType());//退货出库
+        stockWait.setBusinessType(StockWaitType.EXCESS_GOODS_IN.getDetailType());
         stockWait.setPurchaseId(byId.getPurchaseId());
         stockWait.setBusinessCode(byId1.getBusinessCode());
-        stockWait.setExcessGoodsId(byId.getId());
         stockWaitService.save(stockWait);
 
-        StockWaitDetails stockWaitDetails = new StockWaitDetails();
-        stockWaitDetails.setStockWaitId(stockWait.getId());
-        stockWaitDetails.setProductId(byId.getProductId());
-        stockWaitDetails.setQuantity(byId.getQuantity());
 
-        stockWaitDetails.setBusinessDetailsId(byId.getId());
-        stockWaitDetails.setExcessGoodsDetailsId(byId.getId());
-        stockWaitDetailsService.save(stockWaitDetails);
+        long logisticsInfosId = IdWorker.getId();
+
+        LogisticsInfos logisticsInfos = new LogisticsInfos();
+
+        LogisticsInfos byId2 = logisticsInfosService.getById(byId.getLogisticsInfosId());
+        if (ObjectUtil.isNotEmpty(byId2)) {
+            logisticsInfos.setLogisticsCompanyCode(byId2.getLogisticsCompanyCode());
+            logisticsInfos.setCode(byId2.getCode());
+        }
+
+        logisticsInfos.setBusinessId(stockWait.getId());
+        logisticsInfos.setBusinessType(1);
+        logisticsInfos.setId(logisticsInfosId);
+        logisticsInfos.setIsKd100(1);
+        logisticsInfos.setStockWaitId(stockWait.getId());
+        logisticsInfos.setPurchaseId(stockWait.getPurchaseId());
+        //发起快递100订阅
+        String activeProfile = SpringUtil.getActiveProfile();
+        DynamicDataSourceContextHolder.push(SourceConstant.KD100);
+        Integer state = !"prod".equals(activeProfile) ? -1 : KD100Util.monitor(logisticsInfos.getLogisticsCompanyCode(), logisticsInfos.getCode(), logisticsInfosId, 1, LogisticsInfos.class).getState();
+        DynamicDataSourceContextHolder.poll();
+        logisticsInfos.setLogisticsStatus(state);
+        logisticsInfos.setIsKd100(1);
+        logisticsInfosService.save(logisticsInfos);
+
+
+        for (Long id : excessGoodsDetailsIds) {
+            ExcessGoodsDetails baseExcessGoodsDetails = this.getById(id);
+            Assert.notEmpty(baseExcessGoodsDetails, "查询不到多货信息!");
+            baseExcessGoodsDetails.setProcessingMethod(20);//入库
+            this.updateById(baseExcessGoodsDetails);
+
+
+            StockWaitDetails stockWaitDetails = new StockWaitDetails();
+            stockWaitDetails.setStockWaitId(stockWait.getId());
+            stockWaitDetails.setProductId(baseExcessGoodsDetails.getProductId());
+            stockWaitDetails.setQuantity(baseExcessGoodsDetails.getQuantity());
+
+            stockWaitDetails.setBusinessDetailsId(baseExcessGoodsDetails.getId());
+            stockWaitDetails.setExcessGoodsDetailsId(baseExcessGoodsDetails.getId());
+            stockWaitDetailsService.save(stockWaitDetails);
+        }
+
+
     }
 
 }

+ 1 - 1
hx-wms/src/main/java/com/fjhx/wms/entity/stock/emums/StockWaitType.java

@@ -16,7 +16,7 @@ public enum StockWaitType {
     JD_ORDER_OUT(InOutType.OUT, JournalType.JD_SALES_OUT, 5, "京东订单出库", "jd_order"),
     SALE_ORDER_OUT(InOutType.OUT,JournalType.SALES_OUT, 6, "销售订单出库", "order_info"),
 //    PRODUCTION_TASK_OUT(InOutType.OUT, 7, "生产任务待出库", "production_task"),
-    EXCESS_GOODS_IN(InOutType.IN, JournalType.EXCESS_GOODS_IN,23, "生产任务待出库", "production_task");
+    EXCESS_GOODS_IN(InOutType.IN, JournalType.EXCESS_GOODS_IN,23, "多货入库", "production_task");
 
 
     /**

+ 2 - 0
hx-wms/src/main/java/com/fjhx/wms/entity/stock/vo/StockWaitVo.java

@@ -100,4 +100,6 @@ public class StockWaitVo extends StockWait {
      */
     private String arrivalRemark;
 
+    private String logisticsSubCode;
+
 }

+ 4 - 0
hx-wms/src/main/java/com/fjhx/wms/mapper/stock/StockWaitMapper.java

@@ -39,4 +39,8 @@ public interface StockWaitMapper extends BaseMapper<StockWait> {
 
     List<InStockWaitExportExcel> getInStockWaitExportExcel(@Param("ew") IWrapper wrapper);
 
+    StockWaitVo detail(@Param("ew") IWrapper<StockWait> wrapper);
+
+
+
 }

+ 10 - 2
hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockCheckServiceImpl.java

@@ -35,7 +35,6 @@ import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.ruoyi.system.utils.UserUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.math.BigDecimal;
@@ -114,7 +113,7 @@ public class StockCheckServiceImpl extends ServiceImpl<StockCheckMapper, StockCh
     }
 
     @Override
-    @Transactional(rollbackFor = Exception.class)
+    @DSTransactional
     public void add(StockCheckDto stockCheckDto) {
 
         long stockCheckId = IdWorker.getId();
@@ -144,6 +143,15 @@ public class StockCheckServiceImpl extends ServiceImpl<StockCheckMapper, StockCh
         // 保存盘点记录以及明细
         save(stockCheckDto);
         stockCheckDetailsService.saveBatch(list);
+
+        for (StockCheckDetails stockCheckDetails : list) {
+            Stock stock = stockService.getOne(q -> q
+                    .eq(Stock::getWarehouseId, stockCheckDto.getWarehouseId())
+                    .eq(Stock::getProductId, stockCheckDetails.getProductId())
+            );
+            stock.setQuantity(new BigDecimal(stockCheckDetails.getCheckQuantity()));
+            stockService.updateById(stock);
+        }
     }
 
     @Override

+ 22 - 9
hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockWaitServiceImpl.java

@@ -142,10 +142,9 @@ public class StockWaitServiceImpl extends ServiceImpl<StockWaitMapper, StockWait
             return page;
         }
 
-        List<String> logisticsCompanyCodes = records.stream().map(StockWaitVo::getLogisticsCompanyCode).distinct().collect(Collectors.toList());
         //物流公司名称map
         Map<String, String> logisticsCompanyMap = companyInfoService.mapKV(CompanyInfo::getCode, CompanyInfo::getName,
-                q -> q.in(CompanyInfo::getCode, logisticsCompanyCodes));
+                q -> q.orderByAsc(CompanyInfo::getId));
 
         //赋值操作人
         UserUtil.assignmentNickName(records, StockWaitVo::getCreateUser, StockWaitVo::setOperatorName);
@@ -168,11 +167,11 @@ public class StockWaitServiceImpl extends ServiceImpl<StockWaitMapper, StockWait
         List<Warehouse> warehouses = warehouseService.listByIds(wids);
         Map<Long, String> warehousesMap = warehouses.stream().collect(Collectors.toMap(Warehouse::getId, Warehouse::getName));
         for (StockWaitVo stockWaitVo : records) {
+            JSONObject json = new JSONObject();
             String victoriatouristJson = stockWaitVo.getVictoriatouristJson();
-            if (ObjectUtil.isEmpty(victoriatouristJson)) {
-                continue;
+            if (ObjectUtil.isNotEmpty(victoriatouristJson)) {
+                json = JSONObject.parseObject(victoriatouristJson);
             }
-            JSONObject json = JSONObject.parseObject(victoriatouristJson);
             json.put("receiptWarehouseName", warehousesMap.get(json.getLong("receiptWarehouseId")));
 
             //重新赋值物流信息
@@ -180,6 +179,7 @@ public class StockWaitServiceImpl extends ServiceImpl<StockWaitMapper, StockWait
             json.put("logisticsCompanyName", stockWaitVo.getLogisticsCompanyName());
             json.put("logisticsCompanyCode", stockWaitVo.getLogisticsCompanyCode());
             json.put("code", stockWaitVo.getLogisticsCode());
+            json.put("subCode", stockWaitVo.getLogisticsSubCode());
 
             stockWaitVo.setVictoriatouristJson(JSONObject.toJSONString(json, JSONWriter.Feature.WriteLongAsString));
         }
@@ -212,13 +212,28 @@ public class StockWaitServiceImpl extends ServiceImpl<StockWaitMapper, StockWait
 
     @Override
     public StockWaitVo detailByWdly(Long id) {
-        StockWait stockWait = this.getById(id);
-        StockWaitVo result = BeanUtil.toBean(stockWait, StockWaitVo.class);
+        StockWaitVo result = baseMapper.detail(IWrapper.<StockWait>getWrapper().eq("sw", StockWait::getId, id));
+
         List<StockWaitDetailsVo> stockWaitDetailsVos = stockWaitDetailsService.getList(IWrapper.<StockWaitDetails>getWrapper()
                 .eq(StockWaitDetails::getStockWaitId, id)
                 .orderByAsc("pi.name")
         );
 
+        //物流公司名称
+        CompanyInfo one = companyInfoService.getOne(q -> q.eq(CompanyInfo::getCode, result.getLogisticsCompanyCode()));
+        if(ObjectUtil.isNotEmpty(one)){
+            result.setLogisticsCompanyName(one.getName());
+        }
+
+        //重新赋值物流单号信息
+        String victoriatouristJsonStr = result.getVictoriatouristJson();
+        JSONObject json = ObjectUtil.isNotEmpty(victoriatouristJsonStr) ? JSONObject.parseObject(victoriatouristJsonStr) : new JSONObject();
+        json.put("logisticsCompanyName", result.getLogisticsCompanyName());
+        json.put("logisticsCompanyCode", result.getLogisticsCompanyCode());
+        json.put("code", result.getLogisticsCode());
+        json.put("subCode", result.getLogisticsSubCode());
+        result.setVictoriatouristJson(JSONObject.toJSONString(json, JSONWriter.Feature.WriteLongAsString));
+
 
         //赋值物品信息和采购信息
         List<Long> pids = stockWaitDetailsVos.stream().map(StockWaitDetails::getProductId).collect(Collectors.toList());
@@ -251,8 +266,6 @@ public class StockWaitServiceImpl extends ServiceImpl<StockWaitMapper, StockWait
         }
 
         //到货物流备注
-        String victoriatouristJson = stockWait.getVictoriatouristJson();
-        JSONObject json = ObjectUtil.isNotEmpty(victoriatouristJson) ? JSONObject.parseObject(victoriatouristJson) : new JSONObject();
         String arrivalRemark = wmsService.getArrivalRemark(json.getLong("deliverGoodsId"));
         result.setArrivalRemark(arrivalRemark);
 

+ 15 - 2
hx-wms/src/main/resources/mapper/stock/StockWaitMapper.xml

@@ -40,12 +40,13 @@
             lis.logistics_company_code,
             lis.`code` AS logisticsCode,
             if(sw.business_type =5,(select jd.address from bytesailing_victoriatourist.jd_order jd where jd.id = sw.business_id and jd.del_flag = 0),pb.detailed_address) as detailedAddress,
-            lis.arrival_remark
+            lis.arrival_remark,
+            lis.sub_code as logisticsSubCode
         FROM
             stock_wait sw
 --                 LEFT JOIN stock_wait_details swd ON swd.stock_wait_id = sw.id
 --                 LEFT JOIN bytesailing_item.product_info pi ON swd.product_id = pi.id
-                LEFT JOIN bytesailing_victoriatourist.logistics_infos lis ON lis.business_id = sw.deliverGoodsId
+                LEFT JOIN bytesailing_victoriatourist.logistics_infos lis ON lis.business_id = sw.deliverGoodsId or lis.business_id = sw.id
                 LEFT JOIN bytesailing_victoriatourist.purchase_back pb ON sw.business_id = pb.id
                 AND pb.del_flag = 0
             ${ew.customSqlSegment}
@@ -86,5 +87,17 @@
                 AND ci.del_flag = 0
             ${ew.customSqlSegment}
     </select>
+    <select id="detail" resultType="com.fjhx.wms.entity.stock.vo.StockWaitVo">
+        SELECT
+            sw.*,
+            lis.logistics_company_code,
+            lis.`code` AS logisticsCode,
+            lis.sub_code AS logisticsSubCode
+        FROM
+            stock_wait sw
+                LEFT JOIN bytesailing_victoriatourist.logistics_infos lis ON lis.business_id = sw.deliver_goods_id
+                OR lis.stock_wait_id = sw.id
+            ${ew.customSqlSegment}
+    </select>
 
 </mapper>