|
|
@@ -7,9 +7,11 @@ import com.dk.common.response.ResponseResultUtil;
|
|
|
import com.dk.common.response.ResponseResultVO;
|
|
|
import com.dk.mdm.infrastructure.convert.ivt.InboundItemConvert;
|
|
|
import com.dk.mdm.mapper.ivt.*;
|
|
|
+import com.dk.mdm.mapper.sale.OrderItemMapper;
|
|
|
import com.dk.mdm.model.pojo.ivt.*;
|
|
|
import com.dk.common.service.BaseService;
|
|
|
import com.dk.common.mapper.BaseMapper;
|
|
|
+import com.dk.mdm.model.pojo.sale.OrderItem;
|
|
|
import com.dk.mdm.model.query.ivt.InboundItemQuery;
|
|
|
import com.dk.mdm.model.query.ivt.InventoryBatchQuery;
|
|
|
import com.dk.mdm.model.query.ivt.OutboundItemCostQuery;
|
|
|
@@ -59,6 +61,9 @@ public class InboundItemService extends BaseService<InboundItem> {
|
|
|
@Autowired
|
|
|
private InventoryMapper inventoryMapper;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private OrderItemMapper orderItemMapper;
|
|
|
+
|
|
|
/**
|
|
|
* @desc : 条件查询 (采购入库用)
|
|
|
* @author : 常皓宁
|
|
|
@@ -124,84 +129,98 @@ public class InboundItemService extends BaseService<InboundItem> {
|
|
|
.setCostPrice(inboundItem.getCostPrice())
|
|
|
.setCostAmt(inboundItem.getCostAmt());
|
|
|
inboundItemMapper.updateCost(inboundItem1);
|
|
|
+ //修改销售订单
|
|
|
+ if(inboundItem.getFromItemId() != null){
|
|
|
+ OrderItem orderItem = new OrderItem()
|
|
|
+ .setItemId(inboundItem.getFromItemId())
|
|
|
+ .setCostPrice(inboundItem.getCostPrice())
|
|
|
+ .setCostAmt(inboundItem.getCostAmt());
|
|
|
+ orderItemMapper.updateCost(orderItem);
|
|
|
+ }
|
|
|
+
|
|
|
//查询存货批次明细
|
|
|
InventoryBatchResponse inventoryBatchResponse =
|
|
|
inventoryBatchMapper.selectCostCondition(new InventoryBatchQuery().setFromItemId(inboundItem.getItemId()));
|
|
|
- //查询出库成本
|
|
|
- List<OutboundItemCostResponse> outboundItemCostResponses =
|
|
|
- outboundItemCostMapper.selectCostOutbound(new OutboundItemCostQuery().setBatchId(inventoryBatchResponse.getBatchId()));
|
|
|
- //当出库成本有数据且数量不为0(理论上是没有数据 数量就是0)
|
|
|
- BigDecimal outCostAmtTotal = BigDecimal.ZERO;//总出库成本总和
|
|
|
- if(outboundItemCostResponses.size() > 0){
|
|
|
- for(OutboundItemCostResponse outboundItemCostResponse : outboundItemCostResponses){
|
|
|
- //出库数量不是0
|
|
|
- if(outboundItemCostResponse.getOutQty().compareTo(BigDecimal.ZERO) != 0){
|
|
|
- //出库成本 单独计算后面需要合计
|
|
|
- BigDecimal outCostAmt = inboundItem.getCostPrice().multiply(outboundItemCostResponse.getOutQty());
|
|
|
- //先用出库单价*出库数量计算金额 如果后面有差额 就更最后一条数据
|
|
|
- OutboundItemCostQuery outboundItemCostQuery = new OutboundItemCostQuery()
|
|
|
- .setBatchId(outboundItemCostResponse.getBatchId())
|
|
|
- .setCostPrice(inboundItem.getCostPrice())
|
|
|
- .setCostAmt(outCostAmt);
|
|
|
- //修改出库成本
|
|
|
- outboundItemCostMapper.updateOutboundCost(outboundItemCostQuery);
|
|
|
- //修改出库明细表
|
|
|
- OutboundItemQuery outboundItemQuery = new OutboundItemQuery()
|
|
|
- .setItemId(outboundItemCostResponse.getOutItemId())
|
|
|
- .setCostPrice(inboundItem.getCostPrice())
|
|
|
- .setCostAmt(outCostAmt);
|
|
|
- outboundItemMapper.updateOutCost(outboundItemQuery);
|
|
|
|
|
|
- outCostAmtTotal = outCostAmtTotal.add(outCostAmt);
|
|
|
- //修改存货批次明细
|
|
|
- InventoryBatchQuery inventoryBatchQuery = new InventoryBatchQuery()
|
|
|
- .setBatchId(inventoryBatchResponse.getBatchId())
|
|
|
- .setCostPrice(inboundItem.getCostPrice())
|
|
|
- .setCostAmt(inboundItem.getCostPrice().multiply(inventoryBatchResponse.getInvQty()));
|
|
|
- inventoryBatchMapper.updateInventoryBatchCost(inventoryBatchQuery);
|
|
|
- //修改总单
|
|
|
- this.updateInventory(new InventoryBatchQuery().setInvId(inventoryBatchResponse.getInvId()));
|
|
|
+ //外协没有批次
|
|
|
+ if(inventoryBatchResponse != null && inventoryBatchResponse.getBatchId() != null){
|
|
|
+ //查询出库成本
|
|
|
+ List<OutboundItemCostResponse> outboundItemCostResponses =
|
|
|
+ outboundItemCostMapper.selectCostOutbound(new OutboundItemCostQuery().setBatchId(inventoryBatchResponse.getBatchId()));
|
|
|
+ //当出库成本有数据且数量不为0(理论上是没有数据 数量就是0)
|
|
|
+ BigDecimal outCostAmtTotal = BigDecimal.ZERO;//总出库成本总和
|
|
|
+ if(outboundItemCostResponses.size() > 0){
|
|
|
+ for(OutboundItemCostResponse outboundItemCostResponse : outboundItemCostResponses){
|
|
|
+ //出库数量不是0
|
|
|
+ if(outboundItemCostResponse.getOutQty().compareTo(BigDecimal.ZERO) != 0){
|
|
|
+ //出库成本 单独计算后面需要合计
|
|
|
+ BigDecimal outCostAmt = inboundItem.getCostPrice().multiply(outboundItemCostResponse.getOutQty());
|
|
|
+ //先用出库单价*出库数量计算金额 如果后面有差额 就更最后一条数据
|
|
|
+ OutboundItemCostQuery outboundItemCostQuery = new OutboundItemCostQuery()
|
|
|
+ .setBatchId(outboundItemCostResponse.getBatchId())
|
|
|
+ .setCostPrice(inboundItem.getCostPrice())
|
|
|
+ .setCostAmt(outCostAmt);
|
|
|
+ //修改出库成本
|
|
|
+ outboundItemCostMapper.updateOutboundCost(outboundItemCostQuery);
|
|
|
+ //修改出库明细表
|
|
|
+ OutboundItemQuery outboundItemQuery = new OutboundItemQuery()
|
|
|
+ .setItemId(outboundItemCostResponse.getOutItemId())
|
|
|
+ .setCostPrice(inboundItem.getCostPrice())
|
|
|
+ .setCostAmt(outCostAmt);
|
|
|
+ outboundItemMapper.updateOutCost(outboundItemQuery);
|
|
|
+
|
|
|
+ outCostAmtTotal = outCostAmtTotal.add(outCostAmt);
|
|
|
+ //修改存货批次明细
|
|
|
+ InventoryBatchQuery inventoryBatchQuery = new InventoryBatchQuery()
|
|
|
+ .setBatchId(inventoryBatchResponse.getBatchId())
|
|
|
+ .setCostPrice(inboundItem.getCostPrice())
|
|
|
+ .setCostAmt(inboundItem.getCostPrice().multiply(inventoryBatchResponse.getInvQty()));
|
|
|
+ inventoryBatchMapper.updateInventoryBatchCost(inventoryBatchQuery);
|
|
|
+ //修改总单
|
|
|
+ this.updateInventory(new InventoryBatchQuery().setInvId(inventoryBatchResponse.getInvId()));
|
|
|
+ }
|
|
|
+ //出库数量是0
|
|
|
+ else if(outboundItemCostResponse.getOutQty().compareTo(BigDecimal.ZERO) == 0){
|
|
|
+ InventoryBatchQuery inventoryBatchQuery = new InventoryBatchQuery()
|
|
|
+ .setBatchId(inventoryBatchResponse.getBatchId())
|
|
|
+ .setCostPrice(inboundItem.getCostPrice())
|
|
|
+ .setCostAmt(inboundItem.getCostAmt());
|
|
|
+ inventoryBatchMapper.updateInventoryBatchCost(inventoryBatchQuery);
|
|
|
+ //修改总单
|
|
|
+ this.updateInventory(new InventoryBatchQuery().setInvId(inventoryBatchResponse.getInvId()));
|
|
|
+ }
|
|
|
}
|
|
|
- //出库数量是0
|
|
|
- else if(outboundItemCostResponse.getOutQty().compareTo(BigDecimal.ZERO) == 0){
|
|
|
- InventoryBatchQuery inventoryBatchQuery = new InventoryBatchQuery()
|
|
|
- .setBatchId(inventoryBatchResponse.getBatchId())
|
|
|
+ //出库成本 金额之和 加上 存货批次明细成本金额(存货资产) = 核对金额
|
|
|
+ //如果出库成本核对有差额 就更最后一条数据
|
|
|
+ BigDecimal batchCostAmt = inboundItem.getCostPrice().multiply(inventoryBatchResponse.getInvQty());//存货资产
|
|
|
+ //修改的成本金额总和(存货资产 + 出库成本 金额)
|
|
|
+ BigDecimal costAmtTotal = batchCostAmt.add(outCostAmtTotal);
|
|
|
+ if(costAmtTotal.compareTo(inboundItem.getCostAmt())!= 0){
|
|
|
+ //修改出库成本
|
|
|
+ OutboundItemCostQuery updateLastCost = new OutboundItemCostQuery()
|
|
|
+ .setBatchId(outboundItemCostResponses.get(outboundItemCostResponses.size() - 1).getBatchId())
|
|
|
+ .setCostAmt(inboundItem.getCostAmt().subtract(costAmtTotal));
|
|
|
+ outboundItemCostMapper.updateLastCost(updateLastCost);
|
|
|
+ //修改出库明细
|
|
|
+ OutboundItemQuery outboundItemQuery = new OutboundItemQuery()
|
|
|
+ .setItemId(outboundItemCostResponses.get(outboundItemCostResponses.size() - 1).getOutItemId())
|
|
|
.setCostPrice(inboundItem.getCostPrice())
|
|
|
- .setCostAmt(inboundItem.getCostAmt());
|
|
|
- inventoryBatchMapper.updateInventoryBatchCost(inventoryBatchQuery);
|
|
|
- //修改总单
|
|
|
- this.updateInventory(new InventoryBatchQuery().setInvId(inventoryBatchResponse.getInvId()));
|
|
|
+ .setCostAmt(inboundItem.getCostAmt().subtract(costAmtTotal));
|
|
|
+ outboundItemMapper.updateLastCost(outboundItemQuery);
|
|
|
}
|
|
|
}
|
|
|
- //出库成本 金额之和 加上 存货批次明细成本金额(存货资产) = 核对金额
|
|
|
- //如果出库成本核对有差额 就更最后一条数据
|
|
|
- BigDecimal batchCostAmt = inboundItem.getCostPrice().multiply(inventoryBatchResponse.getInvQty());//存货资产
|
|
|
- //修改的成本金额总和(存货资产 + 出库成本 金额)
|
|
|
- BigDecimal costAmtTotal = batchCostAmt.add(outCostAmtTotal);
|
|
|
- if(costAmtTotal.compareTo(inboundItem.getCostAmt())!= 0){
|
|
|
- //修改出库成本
|
|
|
- OutboundItemCostQuery updateLastCost = new OutboundItemCostQuery()
|
|
|
- .setBatchId(outboundItemCostResponses.get(outboundItemCostResponses.size() - 1).getBatchId())
|
|
|
- .setCostAmt(inboundItem.getCostAmt().subtract(costAmtTotal));
|
|
|
- outboundItemCostMapper.updateLastCost(updateLastCost);
|
|
|
- //修改出库明细
|
|
|
- OutboundItemQuery outboundItemQuery = new OutboundItemQuery()
|
|
|
- .setItemId(outboundItemCostResponses.get(outboundItemCostResponses.size() - 1).getOutItemId())
|
|
|
+ //当出库成本没有数据 只修改存货批次明细
|
|
|
+ else{
|
|
|
+ InventoryBatchQuery inventoryBatchQuery = new InventoryBatchQuery()
|
|
|
+ .setBatchId(inventoryBatchResponse.getBatchId())
|
|
|
.setCostPrice(inboundItem.getCostPrice())
|
|
|
- .setCostAmt(inboundItem.getCostAmt().subtract(costAmtTotal));
|
|
|
- outboundItemMapper.updateLastCost(outboundItemQuery);
|
|
|
+ .setCostAmt(inboundItem.getCostAmt());
|
|
|
+ inventoryBatchMapper.updateInventoryBatchCost(inventoryBatchQuery);
|
|
|
+ //修改总单
|
|
|
+ this.updateInventory(new InventoryBatchQuery().setInvId(inventoryBatchResponse.getInvId()));
|
|
|
}
|
|
|
}
|
|
|
- //当出库成本没有数据 只修改存货批次明细
|
|
|
- else{
|
|
|
- InventoryBatchQuery inventoryBatchQuery = new InventoryBatchQuery()
|
|
|
- .setBatchId(inventoryBatchResponse.getBatchId())
|
|
|
- .setCostPrice(inboundItem.getCostPrice())
|
|
|
- .setCostAmt(inboundItem.getCostAmt());
|
|
|
- inventoryBatchMapper.updateInventoryBatchCost(inventoryBatchQuery);
|
|
|
- //修改总单
|
|
|
- this.updateInventory(new InventoryBatchQuery().setInvId(inventoryBatchResponse.getInvId()));
|
|
|
- }
|
|
|
+
|
|
|
}
|
|
|
return ResponseResultUtil.success();
|
|
|
}
|