入库核心及入库单
This commit is contained in:
parent
bc42b91358
commit
675687372b
@ -3,11 +3,11 @@ package com.ktg.mes.wm.controller;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import com.ktg.common.constant.UserConstants;
|
import com.ktg.common.constant.UserConstants;
|
||||||
import com.ktg.common.utils.StringUtils;
|
import com.ktg.common.utils.StringUtils;
|
||||||
import com.ktg.mes.wm.domain.WmStorageArea;
|
import com.ktg.mes.wm.domain.*;
|
||||||
import com.ktg.mes.wm.domain.WmStorageLocation;
|
import com.ktg.mes.wm.domain.tx.ItemRecptTxBean;
|
||||||
import com.ktg.mes.wm.domain.WmWarehouse;
|
|
||||||
import com.ktg.mes.wm.service.*;
|
import com.ktg.mes.wm.service.*;
|
||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@ -24,7 +24,6 @@ import com.ktg.common.annotation.Log;
|
|||||||
import com.ktg.common.core.controller.BaseController;
|
import com.ktg.common.core.controller.BaseController;
|
||||||
import com.ktg.common.core.domain.AjaxResult;
|
import com.ktg.common.core.domain.AjaxResult;
|
||||||
import com.ktg.common.enums.BusinessType;
|
import com.ktg.common.enums.BusinessType;
|
||||||
import com.ktg.mes.wm.domain.WmItemRecpt;
|
|
||||||
import com.ktg.common.utils.poi.ExcelUtil;
|
import com.ktg.common.utils.poi.ExcelUtil;
|
||||||
import com.ktg.common.core.page.TableDataInfo;
|
import com.ktg.common.core.page.TableDataInfo;
|
||||||
|
|
||||||
@ -53,6 +52,9 @@ public class WmItemRecptController extends BaseController
|
|||||||
@Autowired
|
@Autowired
|
||||||
private IWmStorageAreaService wmStorageAreaService;
|
private IWmStorageAreaService wmStorageAreaService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private IStorageCoreService storageCoreService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询物料入库单列表
|
* 查询物料入库单列表
|
||||||
*/
|
*/
|
||||||
@ -119,6 +121,42 @@ public class WmItemRecptController extends BaseController
|
|||||||
return toAjax(wmItemRecptService.insertWmItemRecpt(wmItemRecpt));
|
return toAjax(wmItemRecptService.insertWmItemRecpt(wmItemRecpt));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 确认入库单
|
||||||
|
*/
|
||||||
|
@PreAuthorize("@ss.hasPermi('mes:wm:itemrecpt:edit')")
|
||||||
|
@Log(title = "物料入库单", businessType = BusinessType.UPDATE)
|
||||||
|
@PutMapping("/confirm")
|
||||||
|
public AjaxResult confirm(@RequestBody WmItemRecpt wmItemRecpt){
|
||||||
|
//检查有没有入库单行
|
||||||
|
WmItemRecptLine param = new WmItemRecptLine();
|
||||||
|
param.setRecptId(wmItemRecpt.getRecptId());
|
||||||
|
List<WmItemRecptLine> lines = wmItemRecptLineService.selectWmItemRecptLineList(param);
|
||||||
|
if(CollUtil.isEmpty(lines)){
|
||||||
|
return AjaxResult.error("请添加入库单行");
|
||||||
|
}
|
||||||
|
|
||||||
|
wmItemRecpt.setStatus(UserConstants.ORDER_STATUS_CONFIRMED);
|
||||||
|
|
||||||
|
if(StringUtils.isNotNull(wmItemRecpt.getWarehouseId())){
|
||||||
|
WmWarehouse warehouse = wmWarehouseService.selectWmWarehouseByWarehouseId(wmItemRecpt.getWarehouseId());
|
||||||
|
wmItemRecpt.setWarehouseCode(warehouse.getWarehouseCode());
|
||||||
|
wmItemRecpt.setWarehouseName(warehouse.getWarehouseName());
|
||||||
|
}
|
||||||
|
if(StringUtils.isNotNull(wmItemRecpt.getLocationId())){
|
||||||
|
WmStorageLocation location = wmStorageLocationService.selectWmStorageLocationByLocationId(wmItemRecpt.getLocationId());
|
||||||
|
wmItemRecpt.setLocationCode(location.getLocationCode());
|
||||||
|
wmItemRecpt.setLocationName(location.getLocationName());
|
||||||
|
}
|
||||||
|
if(StringUtils.isNotNull(wmItemRecpt.getAreaId())){
|
||||||
|
WmStorageArea area = wmStorageAreaService.selectWmStorageAreaByAreaId(wmItemRecpt.getAreaId());
|
||||||
|
wmItemRecpt.setAreaCode(area.getAreaCode());
|
||||||
|
wmItemRecpt.setAreaName(area.getAreaName());
|
||||||
|
}
|
||||||
|
return toAjax(wmItemRecptService.updateWmItemRecpt(wmItemRecpt));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改物料入库单
|
* 修改物料入库单
|
||||||
*/
|
*/
|
||||||
@ -151,13 +189,21 @@ public class WmItemRecptController extends BaseController
|
|||||||
*/
|
*/
|
||||||
@PreAuthorize("@ss.hasPermi('mes:wm:itemrecpt:edit')")
|
@PreAuthorize("@ss.hasPermi('mes:wm:itemrecpt:edit')")
|
||||||
@Log(title = "物料入库单", businessType = BusinessType.UPDATE)
|
@Log(title = "物料入库单", businessType = BusinessType.UPDATE)
|
||||||
|
@Transactional
|
||||||
@PutMapping("/{recptId}")
|
@PutMapping("/{recptId}")
|
||||||
public AjaxResult execute(@PathVariable Long recptId){
|
public AjaxResult execute(@PathVariable Long recptId){
|
||||||
|
|
||||||
|
WmItemRecpt recpt = wmItemRecptService.selectWmItemRecptByRecptId(recptId);
|
||||||
|
|
||||||
|
if (!UserConstants.ORDER_STATUS_CONFIRMED.equals(recpt.getStatus())){
|
||||||
|
return AjaxResult.error("请先确认单据");
|
||||||
|
}
|
||||||
|
|
||||||
//构造Transaction事务,并执行库存更新逻辑
|
//构造Transaction事务,并执行库存更新逻辑
|
||||||
|
List<ItemRecptTxBean> beans = wmItemRecptService.getTxBeans(recptId);
|
||||||
|
|
||||||
|
//调用库存核心
|
||||||
//调用ERP接口
|
storageCoreService.processItemRecpt(beans);
|
||||||
|
|
||||||
//更新单据状态
|
//更新单据状态
|
||||||
WmItemRecpt wmItemRecpt =wmItemRecptService.selectWmItemRecptByRecptId(recptId);
|
WmItemRecpt wmItemRecpt =wmItemRecptService.selectWmItemRecptByRecptId(recptId);
|
||||||
|
@ -86,4 +86,236 @@ public class ItemRecptTxBean extends BaseEntity {
|
|||||||
/** 库存有效期 */
|
/** 库存有效期 */
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||||
private Date expireDate;
|
private Date expireDate;
|
||||||
|
|
||||||
|
|
||||||
|
public Long getItemId() {
|
||||||
|
return itemId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setItemId(Long itemId) {
|
||||||
|
this.itemId = itemId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getItemCode() {
|
||||||
|
return itemCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setItemCode(String itemCode) {
|
||||||
|
this.itemCode = itemCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getItemName() {
|
||||||
|
return itemName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setItemName(String itemName) {
|
||||||
|
this.itemName = itemName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSpecification() {
|
||||||
|
return specification;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSpecification(String specification) {
|
||||||
|
this.specification = specification;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUnitOfMeasure() {
|
||||||
|
return unitOfMeasure;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUnitOfMeasure(String unitOfMeasure) {
|
||||||
|
this.unitOfMeasure = unitOfMeasure;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getBatchCode() {
|
||||||
|
return batchCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBatchCode(String batchCode) {
|
||||||
|
this.batchCode = batchCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getWarehouseId() {
|
||||||
|
return warehouseId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setWarehouseId(Long warehouseId) {
|
||||||
|
this.warehouseId = warehouseId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getWarehouseCode() {
|
||||||
|
return warehouseCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setWarehouseCode(String warehouseCode) {
|
||||||
|
this.warehouseCode = warehouseCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getWarehouseName() {
|
||||||
|
return warehouseName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setWarehouseName(String warehouseName) {
|
||||||
|
this.warehouseName = warehouseName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getLocationId() {
|
||||||
|
return locationId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLocationId(Long locationId) {
|
||||||
|
this.locationId = locationId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getLocationCode() {
|
||||||
|
return locationCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLocationCode(String locationCode) {
|
||||||
|
this.locationCode = locationCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getLocationName() {
|
||||||
|
return locationName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLocationName(String locationName) {
|
||||||
|
this.locationName = locationName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getAreaId() {
|
||||||
|
return areaId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAreaId(Long areaId) {
|
||||||
|
this.areaId = areaId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getAreaCode() {
|
||||||
|
return areaCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAreaCode(String areaCode) {
|
||||||
|
this.areaCode = areaCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getAreaName() {
|
||||||
|
return areaName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAreaName(String areaName) {
|
||||||
|
this.areaName = areaName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getVendorId() {
|
||||||
|
return vendorId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setVendorId(Long vendorId) {
|
||||||
|
this.vendorId = vendorId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getVendorCode() {
|
||||||
|
return vendorCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setVendorCode(String vendorCode) {
|
||||||
|
this.vendorCode = vendorCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getVendorName() {
|
||||||
|
return vendorName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setVendorName(String vendorName) {
|
||||||
|
this.vendorName = vendorName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getVendorNick() {
|
||||||
|
return vendorNick;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setVendorNick(String vendorNick) {
|
||||||
|
this.vendorNick = vendorNick;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSourceDocType() {
|
||||||
|
return sourceDocType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSourceDocType(String sourceDocType) {
|
||||||
|
this.sourceDocType = sourceDocType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getSourceDocId() {
|
||||||
|
return sourceDocId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSourceDocId(Long sourceDocId) {
|
||||||
|
this.sourceDocId = sourceDocId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSourceDocCode() {
|
||||||
|
return sourceDocCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSourceDocCode(String sourceDocCode) {
|
||||||
|
this.sourceDocCode = sourceDocCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getSourceDocLineId() {
|
||||||
|
return sourceDocLineId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSourceDocLineId(Long sourceDocLineId) {
|
||||||
|
this.sourceDocLineId = sourceDocLineId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getTransactionQuantity() {
|
||||||
|
return transactionQuantity;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTransactionQuantity(BigDecimal transactionQuantity) {
|
||||||
|
this.transactionQuantity = transactionQuantity;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Date getExpireDate() {
|
||||||
|
return expireDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setExpireDate(Date expireDate) {
|
||||||
|
this.expireDate = expireDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "ItemRecptTxBean{" +
|
||||||
|
"itemId=" + itemId +
|
||||||
|
", itemCode='" + itemCode + '\'' +
|
||||||
|
", itemName='" + itemName + '\'' +
|
||||||
|
", specification='" + specification + '\'' +
|
||||||
|
", unitOfMeasure='" + unitOfMeasure + '\'' +
|
||||||
|
", batchCode='" + batchCode + '\'' +
|
||||||
|
", warehouseId=" + warehouseId +
|
||||||
|
", warehouseCode='" + warehouseCode + '\'' +
|
||||||
|
", warehouseName='" + warehouseName + '\'' +
|
||||||
|
", locationId=" + locationId +
|
||||||
|
", locationCode='" + locationCode + '\'' +
|
||||||
|
", locationName='" + locationName + '\'' +
|
||||||
|
", areaId=" + areaId +
|
||||||
|
", areaCode='" + areaCode + '\'' +
|
||||||
|
", areaName='" + areaName + '\'' +
|
||||||
|
", vendorId=" + vendorId +
|
||||||
|
", vendorCode='" + vendorCode + '\'' +
|
||||||
|
", vendorName='" + vendorName + '\'' +
|
||||||
|
", vendorNick='" + vendorNick + '\'' +
|
||||||
|
", sourceDocType='" + sourceDocType + '\'' +
|
||||||
|
", sourceDocId=" + sourceDocId +
|
||||||
|
", sourceDocCode='" + sourceDocCode + '\'' +
|
||||||
|
", sourceDocLineId=" + sourceDocLineId +
|
||||||
|
", transactionQuantity=" + transactionQuantity +
|
||||||
|
", expireDate=" + expireDate +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@ package com.ktg.mes.wm.mapper;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import com.ktg.mes.wm.domain.WmItemRecpt;
|
import com.ktg.mes.wm.domain.WmItemRecpt;
|
||||||
|
import com.ktg.mes.wm.domain.tx.ItemRecptTxBean;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 物料入库单Mapper接口
|
* 物料入库单Mapper接口
|
||||||
@ -29,6 +30,9 @@ public interface WmItemRecptMapper
|
|||||||
|
|
||||||
public WmItemRecpt checkRecptCodeUnique(WmItemRecpt wmItemRecpt);
|
public WmItemRecpt checkRecptCodeUnique(WmItemRecpt wmItemRecpt);
|
||||||
|
|
||||||
|
|
||||||
|
public List<ItemRecptTxBean> getTxBeans(Long recptId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新增物料入库单
|
* 新增物料入库单
|
||||||
*
|
*
|
||||||
|
@ -20,6 +20,9 @@ public interface WmMaterialStockMapper
|
|||||||
*/
|
*/
|
||||||
public WmMaterialStock selectWmMaterialStockByMaterialStockId(Long materialStockId);
|
public WmMaterialStock selectWmMaterialStockByMaterialStockId(Long materialStockId);
|
||||||
|
|
||||||
|
|
||||||
|
public WmMaterialStock loadMaterialStock(WmMaterialStock stock);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询库存记录列表
|
* 查询库存记录列表
|
||||||
*
|
*
|
||||||
|
@ -20,6 +20,8 @@ public interface IWmMaterialStockService
|
|||||||
*/
|
*/
|
||||||
public WmMaterialStock selectWmMaterialStockByMaterialStockId(Long materialStockId);
|
public WmMaterialStock selectWmMaterialStockByMaterialStockId(Long materialStockId);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询库存记录列表
|
* 查询库存记录列表
|
||||||
*
|
*
|
||||||
|
@ -11,6 +11,10 @@ import com.ktg.mes.wm.domain.WmTransaction;
|
|||||||
*/
|
*/
|
||||||
public interface IWmTransactionService
|
public interface IWmTransactionService
|
||||||
{
|
{
|
||||||
|
|
||||||
|
public WmTransaction processTransaction(WmTransaction wmTransaction);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询库存事务
|
* 查询库存事务
|
||||||
*
|
*
|
||||||
|
@ -3,16 +3,28 @@ package com.ktg.mes.wm.service.impl;
|
|||||||
import cn.hutool.core.collection.CollUtil;
|
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.mes.wm.domain.WmItemRecptLine;
|
import com.ktg.common.utils.bean.BeanUtils;
|
||||||
import com.ktg.mes.wm.domain.WmTransaction;
|
import com.ktg.mes.wm.domain.WmTransaction;
|
||||||
import com.ktg.mes.wm.domain.tx.ItemRecptTxBean;
|
import com.ktg.mes.wm.domain.tx.ItemRecptTxBean;
|
||||||
import com.ktg.mes.wm.service.IStorageCoreService;
|
import com.ktg.mes.wm.service.IStorageCoreService;
|
||||||
|
import com.ktg.mes.wm.service.IWmTransactionService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
|
@Component
|
||||||
public class StorageCoreServiceImpl implements IStorageCoreService {
|
public class StorageCoreServiceImpl implements IStorageCoreService {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private IWmTransactionService wmTransactionService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 处理入库单行
|
||||||
|
* @param lines
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void processItemRecpt(List<ItemRecptTxBean> lines) {
|
public void processItemRecpt(List<ItemRecptTxBean> lines) {
|
||||||
String transactionType = UserConstants.TRANSACTION_TYPE_ITEM_RECPT;
|
String transactionType = UserConstants.TRANSACTION_TYPE_ITEM_RECPT;
|
||||||
@ -24,8 +36,20 @@ public class StorageCoreServiceImpl implements IStorageCoreService {
|
|||||||
ItemRecptTxBean line = lines.get(i);
|
ItemRecptTxBean line = lines.get(i);
|
||||||
WmTransaction transaction = new WmTransaction();
|
WmTransaction transaction = new WmTransaction();
|
||||||
transaction.setTransactionType(transactionType);
|
transaction.setTransactionType(transactionType);
|
||||||
|
BeanUtils.copyBeanProp(transaction,line);
|
||||||
|
transaction.setTransactionFlag(1); //库存增加
|
||||||
|
transaction.setTransactionDate(new Date());
|
||||||
|
wmTransactionService.processTransaction(transaction);
|
||||||
|
// transaction.setItemId(line.getItemId());
|
||||||
|
// transaction.setItemCode(line.getItemCode());
|
||||||
|
// transaction.setItemName(line.getItemName());
|
||||||
|
// transaction.setSpecification(line.getSpecification());
|
||||||
|
// transaction.setUnitOfMeasure(line.getUnitOfMeasure());
|
||||||
|
// transaction.setBatchCode(line.getBatchCode());
|
||||||
|
// transaction.setWarehouseId(line.getWarehouseId());
|
||||||
|
// transaction.setWarehouseCode(line.getWarehouseCode());
|
||||||
|
// transaction.setWarehouseName(line.getWarehouseName());
|
||||||
|
// transaction.setLocationId(line.getLocationId());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -110,6 +110,6 @@ public class WmItemRecptServiceImpl implements IWmItemRecptService
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<ItemRecptTxBean> getTxBeans(Long receptId) {
|
public List<ItemRecptTxBean> getTxBeans(Long receptId) {
|
||||||
return null;
|
return wmItemRecptMapper.getTxBeans(receptId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -33,6 +33,7 @@ public class WmMaterialStockServiceImpl implements IWmMaterialStockService
|
|||||||
return wmMaterialStockMapper.selectWmMaterialStockByMaterialStockId(materialStockId);
|
return wmMaterialStockMapper.selectWmMaterialStockByMaterialStockId(materialStockId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询库存记录列表
|
* 查询库存记录列表
|
||||||
*
|
*
|
||||||
|
@ -1,7 +1,14 @@
|
|||||||
package com.ktg.mes.wm.service.impl;
|
package com.ktg.mes.wm.service.impl;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.ktg.common.exception.BussinessException;
|
||||||
import com.ktg.common.utils.DateUtils;
|
import com.ktg.common.utils.DateUtils;
|
||||||
|
import com.ktg.common.utils.StringUtils;
|
||||||
|
import com.ktg.mes.wm.domain.WmMaterialStock;
|
||||||
|
import com.ktg.mes.wm.mapper.WmMaterialStockMapper;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import com.ktg.mes.wm.mapper.WmTransactionMapper;
|
import com.ktg.mes.wm.mapper.WmTransactionMapper;
|
||||||
@ -20,6 +27,85 @@ public class WmTransactionServiceImpl implements IWmTransactionService
|
|||||||
@Autowired
|
@Autowired
|
||||||
private WmTransactionMapper wmTransactionMapper;
|
private WmTransactionMapper wmTransactionMapper;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private WmMaterialStockMapper wmMaterialStockMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public WmTransaction processTransaction(WmTransaction wmTransaction) {
|
||||||
|
WmMaterialStock stock = new WmMaterialStock();
|
||||||
|
|
||||||
|
validate(wmTransaction);
|
||||||
|
initStock(wmTransaction,stock);
|
||||||
|
|
||||||
|
WmMaterialStock ms =wmMaterialStockMapper.loadMaterialStock(stock);
|
||||||
|
BigDecimal quantity = wmTransaction.getTransactionQuantity().multiply(new BigDecimal(wmTransaction.getTransactionFlag()));
|
||||||
|
if(StringUtils.isNotNull(ms)){
|
||||||
|
//MS已存在
|
||||||
|
stock.setQuantityOnhand(ms.getQuantityOnhand().add(quantity));
|
||||||
|
stock.setMaterialStockId(ms.getMaterialStockId());
|
||||||
|
wmMaterialStockMapper.updateWmMaterialStock(stock);
|
||||||
|
}else {
|
||||||
|
//MS不存在
|
||||||
|
stock.setQuantityOnhand(quantity);
|
||||||
|
wmMaterialStockMapper.insertWmMaterialStock(stock);
|
||||||
|
}
|
||||||
|
wmTransaction.setMaterialStockId(stock.getMaterialStockId());
|
||||||
|
wmTransaction.setTransactionQuantity(quantity);
|
||||||
|
wmTransactionMapper.insertWmTransaction(wmTransaction);
|
||||||
|
return wmTransaction;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void validate(WmTransaction transaction){
|
||||||
|
if(StringUtils.isNull(transaction.getTransactionType())){
|
||||||
|
throw new BussinessException("库存事务不能为空");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(StringUtils.isNull(transaction.getTransactionQuantity())){
|
||||||
|
throw new BussinessException("事务数量不能为空");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(StringUtils.isNull(transaction.getSourceDocCode())){
|
||||||
|
throw new BussinessException("来源单据号不能为空");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(StringUtils.isNull(transaction.getSourceDocLineId())){
|
||||||
|
throw new BussinessException("来源单据行ID不能为空");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(StringUtils.isNull(transaction.getTransactionDate())){
|
||||||
|
transaction.setTransactionDate(new Date());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void initStock(WmTransaction transaction,WmMaterialStock stock){
|
||||||
|
stock.setItemId(transaction.getItemId());
|
||||||
|
stock.setItemCode(transaction.getItemCode());
|
||||||
|
stock.setItemName(transaction.getItemName());
|
||||||
|
stock.setSpecification(transaction.getSpecification());
|
||||||
|
stock.setUnitOfMeasure(transaction.getUnitOfMeasure());
|
||||||
|
stock.setBatchCode(transaction.getBatchCode());
|
||||||
|
stock.setWarehouseId(transaction.getWarehouseId());
|
||||||
|
stock.setWarehouseCode(transaction.getWarehouseCode());
|
||||||
|
stock.setWarehouseName(transaction.getWarehouseName());
|
||||||
|
stock.setLocationId(transaction.getLocationId());
|
||||||
|
stock.setLocationCode(transaction.getLocationCode());
|
||||||
|
stock.setLocationName(transaction.getLocationName());
|
||||||
|
if(StringUtils.isNotNull(transaction.getAreaId())){
|
||||||
|
stock.setAreaId(transaction.getAreaId());
|
||||||
|
stock.setAreaCode(transaction.getAreaCode());
|
||||||
|
stock.setAreaName(transaction.getAreaName());
|
||||||
|
}
|
||||||
|
if(StringUtils.isNotNull(transaction.getVendorId())){
|
||||||
|
stock.setVendorId(transaction.getVendorId());
|
||||||
|
stock.setVendorCode(transaction.getVendorCode());
|
||||||
|
stock.setVendorName(transaction.getVendorName());
|
||||||
|
stock.setVendorNick(transaction.getVendorNick());
|
||||||
|
}
|
||||||
|
stock.setExpireDate(transaction.getExpireDate());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询库存事务
|
* 查询库存事务
|
||||||
*
|
*
|
||||||
|
@ -37,6 +37,39 @@
|
|||||||
<result property="updateTime" column="update_time" />
|
<result property="updateTime" column="update_time" />
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
|
<resultMap type="ItemRecptTxBean" id="ItemRecptTxBeanResult">
|
||||||
|
<result property="itemId" column="item_id"></result>
|
||||||
|
<result property="itemCode" column="item_code"></result>
|
||||||
|
<result property="itemName" column="item_name"></result>
|
||||||
|
<result property="specification" column="specification"></result>
|
||||||
|
<result property="unitOfMeasure" column="unit_of_measure"></result>
|
||||||
|
<result property="batchCode" column="batch_code"></result>
|
||||||
|
<result property="warehouseId" column="warehouse_id"></result>
|
||||||
|
<result property="warehouseCode" column="warehouse_code"></result>
|
||||||
|
<result property="warehouseName" column="warehouse_name"></result>
|
||||||
|
<result property="locationId" column="location_id"></result>
|
||||||
|
<result property="locationCode" column="location_code"></result>
|
||||||
|
<result property="locationName" column="location_name"></result>
|
||||||
|
<result property="areaId" column="area_id"></result>
|
||||||
|
<result property="areaCode" column="area_code"></result>
|
||||||
|
<result property="areaName" column="area_name"></result>
|
||||||
|
<result property="vendorId" column="vendor_id"></result>
|
||||||
|
<result property="vendorCode" column="vendor_code"></result>
|
||||||
|
<result property="vendorName" column="vendor_name"></result>
|
||||||
|
<result property="vendorNick" column="vendor_nick"></result>
|
||||||
|
<result property="sourceDocType" column="source_doc_type"></result>
|
||||||
|
<result property="sourceDocId" column="source_doc_id"></result>
|
||||||
|
<result property="sourceDocCode" column="source_doc_code"></result>
|
||||||
|
<result property="sourceDocLineId" column="source_doc_line_id"></result>
|
||||||
|
<result property="transactionQuantity" column="transaction_quantity"></result>
|
||||||
|
<result property="expireDate" column="expire_date"></result>
|
||||||
|
<result property="createBy" column="create_by" />
|
||||||
|
<result property="createTime" column="create_time" />
|
||||||
|
<result property="updateBy" column="update_by" />
|
||||||
|
<result property="updateTime" column="update_time" />
|
||||||
|
</resultMap>
|
||||||
|
|
||||||
|
|
||||||
<sql id="selectWmItemRecptVo">
|
<sql id="selectWmItemRecptVo">
|
||||||
select recpt_id, recpt_code, recpt_name, iqc_id, iqc_code, po_code, vendor_id, vendor_code, vendor_name, vendor_nick, warehouse_id, warehouse_code, warehouse_name, location_id, location_code, location_name, area_id, area_code, area_name, recpt_date, status, remark, attr1, attr2, attr3, attr4, create_by, create_time, update_by, update_time from wm_item_recpt
|
select recpt_id, recpt_code, recpt_name, iqc_id, iqc_code, po_code, vendor_id, vendor_code, vendor_name, vendor_nick, warehouse_id, warehouse_code, warehouse_name, location_id, location_code, location_name, area_id, area_code, area_name, recpt_date, status, remark, attr1, attr2, attr3, attr4, create_by, create_time, update_by, update_time from wm_item_recpt
|
||||||
</sql>
|
</sql>
|
||||||
@ -78,6 +111,20 @@
|
|||||||
where recpt_code = #{recptCode}
|
where recpt_code = #{recptCode}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="getTxBeans" parameterType="Long" resultMap="ItemRecptTxBeanResult">
|
||||||
|
SELECT 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`,
|
||||||
|
ir.`vendor_id`,ir.`vendor_code`,ir.`vendor_name`,ir.`vendor_nick`,
|
||||||
|
'IR' AS source_doc_type,ir.`recpt_id` AS source_doc_id,ir.`recpt_code` AS source_doc_code,irl.`line_id` AS source_doc_line_id,
|
||||||
|
irl.`quantity_recived` AS transaction_quantity,irl.`expire_date`,
|
||||||
|
ir.`create_by`,ir.`create_time`,ir.`update_by`,ir.`update_time`
|
||||||
|
FROM wm_item_recpt ir
|
||||||
|
LEFT JOIN wm_item_recpt_line irl
|
||||||
|
ON ir.recpt_id = irl.`recpt_id`
|
||||||
|
WHERE ir.`recpt_id` = #{recptId}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
<insert id="insertWmItemRecpt" parameterType="WmItemRecpt" useGeneratedKeys="true" keyProperty="recptId">
|
<insert id="insertWmItemRecpt" parameterType="WmItemRecpt" useGeneratedKeys="true" keyProperty="recptId">
|
||||||
insert into wm_item_recpt
|
insert into wm_item_recpt
|
||||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
<!DOCTYPE mapper
|
<!DOCTYPE mapper
|
||||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
<mapper namespace="com.ktg.mes.md.mapper.WmMaterialStockMapper">
|
<mapper namespace="com.ktg.mes.wm.mapper.WmMaterialStockMapper">
|
||||||
|
|
||||||
<resultMap type="WmMaterialStock" id="WmMaterialStockResult">
|
<resultMap type="WmMaterialStock" id="WmMaterialStockResult">
|
||||||
<result property="materialStockId" column="material_stock_id" />
|
<result property="materialStockId" column="material_stock_id" />
|
||||||
@ -78,7 +78,22 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<include refid="selectWmMaterialStockVo"/>
|
<include refid="selectWmMaterialStockVo"/>
|
||||||
where material_stock_id = #{materialStockId}
|
where material_stock_id = #{materialStockId}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
|
||||||
|
<select id="loadMaterialStock" parameterType="WmMaterialStock" resultMap="WmMaterialStockResult">
|
||||||
|
<include refid="selectWmMaterialStockVo"/>
|
||||||
|
<where>
|
||||||
|
<if test="itemId != null "> and item_id = #{itemId}</if>
|
||||||
|
<if test="unitOfMeasure != null and unitOfMeasure != ''"> and unit_of_measure = #{unitOfMeasure}</if>
|
||||||
|
<if test="batchCode != null and batchCode != ''"> and batch_code = #{batchCode}</if>
|
||||||
|
<if test="warehouseId != null "> and warehouse_id = #{warehouseId}</if>
|
||||||
|
<if test="locationId != null "> and location_id = #{locationId}</if>
|
||||||
|
<if test="areaId != null "> and area_id = #{areaId}</if>
|
||||||
|
<if test="vendorId != null "> and vendor_id = #{vendorId}</if>
|
||||||
|
</where>
|
||||||
|
and 1=1 limit 1
|
||||||
|
</select>
|
||||||
|
|
||||||
<insert id="insertWmMaterialStock" parameterType="WmMaterialStock" useGeneratedKeys="true" keyProperty="materialStockId">
|
<insert id="insertWmMaterialStock" parameterType="WmMaterialStock" useGeneratedKeys="true" keyProperty="materialStockId">
|
||||||
insert into wm_material_stock
|
insert into wm_material_stock
|
||||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||||
|
Loading…
Reference in New Issue
Block a user