Prechádzať zdrojové kódy

维多利亚数据搜索

yzc 1 rok pred
rodič
commit
1ab8845df4

+ 8 - 3
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/po/JdBackDetails.java

@@ -2,13 +2,13 @@ package com.fjhx.victoriatourist.entity.jd.po;
 
 import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
 import com.alibaba.excel.annotation.ExcelProperty;
-import com.ruoyi.common.core.domain.BasePo;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.common.core.domain.BasePo;
+import lombok.Getter;
+import lombok.Setter;
 
 import java.math.BigDecimal;
 import java.util.Date;
-import lombok.Getter;
-import lombok.Setter;
 
 /**
  * <p>
@@ -30,6 +30,11 @@ public class JdBackDetails extends BasePo {
     private Long jdBackId;
 
     /**
+     * 产品id
+     */
+    private Long productId;
+
+    /**
      * 退货单号
      */
     @ExcelProperty("退货单号")

+ 10 - 2
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/deliver/impl/DeliverGoodsServiceImpl.java

@@ -2,6 +2,7 @@ package com.fjhx.victoriatourist.service.deliver.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.extra.spring.SpringUtil;
 import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
@@ -54,6 +55,7 @@ import com.fjhx.wms.service.stock.StockWaitDetailsService;
 import com.fjhx.wms.service.stock.StockWaitService;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
@@ -104,6 +106,10 @@ public class DeliverGoodsServiceImpl extends ServiceImpl<DeliverGoodsMapper, Del
     @Autowired
     private StockJournalService stockJournalService;
 
+    @Value("${spring.profiles.active}")
+    private String active;
+
+
     @Override
     public Page<DeliverGoodsVo> getPage(DeliverGoodsSelectDto dto) {
         IWrapper<DeliverGoods> wrapper = getWrapper();
@@ -114,7 +120,7 @@ public class DeliverGoodsServiceImpl extends ServiceImpl<DeliverGoodsMapper, Del
 
     @Override
     public List<DeliverGoodsDetailsVo> detail(Long id) {
-        Assert.notEmpty(id,"发货id不能为空");
+        Assert.notEmpty(id, "发货id不能为空");
 //        DeliverGoods deliverGoods = this.getById(id);
 //        DeliverGoodsVo deliverGoodsVo = BeanUtil.copyProperties(deliverGoods, DeliverGoodsVo.class);
 
@@ -195,7 +201,9 @@ public class DeliverGoodsServiceImpl extends ServiceImpl<DeliverGoodsMapper, Del
 
         //发起快递100订阅
         DynamicDataSourceContextHolder.push(SourceConstant.KD100);
-        Integer state = KD100Util.monitor(logisticsInfos.getLogisticsCompanyCode(), logisticsInfos.getCode(), logisticsInfos.getId(), 1, LogisticsInfos.class).getState();
+        //只在生产环境调用Kd100
+        String activeProfile = SpringUtil.getActiveProfile();
+        Integer state = !"prod".equals(activeProfile) ? -1 : KD100Util.monitor(logisticsInfos.getLogisticsCompanyCode(), logisticsInfos.getCode(), logisticsInfos.getId(), 1, LogisticsInfos.class).getState();
         DynamicDataSourceContextHolder.poll();
         logisticsInfos.setIsKd100(1);
         logisticsInfos.setLogisticsStatus(state);

+ 11 - 2
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/impl/JdBackServiceImpl.java

@@ -2,6 +2,7 @@ package com.fjhx.victoriatourist.service.jd.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.extra.spring.SpringUtil;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
@@ -32,6 +33,7 @@ import com.fjhx.wms.entity.warehouse.po.Warehouse;
 import com.fjhx.wms.service.warehouse.WarehouseService;
 import com.obs.services.internal.ServiceException;
 import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.ruoyi.common.utils.wrapper.SqlField;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -69,9 +71,14 @@ public class JdBackServiceImpl extends ServiceImpl<JdBackMapper, JdBack> impleme
     @Override
     public Page<JdBackVo> getPage(JdBackSelectDto dto) {
         IWrapper<JdBack> wrapper = getWrapper();
-        wrapper.like("jb", JdBackVo::getLogisticsCode, dto.getKeyword());
+        wrapper.keyword(dto.getKeyword(),
+                new SqlField("jb", JdBackVo::getLogisticsCode),
+                new SqlField("jbd.product_code"),
+                new SqlField("jbd.product_name")
+        );
         wrapper.eq("jb", JdBackVo::getType, dto.getType());
         wrapper.eq("jb", JdBackVo::getStatus, dto.getStatus());
+        wrapper.groupBy("jb.id");
         wrapper.orderByDesc("jb", JdBack::getId);
         Page<JdBackVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
         List<JdBackVo> records = page.getRecords();
@@ -145,7 +152,9 @@ public class JdBackServiceImpl extends ServiceImpl<JdBackMapper, JdBack> impleme
         }
         //发起快递100订阅
         DynamicDataSourceContextHolder.push(SourceConstant.KD100);
-        Integer state = KD100Util.monitor(jdBackDto.getLogisticsCompanyCode(), jdBackDto.getLogisticsCode(), jdBackDto.getId(), 4, LogisticsInfos.class).getState();
+        //只在生产环境调用Kd100
+        String activeProfile = SpringUtil.getActiveProfile();
+        Integer state = !"prod".equals(activeProfile) ? -1 : KD100Util.monitor(jdBackDto.getLogisticsCompanyCode(), jdBackDto.getLogisticsCode(), jdBackDto.getId(), 4, LogisticsInfos.class).getState();
         DynamicDataSourceContextHolder.poll();
         logisticsInfos.setLogisticsStatus(state);
         logisticsInfos.setIsKd100(1);

+ 12 - 3
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/impl/JdOrderServiceImpl.java

@@ -47,6 +47,7 @@ import com.ruoyi.common.core.domain.BaseIdPo;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.ruoyi.common.utils.wrapper.SqlField;
 import com.ruoyi.system.service.ISysRoleService;
 import com.ruoyi.system.utils.UserUtil;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -111,7 +112,11 @@ public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> impl
         wrapper.orderByDesc("jo", JdOrder::getId);
 
         if (ObjectUtil.isNotEmpty(dto.getKeyword())) {
-            wrapper.and(q -> q.like("jo", JdOrderVo::getCode, dto.getKeyword()));
+            wrapper.keyword(dto.getKeyword(),
+                    new SqlField("jo", JdOrderVo::getCode),
+                    new SqlField("pi.custom_code"),
+                    new SqlField("pi.name")
+            );
         }
 
         //添加权限过滤
@@ -428,9 +433,13 @@ public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> impl
         IWrapper<JdOrder> wrapper = getWrapper();
         wrapper.eq("st.in_status", dto.getInStatus());
         wrapper.orderByDesc("jdo.create_time");
-
+        wrapper.groupBy("jdo.id");
         if (ObjectUtil.isNotEmpty(dto.getKeyword())) {
-            wrapper.and(q -> q.like("jdo", JdOrderVo::getCode, dto.getKeyword()));
+            wrapper.keyword(dto.getKeyword(),
+                    new SqlField("jdo", JdOrderVo::getCode),
+                    new SqlField("pi.custom_code"),
+                    new SqlField("pi.name")
+            );
         }
 
         Page<JdOrderVo> page = this.baseMapper.getReceivePage(dto.getPage(), wrapper);

+ 6 - 1
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/order/impl/OrderInfoServiceImpl.java

@@ -40,6 +40,7 @@ import com.fjhx.wms.service.stock.StockWaitDetailsService;
 import com.fjhx.wms.service.stock.StockWaitService;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.ruoyi.common.utils.wrapper.SqlField;
 import com.ruoyi.system.service.ISysRoleService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -82,7 +83,11 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
     @Override
     public Page<OrderInfoVo> getPage(OrderInfoSelectDto dto) {
         IWrapper<OrderInfo> wrapper = getWrapper();
-        wrapper.like("oi", OrderInfo::getCode, dto.getKeyword());
+        wrapper.keyword(dto.getKeyword(),
+                new SqlField("oi", OrderInfo::getCode),
+                new SqlField("pi.custom_code"),
+                new SqlField("pi.name")
+        );
         wrapper.eq("oi", OrderInfo::getType, dto.getType());
         wrapper.eq("oi", OrderInfo::getStatus, dto.getStatus());//根据状态过滤
         wrapper.orderByDesc("oi", OrderInfo::getId);

+ 7 - 3
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/quality/impl/QualityInfoServiceImpl.java

@@ -110,11 +110,15 @@ public class QualityInfoServiceImpl extends ServiceImpl<QualityInfoMapper, Quali
             //根据采购单号 供应商
             List<Long> suppIds = supplierInfoService.listObject(SupplierInfo::getId, q -> q.like(SupplierInfo::getName, dto.getKeyword()));
             wrapper.and(q -> q
-                            .like("json_unquote(p.victoriatourist_json -> '$.contractCode')", dto.getKeyword())
-                            .or().in("p.supply_id", suppIds))
-                    .or().like("dg.code", dto.getKeyword());
+                    .like("json_unquote(p.victoriatourist_json -> '$.contractCode')", dto.getKeyword())
+                    .or().in("p.supply_id", suppIds)
+                    .or().like("dg.code", dto.getKeyword())
+                    .or().like("pi.custom_code",dto.getKeyword())
+                    .or().like("pi.name",dto.getKeyword())
+            );
         }
         wrapper.orderByDesc("asr", QualityInfo::getCreateTime);
+        wrapper.groupBy("asr.id");
         Page<QualityInfoVo> page = this.baseMapper.getPage1(dto.getPage(), wrapper);
         List<QualityInfoVo> records = page.getRecords();
         if (ObjectUtil.isEmpty(records)) {

+ 1 - 0
hx-victoriatourist/src/main/resources/mapper/jd/JdBackMapper.xml

@@ -17,6 +17,7 @@
             li.`code` logistics_code
         FROM
             jd_back jb
+                JOIN jd_back_details jbd ON jbd.jd_back_id = jb.id
                 JOIN logistics_infos li ON li.business_id = jb.id
             ${ew.customSqlSegment}
     </select>

+ 2 - 0
hx-victoriatourist/src/main/resources/mapper/jd/JdOrderMapper.xml

@@ -44,6 +44,8 @@
         FROM
             jd_order jdo
                 JOIN stock_transfer st ON st.business_id = jdo.id
+                LEFT JOIN jd_order_details jod ON jod.jd_order_id = jdo.id
+                LEFT JOIN bytesailing_item.product_info pi ON jod.product_id = pi.id
             ${ew.customSqlSegment}
     </select>
 

+ 2 - 0
hx-victoriatourist/src/main/resources/mapper/quality/QualityInfoMapper.xml

@@ -34,6 +34,8 @@
             asr.quality_status
         FROM
             bytesailing_wms.arrival_stock_records asr
+                JOIN bytesailing_wms.arrival_stock_records_details asrd ON asrd.arrival_stock_records_id = asr.id AND asrd.del_flag = 0
+                LEFT JOIN bytesailing_item.product_info pi ON asrd.product_info_id = pi.id and pi.del_flag = 0
                 JOIN bytesailing_wms.stock_wait sw ON asr.stock_wait_id = sw.id
                 JOIN bytesailing_purchase.purchase p ON sw.business_id = p.id
                 JOIN deliver_goods dg ON dg.id = json_unquote(sw.victoriatourist_json -> '$.deliverGoodsId')

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

@@ -27,7 +27,9 @@ public enum JournalType {
     COMPLETION_IN(InOutType.IN, 17, "待入库 完工入库", ""),
     PURCHASE_ARRIVAL_IN(InOutType.IN, 18, "待入库 采购到货", ""),
     ARRIVAL_QUALITY(InOutType.IN, 19, "到货质检", "quality_info"),
-    PRODUCTION_TASK_OUT(InOutType.OUT, 20, "生产任务待出库出库", "production_task");
+    PRODUCTION_TASK_OUT(InOutType.OUT, 20, "生产任务待出库出库", "production_task"),
+    QUALIFIED_TO_DEFECTIVE(InOutType.IN, 21, "良品转次品", "stock"),
+    DEFECTIVE_TO_QUALIFIED(InOutType.IN, 22, "次品转良品", "stock");
 
 
     /**

+ 48 - 13
hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockServiceImpl.java

@@ -7,6 +7,7 @@ import com.alibaba.fastjson2.JSONObject;
 import com.alibaba.fastjson2.JSONWriter;
 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;
@@ -649,6 +650,7 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
     /**
      * 次品转良品
      */
+    @DSTransactional
     @Override
     public void defectiveToQualified(Stock stock) {
         if (ObjectUtil.isEmpty(stock.getId())) {
@@ -669,25 +671,28 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
         json.put("defectiveQuantity", defectiveQuantity.subtract(stock.getQuantity()));
         stock1.setVictoriatouristJson(JSONObject.toJSONString(json, JSONWriter.Feature.WriteLongAsString));
         updateById(stock1);
-    }
-
-    @Override
-    public void inOut(List<? extends InOutBo> list, Long warehouseId, JournalType journalType, Long businessId) {
-
-        // 改变库存数量
-        changeStock(list, warehouseId, journalType);
-
-        // 增加出入库记录
-        Long journalId = addJournal(warehouseId, journalType, businessId);
-
-        // 添加出入库明细
-        addJournalDetails(list, journalId);
 
+        //保存出入库记录(循环两次 一次入库记录一次出库记录)
+        for (int i = 1; i <= 2; i++) {
+            StockJournal stockJournal = new StockJournal();
+            stockJournal.setId(IdWorker.getId());
+            stockJournal.setType(JournalType.DEFECTIVE_TO_QUALIFIED.getDetailType());
+            stockJournal.setOpType(i);
+            stockJournal.setWarehouseId(stock1.getWarehouseId());
+            stockJournalService.save(stockJournal);
+            StockJournalDetails stockJournalDetails = new StockJournalDetails();
+            stockJournalDetails.setId(IdWorker.getId());
+            stockJournalDetails.setStockJournalId(stockJournal.getId());
+            stockJournalDetails.setProductId(stock1.getProductId());
+            stockJournalDetails.setQuantity(stock.getQuantity());
+            stockJournalDetailsService.save(stockJournalDetails);
+        }
     }
 
     /**
      * 良品转次品
      */
+    @DSTransactional
     @Override
     public void qualifiedToDefective(Stock stock) {
         if (ObjectUtil.isEmpty(stock.getId())) {
@@ -708,6 +713,36 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
         json.put("defectiveQuantity", defectiveQuantity.add(stock.getQuantity()));
         stock1.setVictoriatouristJson(JSONObject.toJSONString(json, JSONWriter.Feature.WriteLongAsString));
         updateById(stock1);
+
+        //保存出入库记录(循环两次 一次入库记录一次出库记录)
+        for (int i = 1; i <= 2; i++) {
+            StockJournal stockJournal = new StockJournal();
+            stockJournal.setId(IdWorker.getId());
+            stockJournal.setType(JournalType.DEFECTIVE_TO_QUALIFIED.getDetailType());
+            stockJournal.setOpType(i);
+            stockJournal.setWarehouseId(stock1.getWarehouseId());
+            stockJournalService.save(stockJournal);
+            StockJournalDetails stockJournalDetails = new StockJournalDetails();
+            stockJournalDetails.setId(IdWorker.getId());
+            stockJournalDetails.setStockJournalId(stockJournal.getId());
+            stockJournalDetails.setProductId(stock1.getProductId());
+            stockJournalDetails.setQuantity(stock.getQuantity());
+            stockJournalDetailsService.save(stockJournalDetails);
+        }
+    }
+
+    @Override
+    public void inOut(List<? extends InOutBo> list, Long warehouseId, JournalType journalType, Long businessId) {
+
+        // 改变库存数量
+        changeStock(list, warehouseId, journalType);
+
+        // 增加出入库记录
+        Long journalId = addJournal(warehouseId, journalType, businessId);
+
+        // 添加出入库明细
+        addJournalDetails(list, journalId);
+
     }
 
     /**