将领料出库的业务逻辑从“物料出库”改为"物料转移"。

This commit is contained in:
JinLu.Yin 2022-09-13 22:32:02 +08:00
parent 66705d1948
commit 8bfb79a6de
3 changed files with 49 additions and 11 deletions

View File

@ -122,7 +122,9 @@ public class UserConstants
*/ */
public static final String TRANSACTION_TYPE_ITEM_RECPT = "ITEM_RECPT"; //原材料接收入库 public static final String TRANSACTION_TYPE_ITEM_RECPT = "ITEM_RECPT"; //原材料接收入库
public static final String TRANSACTION_TYPE_ITEM_RTV = "ITEM_RTV"; //原材料退回供应商 public static final String TRANSACTION_TYPE_ITEM_RTV = "ITEM_RTV"; //原材料退回供应商
public static final String TRANSACTION_TYPE_ITEM_ISSUE = "ITEM_ISSUE"; //生产领用 public static final String TRANSACTION_TYPE_ITEM_ISSUE_OUT = "ITEM_ISSUE_OUT"; //生产领用
public static final String TRANSACTION_TYPE_ITEM_ISSUE_IN = "ITEM_ISSUE_IN";
public static final String TRANSACTION_TYPE_ITEM_RS = "ITEM_RS"; //生产退库 public static final String TRANSACTION_TYPE_ITEM_RS = "ITEM_RS"; //生产退库
public static final String TRANSACTION_TYPE_WAREHOUSE_TRANS_OUT = "TRANS_OUT"; //移库,移出 public static final String TRANSACTION_TYPE_WAREHOUSE_TRANS_OUT = "TRANS_OUT"; //移库,移出
public static final String TRANSACTION_TYPE_WAREHOUSE_TRANS_IN = "TRANS_IN"; //移库,移入 public static final String TRANSACTION_TYPE_WAREHOUSE_TRANS_IN = "TRANS_IN"; //移库,移入

View File

@ -4,12 +4,13 @@ import cn.hutool.core.collection.CollUtil;
import com.ktg.common.constant.UserConstants; import com.ktg.common.constant.UserConstants;
import com.ktg.common.exception.BussinessException; import com.ktg.common.exception.BussinessException;
import com.ktg.common.utils.bean.BeanUtils; import com.ktg.common.utils.bean.BeanUtils;
import com.ktg.mes.wm.domain.WmStorageLocation;
import com.ktg.mes.wm.domain.WmTransaction; import com.ktg.mes.wm.domain.WmTransaction;
import com.ktg.mes.wm.domain.WmWarehouse;
import com.ktg.mes.wm.domain.tx.IssueTxBean; import com.ktg.mes.wm.domain.tx.IssueTxBean;
import com.ktg.mes.wm.domain.tx.ItemRecptTxBean; import com.ktg.mes.wm.domain.tx.ItemRecptTxBean;
import com.ktg.mes.wm.domain.tx.RtVendorTxBean; import com.ktg.mes.wm.domain.tx.RtVendorTxBean;
import com.ktg.mes.wm.service.IStorageCoreService; import com.ktg.mes.wm.service.*;
import com.ktg.mes.wm.service.IWmTransactionService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@ -23,6 +24,15 @@ public class StorageCoreServiceImpl implements IStorageCoreService {
@Autowired @Autowired
private IWmTransactionService wmTransactionService; private IWmTransactionService wmTransactionService;
@Autowired
private IWmWarehouseService wmWarehouseService;
@Autowired
private IWmStorageLocationService wmStorageLocationService;
@Autowired
private IWmStorageAreaService wmStorageAreaService;
/** /**
* 处理入库单行 * 处理入库单行
* @param lines * @param lines
@ -67,19 +77,43 @@ public class StorageCoreServiceImpl implements IStorageCoreService {
@Override @Override
public void processIssue(List<IssueTxBean> lines) { public void processIssue(List<IssueTxBean> lines) {
String transactionType = UserConstants.TRANSACTION_TYPE_ITEM_ISSUE;
if(CollUtil.isEmpty(lines)){ if(CollUtil.isEmpty(lines)){
throw new BussinessException("没有需要处理的领料单行"); throw new BussinessException("没有需要处理的领料单行");
} }
String transactionType_out = UserConstants.TRANSACTION_TYPE_ITEM_ISSUE_OUT;
String transactionType_in = UserConstants.TRANSACTION_TYPE_ITEM_ISSUE_IN;
for(int i=0;i<lines.size();i++){ for(int i=0;i<lines.size();i++){
IssueTxBean line = lines.get(i); IssueTxBean line = lines.get(i);
WmTransaction transaction = new WmTransaction(); //这里先构造一条原库存减少的事务
transaction.setTransactionType(transactionType); WmTransaction transaction_out = new WmTransaction();
BeanUtils.copyBeanProp(transaction,line); transaction_out.setTransactionType(transactionType_out);
transaction.setTransactionFlag(-1);//库存减少 BeanUtils.copyBeanProp(transaction_out,line);
transaction.setTransactionDate(new Date()); transaction_out.setTransactionFlag(-1);//库存减少
wmTransactionService.processTransaction(transaction); transaction_out.setTransactionDate(new Date());
wmTransactionService.processTransaction(transaction_out);
//再构造一条目的库存增加的事务
WmTransaction transaction_in = new WmTransaction();
transaction_in.setTransactionType(transactionType_in);
BeanUtils.copyBeanProp(transaction_in,line);
transaction_in.setTransactionFlag(1);//库存增加
//由于是新增的库存记录所以需要将查询出来的库存记录ID置为空
transaction_in.setMaterialStockId(null);
//这里使用系统默认生成的线边库初始化对应的入库仓库库区库位
WmWarehouse warehouse = wmWarehouseService.selectWmWarehouseByWarehouseCode(UserConstants.VIRTUAL_WH);
transaction_in.setWarehouseId(warehouse.getWarehouseId());
transaction_in.setWarehouseCode(warehouse.getWarehouseCode());
transaction_in.setWarehouseName(warehouse.getWarehouseName());
WmStorageLocation location = wmStorageLocationService.selectWmStorageLocationByLocationCode(UserConstants.VIRTUAL_WS);
transaction_in.setLocationId(location.getLocationId());
transaction_in.setLocationCode(location.getLocationCode());
transaction_in.setLocationName(location.getLocationName());
//设置入库相关联的出库事务ID
transaction_in.setRelatedTransactionId(transaction_out.getTransactionId());
wmTransactionService.processTransaction(transaction_in);
} }
} }
} }

View File

@ -63,6 +63,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="sourceDocCode" column="source_doc_code"></result> <result property="sourceDocCode" column="source_doc_code"></result>
<result property="sourceDocLineId" column="source_doc_line_id"></result> <result property="sourceDocLineId" column="source_doc_line_id"></result>
<result property="transactionQuantity" column="transaction_quantity"></result> <result property="transactionQuantity" column="transaction_quantity"></result>
<result property="workorderId" column="workorder_id"></result>
<result property="workorderCode" column="workorder_code"></result>
<result property="createBy" column="create_by" /> <result property="createBy" column="create_by" />
<result property="createTime" column="create_time" /> <result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" /> <result property="updateBy" column="update_by" />
@ -113,7 +115,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
SELECT irl.material_stock_id, irl.`item_id`,irl.`item_code`,irl.`item_name`,irl.`specification`,irl.`unit_of_measure`,irl.`batch_code`, SELECT irl.material_stock_id, irl.`item_id`,irl.`item_code`,irl.`item_name`,irl.`specification`,irl.`unit_of_measure`,irl.`batch_code`,
irl.`warehouse_id`,irl.`warehouse_code`,irl.`warehouse_name`,irl.`location_id`,irl.`location_code`,irl.`location_name`,irl.`area_id`,irl.`area_code`,irl.`area_name`, irl.`warehouse_id`,irl.`warehouse_code`,irl.`warehouse_name`,irl.`location_id`,irl.`location_code`,irl.`location_name`,irl.`area_id`,irl.`area_code`,irl.`area_name`,
'ISSUE' AS source_doc_type,ir.`issue_id` AS source_doc_id,ir.`issue_code` AS source_doc_code,irl.`line_id` AS source_doc_line_id, 'ISSUE' AS source_doc_type,ir.`issue_id` AS source_doc_id,ir.`issue_code` AS source_doc_code,irl.`line_id` AS source_doc_line_id,
irl.`quantity_issued` AS transaction_quantity, irl.`quantity_issued` AS transaction_quantity,ir.workorder_id,ir.workorder_code,
ir.`create_by`,ir.`create_time`,ir.`update_by`,ir.`update_time` ir.`create_by`,ir.`create_time`,ir.`update_by`,ir.`update_time`
FROM wm_issue_header ir FROM wm_issue_header ir
LEFT JOIN wm_issue_line irl LEFT JOIN wm_issue_line irl