|
|
@@ -26,6 +26,7 @@ import com.dk.mdm.model.vo.ivt.*;
|
|
|
import com.dk.mdm.model.vo.sale.OrderItemVO;
|
|
|
import com.dk.mdm.service.common.CommonService;
|
|
|
import com.dk.mdm.service.ivt.inbound.InboundCheckService;
|
|
|
+import com.dk.mdm.service.ivt.outbound.OutboundCheckService;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
@@ -34,6 +35,7 @@ import org.springframework.transaction.interceptor.TransactionAspectSupport;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.time.LocalDate;
|
|
|
import java.time.LocalDateTime;
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
@@ -73,6 +75,8 @@ public class CheckService extends BaseService<Check> {
|
|
|
@Autowired
|
|
|
private InboundCheckService inboundCheckService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private OutboundCheckService outboundCheckService;
|
|
|
|
|
|
|
|
|
/**
|
|
|
@@ -106,11 +110,6 @@ public class CheckService extends BaseService<Check> {
|
|
|
// 转化实体
|
|
|
Check check = checkConvert.convertToPo(checkVO);
|
|
|
try {
|
|
|
- // 定义入库Map
|
|
|
- Map<String, Object> inboundCheckMap= new HashMap<>();
|
|
|
- // 定义出库Map
|
|
|
- Map<String, Object> outboundCheckMap= new HashMap<>();
|
|
|
-
|
|
|
Map<String, Object> codeMap = commonService.getUniqueNoteCode(Constant.docNameConstant.Check.getName(), true);
|
|
|
// 获取冻结状态 获取冻结日期(当前日期) 插入冻结表的实体
|
|
|
check.setMakeTime(LocalDateTime.now()).setStaffId(checkVO.getStaffId()).setCheckId(codeMap.get("outId").toString())
|
|
|
@@ -128,42 +127,60 @@ public class CheckService extends BaseService<Check> {
|
|
|
.setOInvQty(checkItemVO.getInvQty());
|
|
|
// 插入盘点单明细数据
|
|
|
checkItemMapper.insert(checkItem);
|
|
|
+ checkItemVO.setFromitemId(checkItem.getItemId()).setIntoingQty(checkItem.getBalanceQty()).setOutingQty(checkItem.getBalanceQty().abs())
|
|
|
+ .setFromId(checkItem.getCheckId()).setPriceOut(BigDecimal.ZERO);
|
|
|
}
|
|
|
}
|
|
|
// 判断盘点点状态,如果是完成,需要生成出入库数据
|
|
|
if(checkVO.getCheckStatus().equals(Constant.CheckkStatus.CHECK_STATUS_DONE.getName())){
|
|
|
+ // 定义入库Map
|
|
|
+ Map<String, Object> inboundCheckMap= new HashMap<>();
|
|
|
+ // 定义出库Map
|
|
|
+ Map<String, Object> outboundCheckMap= new HashMap<>();
|
|
|
// 获取入库明细实体
|
|
|
List<CheckItemVO> inCheckItemVOList = checkVO.getItemList().stream().filter(it -> it.getBalanceQty().compareTo(BigDecimal.ZERO) > 0).collect(Collectors.toList());
|
|
|
- // 计算总入库量
|
|
|
- BigDecimal intoQtySum = inCheckItemVOList.stream().map(CheckItemVO::getBalanceQty).reduce(BigDecimal.ZERO, BigDecimal::add)
|
|
|
- .setScale(6, BigDecimal.ROUND_HALF_UP);
|
|
|
- // 计算总入库金额
|
|
|
- BigDecimal intoingAmtSum = inCheckItemVOList.stream().map(CheckItemVO::getIntoingAmt).reduce(BigDecimal.ZERO, BigDecimal::add)
|
|
|
- .setScale(6, BigDecimal.ROUND_HALF_UP);
|
|
|
- // 获取入库总表实体
|
|
|
- InboundVO inboundVO = new InboundVO();
|
|
|
- inboundVO.setOrgId(checkVO.getOrgId()).setStaffId(checkVO.getStaffId()).setMakeStaff(checkVO.getMakeStaff())
|
|
|
- .setIntoingQty(intoQtySum).setFromId(checkVO.getCheckId()).setFromNo(checkVO.getCheckNo())
|
|
|
- .setMakeTime(LocalDateTime.now()).setIntoDate(LocalDate.now()).setWhId(checkVO.getWhId())
|
|
|
- .setFlgAutoHandle(true).setIntoingAmt(intoingAmtSum);
|
|
|
- // 赋值入库接口参数
|
|
|
- inboundCheckMap.put("total",inboundVO);
|
|
|
- inboundCheckMap.put("detail",inCheckItemVOList);
|
|
|
- // 调用入库接口
|
|
|
- inboundCheckService.checkInboundInsert(inboundCheckMap);
|
|
|
+
|
|
|
+ // 盘点差额大于零,则为盘盈数据需生成盘盈入库
|
|
|
+ if(inCheckItemVOList!=null && inCheckItemVOList.size()>0){
|
|
|
+ // 计算总入库量
|
|
|
+ BigDecimal intoQtySum = inCheckItemVOList.stream().map(CheckItemVO::getBalanceQty).reduce(BigDecimal.ZERO, BigDecimal::add)
|
|
|
+ .setScale(6, BigDecimal.ROUND_HALF_UP);
|
|
|
+ // 计算总入库金额
|
|
|
+ BigDecimal intoingAmtSum = inCheckItemVOList.stream().map(CheckItemVO::getIntoingAmt).reduce(BigDecimal.ZERO, BigDecimal::add)
|
|
|
+ .setScale(6, BigDecimal.ROUND_HALF_UP);
|
|
|
+ // 获取入库总表实体
|
|
|
+ InboundVO inboundVO = new InboundVO();
|
|
|
+
|
|
|
+ inboundVO.setOrgId(checkVO.getOrgId()).setStaffId(checkVO.getStaffId()==null?checkVO.getMakeStaff():checkVO.getStaffId())
|
|
|
+ .setMakeStaff(checkVO.getMakeStaff()).setIntoingQty(intoQtySum).setFromId(check.getCheckId()).setFromNo(check.getCheckNo())
|
|
|
+ .setMakeTime(LocalDateTime.now()).setIntoDate(LocalDate.now()).setWhId(checkVO.getWhId())
|
|
|
+ .setFlgAutoHandle(true).setIntoingAmt(intoingAmtSum);
|
|
|
+ // 赋值入库接口参数 总表和明细
|
|
|
+ inboundCheckMap.put("total",inboundVO);
|
|
|
+
|
|
|
+ inboundCheckMap.put("detail",inCheckItemVOList);
|
|
|
+ // 调用入库接口
|
|
|
+ inboundCheckService.checkInboundInsert(inboundCheckMap);
|
|
|
+ }
|
|
|
+
|
|
|
// 获取出库明细实体
|
|
|
List<CheckItemVO> outCheckItemVOList = checkVO.getItemList().stream().filter(it -> it.getBalanceQty().compareTo(BigDecimal.ZERO) < 0).collect(Collectors.toList());
|
|
|
- // 计算总出库量
|
|
|
- BigDecimal outtoQtySum = outCheckItemVOList.stream().map(CheckItemVO::getBalanceQty).reduce(BigDecimal.ZERO, BigDecimal::add)
|
|
|
- .setScale(6, BigDecimal.ROUND_HALF_UP);
|
|
|
- // 获取出库总表实体
|
|
|
- OutboundVO outboundVO = new OutboundVO();
|
|
|
- outboundVO.setOrgId(checkVO.getOrgId()).setStaffId(checkVO.getStaffId()).setMakeStaff(checkVO.getMakeStaff())
|
|
|
- .setOutingQty(outtoQtySum.abs()).setFromId(checkVO.getCheckId()).setFromNo(checkVO.getCheckNo())
|
|
|
- .setMakeTime(LocalDateTime.now()).setOutDate(LocalDate.now()).setOutingAmt(BigDecimal.ZERO);
|
|
|
- // 赋值入库接口参数
|
|
|
- outboundCheckMap.put("total",inboundVO);
|
|
|
- outboundCheckMap.put("detail",inCheckItemVOList);
|
|
|
+ // 盘点差额小于零,则为盘亏数据需生成盘亏出库
|
|
|
+ if(outCheckItemVOList!=null && outCheckItemVOList.size()>0){
|
|
|
+ // 计算总出库量
|
|
|
+ BigDecimal outtoQtySum = outCheckItemVOList.stream().map(CheckItemVO::getBalanceQty).reduce(BigDecimal.ZERO, BigDecimal::add)
|
|
|
+ .setScale(6, BigDecimal.ROUND_HALF_UP);
|
|
|
+ // 获取出库总表实体
|
|
|
+ OutboundVO outboundVO = new OutboundVO();
|
|
|
+ outboundVO.setOrgId(checkVO.getOrgId()).setStaffId(checkVO.getStaffId()==null?checkVO.getMakeStaff():checkVO.getStaffId())
|
|
|
+ .setMakeStaff(checkVO.getMakeStaff()).setOutingQty(outtoQtySum.abs()).setFromId(checkVO.getCheckId()).setFromNo(checkVO.getCheckNo())
|
|
|
+ .setMakeTime(LocalDateTime.now()).setOutDate(LocalDate.now()).setOutingAmt(BigDecimal.ZERO);
|
|
|
+ // 赋值出库接口参数 总表和明细
|
|
|
+ outboundCheckMap.put("total",outboundVO);
|
|
|
+ outboundCheckMap.put("detail",outCheckItemVOList);
|
|
|
+ // 调用盘点出库接口
|
|
|
+ outboundCheckService.otherOutboundInsert(outboundCheckMap);
|
|
|
+ }
|
|
|
}
|
|
|
return ResponseResultUtil.success();
|
|
|
} catch (Exception e) {
|
|
|
@@ -222,6 +239,9 @@ public class CheckService extends BaseService<Check> {
|
|
|
.setOInvQty(checkItemVO.getInvQty());
|
|
|
// 插入盘点单明细数据
|
|
|
checkItemMapper.insert(checkItem);
|
|
|
+ checkItemVO.setFromitemId(checkItem.getItemId()).setIntoingQty(checkItem.getBalanceQty())
|
|
|
+ .setOutingQty(checkItem.getBalanceQty().abs()).setFromId(checkItem.getCheckId())
|
|
|
+ .setPriceOut(BigDecimal.ZERO);
|
|
|
}
|
|
|
// 编辑
|
|
|
List<CheckItemVO> editCheckItemVOList = checkVO.getItemList().stream().filter(it -> it.getItemId() != null).collect(Collectors.toList());
|
|
|
@@ -239,6 +259,54 @@ public class CheckService extends BaseService<Check> {
|
|
|
}
|
|
|
// 赋值盘点状态、ID和备注
|
|
|
check.setCheckId(checkVO.getCheckId()).setCheckStatus(checkVO.getCheckStatus()).setRemarks(checkVO.getRemarks());
|
|
|
+ // 判断盘点点状态,如果是完成,需要生成出入库数据
|
|
|
+ if(checkVO.getCheckStatus().equals(Constant.CheckkStatus.CHECK_STATUS_DONE.getName())){
|
|
|
+ // 定义入库Map
|
|
|
+ Map<String, Object> inboundCheckMap= new HashMap<>();
|
|
|
+ // 定义出库Map
|
|
|
+ Map<String, Object> outboundCheckMap= new HashMap<>();
|
|
|
+ // 获取入库明细实体
|
|
|
+ List<CheckItemVO> inCheckItemVOList = checkVO.getItemList().stream().filter(it -> it.getBalanceQty().compareTo(BigDecimal.ZERO) > 0).collect(Collectors.toList());
|
|
|
+ // 盘点差额大于零,则为盘盈数据需生成盘盈入库
|
|
|
+ if(inCheckItemVOList!=null && inCheckItemVOList.size()>0){
|
|
|
+ // 计算总入库量
|
|
|
+ BigDecimal intoQtySum = inCheckItemVOList.stream().map(CheckItemVO::getBalanceQty).reduce(BigDecimal.ZERO, BigDecimal::add)
|
|
|
+ .setScale(6, BigDecimal.ROUND_HALF_UP);
|
|
|
+ // 计算总入库金额
|
|
|
+ BigDecimal intoingAmtSum = inCheckItemVOList.stream().map(CheckItemVO::getIntoingAmt).reduce(BigDecimal.ZERO, BigDecimal::add)
|
|
|
+ .setScale(6, BigDecimal.ROUND_HALF_UP);
|
|
|
+ // 获取入库总表实体
|
|
|
+ InboundVO inboundVO = new InboundVO();
|
|
|
+ inboundVO.setOrgId(checkVO.getOrgId()).setStaffId(checkVO.getStaffId()==null?checkVO.getMakeStaff():checkVO.getStaffId())
|
|
|
+ .setMakeStaff(checkVO.getMakeStaff()).setIntoingQty(intoQtySum).setFromId(checkVO.getCheckId())
|
|
|
+ .setFromNo(checkVO.getCheckNo()).setMakeTime(LocalDateTime.now()).setIntoDate(LocalDate.now()).setWhId(checkVO.getWhId())
|
|
|
+ .setFlgAutoHandle(true).setIntoingAmt(intoingAmtSum);
|
|
|
+ // 赋值入库接口参数 总表和明细
|
|
|
+ inboundCheckMap.put("total",inboundVO);
|
|
|
+ inboundCheckMap.put("detail",inCheckItemVOList);
|
|
|
+ // 调用入库接口
|
|
|
+ inboundCheckService.checkInboundInsert(inboundCheckMap);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取出库明细实体
|
|
|
+ List<CheckItemVO> outCheckItemVOList = checkVO.getItemList().stream().filter(it -> it.getBalanceQty().compareTo(BigDecimal.ZERO) < 0).collect(Collectors.toList());
|
|
|
+ // 盘点差额小于零,则为盘亏数据需生成盘亏出库
|
|
|
+ if(inCheckItemVOList!=null && inCheckItemVOList.size()>0){
|
|
|
+ // 计算总出库量
|
|
|
+ BigDecimal outtoQtySum = outCheckItemVOList.stream().map(CheckItemVO::getBalanceQty).reduce(BigDecimal.ZERO, BigDecimal::add)
|
|
|
+ .setScale(6, BigDecimal.ROUND_HALF_UP);
|
|
|
+ // 获取出库总表实体
|
|
|
+ OutboundVO outboundVO = new OutboundVO();
|
|
|
+ outboundVO.setOrgId(checkVO.getOrgId()).setStaffId(checkVO.getStaffId()==null?checkVO.getMakeStaff():checkVO.getStaffId())
|
|
|
+ .setMakeStaff(checkVO.getMakeStaff()).setOutingQty(outtoQtySum.abs()).setFromId(checkVO.getCheckId())
|
|
|
+ .setFromNo(checkVO.getCheckNo()).setMakeTime(LocalDateTime.now()).setOutDate(LocalDate.now()).setOutingAmt(BigDecimal.ZERO);
|
|
|
+ // 赋值出库接口参数 总表和明细
|
|
|
+ outboundCheckMap.put("total",outboundVO);
|
|
|
+ outboundCheckMap.put("detail",inCheckItemVOList);
|
|
|
+ // 调用盘点出库接口
|
|
|
+ outboundCheckService.otherOutboundInsert(outboundCheckMap);
|
|
|
+ }
|
|
|
+ }
|
|
|
// 更新盘点总单
|
|
|
return ResponseResultUtil.success(super.updateByUuid(check));
|
|
|
}
|