songyang 2 лет назад
Родитель
Сommit
673a732e11

+ 1 - 0
src/main/java/com/dk/mdm/mapper/common/CommonMapper.xml

@@ -905,6 +905,7 @@
                tpi.wh_id              as "whId",
                tmw.wh_code            as "whCode",
                tmw.wh_name            as "whName",
+               dkic_b.f_get_last_ivt_price(tpi.inv_id,null,null,null) as "priceInto",
                tpi.remarks
         from dkic_b.t_psi_inventory as tpi
                  inner join dkic_b.t_mst_warehouse as tmw on tmw.wh_id = tpi.wh_id

+ 2 - 1
src/main/java/com/dk/mdm/mapper/ivt/CheckItemMapper.xml

@@ -18,7 +18,8 @@
         ,dd.data_value AS "lossReasonName",staff.staff_name AS "dutyStaff"
         ,item.sku_id,inv.wh_id,inv.non_std_code,item.item_id AS "fromItemId"
         ,item.check_id AS "fromId",item.item_index,item.balance_qty AS "intoingQty"
-        ,item.balance_qty AS "outingQty",item.price_into,item.intoing_amt
+        ,abs(item.balance_qty) AS "outingQty",item.price_into,item.intoing_amt
+        ,0 AS "priceOut"
     </sql>
 
     <!-- 通用查询映射结果 -->

+ 3 - 3
src/main/java/com/dk/mdm/model/vo/ivt/CheckItemVO.java

@@ -287,10 +287,10 @@ public class CheckItemVO extends PageInfo<CheckItemVO> implements Serializable {
 
 
     /**
-     * 出库中金额
+     * 出库单价
      */
-    @ApiModelProperty(value = "出库中金额")
-    private BigDecimal outingAmt;
+    @ApiModelProperty(value = "出库单价")
+    private BigDecimal priceOut;
 
 
 

+ 101 - 33
src/main/java/com/dk/mdm/service/ivt/CheckService.java

@@ -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));
 	}