浏览代码

Merge remote-tracking branch 'origin/master'

24282 2 年之前
父节点
当前提交
463e4528d1
共有 32 个文件被更改,包括 478 次插入159 次删除
  1. 5 0
      hx-account/src/main/java/com/fjhx/account/entity/account/po/AccountRemainder.java
  2. 1 1
      hx-account/src/main/java/com/fjhx/account/service/account/impl/AccountPaymentServiceImpl.java
  3. 1 0
      hx-account/src/main/resources/mapper/account/AccountRemainderMapper.xml
  4. 12 1
      hx-mes/src/main/java/com/fjhx/mes/controller/work/WorkOrderController.java
  5. 1 1
      hx-mes/src/main/java/com/fjhx/mes/entity/work/po/WorkOrder.java
  6. 8 0
      hx-purchase/src/main/java/com/fjhx/purchase/controller/purchase/PurchaseController.java
  7. 6 2
      hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/vo/PurchaseVo.java
  8. 9 3
      hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/vo/SubscribeDetailVo.java
  9. 11 5
      hx-purchase/src/main/java/com/fjhx/purchase/service/purchase/PurchaseService.java
  10. 90 23
      hx-purchase/src/main/java/com/fjhx/purchase/service/purchase/impl/PurchaseServiceImpl.java
  11. 11 7
      hx-purchase/src/main/java/com/fjhx/purchase/service/sales/impl/SalesReturnDetailServiceImpl.java
  12. 3 3
      hx-purchase/src/main/java/com/fjhx/purchase/service/subscribe/impl/SubscribeDetailServiceImpl.java
  13. 54 1
      hx-sale/src/main/java/com/fjhx/sale/flow/PurchaseFlowByWdly.java
  14. 1 1
      hx-sale/src/main/java/com/fjhx/sale/service/contract/impl/ContractProductServiceImpl.java
  15. 2 1
      hx-sale/src/main/resources/mapper/contract/ContractProductMapper.xml
  16. 2 0
      hx-sale/src/main/resources/mapper/pack/PackShipmentMapper.xml
  17. 3 0
      hx-supply/src/main/java/com/fjhx/supply/service/supplier/impl/SupplierInfoServiceImpl.java
  18. 9 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/controller/stock/StockTransferController.java
  19. 34 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/stock/vo/StockTransferDetailsVo.java
  20. 3 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/stock/StockTransferService.java
  21. 30 8
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/stock/impl/StockTransferDetailsServiceImpl.java
  22. 61 2
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/stock/impl/StockTransferServiceImpl.java
  23. 8 3
      hx-victoriatourist/src/main/resources/mapper/stock/StockTransferDetailsMapper.xml
  24. 0 8
      hx-wms/src/main/java/com/fjhx/wms/controller/stock/StockController.java
  25. 3 0
      hx-wms/src/main/java/com/fjhx/wms/entity/stock/dto/StockSelectDto.java
  26. 3 0
      hx-wms/src/main/java/com/fjhx/wms/entity/stock/vo/StockVo.java
  27. 21 1
      hx-wms/src/main/java/com/fjhx/wms/entity/stock/vo/StockWaitDetailsVo.java
  28. 0 5
      hx-wms/src/main/java/com/fjhx/wms/service/stock/StockService.java
  29. 55 78
      hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockServiceImpl.java
  30. 17 0
      hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockWaitDetailsServiceImpl.java
  31. 7 3
      hx-wms/src/main/resources/mapper/stock/StockMapper.xml
  32. 7 2
      hx-wms/src/main/resources/mapper/stock/StockWaitDetailsMapper.xml

+ 5 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/po/AccountRemainder.java

@@ -35,4 +35,9 @@ public class AccountRemainder extends BasePo {
      */
     private BigDecimal remainder;
 
+    /**
+     * 变更-余额
+     */
+    private BigDecimal changeRemainder;
+
 }

+ 1 - 1
hx-account/src/main/java/com/fjhx/account/service/account/impl/AccountPaymentServiceImpl.java

@@ -160,7 +160,7 @@ public class AccountPaymentServiceImpl extends ServiceImpl<AccountPaymentMapper,
 
         //添加附件信息
         ObsFileUtil.saveFile(accountPaymentDto.getFileList(),accountPaymentDto.getId());
-
+        accountRemainder.setChangeRemainder(accountPaymentDto.getAmount());
         //修改账户-余额表的中余额
         accountRemainder.setRemainder( accountRemainder.getRemainder().subtract(accountPaymentDto.getAmount()));
         accountRemainderService.add(accountRemainder);

+ 1 - 0
hx-account/src/main/resources/mapper/account/AccountRemainderMapper.xml

@@ -7,6 +7,7 @@
             ar.account_management_id,
             ar.currency,
             ar.remainder,
+            ar.change_remainder,
             ar.create_user,
             ar.create_time,
             ar.update_user,

+ 12 - 1
hx-mes/src/main/java/com/fjhx/mes/controller/work/WorkOrderController.java

@@ -2,6 +2,7 @@ package com.fjhx.mes.controller.work;
 
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.fjhx.common.constant.SourceConstant;
+import com.fjhx.mes.entity.work.po.WorkOrder;
 import org.springframework.web.bind.annotation.*;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.mes.entity.work.vo.WorkOrderVo;
@@ -11,13 +12,15 @@ import com.ruoyi.common.core.domain.BaseSelectDto;
 import com.fjhx.mes.service.work.WorkOrderService;
 import org.springframework.beans.factory.annotation.Autowired;
 
+import java.util.List;
+
 
 /**
  * <p>
  * 工单 前端控制器
  * </p>
  *
- * @author 
+ * @author
  * @since 2023-03-29
  */
 @DS(SourceConstant.MES)
@@ -53,6 +56,14 @@ public class WorkOrderController {
     }
 
     /**
+     * 工单批量新增
+     */
+    @PostMapping("/addBatch")
+    public void addBatch(@RequestBody List<WorkOrder> workOrderDtoList) {
+        workOrderService.addBatch(workOrderDtoList);
+    }
+
+    /**
      * 工单编辑
      */
     @PostMapping("/edit")

+ 1 - 1
hx-mes/src/main/java/com/fjhx/mes/entity/work/po/WorkOrder.java

@@ -28,7 +28,7 @@ public class WorkOrder extends BasePo {
     private String code;
 
     /**
-     * 工单来源
+     * 工单来源Id
      */
     private Long sourceId;
 

+ 8 - 0
hx-purchase/src/main/java/com/fjhx/purchase/controller/purchase/PurchaseController.java

@@ -40,6 +40,14 @@ public class PurchaseController {
     }
 
     /**
+     * 采购分页 维多利亚
+     */
+    @PostMapping("/pageByWdly")
+    public Page<PurchaseVo> pageByWdly(@RequestBody PurchaseSelectDto dto) {
+        return purchaseService.getPageByWdly(dto);
+    }
+
+    /**
      * 采购明细
      */
     @PostMapping("/detail")

+ 6 - 2
hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/vo/PurchaseVo.java

@@ -1,6 +1,5 @@
 package com.fjhx.purchase.entity.purchase.vo;
 
-import com.baomidou.mybatisplus.annotation.TableField;
 import com.fjhx.purchase.entity.purchase.po.Purchase;
 import lombok.Getter;
 import lombok.Setter;
@@ -8,7 +7,7 @@ import lombok.Setter;
 /**
  * 采购列表查询返回值实体
  *
- * @author 
+ * @author
  * @since 2023-04-06
  */
 @Getter
@@ -16,4 +15,9 @@ import lombok.Setter;
 public class PurchaseVo extends Purchase {
 
     private String supplyName;
+
+    /**
+     * 到货状态
+     */
+    private Integer arrivalStatus;
 }

+ 9 - 3
hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/vo/SubscribeDetailVo.java

@@ -4,13 +4,12 @@ import com.fjhx.purchase.entity.subscribe.po.SubscribeDetail;
 import lombok.Getter;
 import lombok.Setter;
 
-import java.math.BigDecimal;
 import java.util.Date;
 
 /**
  * 申购单列表查询返回值实体
  *
- * @author 
+ * @author
  * @since 2023-04-03
  */
 @Getter
@@ -47,7 +46,9 @@ public class SubscribeDetailVo extends SubscribeDetail {
      */
     private String purchaseCount;
 
-    /**维多利亚扩展json*/
+    /**
+     * 维多利亚扩展json
+     */
     private String victoriatouristJson;
 
     /**
@@ -59,4 +60,9 @@ public class SubscribeDetailVo extends SubscribeDetail {
      * 收货仓库ID
      */
     private Long putWarehouseId;
+
+    /**
+     * 产品类型定义
+     */
+    private Integer productDefinition;
 }

+ 11 - 5
hx-purchase/src/main/java/com/fjhx/purchase/service/purchase/PurchaseService.java

@@ -1,11 +1,11 @@
 package com.fjhx.purchase.service.purchase;
 
-import com.fjhx.purchase.entity.purchase.po.Purchase;
-import com.ruoyi.common.core.service.BaseService;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fjhx.purchase.entity.purchase.vo.PurchaseVo;
-import com.fjhx.purchase.entity.purchase.dto.PurchaseSelectDto;
 import com.fjhx.purchase.entity.purchase.dto.PurchaseDto;
+import com.fjhx.purchase.entity.purchase.dto.PurchaseSelectDto;
+import com.fjhx.purchase.entity.purchase.po.Purchase;
+import com.fjhx.purchase.entity.purchase.vo.PurchaseVo;
+import com.ruoyi.common.core.service.BaseService;
 
 import java.util.List;
 
@@ -15,7 +15,7 @@ import java.util.List;
  * 采购 服务类
  * </p>
  *
- * @author 
+ * @author
  * @since 2023-04-06
  */
 public interface PurchaseService extends BaseService<Purchase> {
@@ -26,6 +26,11 @@ public interface PurchaseService extends BaseService<Purchase> {
     Page<PurchaseVo> getPage(PurchaseSelectDto dto);
 
     /**
+     * 采购分页 维多利亚
+     */
+    Page<PurchaseVo> getPageByWdly(PurchaseSelectDto dto);
+
+    /**
      * 采购明细
      */
     PurchaseVo detail(Long id);
@@ -47,6 +52,7 @@ public interface PurchaseService extends BaseService<Purchase> {
 
     /**
      * 根据供应商查询采购合同
+     *
      * @param supplyId
      * @return
      */

+ 90 - 23
hx-purchase/src/main/java/com/fjhx/purchase/service/purchase/impl/PurchaseServiceImpl.java

@@ -15,6 +15,7 @@ import com.fjhx.common.service.documentary.GetDocumentaryBusinessTemplate;
 import com.fjhx.customer.service.customer.CustomerService;
 import com.fjhx.item.entity.product.vo.ProductInfoVo;
 import com.fjhx.item.service.product.ProductInfoService;
+import com.fjhx.purchase.entity.arrival.po.Arrival;
 import com.fjhx.purchase.entity.invoice.vo.InvoiceDetailsVo;
 import com.fjhx.purchase.entity.pay.vo.PayDetailVo;
 import com.fjhx.purchase.entity.purchase.bo.PurchaseDocumentaryBo;
@@ -27,6 +28,7 @@ import com.fjhx.purchase.entity.purchase.vo.PurchaseDocumentaryVo;
 import com.fjhx.purchase.entity.purchase.vo.PurchaseVo;
 import com.fjhx.purchase.mapper.purchase.PurchaseMapper;
 import com.fjhx.purchase.service.arrival.ArrivalDetailService;
+import com.fjhx.purchase.service.arrival.ArrivalService;
 import com.fjhx.purchase.service.invoice.InvoiceDetailsService;
 import com.fjhx.purchase.service.pay.PayDetailService;
 import com.fjhx.purchase.service.purchase.PurchaseDetailService;
@@ -34,6 +36,8 @@ import com.fjhx.purchase.service.purchase.PurchaseService;
 import com.fjhx.purchase.util.code.CodeEnum;
 import com.fjhx.supply.entity.supplier.po.SupplierInfo;
 import com.fjhx.supply.service.supplier.SupplierInfoService;
+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.core.domain.BaseSelectDto;
 import com.ruoyi.common.utils.PageUtils;
@@ -44,6 +48,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -82,6 +87,10 @@ public class PurchaseServiceImpl extends ServiceImpl<PurchaseMapper, Purchase>
 
     @Autowired
     private CustomerService customerService;
+    @Autowired
+    WarehouseService warehouseService;
+    @Autowired
+    ArrivalService arrivalService;
 
     /**
      * 列表
@@ -93,25 +102,80 @@ public class PurchaseServiceImpl extends ServiceImpl<PurchaseMapper, Purchase>
     public Page<PurchaseVo> getPage(PurchaseSelectDto dto) {
         IWrapper<Purchase> wrapper = getWrapper();
         wrapper.orderByDesc("p", Purchase::getCreateTime);
-        if(ObjectUtils.isNotEmpty(dto.getPurchaseStatus())){
-            wrapper.eq("p",Purchase::getPurchaseStatus,dto.getPurchaseStatus());
+        if (ObjectUtils.isNotEmpty(dto.getPurchaseStatus())) {
+            wrapper.eq("p", Purchase::getPurchaseStatus, dto.getPurchaseStatus());
         }
-        if(ObjectUtils.isNotEmpty(dto.getArrivalStatus())){
-            wrapper.eq("p",Purchase::getArrivalStatus,dto.getArrivalStatus());
+        if (ObjectUtils.isNotEmpty(dto.getArrivalStatus())) {
+            wrapper.eq("p", Purchase::getArrivalStatus, dto.getArrivalStatus());
         }
-        if(ObjectUtils.isNotEmpty(dto.getPayStatus())){
-            wrapper.eq("p",Purchase::getPayStatus,dto.getPayStatus());
+        if (ObjectUtils.isNotEmpty(dto.getPayStatus())) {
+            wrapper.eq("p", Purchase::getPayStatus, dto.getPayStatus());
         }
+        wrapper.eq("p", Purchase::getCode, dto.getKeyword());//根据采购单号关键字搜索
         Page<PurchaseVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
         List<PurchaseVo> list = page.getRecords();
-        if(CollectionUtils.isNotEmpty(list)){
+        if (CollectionUtils.isNotEmpty(list)) {
             List<Long> supplyIds = list.stream().map(PurchaseVo::getSupplyId).collect(Collectors.toList());
-            List<SupplierInfo> supplierInfoList = supplierInfoService.list(Wrappers.<SupplierInfo>query().lambda().in(SupplierInfo::getId,supplyIds));
-            Map<Long,List<SupplierInfo>> supplyMap = supplierInfoList.stream().distinct().collect(Collectors.groupingBy(SupplierInfo::getId));
-            if(MapUtils.isNotEmpty(supplyMap)){
-                for(PurchaseVo p:list){
-                    List<SupplierInfo> supplys = supplyMap.getOrDefault(p.getSupplyId(),null);
-                    p.setSupplyName(supplys==null?null:supplys.get(0).getName());
+            List<SupplierInfo> supplierInfoList = supplierInfoService.list(Wrappers.<SupplierInfo>query().lambda().in(SupplierInfo::getId, supplyIds));
+            Map<Long, List<SupplierInfo>> supplyMap = supplierInfoList.stream().distinct().collect(Collectors.groupingBy(SupplierInfo::getId));
+            if (MapUtils.isNotEmpty(supplyMap)) {
+                for (PurchaseVo p : list) {
+                    List<SupplierInfo> supplys = supplyMap.getOrDefault(p.getSupplyId(), null);
+                    p.setSupplyName(supplys == null ? null : supplys.get(0).getName());
+                }
+            }
+        }
+        return page;
+    }
+
+    @Override
+    public Page<PurchaseVo> getPageByWdly(PurchaseSelectDto dto) {
+        Page<PurchaseVo> page = getPage(dto);
+        List<PurchaseVo> list = page.getRecords();
+        if (CollectionUtils.isNotEmpty(list)) {
+            //维多利亚 赋值收货仓库名称
+            List<Long> wids = new ArrayList<>();
+            for (PurchaseVo purchaseVo : list) {
+                String victoriatouristJson = purchaseVo.getVictoriatouristJson();
+                if (ObjectUtils.isNotEmpty(victoriatouristJson)) {
+                    JSONObject json = JSONObject.parseObject(victoriatouristJson);
+                    wids.add(json.getLong("receiptWarehouseId"));
+                }
+            }
+            if (ObjectUtils.isEmpty(wids)) {
+                return page;
+            }
+            List<Warehouse> warehouses = warehouseService.listByIds(wids);
+            Map<Long, String> warehousesMap = warehouses.stream().collect(Collectors.toMap(Warehouse::getId, Warehouse::getName));
+            for (PurchaseVo purchaseVo : list) {
+                String victoriatouristJson = purchaseVo.getVictoriatouristJson();
+                if (ObjectUtils.isNotEmpty(victoriatouristJson)) {
+                    JSONObject json = JSONObject.parseObject(victoriatouristJson);
+                    String warehouseName = warehousesMap.get(json.getLong("receiptWarehouseId"));
+                    json.put("receiptWarehouseName", warehouseName);
+                    purchaseVo.setVictoriatouristJson(json.toJSONString());
+                }
+            }
+            //赋值到货状态
+            List<Long> pids = list.stream().map(PurchaseVo::getId).collect(Collectors.toList());
+            List<Arrival> arrivalList = arrivalService.list(q -> q.in(Arrival::getPurchaseId, pids));
+            Map<Long, List<Arrival>> arrivalMap = arrivalList.stream().collect(Collectors.groupingBy(Arrival::getPurchaseId));
+            for (PurchaseVo purchaseVo : list) {
+                List<Arrival> list1 = arrivalMap.get(purchaseVo.getId());
+                if(ObjectUtils.isEmpty(list1)){
+                    purchaseVo.setArrivalStatus(0);
+                    continue;
+                }
+                List<Arrival> arrivalCount = list1.stream().filter(q -> q.equals(1)).collect(Collectors.toList());
+                if(arrivalCount.size()==0){
+                    //未到货
+                    purchaseVo.setArrivalStatus(0);
+                }else if(arrivalCount.size()<=list1.size()){
+                    //部分到货
+                    purchaseVo.setArrivalStatus(1);
+                }else{
+                    //完全到货
+                    purchaseVo.setArrivalStatus(2);
                 }
             }
         }
@@ -120,13 +184,14 @@ public class PurchaseServiceImpl extends ServiceImpl<PurchaseMapper, Purchase>
 
     /**
      * 详情
+     *
      * @param id
      * @return
      */
     @Override
     public PurchaseVo detail(Long id) {
         Purchase purchase = this.getById(id);
-        if(ObjectUtils.isEmpty(purchase)){
+        if (ObjectUtils.isEmpty(purchase)) {
             throw new ServiceException("采购单不存在");
         }
         //查询出供应商名称
@@ -135,18 +200,18 @@ public class PurchaseServiceImpl extends ServiceImpl<PurchaseMapper, Purchase>
         result.setSupplyName(info.getName());
         //查询出采购明细列表
         List<PurchaseDetail> purchaseDetailList = purchaseDetailService.
-                list(Wrappers.<PurchaseDetail>query().lambda().eq(PurchaseDetail::getPurchaseId,id));
+                list(Wrappers.<PurchaseDetail>query().lambda().eq(PurchaseDetail::getPurchaseId, id));
         //查询出产品
-        if(CollectionUtils.isNotEmpty(purchaseDetailList)){
+        if (CollectionUtils.isNotEmpty(purchaseDetailList)) {
             List<Long> productIds = purchaseDetailList.stream().map(PurchaseDetail::getBussinessId).collect(Collectors.toList());
             List<ProductInfoVo> productInfos = productInfoService.getListByProductIds(productIds);
-            Map<Long,List<ProductInfoVo>> productMap = productInfos.stream().distinct().collect(Collectors.groupingBy(ProductInfoVo::getId));
-            if(MapUtils.isNotEmpty(productMap)){
-                for(PurchaseDetail p:purchaseDetailList){
+            Map<Long, List<ProductInfoVo>> productMap = productInfos.stream().distinct().collect(Collectors.groupingBy(ProductInfoVo::getId));
+            if (MapUtils.isNotEmpty(productMap)) {
+                for (PurchaseDetail p : purchaseDetailList) {
                     //查询出到货总量
-                    BigDecimal sumArrivalCount = arrivalDetailService.getSumCount(p.getId(),p.getBussinessId());
+                    BigDecimal sumArrivalCount = arrivalDetailService.getSumCount(p.getId(), p.getBussinessId());
                     p.setSumArrivalCount(sumArrivalCount);
-                    List<ProductInfoVo> productInfoVos = productMap.getOrDefault(p.getBussinessId(),null);
+                    List<ProductInfoVo> productInfoVos = productMap.getOrDefault(p.getBussinessId(), null);
                     ProductInfoVo vo = productInfoVos.get(0);
                     p.setProductCode(vo.getCode());
                     p.setProductName(vo.getName());
@@ -163,6 +228,7 @@ public class PurchaseServiceImpl extends ServiceImpl<PurchaseMapper, Purchase>
 
     /**
      * 采购新增
+     *
      * @param purchase
      */
     @Override
@@ -172,8 +238,8 @@ public class PurchaseServiceImpl extends ServiceImpl<PurchaseMapper, Purchase>
         purchase.setCode(CodeEnum.PURCHASE.getCode());
         purchase.setPurchaseStatus(PurchaseStatusEnum.UNDER_REVIEW.getKey());
         purchaseService.save(purchase);
-        if(CollectionUtils.isNotEmpty(purchase.getPurchaseDetailList())){
-            for(PurchaseDetail s : purchase.getPurchaseDetailList()){
+        if (CollectionUtils.isNotEmpty(purchase.getPurchaseDetailList())) {
+            for (PurchaseDetail s : purchase.getPurchaseDetailList()) {
                 s.setPurchaseId(purchase.getId());
             }
             purchaseDetailService.saveBatch(purchase.getPurchaseDetailList());
@@ -192,6 +258,7 @@ public class PurchaseServiceImpl extends ServiceImpl<PurchaseMapper, Purchase>
 
     /**
      * 根据供应商查询采购合同
+     *
      * @param supplyId
      * @return
      */

+ 11 - 7
hx-purchase/src/main/java/com/fjhx/purchase/service/sales/impl/SalesReturnDetailServiceImpl.java

@@ -2,6 +2,7 @@ package com.fjhx.purchase.service.sales.impl;
 
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.fjhx.common.constant.SourceConstant;
 import com.fjhx.item.entity.product.vo.ProductInfoVo;
@@ -74,13 +75,16 @@ public class SalesReturnDetailServiceImpl extends ServiceImpl<SalesReturnDetailM
             Map<Long, List<ProductInfoVo>> productMap = productInfoVos.stream().collect(Collectors.groupingBy(ProductInfoVo::getId));
             if(MapUtils.isNotEmpty(productMap)) {
                 for(SalesReturnDetailVo s:list){
-                    ProductInfoVo p = productMap.get(s.getBussinessId()).get(0);
-                    s.setProductCategory(p.getClassifyName());
-                    s.setProductCode(p.getCode());
-                    s.setProductUnit(p.getUnit());
-                    s.setProductType(p.getType());
-                    s.setProductName(p.getName());
-                    s.setProductSpec(p.getSpec());
+                    List<ProductInfoVo> ps = productMap.get(s.getBussinessId());
+                    if(CollectionUtils.isNotEmpty(ps)){
+                        ProductInfoVo p = ps.get(0);
+                        s.setProductCategory(p.getClassifyName());
+                        s.setProductCode(p.getCode());
+                        s.setProductUnit(p.getUnit());
+                        s.setProductType(p.getType());
+                        s.setProductName(p.getName());
+                        s.setProductSpec(p.getSpec());
+                    }
                 }
             }
         }

+ 3 - 3
hx-purchase/src/main/java/com/fjhx/purchase/service/subscribe/impl/SubscribeDetailServiceImpl.java

@@ -21,7 +21,6 @@ import com.fjhx.wms.service.warehouse.WarehouseService;
 import com.obs.services.internal.ServiceException;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.wrapper.IWrapper;
-import com.ruoyi.common.utils.wrapper.SqlField;
 import org.apache.commons.collections4.MapUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -80,8 +79,8 @@ public class SubscribeDetailServiceImpl extends ServiceImpl<SubscribeDetailMappe
         if (CollectionUtils.isNotEmpty(productIds)) {
             wrapper.in("t1", SubscribeDetail::getBussinessId, productIds);
         }
-        if(StringUtils.isNotEmpty(dto.getKeyword())){
-            wrapper.like("t2", Subscribe::getCode,dto.getKeyword());
+        if (StringUtils.isNotEmpty(dto.getKeyword())) {
+            wrapper.like("t2", Subscribe::getCode, dto.getKeyword());
         }
         wrapper.orderByDesc("t1", SubscribeDetail::getCreateTime);
         Page<SubscribeDetailVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
@@ -96,6 +95,7 @@ public class SubscribeDetailServiceImpl extends ServiceImpl<SubscribeDetailMappe
                     s.setProductType(vo.getType());
                     s.setProductCategory(vo.getClassifyName());
                     s.setProductUnit(vo.getUnit());
+                    s.setProductDefinition(vo.getDefinition());
                 }
             }
         }

+ 54 - 1
hx-sale/src/main/java/com/fjhx/sale/flow/PurchaseFlowByWdly.java

@@ -1,17 +1,23 @@
 package com.fjhx.sale.flow;
 
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.fjhx.common.constant.SourceConstant;
 import com.fjhx.flow.core.FlowDelegate;
 import com.fjhx.purchase.entity.purchase.enums.PurchaseDataResourceEnum;
 import com.fjhx.purchase.entity.purchase.enums.PurchaseDetailStatusEnum;
 import com.fjhx.purchase.entity.purchase.enums.PurchaseStatusEnum;
 import com.fjhx.purchase.entity.purchase.po.Purchase;
 import com.fjhx.purchase.entity.purchase.po.PurchaseDetail;
+import com.fjhx.purchase.entity.subscribe.po.Subscribe;
+import com.fjhx.purchase.entity.subscribe.po.SubscribeDetail;
 import com.fjhx.purchase.service.purchase.PurchaseDetailService;
 import com.fjhx.purchase.service.purchase.PurchaseService;
+import com.fjhx.purchase.service.subscribe.SubscribeDetailService;
+import com.fjhx.purchase.service.subscribe.SubscribeService;
 import com.fjhx.purchase.util.code.CodeEnum;
 import com.fjhx.sale.entity.contract.po.ContractProduct;
 import com.fjhx.sale.service.contract.ContractProductService;
@@ -36,6 +42,16 @@ public class PurchaseFlowByWdly extends FlowDelegate {
     @Autowired
     private PurchaseFlow purchaseFlow;
 
+    @Autowired
+    private PurchaseService purchaseService;
+
+    @Autowired
+    private PurchaseDetailService purchaseDetailService;
+    @Autowired
+    private SubscribeService subscribeService;
+    @Autowired
+    private SubscribeDetailService subscribeDetailService;
+
     @Override
     public String getFlowKey() {
         return "wdly_purchase";
@@ -49,7 +65,44 @@ public class PurchaseFlowByWdly extends FlowDelegate {
      */
     @Override
     public Long start(Long flowId, JSONObject submitData) {
-        return purchaseFlow.start(flowId,submitData);
+        DynamicDataSourceContextHolder.push(SourceConstant.PURCHASE);
+        Purchase purchase = submitData.toJavaObject(Purchase.class);
+        purchase.setCode(CodeEnum.PURCHASE.getCode());
+        purchase.setPurchaseStatus(PurchaseStatusEnum.UNDER_REVIEW.getKey());
+        purchaseService.save(purchase);
+        List<PurchaseDetail> purchaseDetailList = purchase.getPurchaseDetailList();
+        if(CollectionUtils.isNotEmpty(purchaseDetailList)){
+            for(PurchaseDetail s : purchaseDetailList){
+                s.setPurchaseId(purchase.getId());
+            }
+            purchaseDetailService.saveBatch(purchaseDetailList);
+        }
+        //根据申购明细id去申购单获取仓库id 名称
+        if(ObjectUtils.isEmpty(purchaseDetailList)){
+            return purchase.getId();
+        }
+        PurchaseDetail purchaseDetail = purchaseDetailList.get(0);
+        SubscribeDetail subscribeDetail = subscribeDetailService.getById(purchaseDetail.getSubscribeDetailId());
+        if(ObjectUtils.isEmpty(subscribeDetail)){
+            return purchase.getId();
+        }
+        Subscribe subscribe = subscribeService.getById(subscribeDetail.getSubscribeId());
+        if(ObjectUtils.isEmpty(subscribe)){
+            return purchase.getId();
+        }
+        String victoriatouristJson = subscribe.getVictoriatouristJson();
+        if(ObjectUtils.isNotEmpty(victoriatouristJson)) {
+            JSONObject json = JSONObject.parseObject(victoriatouristJson);
+            Long receiptWarehouseId = json.getLong("receiptWarehouseId");
+
+            String victoriatouristJson1 = purchase.getVictoriatouristJson();
+            JSONObject json1 = JSONObject.parseObject(victoriatouristJson1);
+            json1.put("receiptWarehouseId",receiptWarehouseId);
+            purchase.setVictoriatouristJson(json1.toJSONString());
+            purchaseService.save(purchase);
+        }
+        DynamicDataSourceContextHolder.poll();
+        return purchase.getId();
     }
 
     /**

+ 1 - 1
hx-sale/src/main/java/com/fjhx/sale/service/contract/impl/ContractProductServiceImpl.java

@@ -38,7 +38,7 @@ import java.util.stream.Collectors;
  * 外销合同-产品 服务实现类
  * </p>
  *
- * @author 
+ * @author
  * @since 2023-04-17
  */
 @Service

+ 2 - 1
hx-sale/src/main/resources/mapper/contract/ContractProductMapper.xml

@@ -5,10 +5,11 @@
         SELECT
             t1.id,
             t1.contract_id,
+            t1.product_id,
             t2.`code` AS contractCode,
             t2.user_name AS userName,
             t2.version AS contractVersion,
-            t1.expendQuantity,
+            t1.expend_quantity expendQuantity,
             (SELECT create_time FROM claim_contract WHERE contract_id = t2.id ORDER BY create_time DESC LIMIT 1 ) AS claimTime
         FROM
             contract_product t1

+ 2 - 0
hx-sale/src/main/resources/mapper/pack/PackShipmentMapper.xml

@@ -24,6 +24,7 @@
     </select>
     <select id="productDetailList" resultType="java.util.Map">
         SELECT
+            id  as businessId,
             remark,
             null as subDescription,
             null as customsCode,
@@ -37,6 +38,7 @@
         </where>
         UNION
         SELECT
+            id  as businessId,
             product_name remark,
             null as subDescription,
             null as customsCode,

+ 3 - 0
hx-supply/src/main/java/com/fjhx/supply/service/supplier/impl/SupplierInfoServiceImpl.java

@@ -72,10 +72,13 @@ public class SupplierInfoServiceImpl extends ServiceImpl<SupplierInfoMapper, Sup
             if (1 == accountPeriodType) {
                 wrapper.isNotNull("json_unquote( si.victoriatourist_json -> '$.accountPeriod' )");
                 wrapper.apply("json_unquote( si.victoriatourist_json -> '$.accountPeriod' ) !=''");
+                wrapper.apply("json_unquote( si.victoriatourist_json -> '$.accountPeriod' ) !='0'");
             } else {
                 wrapper.isNull("json_unquote( si.victoriatourist_json -> '$.accountPeriod' )");
                 wrapper.or();
                 wrapper.apply("json_unquote( si.victoriatourist_json -> '$.accountPeriod' ) =''");
+                wrapper.or();
+                wrapper.apply("json_unquote( si.victoriatourist_json -> '$.accountPeriod' ) ='0'");
             }
         }
         Page<SupplierInfoVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);

+ 9 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/controller/stock/StockTransferController.java

@@ -1,5 +1,6 @@
 package com.fjhx.victoriatourist.controller.stock;
 
+import com.fjhx.wms.entity.stock.dto.StockDto;
 import org.springframework.web.bind.annotation.*;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.victoriatourist.entity.stock.vo.StockTransferVo;
@@ -70,4 +71,12 @@ public class StockTransferController {
         stockTransferService.receive(stockTransferDto);
     }
 
+    /**
+     * 调仓 重构用不是维多利亚的
+     */
+    @PostMapping("/addSt")
+    public void stockTransfer(@RequestBody StockTransferDto stockTransferDto) {
+        stockTransferService.stockTransfer(stockTransferDto);
+    }
+
 }

+ 34 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/stock/vo/StockTransferDetailsVo.java

@@ -4,6 +4,8 @@ import com.fjhx.victoriatourist.entity.stock.po.StockTransferDetails;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.math.BigDecimal;
+
 /**
  * 调仓明细列表查询返回值实体
  *
@@ -27,4 +29,36 @@ public class StockTransferDetailsVo extends StockTransferDetails {
      */
     private String productSpec;
 
+    /**
+     * 产品单位
+     */
+    private String productUnit;
+
+    /**出入库编号*/
+    private String code;
+
+    /**
+     * 调出仓库名称
+     */
+    private String outWarehouseName;
+
+    /**
+     * 调入仓库名称
+     */
+    private String inWarehouseName;
+
+    /**
+     * 调入仓库id
+     */
+    private Long inWarehouseId;
+
+    /**
+     * 调出仓库id
+     */
+    private Long outWarehouseId;
+
+    /**调仓数量*/
+    private BigDecimal quantity;
+
+
 }

+ 3 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/stock/StockTransferService.java

@@ -1,10 +1,12 @@
 package com.fjhx.victoriatourist.service.stock;
 
+import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.victoriatourist.entity.stock.dto.StockTransferDto;
 import com.fjhx.victoriatourist.entity.stock.dto.StockTransferSelectDto;
 import com.fjhx.victoriatourist.entity.stock.po.StockTransfer;
 import com.fjhx.victoriatourist.entity.stock.vo.StockTransferVo;
+import com.fjhx.wms.entity.stock.dto.StockDto;
 import com.ruoyi.common.core.service.BaseService;
 
 
@@ -48,4 +50,5 @@ public interface StockTransferService extends BaseService<StockTransfer> {
      */
     void receive(StockTransferDto stockTransferDto);
 
+    void stockTransfer(StockTransferDto stockTransferDto);
 }

+ 30 - 8
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/stock/impl/StockTransferDetailsServiceImpl.java

@@ -1,16 +1,20 @@
 package com.fjhx.victoriatourist.service.stock.impl;
 
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.item.service.product.ProductInfoService;
+import com.fjhx.victoriatourist.entity.stock.dto.StockTransferDetailsDto;
+import com.fjhx.victoriatourist.entity.stock.dto.StockTransferDetailsSelectDto;
 import com.fjhx.victoriatourist.entity.stock.po.StockTransferDetails;
+import com.fjhx.victoriatourist.entity.stock.vo.StockTransferDetailsVo;
 import com.fjhx.victoriatourist.mapper.stock.StockTransferDetailsMapper;
 import com.fjhx.victoriatourist.service.stock.StockTransferDetailsService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springframework.stereotype.Service;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fjhx.victoriatourist.entity.stock.vo.StockTransferDetailsVo;
-import com.fjhx.victoriatourist.entity.stock.dto.StockTransferDetailsSelectDto;
+import com.fjhx.wms.entity.stock.vo.StockVo;
+import com.fjhx.wms.service.warehouse.WarehouseService;
 import com.ruoyi.common.utils.wrapper.IWrapper;
-import com.fjhx.victoriatourist.entity.stock.dto.StockTransferDetailsDto;
-import cn.hutool.core.bean.BeanUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
 
 
 /**
@@ -18,17 +22,35 @@ import cn.hutool.core.bean.BeanUtil;
  * 调仓明细 服务实现类
  * </p>
  *
- * @author 
+ * @author
  * @since 2023-04-17
  */
 @Service
 public class StockTransferDetailsServiceImpl extends ServiceImpl<StockTransferDetailsMapper, StockTransferDetails> implements StockTransferDetailsService {
+    @Autowired
+    ProductInfoService productInfoService;
+    @Autowired
+    WarehouseService warehouseService;
 
     @Override
     public Page<StockTransferDetailsVo> getPage(StockTransferDetailsSelectDto dto) {
         IWrapper<StockTransferDetails> wrapper = getWrapper();
         wrapper.orderByDesc("std", StockTransferDetails::getId);
         Page<StockTransferDetailsVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        //赋值产品信息
+        productInfoService.attributeAssign(page.getRecords(), StockTransferDetailsVo::getProductId, (item, productInfo) -> {
+            item.setProductCode(productInfo.getCode());
+            item.setProductUnit(productInfo.getUnit());
+            item.setProductName(productInfo.getName());
+            item.setProductSpec(productInfo.getSpec());
+        });
+        //赋值仓库名称
+        warehouseService.attributeAssign(page.getRecords(), StockTransferDetailsVo::getInWarehouseId, (item, warehouse) -> {
+            item.setInWarehouseName(warehouse.getName());
+        });
+        warehouseService.attributeAssign(page.getRecords(), StockTransferDetailsVo::getOutWarehouseId, (item, warehouse) -> {
+            item.setOutWarehouseName(warehouse.getName());
+        });
         return page;
     }
 

+ 61 - 2
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/stock/impl/StockTransferServiceImpl.java

@@ -3,11 +3,9 @@ package com.fjhx.victoriatourist.service.stock.impl;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
 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.item.service.product.ProductInfoService;
 import com.fjhx.victoriatourist.entity.abnormal.po.AbnormalInfo;
 import com.fjhx.victoriatourist.entity.stock.dto.StockTransferDto;
@@ -20,7 +18,9 @@ import com.fjhx.victoriatourist.mapper.stock.StockTransferMapper;
 import com.fjhx.victoriatourist.service.abnormal.AbnormalInfoService;
 import com.fjhx.victoriatourist.service.stock.StockTransferDetailsService;
 import com.fjhx.victoriatourist.service.stock.StockTransferService;
+import com.fjhx.victoriatourist.utils.Assert;
 import com.fjhx.victoriatourist.utils.CodeEnum;
+import com.fjhx.wms.entity.stock.dto.StockDto;
 import com.fjhx.wms.entity.stock.emums.JournalType;
 import com.fjhx.wms.entity.stock.po.Stock;
 import com.fjhx.wms.entity.stock.po.StockJournal;
@@ -110,6 +110,10 @@ public class StockTransferServiceImpl extends ServiceImpl<StockTransferMapper, S
     @Transactional(rollbackFor = Exception.class)
     @Override
     public void add(StockTransferDto stockTransferDto) {
+        Assert.notEmpty(stockTransferDto.getOutWarehouseId(),"出库仓库不能为空");
+        Assert.notEmpty(stockTransferDto.getInWarehouseId(),"入库仓库不能为空");
+        Assert.notEmpty(stockTransferDto.getStockTransferDetailsList(),"调仓明细不能为空");
+
         stockTransferDto.setCode(CodeEnum.STOCK_TRANSFER.getCode());
         stockTransferDto.setType(1);
         stockTransferDto.setInStatus(0);
@@ -203,4 +207,59 @@ public class StockTransferServiceImpl extends ServiceImpl<StockTransferMapper, S
         }
     }
 
+    @Override
+    @DSTransactional
+    public void stockTransfer(StockTransferDto stockTransferDto) {
+        Assert.notEmpty(stockTransferDto.getOutWarehouseId(),"出库仓库不能为空");
+        Assert.notEmpty(stockTransferDto.getInWarehouseId(),"入库仓库不能为空");
+        Assert.notEmpty(stockTransferDto.getStockTransferDetailsList(),"调仓明细不能为空");
+
+        stockTransferDto.setCode(CodeEnum.STOCK_TRANSFER.getCode());
+        stockTransferDto.setType(1);
+        stockTransferDto.setInStatus(0);
+        this.save(stockTransferDto);
+        List<StockTransferDetails> stockTransferDetailsList = stockTransferDto.getStockTransferDetailsList();
+        for (StockTransferDetails stockTransferDetails : stockTransferDetailsList) {
+            stockTransferDetails.setStockTransferId(stockTransferDto.getId());
+        }
+        stockTransferDetailsService.saveBatch(stockTransferDetailsList);
+
+        List<Stock> stockList = new ArrayList<>();
+        for (StockTransferDetails stockTransferDetails : stockTransferDetailsList) {
+            Stock stock = new Stock();
+            stock.setProductId(stockTransferDetails.getProductId());
+            stock.setQuantity(stockTransferDetails.getOutQuantity());
+            stockList.add(stock);
+        }
+
+        //创建出库记录
+        StockJournal stockJournal = new StockJournal();
+        stockJournal.setCode(CodeEnum.STOCK_TRANSFER.getCode());
+        stockJournal.setOpType(2);//出库
+        stockJournal.setType(JournalType.ADJUSTING_OUT.getDetailType());//调仓入库
+        stockJournal.setWarehouseId(stockTransferDto.getOutWarehouseId());
+//        stockJournal.setToWarehouseId(stockDto.getToWarehouseId());
+        //保存出入库记录
+        stockJournalService.save(stockJournal);
+        //操作库存
+        List<StockJournalDetails> stockJournalDetailsList = stockService.ModifyInventory(stockJournal.getId(), 2, stockList, stockTransferDto.getOutWarehouseId());
+        //保存出入库明细
+        stockJournalDetailsService.saveBatch(stockJournalDetailsList);
+
+        //创建入库记录
+        StockJournal stockJournal1 = new StockJournal();
+        stockJournal1.setCode(com.fjhx.wms.utils.CodeEnum.STOCK_TRANSFER.getCode());
+        stockJournal1.setOpType(1);//入库
+        stockJournal1.setType(JournalType.ADJUSTING_IN.getDetailType());//调仓出库
+        stockJournal1.setWarehouseId(stockTransferDto.getInWarehouseId());
+//        stockJournal1.setToWarehouseId(stockDto.getToWarehouseId());
+        //保存出入库记录
+        stockJournalService.save(stockJournal1);
+
+        //入库操作
+        List<StockJournalDetails> stockJournalDetailsList1 = stockService.ModifyInventory(stockJournal1.getId(), 1, stockList, stockTransferDto.getInWarehouseId());
+        //保存出入库明细
+        stockJournalDetailsService.saveBatch(stockJournalDetailsList1);
+    }
+
 }

+ 8 - 3
hx-victoriatourist/src/main/resources/mapper/stock/StockTransferDetailsMapper.xml

@@ -2,7 +2,7 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.fjhx.victoriatourist.mapper.stock.StockTransferDetailsMapper">
     <select id="getPage" resultType="com.fjhx.victoriatourist.entity.stock.vo.StockTransferDetailsVo">
-        select
+        SELECT
             std.id,
             std.stock_transfer_id,
             std.product_id,
@@ -11,8 +11,13 @@
             std.create_user,
             std.create_time,
             std.update_user,
-            std.update_time
-        from stock_transfer_details std
+            std.update_time,
+            st.`code`,
+            st.in_warehouse_id,
+            st.out_warehouse_id
+        FROM
+            stock_transfer st
+                LEFT JOIN stock_transfer_details std ON std.stock_transfer_id = st.id
             ${ew.customSqlSegment}
     </select>
 

+ 0 - 8
hx-wms/src/main/java/com/fjhx/wms/controller/stock/StockController.java

@@ -78,14 +78,6 @@ public class StockController {
     }
 
     /**
-     * 调仓
-     */
-    @PostMapping("/stockTransfer")
-    public void stockTransfer(@RequestBody StockDto stockDto) {
-        stockService.stockTransfer(stockDto);
-    }
-
-    /**
      * 库存删除
      */
     @PostMapping("/delete")

+ 3 - 0
hx-wms/src/main/java/com/fjhx/wms/entity/stock/dto/StockSelectDto.java

@@ -21,4 +21,7 @@ public class StockSelectDto extends BaseSelectDto {
      */
     private List<Long> productIds;
 
+    /**产品定义*/
+    private Integer definition;
+
 }

+ 3 - 0
hx-wms/src/main/java/com/fjhx/wms/entity/stock/vo/StockVo.java

@@ -59,4 +59,7 @@ public class StockVo extends Stock {
      */
     private String warehouseName;
 
+    /**产品定义*/
+    private Integer productDefinition;
+
 }

+ 21 - 1
hx-wms/src/main/java/com/fjhx/wms/entity/stock/vo/StockWaitDetailsVo.java

@@ -7,7 +7,7 @@ import lombok.Setter;
 /**
  * 待出入库明细列表查询返回值实体
  *
- * @author 
+ * @author
  * @since 2023-04-13
  */
 @Getter
@@ -24,4 +24,24 @@ public class StockWaitDetailsVo extends StockWaitDetails {
      */
     private String productCode;
 
+    /**
+     * 产品类型
+     */
+    private Integer productType;
+
+    /**
+     * 规格型号
+     */
+    private String productSpec;
+
+    /**
+     * 单位
+     */
+    private String productUnit;
+
+    /**
+     * 产品定义
+     */
+    private Integer productDefinition;
+
 }

+ 0 - 5
hx-wms/src/main/java/com/fjhx/wms/service/stock/StockService.java

@@ -54,11 +54,6 @@ public interface StockService extends BaseService<Stock> {
     void edit(StockDto stockDto);
 
     /**
-     * 调仓
-     */
-    void stockTransfer(StockDto stockDto);
-
-    /**
      * 库存删除
      */
     void delete(Long id);

+ 55 - 78
hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockServiceImpl.java

@@ -3,9 +3,9 @@ package com.fjhx.wms.service.stock.impl;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.fjhx.item.entity.product.po.ProductClassify;
 import com.fjhx.item.entity.product.po.ProductInfo;
 import com.fjhx.item.service.product.ProductClassifyService;
 import com.fjhx.item.service.product.ProductInfoService;
@@ -19,7 +19,6 @@ import com.fjhx.wms.entity.stock.po.Stock;
 import com.fjhx.wms.entity.stock.po.StockJournal;
 import com.fjhx.wms.entity.stock.po.StockJournalDetails;
 import com.fjhx.wms.entity.stock.vo.StockVo;
-import com.fjhx.wms.entity.stock.vo.StockWaitVo;
 import com.fjhx.wms.entity.warehouse.po.Warehouse;
 import com.fjhx.wms.mapper.stock.StockMapper;
 import com.fjhx.wms.service.stock.StockJournalDetailsService;
@@ -32,7 +31,6 @@ import com.ruoyi.common.core.domain.BaseIdPo;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
 import java.util.ArrayList;
@@ -68,7 +66,8 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
         wrapper.orderByDesc("s", Stock::getId);
         wrapper.eq(Stock::getWarehouseId, dto.getId());
         wrapper.like(Stock::getQuantity, dto.getKeyword());
-        wrapper.in(Stock::getProductId,dto.getProductIds());
+        wrapper.in(Stock::getProductId, dto.getProductIds());
+        wrapper.eq("pi.definition", dto.getDefinition());
 
         Page<StockVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
         List<StockVo> stockVos = page.getRecords();
@@ -80,13 +79,14 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
             item.setProductName(productInfo.getName());
             item.setProductSpec(productInfo.getSpec());
             item.setProductClassifyId(productInfo.getProductClassifyId());
+            item.setProductDefinition(productInfo.getDefinition());
         });
         //赋值产品分类
         productClassifyService.attributeAssign(stockVos, StockVo::getProductClassifyId, (item, productClassify) -> {
             item.setProductClassifyName(productClassify.getName());
         });
         //赋值仓库名称
-        productClassifyService.attributeAssign(stockVos, StockVo::getWarehouseId, (item, warehouse) -> {
+        warehouseService.attributeAssign(stockVos, StockVo::getWarehouseId, (item, warehouse) -> {
             item.setWarehouseName(warehouse.getName());
         });
         return page;
@@ -107,13 +107,11 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
             productInfoService.attributeAssign(stockVos, StockVo::getProductId, (item, productInfo) -> {
                 //赋值维多利亚扩展产品信息
                 String victoriatouristJson = item.getVictoriatouristJson();
-                if (ObjectUtil.isNotEmpty(victoriatouristJson)) {
-                    JSONObject json = JSONObject.parseObject(victoriatouristJson);
-                    json.put("code", productInfo.getCode());
-                    json.put("spec", productInfo.getSpec());
-                    json.put("unit", productInfo.getUnit());
-                    item.setVictoriatouristJson(json.toJSONString());
-                }
+                JSONObject json = ObjectUtil.isNotEmpty(victoriatouristJson) ? JSONObject.parseObject(victoriatouristJson) : new JSONObject();
+                json.put("code", productInfo.getCode());
+                json.put("spec", productInfo.getSpec());
+                json.put("unit", productInfo.getUnit());
+                item.setVictoriatouristJson(json.toJSONString());
             });
         }
 
@@ -135,12 +133,10 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
         Map<Long, String> warehouseMap = warehouses.stream().collect(Collectors.toMap(Warehouse::getId, Warehouse::getName));
         for (StockVo stockVo : stockVos) {
             String victoriatouristJson = stockVo.getVictoriatouristJson();
-            if (ObjectUtil.isNotEmpty(victoriatouristJson)) {
-                JSONObject json = JSONObject.parseObject(victoriatouristJson);
-                String warehouseName = warehouseMap.get(json.getLong("warehouseId"));
-                json.put("warehouseName", warehouseName);
-                stockVo.setVictoriatouristJson(json.toJSONString());
-            }
+            JSONObject json = ObjectUtil.isNotEmpty(victoriatouristJson) ? JSONObject.parseObject(victoriatouristJson) : new JSONObject();
+            String warehouseName = warehouseMap.get(json.getLong("warehouseId"));
+            json.put("warehouseName", warehouseName);
+            stockVo.setVictoriatouristJson(json.toJSONString());
         }
         return page;
     }
@@ -151,27 +147,36 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
         wrapper.orderByDesc("s", Stock::getId);
         wrapper.eq(Stock::getWarehouseId, dto.getId());
         wrapper.like(Stock::getQuantity, dto.getKeyword());
+        wrapper.eq("pi.definition", dto.getDefinition());
 
         Page<StockVo> page = this.baseMapper.pageByProduct(dto.getPage(), wrapper);
         List<StockVo> stockVos = page.getRecords();
-        //获取产品id列表
-        List<Long> productIds = stockVos.stream().map(Stock::getProductId).collect(Collectors.toList());
-        if (ObjectUtil.isNotEmpty(productIds)) {
-            //赋值产品名称
-            productInfoService.attributeAssign(stockVos, StockVo::getProductId, (item, productInfo) -> {
-                item.setType(productInfo.getType());
-                item.setProductName(productInfo.getName());
-                //赋值维多利亚扩展产品信息
-                String victoriatouristJson = item.getVictoriatouristJson();
-                if (ObjectUtil.isNotEmpty(victoriatouristJson)) {
-                    JSONObject json = JSONObject.parseObject(victoriatouristJson);
-                    json.put("code", productInfo.getCode());
-                    json.put("spec", productInfo.getSpec());
-                    json.put("unit", productInfo.getUnit());
-                    item.setVictoriatouristJson(json.toJSONString());
-                }
-            });
-        }
+
+        //赋值产品名称
+        productInfoService.attributeAssign(stockVos, StockVo::getProductId, (item, productInfo) -> {
+            item.setType(productInfo.getType());
+            item.setProductName(productInfo.getName());
+            item.setProductCode(productInfo.getCode());
+            item.setProductUnit(productInfo.getUnit());
+            item.setProductType(productInfo.getType());
+            item.setProductSpec(productInfo.getSpec());
+            item.setProductClassifyId(productInfo.getProductClassifyId());
+            item.setProductDefinition(productInfo.getDefinition());
+
+            //赋值维多利亚扩展产品信息
+            String victoriatouristJson = item.getVictoriatouristJson();
+            JSONObject json = ObjectUtil.isNotEmpty(victoriatouristJson) ? JSONObject.parseObject(victoriatouristJson) : new JSONObject();
+            json.put("code", productInfo.getCode());
+            json.put("spec", productInfo.getSpec());
+            json.put("unit", productInfo.getUnit());
+            item.setVictoriatouristJson(json.toJSONString());
+        });
+
+        //赋值仓库名称
+        warehouseService.attributeAssign(stockVos, StockVo::getWarehouseId, (item, warehouse) -> {
+            item.setWarehouseName(warehouse.getName());
+        });
+
         return page;
     }
 
@@ -181,13 +186,13 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
     }
 
     @Override
-    @Transactional(rollbackFor = Exception.class)
+    @DSTransactional
     public void add(StockDto stockDto) {
         //创建出入库记录
         StockJournal stockJournal = new StockJournal();
         stockJournal.setOpType(stockDto.getType());
         stockJournal.setType(stockDto.getType());
-        stockJournal.setCode(stockDto.getType()==1? CodeEnum.SIN_CODE.getCode() : CodeEnum.SOUT_CODE.getCode());
+        stockJournal.setCode(stockDto.getType() == 1 ? CodeEnum.SIN_CODE.getCode() : CodeEnum.SOUT_CODE.getCode());
         stockJournal.setWarehouseId(stockDto.getWarehouseId());
         stockJournal.setBusinessId(stockDto.getBusinessId());
         //保存出入库记录
@@ -199,12 +204,12 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
     }
 
     @Override
-    @Transactional(rollbackFor = Exception.class)
+    @DSTransactional
     public void edit(StockDto stockDto) {
         //创建出入库记录
         StockJournal stockJournal = new StockJournal();
         stockJournal.setOpType(stockDto.getType());
-        stockJournal.setCode(stockDto.getType()==1? CodeEnum.SIN_CODE.getCode() : CodeEnum.SOUT_CODE.getCode());
+        stockJournal.setCode(stockDto.getType() == 1 ? CodeEnum.SIN_CODE.getCode() : CodeEnum.SOUT_CODE.getCode());
         stockJournal.setType(stockDto.getType());
         stockJournal.setWarehouseId(stockDto.getWarehouseId());
         stockJournal.setBusinessId(stockDto.getBusinessId());
@@ -217,39 +222,6 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
     }
 
     @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void stockTransfer(StockDto stockDto) {
-        //创建出库记录
-        StockJournal stockJournal = new StockJournal();
-        stockJournal.setCode(CodeEnum.STOCK_TRANSFER.getCode());
-        stockJournal.setOpType(2);//出库
-        stockJournal.setType(JournalType.ADJUSTING_OUT.getDetailType());//调仓入库
-        stockJournal.setWarehouseId(stockDto.getWarehouseId());
-        stockJournal.setToWarehouseId(stockDto.getToWarehouseId());
-        //保存出入库记录
-        stockJournalService.save(stockJournal);
-        //操作库存
-        List<StockJournalDetails> stockJournalDetailsList = ModifyInventory(stockJournal.getId(), 2, stockDto.getList(), stockDto.getWarehouseId());
-        //保存出入库明细
-        stockJournalDetailsService.saveBatch(stockJournalDetailsList);
-
-        //创建入库记录
-        StockJournal stockJournal1 = new StockJournal();
-        stockJournal1.setCode(CodeEnum.STOCK_TRANSFER.getCode());
-        stockJournal1.setOpType(1);//入库
-        stockJournal1.setType(JournalType.ADJUSTING_IN.getDetailType());//调仓出库
-        stockJournal1.setWarehouseId(stockDto.getWarehouseId());
-        stockJournal1.setToWarehouseId(stockDto.getToWarehouseId());
-        //保存出入库记录
-        stockJournalService.save(stockJournal1);
-
-        //入库操作
-        List<StockJournalDetails> stockJournalDetailsList1 = ModifyInventory(stockJournal1.getId(), 1, stockDto.getList(), stockDto.getToWarehouseId());
-        //保存出入库明细
-        stockJournalDetailsService.saveBatch(stockJournalDetailsList1);
-    }
-
-    @Override
     public void delete(Long id) {
         this.removeById(id);
     }
@@ -275,6 +247,10 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
             Stock newStocks = new Stock();
             newStocks.setWarehouseId(warehouseId);
             newStocks.setProductId(stock.getProductId());
+            if(ObjectUtil.isEmpty(stock.getQuantity())){
+                //判断传操作的库存是否为空 空赋值0
+                stock.setQuantity(BigDecimal.ZERO);
+            }
             newStocks.setQuantity(stock.getQuantity());
 
             //合并库存数量
@@ -291,14 +267,14 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
                     if (quantity.compareTo(BigDecimal.ZERO) < 0) {
                         throw new ServiceException("库存不足无法出库");
                     }
-                }else if(type==3){
+                } else if (type == 3) {
                     //维多利亚入库增加冻结库存
                     String victoriatouristJson = oldStocks.getVictoriatouristJson();
                     JSONObject json = JSONObject.parseObject(victoriatouristJson);
                     BigDecimal frozenQuantity = json.getBigDecimal("frozen_quantity");
-                    frozenQuantity = frozenQuantity==null?BigDecimal.ZERO:frozenQuantity;
+                    frozenQuantity = frozenQuantity == null ? BigDecimal.ZERO : frozenQuantity;
                     frozenQuantity = frozenQuantity.add(stock.getQuantity());
-                    json.put("frozen_quantity",frozenQuantity);
+                    json.put("frozen_quantity", frozenQuantity);
                     newStocks.setVictoriatouristJson(json.toJSONString());
                 } else {
                     throw new ServiceException("未知库存操作类型");
@@ -306,7 +282,8 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
                 newStocks.setId(oldStocks.getId());
                 newStocks.setQuantity(quantity);
             } else if (type == 2) {
-                throw new ServiceException("以下商品库存不足,无法出库:" + stock.getProductId());
+                ProductInfo productInfo = productInfoService.getById(stock.getProductId());
+                throw new ServiceException("以下商品库存不足,无法出库:" + productInfo.getName());
             }
 
             data.add(newStocks);
@@ -435,7 +412,7 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
     private Long addJournal(Long warehouseId, JournalType journalType, Long businessId) {
         StockJournal stockJournal = new StockJournal();
         stockJournal.setType(journalType.getDetailType());
-        switch (journalType.getDetailType()){
+        switch (journalType.getDetailType()) {
             case 1:
                 stockJournal.setOpType(1);//入库
                 stockJournal.setCode(CodeEnum.SIN_CODE.getCode());

+ 17 - 0
hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockWaitDetailsServiceImpl.java

@@ -1,9 +1,11 @@
 package com.fjhx.wms.service.stock.impl;
 
+import com.fjhx.item.service.product.ProductInfoService;
 import com.fjhx.wms.entity.stock.po.StockWaitDetails;
 import com.fjhx.wms.mapper.stock.StockWaitDetailsMapper;
 import com.fjhx.wms.service.stock.StockWaitDetailsService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.wms.entity.stock.vo.StockWaitDetailsVo;
@@ -12,6 +14,9 @@ import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.fjhx.wms.entity.stock.dto.StockWaitDetailsDto;
 import cn.hutool.core.bean.BeanUtil;
 
+import javax.xml.ws.soap.Addressing;
+import java.util.List;
+
 
 /**
  * <p>
@@ -23,12 +28,24 @@ import cn.hutool.core.bean.BeanUtil;
  */
 @Service
 public class StockWaitDetailsServiceImpl extends ServiceImpl<StockWaitDetailsMapper, StockWaitDetails> implements StockWaitDetailsService {
+    @Autowired
+    ProductInfoService productInfoService;
 
     @Override
     public Page<StockWaitDetailsVo> getPage(StockWaitDetailsSelectDto dto) {
         IWrapper<StockWaitDetails> wrapper = getWrapper();
         wrapper.orderByDesc("swd", StockWaitDetails::getId);
         Page<StockWaitDetailsVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        List<StockWaitDetailsVo> records = page.getRecords();
+        // 赋值产品属性
+        productInfoService.attributeAssign(records, StockWaitDetailsVo::getProductId, (item, productInfo) -> {
+            item.setProductCode(productInfo.getCode());
+            item.setProductUnit(productInfo.getUnit());
+            item.setProductType(productInfo.getType());
+            item.setProductName(productInfo.getName());
+            item.setProductSpec(productInfo.getSpec());
+            item.setProductDefinition(productInfo.getDefinition());
+        });
         return page;
     }
 

+ 7 - 3
hx-wms/src/main/resources/mapper/stock/StockMapper.xml

@@ -2,8 +2,9 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.fjhx.wms.mapper.stock.StockMapper">
     <select id="getPage" resultType="com.fjhx.wms.entity.stock.vo.StockVo">
-        select
+        SELECT
             s.id,
+            pi.definition,
             s.warehouse_id,
             s.product_id,
             s.quantity,
@@ -12,7 +13,9 @@
             s.update_user,
             s.update_time,
             s.victoriatourist_json
-        from stock s
+        FROM
+            stock s
+                LEFT JOIN bytesailing_item.product_info pi ON s.product_id = pi.id
             ${ew.customSqlSegment}
     </select>
     <select id="pageByProduct" resultType="com.fjhx.wms.entity.stock.vo.StockVo">
@@ -25,9 +28,10 @@
             s.create_time,
             s.update_user,
             s.update_time,
-            JSON_REPLACE( victoriatourist_json, '$.frozenQuantity', sum( json_unquote( s.victoriatourist_json -> '$.frozenQuantity' )), '$.defectiveQuantity', sum( json_unquote( s.victoriatourist_json -> '$.defectiveQuantity' )) ) victoriatourist_json
+            JSON_REPLACE( s.victoriatourist_json, '$.frozenQuantity', sum( json_unquote( s.victoriatourist_json -> '$.frozenQuantity' )), '$.defectiveQuantity', sum( json_unquote( s.victoriatourist_json -> '$.defectiveQuantity' )) ) victoriatourist_json
         FROM
             stock s
+                LEFT JOIN bytesailing_item.product_info pi ON s.product_id = pi.id
         GROUP BY
             s.product_id
             ${ew.customSqlSegment}

+ 7 - 2
hx-wms/src/main/resources/mapper/stock/StockWaitDetailsMapper.xml

@@ -2,8 +2,11 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.fjhx.wms.mapper.stock.StockWaitDetailsMapper">
     <select id="getPage" resultType="com.fjhx.wms.entity.stock.vo.StockWaitDetailsVo">
-        select
+        SELECT
             swd.id,
+            sw.business_code,
+            sw.business_type,
+            sw.`status`,
             swd.stock_wait_id,
             swd.product_id,
             swd.quantity,
@@ -13,7 +16,9 @@
             swd.update_user,
             swd.update_time,
             swd.victoriatourist_json
-        from stock_wait_details swd
+        FROM
+            stock_wait_details swd
+                JOIN stock_wait sw ON swd.stock_wait_id = sw.id
             ${ew.customSqlSegment}
     </select>