Просмотр исходного кода

Merge branch 'master' of http://s.dev01.dkiboss.com:9001/iBOSS-2.0-Mini/iboss-server-mdm

liuyao 1 год назад
Родитель
Сommit
b651cdd5d0

+ 11 - 0
src/main/java/com/dk/mdm/controller/common/CommonController.java

@@ -830,6 +830,17 @@ public class CommonController extends BaseController<Map<String, Object>> {
     public ResponseResultVO<Map<String, Object>> getRealTimeData(@RequestBody Map<String, Object> param) {
         return commonService.getRealTimeData(param);
     }
+
+    /**
+     * @desc : 查询服务器的时间日期
+     * @author : 姜永辉
+     * @date : 2024-06-19 11:06
+     */
+    @ApiOperation(value = "查询服务器的时间日期", notes = "查询服务器的时间日期")
+    @PostMapping({"get_current_date"})
+    public ResponseResultVO<Map<String, Object>> getCurrentDate(@RequestBody Map<String, Object> param) {
+        return commonService.getCurrentDate(param);
+    }
 }
 
 

+ 1 - 0
src/main/java/com/dk/mdm/mapper/mac/RecPayItemMapper.xml

@@ -46,6 +46,7 @@
     <!-- 通用条件列 -->
     <sql id="Condition">
         <where>
+            t.flg_valid
             <if test="rpId != null and rpId != ''">
                 AND t.rp_id = #{rpId}::uuid
             </if>

+ 1 - 1
src/main/java/com/dk/mdm/mapper/report/ReportMapper.xml

@@ -2636,7 +2636,7 @@
     <!-- 资金日记账-->
     <select id="getFundReport" resultType="java.util.Map">
         SELECT *
-        FROM dkic_b.f_get_fund_report(#{accDateStart}::date,#{accDateEnd}::date,#{cpId},#{currentPage},#{pageSize})
+        FROM dkic_b.f_get_fund_report(#{accDateStart}::date,#{accDateEnd}::date,#{cpId},#{currentPage},#{pageSize},#{macId}::uuid)
     </select>
 
     <!-- 销售简报-->

+ 6 - 1
src/main/java/com/dk/mdm/model/vo/sale/OrderItemVO.java

@@ -71,7 +71,12 @@ public class OrderItemVO extends PageInfo<OrderItemVO> implements Serializable {
     @ApiModelProperty(value = "订单ID")
     @TableField(typeHandler = UuidTypeHandler.class)
     private String orderId;
-
+    /**
+     * 供应商名称
+     */
+    @Excel(name = "供应商名称")
+    @ApiModelProperty(value = "供应商名称")
+    private String supName;
 
     /**
      * 商品顺序

+ 11 - 0
src/main/java/com/dk/mdm/service/common/CommonService.java

@@ -1130,4 +1130,15 @@ public class CommonService extends BaseService<Map<String, Object>> {
         res.put("cusAmt", list4.get(0).get("cusAmt"));
         return ResponseResultUtil.success(res);
     }
+
+    /**
+     * @desc : 查询服务器的时间日期
+     * @author : 付斌
+     * @date : 2024-06-19 11:02
+     */
+    public ResponseResultVO<Map<String, Object>> getCurrentDate(Map<String, Object> param) {
+        Map<String, Object> res = new HashMap<>();
+        res.put("currentDate", LocalDate.now());
+        return ResponseResultUtil.success(res);
+    }
 }

+ 32 - 2
src/main/java/com/dk/mdm/service/ivt/inventory/InventoryService.java

@@ -640,6 +640,10 @@ public class InventoryService extends BaseService<Inventory> {
                             //region 库存流水
                             this.insertInboundRecord(inOutRecordVO);
                             //endregion
+
+                            //region  反写销售退货中的库存id
+                            this.updateOutboundItemMessage(inOutRecordVO);
+                            //endregion
                         }
                         //endregion
 
@@ -691,6 +695,12 @@ public class InventoryService extends BaseService<Inventory> {
                     this.insertInboundRecord(inOutRecordVO);
                     //endregion
 
+                    //region  反写销售退货中的库存id
+                    if (Constant.InventoryDocCode.SALE_RETURN.getValue().equals(inOutRecordVO.getInventoryDocCode())) {
+                        this.updateOutboundItemMessage(inOutRecordVO);
+                    }
+                    //endregion
+
 //                    //region 销售退货 其他类型出库
 //                    if (!Constant.InventoryDocCode.SALE_RETURN.getValue().equals(inOutRecordVO.getInventoryDocCode())) {
 //                        this.insertOutboundItemCost(inOutRecordVO);
@@ -1313,7 +1323,7 @@ public class InventoryService extends BaseService<Inventory> {
     )
     public void updateOutboundPri(List<InOutRecordVO> inOutRecordVOList) {
         //根据源出库单分组
-        Map<String, List<InOutRecordVO>> InOutRecordVOListMap = inOutRecordVOList.stream().collect(Collectors.groupingBy(InOutRecordVO::getSOutId));
+        Map<String, List<InOutRecordVO>> InOutRecordVOListMap = inOutRecordVOList.stream().collect(Collectors.groupingBy(InOutRecordVO::getBiznisId));
         for (String str : InOutRecordVOListMap.keySet()) {
             //提取分组后的明细
             List<InOutRecordVO> inOutRecordVOListGroup = InOutRecordVOListMap.get(str);
@@ -1323,7 +1333,7 @@ public class InventoryService extends BaseService<Inventory> {
             for (InOutRecordVO inOutRecordVO : inOutRecordVOListGroup) {
                 //修改明细
                 OutboundItem outboundItem = new OutboundItem();
-                outboundItem.setItemId(inOutRecordVO.getSOutItemId());
+                outboundItem.setItemId(inOutRecordVO.getBiznisItemId());
                 if (!Constant.InventoryDocCode.SALE_ORDER.getValue().equals(inOutRecordVOList.get(0).getInventoryDocCode())) {
 //                    outboundItem.setOutQty(inOutRecordVO.getIntoQty());
                     outboundItem.setOutAmt(inOutRecordVO.getIntoAmt());
@@ -1456,6 +1466,26 @@ public class InventoryService extends BaseService<Inventory> {
     }
 
     /**
+     * @desc   : 反写出库单上的库存id-----销售退货用
+     * @date   : 2024/7/3 11:01
+     * @author : 寇珊珊
+     */
+    @Transactional(
+            rollbackFor = {Exception.class}
+    )
+    public void updateOutboundItemMessage (InOutRecordVO inOutRecordVO){
+        OutboundItem outboundItem = new OutboundItem();
+        //总单id
+        outboundItem.setItemId(inOutRecordVO.getBiznisItemId());
+        //库存id
+        outboundItem.setInvId(inOutRecordVO.getInvId());
+        outboundItemMapper.update(outboundItem,
+                new UpdateWrapper<OutboundItem>().lambda()
+                        .eq(OutboundItem::getItemId, UUID.fromString(outboundItem.getItemId()))
+        );
+    }
+
+    /**
      * @desc : 操作负库存--新建和编辑
      * @date : 2024/4/12 9:57
      * @author : 寇珊珊

+ 23 - 39
src/main/java/com/dk/mdm/service/ivt/outbound/OutboundSaleOrderService.java

@@ -740,8 +740,6 @@ public class OutboundSaleOrderService extends BaseService<Outbound> {
                         outboundItem.setItemId(outboundItemVO.getItemId());
                         outboundItem.setOutQty(outboundItemVO.getOutingQty());
                         outboundItem.setOutAmt(outboundItemVO.getOutingAmt());
-                        outboundItem.setCostPrice(outboundItemVO.getPriceOut());
-                        outboundItem.setCostAmt(outboundItemVO.getOutQty().multiply(outboundItemVO.getPriceOut()).setScale(6, BigDecimal.ROUND_HALF_UP));
                         //修改
                         outboundItemMapper.update(outboundItem,
                                 new UpdateWrapper<OutboundItem>().lambda()
@@ -752,19 +750,12 @@ public class OutboundSaleOrderService extends BaseService<Outbound> {
 
                     //region 新建明细
                     else {
-                        //region 反写订单总单 数据需要  把查出来的已出库数量用别的变量存起来
-                        outboundItemVO.setUpdateOrderOutQty(outboundItemVO.getOutingQty());
-                        outboundItemVO.setUpdateOrderOutAmt(outboundItemVO.getOutingAmt());
-                        //endregion
-
                         outboundItemVO
                                 .setOutId(outboundItemVO.getOutId())
                                 .setOutQty(outboundItemVO.getOutingQty())
                                 .setOutAmt(outboundItemVO.getOutingAmt())
                                 .setOutingQty(BigDecimal.ZERO)
                                 .setOutingAmt(BigDecimal.ZERO)
-                                .setCostPrice(outboundItemVO.getPriceOut())
-                                .setCostAmt(outboundItemVO.getOutQty().multiply(outboundItemVO.getPriceOut()).setScale(2, BigDecimal.ROUND_HALF_UP))
                                 .setOutType(Constant.OutType.SALE.getName())
                         ;
                         //出库状态
@@ -789,10 +780,10 @@ public class OutboundSaleOrderService extends BaseService<Outbound> {
                         OrderItemResponse orderItemResponse = orderItemMapper.selectById(outboundItemVO.getFromItemId());
                         OrderItem orderItem = new OrderItem();
                         orderItem.setItemId(outboundItemVO.getFromItemId());
-                        orderItem.setOutQty(outboundItemResponse.getOutQty().negate().add(outboundItemVO.getOutingQty()));
-                        orderItem.setOutAmt(outboundItemResponse.getOutAmt().negate().add(outboundItemVO.getOutingAmt()));
-                        orderItem.setOutingQty(outboundItemVO.getOutQty());
-                        orderItem.setOutingAmt(outboundItemVO.getOutAmt());
+                        orderItem.setOutQty((outboundItemResponse != null ? outboundItemResponse.getOutQty().negate() : BigDecimal.ZERO).add(outboundItemVO.getOutQty()));
+                        orderItem.setOutAmt((outboundItemResponse != null ? outboundItemResponse.getOutAmt().negate() : BigDecimal.ZERO).add(outboundItemVO.getOutAmt()));
+                        orderItem.setOutingQty((outboundItemResponse != null && outboundItemResponse.getOutingQty().compareTo(BigDecimal.ZERO) > 0) ? outboundItemVO.getOutQty().negate() : BigDecimal.ZERO);
+                        orderItem.setOutingQty((outboundItemResponse != null && outboundItemResponse.getOutingAmt().compareTo(BigDecimal.ZERO) > 0) ? outboundItemVO.getOutAmt().negate() : BigDecimal.ZERO);
                         //出库状态
                         String outStatus = this.setOutStatus(orderItemResponse.getOutingQty().add(orderItem.getOutingQty()),
                                 orderItemResponse.getOutQty().add(orderItem.getOutQty()), orderItemResponse.getItemQty());
@@ -938,17 +929,10 @@ public class OutboundSaleOrderService extends BaseService<Outbound> {
 
                     //region 新建明细
                     else {
-                        //region 反写订单总单 数据需要  把查出来的出库中数量用别的变量存起来
-                        outboundItemVO.setUpdateOrderOutingQty(outboundItemVO.getOutingQty());
-                        outboundItemVO.setUpdateOrderOutingAmt(outboundItemVO.getOutingAmt());
-                        //endregion
-
                         outboundItemVO
                                 .setOutId(outboundItemVO.getOutId())
                                 .setOutQty(BigDecimal.ZERO)
                                 .setOutAmt(BigDecimal.ZERO)
-                                .setCostPrice(outboundItemVO.getPriceOut())
-                                .setCostAmt(outboundItemVO.getOutingQty().multiply(outboundItemVO.getPriceOut()).setScale(2, BigDecimal.ROUND_HALF_UP))
                                 .setOutType(Constant.OutType.SALE.getName())
                         ;
                         //出库状态
@@ -1075,13 +1059,13 @@ public class OutboundSaleOrderService extends BaseService<Outbound> {
                         BigDecimal updateOrderOutingAmt = BigDecimal.ZERO;
                         //已出库
                         if (Constant.OutStatus.YICHUKU.getName().equals(outboundResponse.getOutStatus())) {
-                            updateOrderOutQty = orderOutItemVOListGroup.stream().map(OutboundItemVO::getUpdateOrderOutQty).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(6, BigDecimal.ROUND_HALF_UP);
-                            updateOrderOutAmt = orderOutItemVOListGroup.stream().map(OutboundItemVO::getUpdateOrderOutAmt).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, BigDecimal.ROUND_HALF_UP);
+                            updateOrderOutQty = orderOutItemVOListGroup.stream().filter(it->it.getUpdateOrderOutQty()!=null).map(OutboundItemVO::getUpdateOrderOutQty).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(6, BigDecimal.ROUND_HALF_UP);
+                            updateOrderOutAmt = orderOutItemVOListGroup.stream().filter(it->it.getUpdateOrderOutAmt()!=null).map(OutboundItemVO::getUpdateOrderOutAmt).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, BigDecimal.ROUND_HALF_UP);
                         }
                         //出库中
                         else {
-                            updateOrderOutingQty = orderOutItemVOListGroup.stream().map(OutboundItemVO::getUpdateOrderOutingQty).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(6, BigDecimal.ROUND_HALF_UP);
-                            updateOrderOutingAmt = orderOutItemVOListGroup.stream().map(OutboundItemVO::getUpdateOrderOutingAmt).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, BigDecimal.ROUND_HALF_UP);
+                            updateOrderOutingQty = orderOutItemVOListGroup.stream().filter(it->it.getUpdateOrderOutingQty()!=null).map(OutboundItemVO::getUpdateOrderOutingQty).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(6, BigDecimal.ROUND_HALF_UP);
+                            updateOrderOutingAmt = orderOutItemVOListGroup.stream().filter(it->it.getUpdateOrderOutingAmt()!=null).map(OutboundItemVO::getUpdateOrderOutingAmt).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, BigDecimal.ROUND_HALF_UP);
                         }
                         //endregion
 
@@ -1108,8 +1092,8 @@ public class OutboundSaleOrderService extends BaseService<Outbound> {
                         order.setOrderId(fromId);
                         //已出库
                         if (Constant.OutStatus.YICHUKU.getName().equals(outboundResponse.getOutStatus())) {
-                            order.setOutQty(updateOrderOutQty.negate().add(orderSumQty).subtract(orderDelOutQty));
-                            order.setOutAmt(updateOrderOutAmt.negate().add(orderSumAmt).subtract(orderDelOutAmt));
+                            order.setOutQty(orderSumQty.subtract(updateOrderOutQty).subtract(orderDelOutQty));
+                            order.setOutAmt(orderSumAmt.subtract(updateOrderOutAmt).subtract(orderDelOutAmt));
                             order.setOutingQty(orderDelOutQty);
                             order.setOutingAmt(orderDelOutAmt);
                             //出库状态
@@ -1119,8 +1103,8 @@ public class OutboundSaleOrderService extends BaseService<Outbound> {
                         }
                         //出库中
                         else if (Constant.OutStatus.CHUKUZHONG.getName().equals(outboundResponse.getOutStatus())) {
-                            order.setOutingQty(updateOrderOutingQty.negate().add(orderSumQty).subtract(orderDelOutQty));
-                            order.setOutingAmt(updateOrderOutingAmt.negate().add(orderSumQty).subtract(orderDelOutAmt));
+                            order.setOutingQty(orderSumQty.subtract(updateOrderOutingQty).subtract(orderDelOutQty));
+                            order.setOutingAmt(orderSumAmt.subtract(updateOrderOutingAmt).subtract(orderDelOutAmt));
                             //出库状态
                             String outStatus = this.setOutStatus(orderResponse.getOutingQty().add(order.getOutingQty()),
                                     orderResponse.getOutQty(), orderResponse.getSumQuantity());
@@ -1142,8 +1126,8 @@ public class OutboundSaleOrderService extends BaseService<Outbound> {
                 //region  提取新建分组后的明细
                 List<OutboundItemVO> orderOutItemVOListGroup = orderOutItemVOListMap.get(fromId);
                 //分组后的明细 出库数量和金额总和
-                BigDecimal orderSumQty = orderOutItemVOListGroup.stream().map(OutboundItemVO::getOutingQty).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(6, BigDecimal.ROUND_HALF_UP);
-                BigDecimal orderSumAmt = orderOutItemVOListGroup.stream().map(OutboundItemVO::getOutingAmt).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, BigDecimal.ROUND_HALF_UP);
+                BigDecimal orderSumQty = orderOutItemVOListGroup.stream().map(OutboundItemVO::getOutQty).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(6, BigDecimal.ROUND_HALF_UP);
+                BigDecimal orderSumAmt = orderOutItemVOListGroup.stream().map(OutboundItemVO::getOutAmt).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, BigDecimal.ROUND_HALF_UP);
                 //分组后的明细 原出库数量和金额总和
                 BigDecimal updateOrderOutQty = BigDecimal.ZERO;
                 BigDecimal updateOrderOutAmt = BigDecimal.ZERO;
@@ -1151,13 +1135,13 @@ public class OutboundSaleOrderService extends BaseService<Outbound> {
                 BigDecimal updateOrderOutingAmt = BigDecimal.ZERO;
                 //已出库
                 if (Constant.OutStatus.YICHUKU.getName().equals(outboundResponse.getOutStatus())) {
-                    updateOrderOutQty = orderOutItemVOListGroup.stream().map(OutboundItemVO::getUpdateOrderOutQty).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(6, BigDecimal.ROUND_HALF_UP);
-                    updateOrderOutAmt = orderOutItemVOListGroup.stream().map(OutboundItemVO::getUpdateOrderOutAmt).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, BigDecimal.ROUND_HALF_UP);
+                    updateOrderOutQty = orderOutItemVOListGroup.stream().filter(it->it.getUpdateOrderOutQty()!=null).map(OutboundItemVO::getUpdateOrderOutQty).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(6, BigDecimal.ROUND_HALF_UP);
+                    updateOrderOutAmt = orderOutItemVOListGroup.stream().filter(it->it.getUpdateOrderOutQty()!=null).map(OutboundItemVO::getUpdateOrderOutAmt).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, BigDecimal.ROUND_HALF_UP);
                 }
                 //出库中
                 else {
-                    updateOrderOutingQty = orderOutItemVOListGroup.stream().map(OutboundItemVO::getUpdateOrderOutingQty).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(6, BigDecimal.ROUND_HALF_UP);
-                    updateOrderOutingAmt = orderOutItemVOListGroup.stream().map(OutboundItemVO::getUpdateOrderOutingAmt).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, BigDecimal.ROUND_HALF_UP);
+                    updateOrderOutingQty = orderOutItemVOListGroup.stream().filter(it->it.getUpdateOrderOutingQty()!=null).map(OutboundItemVO::getUpdateOrderOutingQty).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(6, BigDecimal.ROUND_HALF_UP);
+                    updateOrderOutingAmt = orderOutItemVOListGroup.stream().filter(it->it.getUpdateOrderOutingAmt()!=null).map(OutboundItemVO::getUpdateOrderOutingAmt).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, BigDecimal.ROUND_HALF_UP);
                 }
                 //endregion
 
@@ -1168,17 +1152,17 @@ public class OutboundSaleOrderService extends BaseService<Outbound> {
                 order.setOrderId(fromId);
                 //已出库
                 if (Constant.OutStatus.YICHUKU.getName().equals(outboundResponse.getOutStatus())) {
-                    order.setOutQty(updateOrderOutQty.negate().add(orderSumQty));
-                    order.setOutAmt(updateOrderOutAmt.negate().add(orderSumAmt));
+                    order.setOutQty(orderSumQty.subtract(updateOrderOutQty));
+                    order.setOutAmt(orderSumAmt.subtract(updateOrderOutAmt));
                     //出库状态
-                    String outStatus = this.setOutStatus(orderResponse.getOutingQty().add(order.getOutingQty()),
+                    String outStatus = this.setOutStatus(orderResponse.getOutingQty(),
                             orderResponse.getOutQty().add(order.getOutQty()), orderResponse.getSumQuantity());
                     order.setOutStatus(outStatus);
                 }
                 //出库中
                 else if (Constant.OutStatus.CHUKUZHONG.getName().equals(outboundResponse.getOutStatus())) {
-                    order.setOutingQty(updateOrderOutingQty.negate().add(orderSumQty));
-                    order.setOutingAmt(updateOrderOutingAmt.negate().add(orderSumQty));
+                    order.setOutingQty(updateOrderOutingQty.negate());
+                    order.setOutingAmt(updateOrderOutingAmt.negate());
                     //出库状态
                     String outStatus = this.setOutStatus(orderResponse.getOutingQty().add(order.getOutingQty()),
                             orderResponse.getOutQty(), orderResponse.getSumQuantity());

+ 46 - 7
src/main/java/com/dk/mdm/service/ivt/outbound/OutboundSaleReturnService.java

@@ -14,6 +14,7 @@ import com.dk.common.service.BaseService;
 import com.dk.mdm.infrastructure.convert.ivt.OutboundConvert;
 import com.dk.mdm.infrastructure.convert.ivt.OutboundItemConvert;
 import com.dk.mdm.mapper.common.CommonMapper;
+import com.dk.mdm.mapper.ivt.InboundItemMapper;
 import com.dk.mdm.mapper.ivt.OutboundItemMapper;
 import com.dk.mdm.mapper.ivt.OutboundMapper;
 import com.dk.mdm.mapper.mac.AccountMapper;
@@ -25,8 +26,10 @@ import com.dk.mdm.model.pojo.ivt.Outbound;
 import com.dk.mdm.model.pojo.ivt.OutboundItem;
 import com.dk.mdm.model.pojo.sale.Order;
 import com.dk.mdm.model.pojo.sale.OrderItem;
+import com.dk.mdm.model.query.ivt.InboundItemQuery;
 import com.dk.mdm.model.query.ivt.OutboundItemQuery;
 import com.dk.mdm.model.query.ivt.OutboundQuery;
+import com.dk.mdm.model.response.ivt.InboundItemResponse;
 import com.dk.mdm.model.response.ivt.OutboundItemResponse;
 import com.dk.mdm.model.response.ivt.OutboundResponse;
 import com.dk.mdm.model.response.mac.AccountResponse;
@@ -105,6 +108,9 @@ public class OutboundSaleReturnService extends BaseService<Outbound> {
     @Autowired
     private MoneyAccountMapper moneyAccountMapper;
 
+    @Autowired
+    private InboundItemMapper inboundItemMapper;
+
     /**
      * @desc : 修改原总单数据(订单,出库单)
      * posNegFlag :正负标识  true:正数,false:负数
@@ -349,12 +355,52 @@ public class OutboundSaleReturnService extends BaseService<Outbound> {
     }
 
     /**
+     * @desc   : 查询入库价
+     * @date   : 2024/7/1 11:29
+     * @author : 寇珊珊
+     */
+    @Transactional(rollbackFor = {Exception.class})
+    public InboundItemResponse selectPriceInto(OutboundItemVO outboundItemVO) {
+        List<InboundItemResponse> inboundItemResponses = inboundItemMapper.selectPriceInto(new InboundItemQuery().setSkuId(outboundItemVO.getSkuId())
+                .setNonStdCode(outboundItemVO.getNonStdCode())
+                .setWhId(outboundItemVO.getWhId()));
+        if (inboundItemResponses != null && inboundItemResponses.size() > 0) {
+            return inboundItemResponses.get(0);
+        }
+        return null;
+    }
+
+    /**
      * @desc : 销售退货出库新建
      * @date : 2024/3/7 14:13
      * @author : 寇珊珊
      */
     @Transactional(rollbackFor = {Exception.class})
     public ResponseResultVO<?> saleReturnOutboundInsert(OutboundVO outboundVO) {
+        //校验明细
+        if (outboundVO.getItemList().size() == 0) {
+            throw new BaseBusinessException(ErrorCodeEnum.OUTBOUND_ITEM_NOT_EXIST.getCode(),
+                    ErrorCodeEnum.OUTBOUND_ITEM_NOT_EXIST.getMessage());
+        }
+
+        //region  查询当前入库明细中是否存在未空或者0的入库价,如果存在去库存流水差最近一条有价格的数据赋值到当前明细
+        Boolean priceIntoFlag = false;
+        for (OutboundItemVO outboundItemVO : outboundVO.getItemList()) {
+            if (outboundItemVO.getPriceOut() == null || outboundItemVO.getPriceOut().compareTo(BigDecimal.ZERO) == 0) {
+                priceIntoFlag = true;
+                //查询库存批次最近一条入库价
+                InboundItemResponse inboundItemResponse = this.selectPriceInto(outboundItemVO);
+                outboundItemVO.setPriceOut(inboundItemResponse != null ? inboundItemResponse.getPriceInto() : BigDecimal.ZERO);
+                outboundItemVO.setOutingAmt(inboundItemResponse != null ? inboundItemResponse.getPriceInto().multiply(outboundItemVO.getOutingQty()).setScale(2, BigDecimal.ROUND_HALF_UP) : BigDecimal.ZERO);
+                outboundItemVO.setCostPrice(inboundItemResponse != null ? inboundItemResponse.getCostPrice() : BigDecimal.ZERO);
+                outboundItemVO.setCostAmt(inboundItemResponse != null ? inboundItemResponse.getCostPrice().multiply(outboundItemVO.getOutingQty()).setScale(2, BigDecimal.ROUND_HALF_UP) : BigDecimal.ZERO);
+            }
+        }
+        if (priceIntoFlag) {
+            BigDecimal outingAmt = outboundVO.getItemList().stream().map(OutboundItemVO::getOutingAmt).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(6, BigDecimal.ROUND_HALF_UP);
+            outboundVO.setOutingAmt(outingAmt);
+        }
+        //endregion
 
         //region 如果没有客户id,要新建
         if (outboundVO.getCusId() == null) {
@@ -420,11 +466,6 @@ public class OutboundSaleReturnService extends BaseService<Outbound> {
         //endregion
 
         //region 明细
-        //校验明细
-        if (outboundVO.getItemList().size() == 0) {
-            throw new BaseBusinessException(ErrorCodeEnum.OUTBOUND_ITEM_NOT_EXIST.getCode(),
-                    ErrorCodeEnum.OUTBOUND_ITEM_NOT_EXIST.getMessage());
-        }
         for (OutboundItemVO outboundItemVO : outboundVO.getItemList()) {
 
             //region 将库存需要的参数赋值
@@ -449,8 +490,6 @@ public class OutboundSaleReturnService extends BaseService<Outbound> {
                         .setOutAmt(outboundItemVO.getOutingAmt())
                         .setOutingQty(BigDecimal.ZERO)
                         .setOutingAmt(BigDecimal.ZERO)
-                        .setCostPrice(outboundItemVO.getPriceOut())
-                        .setCostAmt(outboundItemVO.getOutQty().multiply(outboundItemVO.getPriceOut()).setScale(2, BigDecimal.ROUND_HALF_UP))
                 ;
 
                 //region  反写出库明细 反写订单明细

+ 16 - 2
src/main/java/com/dk/mdm/service/mst/SupplierService.java

@@ -153,9 +153,23 @@ public class SupplierService extends BaseService<Supplier> {
                 otherPayableService.insert(otherPayableVO);
             }
         }
-        return ResponseResultUtil.success();
+        return ResponseResultUtil.success(supplier);
+    }
+    /**
+     * @desc : 新建供应商
+     * @author : 王英杰
+     * @date : 2024/2/27 9:17
+     */
+    @Transactional(rollbackFor = {Exception.class})
+    public Supplier  saleinsert(SupplierVo supplierVo) {
+        // 转化实体
+        Supplier supplier = supplierConvert.convertToPo(supplierVo);
+        Map<String, Object> codeMap = commonService.getUniqueNoteCode(Constant.docNameConstant.SUPPLIER.getName(), true);
+        supplier.setSupId(codeMap.get("outId").toString());
+        supplier.setSupCode(codeMap.get("outNote").toString());  //插入供应商表的实体
+        super.insert(supplier);// 先插入自己的供应商表
+        return  supplier;
     }
-
     /**
      * @desc : 编辑方法
      * @author : 王英杰

+ 29 - 4
src/main/java/com/dk/mdm/service/sale/OrderService.java

@@ -14,6 +14,7 @@ import com.dk.mdm.infrastructure.convert.mac.RecPayItemConvert;
 import com.dk.mdm.infrastructure.convert.sale.OrderConvert;
 import com.dk.mdm.infrastructure.convert.sale.OrderItemConvert;
 import com.dk.mdm.infrastructure.convert.sale.OutBoundDtoConvert;
+import com.dk.mdm.infrastructure.util.AuthUtils;
 import com.dk.mdm.mapper.common.CommonMapper;
 import com.dk.mdm.mapper.ivt.OutboundItemMapper;
 import com.dk.mdm.mapper.ivt.OutboundMapper;
@@ -34,6 +35,7 @@ import com.dk.mdm.model.pojo.mac.RecPayItem;
 import com.dk.mdm.model.pojo.mst.Customer;
 import com.dk.mdm.model.pojo.mst.MoneyAccount;
 import com.dk.mdm.model.pojo.mst.MoneyAccountItem;
+import com.dk.mdm.model.pojo.mst.Supplier;
 import com.dk.mdm.model.pojo.sale.MultiOwner;
 import com.dk.mdm.model.pojo.sale.Order;
 import com.dk.common.service.BaseService;
@@ -55,6 +57,7 @@ import com.dk.mdm.model.response.sale.OrderItemResponse;
 import com.dk.mdm.model.response.sale.OrderResponse;
 import com.dk.mdm.model.vo.ivt.OutboundVO;
 import com.dk.mdm.model.vo.mac.RecPayItemVO;
+import com.dk.mdm.model.vo.mst.SupplierVo;
 import com.dk.mdm.model.vo.sale.OrderItemVO;
 import com.dk.mdm.model.vo.sale.OrderVO;
 import com.dk.mdm.service.common.CommonService;
@@ -63,6 +66,7 @@ import com.dk.mdm.service.mac.AccountService;
 import com.dk.mdm.service.mac.RecPayItemService;
 import com.dk.mdm.service.mac.ReceiptService;
 import com.dk.mdm.service.mst.MoneyAccountService;
+import com.dk.mdm.service.mst.SupplierService;
 import org.springframework.stereotype.Service;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
@@ -159,6 +163,11 @@ public class OrderService extends BaseService<Order> {
     @Autowired
     private OutboundMapper outboundMapper;
 
+    @Autowired
+    private SupplierService supplierService;
+
+    @Autowired
+    private AuthUtils authUtils;
 
     /**
      * @desc : 条件查询
@@ -309,6 +318,13 @@ public class OrderService extends BaseService<Order> {
         // 订单明细保存
         if (orderVO.getItemList() != null && orderVO.getItemList().size() > 0) {
             for (OrderItemVO orderItemVO : orderVO.getItemList()) {
+                //外协品供应上只有name 没有id 的时候 要新建供应商
+                if (orderItemVO.getSkuId() == null) { //说明外协品
+                    if (orderItemVO.getSupId() == null) { //说明在库里不存在这个供应商
+                        Supplier supplier = supplierService.saleinsert(new SupplierVo().setSupName(orderItemVO.getSupName()).setSupType("供应商类别-外协").setCpId(authUtils.getStaff().getCpId()));
+                        orderItemVO.setSupId(supplier.getSupId());
+                    }
+                }
                 OrderItem orderItem = orderItemConvert.convertToPo(orderItemVO);
                 orderItem.setOrderId(order.getOrderId()).setCpId(order.getCpId()).setOutStatus(Constant.OutStatus.DAICHUKU.getName());
                 if (orderItem.getPriceStd() == null) {
@@ -544,9 +560,11 @@ public class OrderService extends BaseService<Order> {
             orderItemForUpdate = orderItemMapper.selectByIdForUpdate(orderItemVO.getItemId());
             // 出库数量
             BigDecimal outintOrOutQty = orderItemForUpdate.getOutingQty().add(orderItemForUpdate.getOutQty());
-            // 商品数量不能小于(出库中数量+已出库数量)
-            if (orderItemVO.getItemQty().compareTo(outintOrOutQty) == -1) {
-                throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ITEMQTY_NO_LESS_OUTQTY.getMessage());
+            if (!"STD".equals(gradeCode)) {
+                // 商品数量不能小于(出库中数量+已出库数量)
+                if (orderItemVO.getItemQty().compareTo(outintOrOutQty) == -1) {
+                    throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ITEMQTY_NO_LESS_OUTQTY.getMessage());
+                }
             }
             // 如果出库数量不是0,则不能改仓库
             if (outintOrOutQty.compareTo(BigDecimal.ZERO) != 0) {
@@ -574,6 +592,13 @@ public class OrderService extends BaseService<Order> {
         // 新增的
         List<OrderItemVO> insertOrderItemVOList = orderVO.getItemList().stream().filter(it -> it.getItemId() == null).collect(Collectors.toList());
         for (OrderItemVO orderItemVO : insertOrderItemVOList) {
+            //外协品供应上只有name 没有id 的时候 要新建供应商
+            if (orderItemVO.getSkuId() == null) { //说明外协品
+                if (orderItemVO.getSupId() == null) { //说明在库里不存在这个供应商
+                    Supplier supplier = supplierService.saleinsert(new SupplierVo().setSupName(orderItemVO.getSupName()).setSupType("供应商类别-外协").setCpId(authUtils.getStaff().getCpId()));
+                    orderItemVO.setSupId(supplier.getSupId());
+                }
+            }
             OrderItem orderItem = orderItemConvert.convertToPo(orderItemVO);
             orderItem.setOrderId(order.getOrderId()).setCpId(order.getCpId()).setOutStatus(Constant.OutStatus.DAICHUKU.getName());
             orderItem.setItemId(UUID.randomUUID().toString());
@@ -799,7 +824,7 @@ public class OrderService extends BaseService<Order> {
                 if (orderVO.getOutboundProcessingFlag() != null && orderVO.getOutboundProcessingFlag()) {
                     //标准版 只有一个出库单  所以get0 就可以 且 编辑销售订单得时候 一定是有出库单的
                     List<OutboundResponse> outboundList = outboundMapper.selectByCond(new OutboundQuery().setFromId(orderVO.getOrderId()));
-                    if (outboundList.size() > 0) {
+                    if (outboundList.size() > 0) { //有订单有出库单后续才编辑 没有就不用编辑
                         OutboundResponse outboundResponsejson = outboundList.get(0);
                         for (OrderItemVO orderItemVO : combinedList) {
                             //拿到 订单明细对应的出库明细   订单明细id 和 出库单来源明细 是一 一 对应的 所以 get0 也是不会有问题的