浏览代码

Merge remote-tracking branch 'origin/master'

24282 2 年之前
父节点
当前提交
f7749ea569

+ 4 - 2
hx-mes/src/main/java/com/fjhx/mes/utils/code/CodeEnum.java

@@ -6,6 +6,8 @@ import cn.hutool.core.text.CharSequenceUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.extra.spring.SpringUtil;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.fjhx.mes.service.production.ProductionPlanService;
+import com.fjhx.mes.service.production.ProductionTaskService;
 import com.fjhx.mes.service.work.WorkOrderService;
 import com.obs.services.internal.ServiceException;
 import lombok.Getter;
@@ -19,8 +21,8 @@ public enum CodeEnum {
 
     // 供应商
     WORK_ORDER("WO", "yyMM-", "code", 3, WorkOrderService.class),
-    PRODUCTION_PLAN("WP", "yyMM-", "code", 3, WorkOrderService.class),
-    PRODUCTION_TASK("WT", "yyMM-", "code", 3, WorkOrderService.class),
+    PRODUCTION_PLAN("WP", "yyMM-", "code", 3, ProductionPlanService.class),
+    PRODUCTION_TASK("WT", "yyMM-", "code", 3, ProductionTaskService.class),
     ;
 
     CodeEnum(String prefix, String dateFormat, String codeFieldName, Integer length, Class<? extends IService<?>> serviceCls) {

+ 1 - 0
hx-mes/src/main/resources/mapper/production/ProductionPlanMapper.xml

@@ -4,6 +4,7 @@
     <select id="getPage" resultType="com.fjhx.mes.entity.production.vo.ProductionPlanVo">
         select
             pp.id,
+            pp.code,
             pp.work_order_id,
             pp.start_date,
             pp.stop_date,

+ 26 - 2
hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/dto/PurchaseSelectDto.java

@@ -4,6 +4,9 @@ import com.ruoyi.common.core.domain.BaseSelectDto;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.math.BigDecimal;
+import java.util.Date;
+
 /**
  * 采购列表查询入参实体
  *
@@ -44,7 +47,28 @@ public class PurchaseSelectDto extends BaseSelectDto {
      */
     private Long supplyId;
 
+    //------------高级检索字段---------------
+    /**
+     * 自定义采购单号
+     */
+    private String contractCode;
 
-
-
+    /**
+     * 收货仓库
+     */
+    private Long receiptWarehouseId;
+    /**
+     * 金额
+     */
+    private BigDecimal startAmount;
+    private BigDecimal endAmount;
+    /**
+     * 采购人
+     */
+    private Long purchaseUserId;
+    /**
+     * 采购时间
+     */
+    private Date purchaseStartTime;
+    private Date purchaseEndTime;
 }

+ 46 - 18
hx-purchase/src/main/java/com/fjhx/purchase/service/purchase/impl/PurchaseServiceImpl.java

@@ -19,7 +19,6 @@ 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;
@@ -41,7 +40,6 @@ 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.supply.entity.supplier.po.SupplierInfo;
 import com.fjhx.supply.service.supplier.SupplierInfoService;
 import com.fjhx.wms.entity.warehouse.po.Warehouse;
@@ -163,7 +161,37 @@ public class PurchaseServiceImpl extends ServiceImpl<PurchaseMapper, Purchase>
         if (ObjectUtils.isNotEmpty(dto.getPayStatus())) {
             wrapper.eq("p", Purchase::getPayStatus, dto.getPayStatus());
         }
-        wrapper.eq("p", Purchase::getCode, dto.getKeyword());//根据采购单号关键字搜索
+
+        //采购单号 供应商 采购人
+        if (ObjectUtils.isNotEmpty(dto.getKeyword())) {
+            //供应商
+            List<Long> supplierInfoIds = supplierInfoService.listObject(SupplierInfo::getId, q -> q.eq(SupplierInfo::getName, dto.getKeyword()));
+            wrapper.and(q -> q.like("json_unquote(p.victoriatourist_json -> '$.contractCode')", dto.getKeyword())
+                    .or().in("p", Purchase::getSupplyId, supplierInfoIds)
+                    .or().like("p", Purchase::getPurchaseName, dto.getKeyword())
+            );
+        }
+        //高级检索
+        //采购单号
+        if (ObjectUtils.isNotEmpty(dto.getContractCode())) {
+            wrapper.like("json_unquote(p.victoriatourist_json -> '$.contractCode')", dto.getContractCode());
+        }
+        //供应商
+        wrapper.eq("p", Purchase::getSupplyId, dto.getSupplyId());
+        //收货仓库
+        if (ObjectUtils.isNotEmpty(dto.getReceiptWarehouseId())) {
+            wrapper.like("json_unquote(p.victoriatourist_json -> '$.receiptWarehouseId')", dto.getReceiptWarehouseId());
+        }
+        //采购金额
+        wrapper.ge(Purchase::getAmount, dto.getStartAmount());
+        wrapper.le(Purchase::getAmount, dto.getEndAmount());
+        //采购人
+        wrapper.eq(Purchase::getCreateUser, dto.getPurchaseUserId());
+        //采购时间
+        wrapper.ge(Purchase::getCreateTime, dto.getPurchaseStartTime());
+        wrapper.le(Purchase::getCreateTime, dto.getPurchaseEndTime());
+
+
         Page<PurchaseVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
         List<PurchaseVo> list = page.getRecords();
         if (CollectionUtils.isNotEmpty(list)) {
@@ -252,9 +280,9 @@ public class PurchaseServiceImpl extends ServiceImpl<PurchaseMapper, Purchase>
             //赋值申购编号
             PurchaseDetail purchaseDetail = purchaseDetailList.get(0);
             SubscribeDetail subscribeDetail = subscribeDetailService.getById(purchaseDetail.getSubscribeDetailId());
-            if(ObjectUtils.isNotEmpty(subscribeDetail)) {
+            if (ObjectUtils.isNotEmpty(subscribeDetail)) {
                 Subscribe subscribe = subscribeService.getById(subscribeDetail.getSubscribeId());
-                if(ObjectUtils.isNotEmpty(subscribe)) {
+                if (ObjectUtils.isNotEmpty(subscribe)) {
                     result.setSubscribeCode(subscribe.getCode());
                 }
             }
@@ -293,7 +321,7 @@ public class PurchaseServiceImpl extends ServiceImpl<PurchaseMapper, Purchase>
         PurchaseService purchaseService = SpringUtil.getBean(PurchaseService.class);
         PurchaseDetailService purchaseDetailService = SpringUtil.getBean(PurchaseDetailService.class);
 //        purchase.setCode(CodeEnum.PURCHASE.getCode());
-        purchase.setCode(codingRuleService.createCode(CodingRuleEnum.PURCHASE.getKey(),null));
+        purchase.setCode(codingRuleService.createCode(CodingRuleEnum.PURCHASE.getKey(), null));
         purchase.setPurchaseStatus(PurchaseStatusEnum.UNDER_REVIEW.getKey());
         purchaseService.save(purchase);
         if (CollectionUtils.isNotEmpty(purchase.getPurchaseDetailList())) {
@@ -353,21 +381,21 @@ public class PurchaseServiceImpl extends ServiceImpl<PurchaseMapper, Purchase>
     @Override
     public Page<PurchaseDto> paymentBill(PurchaseSelectDto purchaseDto) {
         QueryWrapper<Object> query = Wrappers.query();
-        query.eq(ObjectUtil.isNotEmpty(purchaseDto.getSupplyId()),"pu.supply_id",purchaseDto.getSupplyId());
-        query.eq(ObjectUtil.isNotEmpty(purchaseDto.getPayStatus()),"pu.pay_status",purchaseDto.getPayStatus());
-        query.like(StringUtils.isNotEmpty(purchaseDto.getKeyword()),"pu.code",purchaseDto.getKeyword());
+        query.eq(ObjectUtil.isNotEmpty(purchaseDto.getSupplyId()), "pu.supply_id", purchaseDto.getSupplyId());
+        query.eq(ObjectUtil.isNotEmpty(purchaseDto.getPayStatus()), "pu.pay_status", purchaseDto.getPayStatus());
+        query.like(StringUtils.isNotEmpty(purchaseDto.getKeyword()), "pu.code", purchaseDto.getKeyword());
         query.groupBy("pu.id");
         //查询采购信息与已收发票
-        Page<PurchaseDto> page = baseMapper.paymentBill(purchaseDto.getPage(),query);
+        Page<PurchaseDto> page = baseMapper.paymentBill(purchaseDto.getPage(), query);
         List<PurchaseDto> records = page.getRecords();
-        if (records.size()==0){
+        if (records.size() == 0) {
             return page;
         }
         //获取到所有的采购订单ID
         List<Long> ids = records.stream().map(purchaseDto1 -> purchaseDto1.getId()).collect(Collectors.toList());
         QueryWrapper<Object> wrapper = Wrappers.query();
-        wrapper.in("sw.business_id",ids);
-        wrapper.eq("sw.type",1);
+        wrapper.in("sw.business_id", ids);
+        wrapper.eq("sw.type", 1);
         wrapper.groupBy("sw.business_id");
         //查询到货金额(已入库的采购数量*采购单价)
         List<PurchaseDto> purchaseDtos = baseMapper.arrivalAmount(wrapper);
@@ -376,8 +404,8 @@ public class PurchaseServiceImpl extends ServiceImpl<PurchaseMapper, Purchase>
 
         //查询已付款金额()
         QueryWrapper<Object> queryWrapper = Wrappers.query();
-        queryWrapper.in("pd.purchase_id",ids);
-        queryWrapper.eq("p.status",30);
+        queryWrapper.in("pd.purchase_id", ids);
+        queryWrapper.eq("p.status", 30);
         queryWrapper.groupBy("pd.purchase_id");
         List<PurchaseDto> purchaseDtos1 = baseMapper.paidAmount(queryWrapper);
         Map<Long, List<PurchaseDto>> paidMap = purchaseDtos1.stream().collect(Collectors.groupingBy(PurchaseDto::getId));
@@ -392,14 +420,14 @@ public class PurchaseServiceImpl extends ServiceImpl<PurchaseMapper, Purchase>
             //已付款金额币种默认合同币种
             record.setPaidCurrency(record.getCurrency());
             //赋值到货金额
-            List<PurchaseDto>  arrivalList= arrivalMap.get(record.getId());
-            if (ObjectUtils.isNotEmpty(arrivalList)){
+            List<PurchaseDto> arrivalList = arrivalMap.get(record.getId());
+            if (ObjectUtils.isNotEmpty(arrivalList)) {
                 record.setArrivalAmount(arrivalList.get(0).getAmount());
             }
 
             //赋值已付款金额
             List<PurchaseDto> paidList = paidMap.get(record.getId());
-            if (ObjectUtils.isNotEmpty(paidList)){
+            if (ObjectUtils.isNotEmpty(paidList)) {
                 record.setPaidAmount(paidList.get(0).getAmount());
                 record.setPaidCurrency(paidList.get(0).getCurrency());
             }

+ 9 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/controller/purchase/PurchaseBackController.java

@@ -1,5 +1,6 @@
 package com.fjhx.victoriatourist.controller.purchase;
 
+import com.fjhx.wms.entity.stock.dto.StockWaitDetailsDto;
 import org.springframework.web.bind.annotation.*;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.victoriatourist.entity.purchase.vo.PurchaseBackVo;
@@ -49,4 +50,12 @@ public class PurchaseBackController {
         purchaseBackService.add(purchaseBackDto);
     }
 
+    /**
+     * 采购退货待出库出库
+     */
+    @PostMapping("/backOut")
+    public void backOut(@RequestBody StockWaitDetailsDto stockWaitDetailsDto) {
+        purchaseBackService.backOut(stockWaitDetailsDto);
+    }
+
 }

+ 5 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/purchase/PurchaseBackService.java

@@ -1,6 +1,7 @@
 package com.fjhx.victoriatourist.service.purchase;
 
 import com.fjhx.victoriatourist.entity.purchase.po.PurchaseBack;
+import com.fjhx.wms.entity.stock.dto.StockWaitDetailsDto;
 import com.ruoyi.common.core.service.BaseService;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.victoriatourist.entity.purchase.vo.PurchaseBackVo;
@@ -33,4 +34,8 @@ public interface PurchaseBackService extends BaseService<PurchaseBack> {
      */
     void add(PurchaseBackDto purchaseBackDto);
 
+    /**
+     * 采购退货待出库出库
+     */
+    void backOut(StockWaitDetailsDto stockWaitDetailsDto);
 }

+ 47 - 7
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/purchase/impl/PurchaseBackServiceImpl.java

@@ -2,9 +2,10 @@ package com.fjhx.victoriatourist.service.purchase.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
+import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.fjhx.purchase.entity.sales.po.SalesReturnDetail;
+import com.fjhx.common.constant.SourceConstant;
 import com.fjhx.victoriatourist.entity.purchase.dto.PurchaseBackDto;
 import com.fjhx.victoriatourist.entity.purchase.dto.PurchaseBackSelectDto;
 import com.fjhx.victoriatourist.entity.purchase.po.PurchaseBack;
@@ -14,17 +15,19 @@ import com.fjhx.victoriatourist.entity.purchase.vo.PurchaseBackVo;
 import com.fjhx.victoriatourist.mapper.purchase.PurchaseBackMapper;
 import com.fjhx.victoriatourist.service.purchase.PurchaseBackDetailsService;
 import com.fjhx.victoriatourist.service.purchase.PurchaseBackService;
+import com.fjhx.wms.entity.stock.dto.StockWaitDetailsDto;
+import com.fjhx.wms.entity.stock.emums.JournalType;
 import com.fjhx.wms.entity.stock.emums.StockWaitType;
-import com.fjhx.wms.entity.stock.po.StockWait;
-import com.fjhx.wms.entity.stock.po.StockWaitDetails;
-import com.fjhx.wms.service.stock.StockWaitDetailsService;
-import com.fjhx.wms.service.stock.StockWaitService;
+import com.fjhx.wms.entity.stock.po.*;
+import com.fjhx.wms.service.stock.*;
+import com.fjhx.wms.utils.CodeEnum;
+import com.ruoyi.common.core.domain.entity.SysUser;
 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.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
 
@@ -44,6 +47,12 @@ public class PurchaseBackServiceImpl extends ServiceImpl<PurchaseBackMapper, Pur
     private StockWaitService stockWaitService;
     @Autowired
     private StockWaitDetailsService stockWaitDetailsService;
+    @Autowired
+    private StockJournalService stockJournalService;
+    @Autowired
+    private StockJournalDetailsService stockJournalDetailsService;
+    @Autowired
+    private StockService stockService;
 
     @Override
     public Page<PurchaseBackVo> getPage(PurchaseBackSelectDto dto) {
@@ -76,7 +85,7 @@ public class PurchaseBackServiceImpl extends ServiceImpl<PurchaseBackMapper, Pur
         stockWait.setBusinessId(purchaseBackDto.getId());
         stockWait.setType(2);//出库
         stockWait.setStatus(0);//待出库
-        stockWait.setBusinessType(StockWaitType.WDLY_PURCHASE_BACK_OUT.getDetailType());//已采购退货出库
+        stockWait.setBusinessType(StockWaitType.BACK_OUT.getDetailType());//已采购退货出库
         stockWaitService.save(stockWait);
         List<StockWaitDetails> stockWaitDetailsList = new ArrayList<>();
         for (PurchaseBackDetails purchaseBackDetails : purchaseBackDetailsList) {
@@ -90,4 +99,35 @@ public class PurchaseBackServiceImpl extends ServiceImpl<PurchaseBackMapper, Pur
         stockWaitDetailsService.saveBatch(stockWaitDetailsList);
     }
 
+    @Override
+    @DSTransactional
+    public void backOut(StockWaitDetailsDto stockWaitDetailsDto){
+        //修改待出入库状态
+        stockWaitDetailsService.changeStockWaitStatus(stockWaitDetailsDto);
+        StockWaitDetails stockWaitDetails = stockWaitDetailsService.getById(stockWaitDetailsDto.getId());
+        StockWait byId = stockWaitService.getById(stockWaitDetails.getStockWaitId());
+        //创建出入库记录
+        StockJournal stockJournal = new StockJournal();
+        stockJournal.setOpType(byId.getType());
+        //退货出库
+        stockJournal.setType(JournalType.BACK_OUT.getDetailType());
+
+        DynamicDataSourceContextHolder.push(SourceConstant.WMS);
+        stockJournal.setCode(CodeEnum.SOUT_CODE.getCode());
+        DynamicDataSourceContextHolder.poll();
+
+        stockJournal.setWarehouseId(stockWaitDetailsDto.getWarehouseId());
+        stockJournal.setBusinessId(byId.getId());
+        //保存出入库记录
+        stockJournalService.save(stockJournal);
+        //操作库存
+        Stock stock = new Stock();
+        stock.setQuantity(stockWaitDetailsDto.getQuantity());
+        stock.setProductId(stockWaitDetails.getProductId());
+        //退货出库出次品库存
+        List<StockJournalDetails> stockJournalDetailsList = stockService.ModifyInventory(stockJournal.getId(), 4, Arrays.asList(stock), stockWaitDetailsDto.getWarehouseId());
+        //保存出入库明细
+        stockJournalDetailsService.saveBatch(stockJournalDetailsList);
+    }
+
 }

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

@@ -13,8 +13,7 @@ public enum StockWaitType {
     BACK_OUT(InOutType.OUT, 4, "退货出库", ""),
     JD_ORDER_OUT(InOutType.OUT, 5, "京东订单出库", "jd_order"),
     SALE_ORDER_OUT(InOutType.OUT, 6, "销售订单出库", "order_info"),
-    PRODUCTION_TASK_OUT(InOutType.OUT, 7, "生产任务待出库", "production_task"),
-    WDLY_PURCHASE_BACK_OUT(InOutType.OUT, 8, "维多利亚采购退货出库", "purchase_back");
+    PRODUCTION_TASK_OUT(InOutType.OUT, 7, "生产任务待出库", "production_task");
 
 
     /**

+ 2 - 0
hx-wms/src/main/java/com/fjhx/wms/service/stock/StockWaitDetailsService.java

@@ -33,6 +33,8 @@ public interface StockWaitDetailsService extends BaseService<StockWaitDetails> {
      */
     void add(StockWaitDetailsDto stockWaitDetailsDto);
 
+    void changeStockWaitStatus(StockWaitDetailsDto stockWaitDetailsDto);
+
     /**
      * 待出入库明细编辑
      */

+ 17 - 1
hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockServiceImpl.java

@@ -339,7 +339,7 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
      * 操作库存通用方法
      *
      * @param stockJournalId 出入库记录id
-     * @param type           1入库 2出库 3维多利亚冻结库存入库
+     * @param type           1入库 2出库 3维多利亚冻结库存入库 4维多利亚待出库次品库存
      */
     @Override
     public List<StockJournalDetails> ModifyInventory(Long stockJournalId, int type, List<Stock> list, Long warehouseId) {
@@ -386,6 +386,22 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
                 frozenQuantity = frozenQuantity.add(stock.getQuantity());
                 json.put("frozenQuantity", frozenQuantity);
                 oldStocks.setVictoriatouristJson(json.toJSONString());
+            } else if (type == 4) {
+                //维多利亚待出库操作次品库存
+                String victoriatouristJson = oldStocks.getVictoriatouristJson();
+                JSONObject json = ObjectUtil.isEmpty(victoriatouristJson) ? new JSONObject() : JSONObject.parseObject(victoriatouristJson);
+                BigDecimal defectiveQuantity = json.getBigDecimal("defectiveQuantity");
+                defectiveQuantity = defectiveQuantity == null ? BigDecimal.ZERO : defectiveQuantity;
+                defectiveQuantity = defectiveQuantity.subtract(stock.getQuantity());
+                if (defectiveQuantity.compareTo(BigDecimal.ZERO) < 0) {
+                    ProductInfo productInfo = productInfoService.getById(stock.getProductId());
+                    if (productInfo == null) {
+                        throw new ServiceException("产品id:" + stock.getProductId() + "不存在");
+                    }
+                    throw new ServiceException("以下商品次品库存不足,无法出库:" + productInfo.getName());
+                }
+                json.put("defectiveQuantity", defectiveQuantity);
+                oldStocks.setVictoriatouristJson(json.toJSONString());
             } else {
                 throw new ServiceException("未知库存操作类型");
             }

+ 60 - 48
hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockWaitDetailsServiceImpl.java

@@ -1,28 +1,27 @@
 package com.fjhx.wms.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.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.item.entity.product.po.ProductInfo;
 import com.fjhx.item.service.product.ProductInfoService;
+import com.fjhx.wms.entity.stock.dto.StockWaitDetailsDto;
+import com.fjhx.wms.entity.stock.dto.StockWaitDetailsSelectDto;
 import com.fjhx.wms.entity.stock.emums.JournalType;
 import com.fjhx.wms.entity.stock.emums.StockWaitType;
 import com.fjhx.wms.entity.stock.po.*;
+import com.fjhx.wms.entity.stock.vo.StockWaitDetailsVo;
 import com.fjhx.wms.mapper.stock.StockWaitDetailsMapper;
 import com.fjhx.wms.service.WmsService;
 import com.fjhx.wms.service.stock.*;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.wms.utils.CodeEnum;
 import com.obs.services.internal.ServiceException;
+import com.ruoyi.common.utils.wrapper.IWrapper;
 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;
-import com.fjhx.wms.entity.stock.dto.StockWaitDetailsSelectDto;
-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.math.BigDecimal;
 import java.util.Arrays;
 import java.util.List;
@@ -33,7 +32,7 @@ import java.util.List;
  * 待出入库明细 服务实现类
  * </p>
  *
- * @author 
+ * @author
  * @since 2023-04-13
  */
 @Service
@@ -57,16 +56,16 @@ public class StockWaitDetailsServiceImpl extends ServiceImpl<StockWaitDetailsMap
     public Page<StockWaitDetailsVo> getPage(StockWaitDetailsSelectDto dto) {
         IWrapper<StockWaitDetails> wrapper = getWrapper();
         wrapper.orderByDesc("swd", StockWaitDetails::getId);
-        wrapper.eq("sw", StockWait::getType,dto.getType());
-        if(ObjectUtil.isNotEmpty(dto.getKeyword())){
-            wrapper.and(q->q.like(StockWaitDetails::getQuantity,dto.getKeyword()).or().like(StockWaitDetailsVo::getBusinessCode,dto.getKeyword()));
+        wrapper.eq("sw", StockWait::getType, dto.getType());
+        if (ObjectUtil.isNotEmpty(dto.getKeyword())) {
+            wrapper.and(q -> q.like(StockWaitDetails::getQuantity, dto.getKeyword()).or().like(StockWaitDetailsVo::getBusinessCode, dto.getKeyword()));
         }
-        wrapper.eq("sw", StockWait::getBusinessType,dto.getBusinessType());
-        wrapper.eq("sw", StockWait::getStatus,dto.getStatus());
+        wrapper.eq("sw", StockWait::getBusinessType, dto.getBusinessType());
+        wrapper.eq("sw", StockWait::getStatus, dto.getStatus());
         Page<StockWaitDetailsVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
         List<StockWaitDetailsVo> records = page.getRecords();
         for (StockWaitDetailsVo record : records) {
-            if(ObjectUtil.isEmpty(record.getReceiptQuantity())){
+            if (ObjectUtil.isEmpty(record.getReceiptQuantity())) {
                 record.setReceiptQuantity(BigDecimal.ZERO);
             }
         }
@@ -88,14 +87,15 @@ public class StockWaitDetailsServiceImpl extends ServiceImpl<StockWaitDetailsMap
         StockWaitDetailsVo result = BeanUtil.toBean(StockWaitDetails, StockWaitDetailsVo.class);
         //查询待入库信息
         StockWait stockWait = stockWaitService.getById(result.getStockWaitId());
-        if(ObjectUtil.isEmpty(stockWait)){
-            throw new ServiceException("无法查询到待入库信息,待入库id"+result.getStockWaitId());
+        if (ObjectUtil.isEmpty(stockWait)) {
+            throw new ServiceException("无法查询到待入库信息,待入库id" + result.getStockWaitId());
         }
         result.setBusinessType(stockWait.getBusinessType());
-        result.setBusinessCode(stockWait.getBusinessCode());;
+        result.setBusinessCode(stockWait.getBusinessCode());
+        ;
         ProductInfo byId = productInfoService.getById(StockWaitDetails.getProductId());
-        if(ObjectUtil.isEmpty(byId)){
-            throw new ServiceException("无法查询到产品信息,产品id"+StockWaitDetails.getProductId());
+        if (ObjectUtil.isEmpty(byId)) {
+            throw new ServiceException("无法查询到产品信息,产品id" + StockWaitDetails.getProductId());
         }
         result.setProductName(byId.getName());
         return result;
@@ -104,34 +104,11 @@ public class StockWaitDetailsServiceImpl extends ServiceImpl<StockWaitDetailsMap
     @Override
     @DSTransactional
     public void add(StockWaitDetailsDto stockWaitDetailsDto) {
-        //更新已入库数量 根据明细id
+        //修改待出库状态
+        changeStockWaitStatus(stockWaitDetailsDto);
         StockWaitDetails stockWaitDetails = getById(stockWaitDetailsDto.getId());
-        if(ObjectUtil.isEmpty(stockWaitDetails)){
-            throw new ServiceException("无法查询到明细信息");
-        }
-        BigDecimal receiptQuantity = stockWaitDetails.getReceiptQuantity();
-        receiptQuantity = ObjectUtil.isEmpty(receiptQuantity) ? BigDecimal.ZERO : receiptQuantity;
-        stockWaitDetails.setReceiptQuantity(receiptQuantity.add(stockWaitDetailsDto.getQuantity()));
-        if (stockWaitDetails.getReceiptQuantity().compareTo(stockWaitDetails.getQuantity()) > 0) {
-            throw new ServiceException("出库数量+已出库数量不能大于待出库数量");
-        }
-        updateById(stockWaitDetails);
-        //更新待出库记录状态
-        Integer statusFlag = 0;
-        List<StockWaitDetails> stockWaitDetailsList = list(q -> q.eq(StockWaitDetails::getStockWaitId, stockWaitDetails.getStockWaitId()));
-        for (StockWaitDetails waitDetails : stockWaitDetailsList) {
-            //计算已经完全出库的数量
-            if (waitDetails.getReceiptQuantity().compareTo(waitDetails.getQuantity()) == 0) {
-                statusFlag++;
-            }
-        }
         StockWait byId = stockWaitService.getById(stockWaitDetails.getStockWaitId());
-        if (statusFlag == stockWaitDetailsList.size()) {
-            byId.setStatus(2);//入库完成
-        } else {
-            byId.setStatus(1);//部分入库
-        }
-        stockWaitService.updateById(byId);
+
         //创建出入库记录
         StockJournal stockJournal = new StockJournal();
         stockJournal.setOpType(byId.getType());
@@ -149,11 +126,11 @@ public class StockWaitDetailsServiceImpl extends ServiceImpl<StockWaitDetailsMap
         } else if (StockWaitType.BACK_OUT.getDetailType().equals(businessType)) {
             //退货出货
             stockJournal.setType(JournalType.BACK_OUT.getDetailType());
-        }else if (StockWaitType.SALE_ORDER_OUT.getDetailType().equals(businessType)) {
+        } else if (StockWaitType.SALE_ORDER_OUT.getDetailType().equals(businessType)) {
             //销售订单出库
             stockJournal.setType(JournalType.SALES_OUT.getDetailType());
             wmsService.outbound(stockWaitDetailsDto);
-        }else if (StockWaitType.PRODUCTION_TASK_OUT.getDetailType().equals(businessType)) {
+        } else if (StockWaitType.PRODUCTION_TASK_OUT.getDetailType().equals(businessType)) {
             //生产任务待出库
             stockJournal.setType(JournalType.PRODUCTION_TASK_OUT.getDetailType());
             //减少冻结库存
@@ -178,6 +155,41 @@ public class StockWaitDetailsServiceImpl extends ServiceImpl<StockWaitDetailsMap
         stockJournalDetailsService.saveBatch(stockJournalDetailsList);
     }
 
+    /**
+     * 更新待出入库状态
+     */
+    @Override
+    public void changeStockWaitStatus(StockWaitDetailsDto stockWaitDetailsDto) {
+        //更新已入库数量 根据明细id
+        StockWaitDetails stockWaitDetails = getById(stockWaitDetailsDto.getId());
+        if (ObjectUtil.isEmpty(stockWaitDetails)) {
+            throw new ServiceException("无法查询到明细信息");
+        }
+        BigDecimal receiptQuantity = stockWaitDetails.getReceiptQuantity();
+        receiptQuantity = ObjectUtil.isEmpty(receiptQuantity) ? BigDecimal.ZERO : receiptQuantity;
+        stockWaitDetails.setReceiptQuantity(receiptQuantity.add(stockWaitDetailsDto.getQuantity()));
+        if (stockWaitDetails.getReceiptQuantity().compareTo(stockWaitDetails.getQuantity()) > 0) {
+            throw new ServiceException("出库数量+已出库数量不能大于待出库数量");
+        }
+        updateById(stockWaitDetails);
+        //更新待出库记录状态
+        Integer statusFlag = 0;
+        List<StockWaitDetails> stockWaitDetailsList = list(q -> q.eq(StockWaitDetails::getStockWaitId, stockWaitDetails.getStockWaitId()));
+        for (StockWaitDetails waitDetails : stockWaitDetailsList) {
+            //计算已经完全出库的数量
+            if (waitDetails.getReceiptQuantity().compareTo(waitDetails.getQuantity()) == 0) {
+                statusFlag++;
+            }
+        }
+        StockWait byId = stockWaitService.getById(stockWaitDetails.getStockWaitId());
+        if (statusFlag == stockWaitDetailsList.size()) {
+            byId.setStatus(2);//入库完成
+        } else {
+            byId.setStatus(1);//部分入库
+        }
+        stockWaitService.updateById(byId);
+    }
+
     @Override
     public void edit(StockWaitDetailsDto stockWaitDetailsDto) {
         this.updateById(stockWaitDetailsDto);