出库单明细加字段;

This commit is contained in:
王奎兴
2026-04-29 16:08:53 +08:00
parent d4748995b9
commit 8a796aa432
9 changed files with 133 additions and 62 deletions
@@ -501,4 +501,12 @@ public class ReserveOutMaterialDetail extends BaseVOEntity {
@ApiModelProperty("每件重量") @ApiModelProperty("每件重量")
@Excel(name = "每件重量") @Excel(name = "每件重量")
private BigDecimal perWeight; private BigDecimal perWeight;
@ApiModelProperty("预约总价")
@Excel(name = "预约总价")
private BigDecimal reservePrice;
@ApiModelProperty("预约单价")
@Excel(name = "预约单价")
private BigDecimal reserveUnitPrice;
} }
@@ -592,4 +592,12 @@ public class ReserveOutMaterialDetailPO extends ReserveStockOutOrderBaseDO {
@ApiModelProperty("每件重量") @ApiModelProperty("每件重量")
@Excel(name = "每件重量") @Excel(name = "每件重量")
private BigDecimal perWeight; private BigDecimal perWeight;
@ApiModelProperty("预约总价")
@Excel(name = "预约总价")
private BigDecimal reservePrice;
@ApiModelProperty("预约单价")
@Excel(name = "预约单价")
private BigDecimal reserveUnitPrice;
} }
@@ -536,4 +536,12 @@ public class ReserveOutMaterialDetailDO extends BaseVOEntity {
@ApiModelProperty("每件重量") @ApiModelProperty("每件重量")
@Excel(name = "每件重量") @Excel(name = "每件重量")
private BigDecimal perWeight; private BigDecimal perWeight;
@ApiModelProperty("预约总价")
@Excel(name = "预约总价")
private BigDecimal reservePrice;
@ApiModelProperty("预约单价")
@Excel(name = "预约单价")
private BigDecimal reserveUnitPrice;
} }
@@ -525,4 +525,12 @@ public class ReserveOutMaterialDetailDTO extends BaseVOEntity {
@ApiModelProperty("每件重量") @ApiModelProperty("每件重量")
@Excel(name = "每件重量") @Excel(name = "每件重量")
private BigDecimal perWeight; private BigDecimal perWeight;
@ApiModelProperty("预约总价")
@Excel(name = "预约总价")
private BigDecimal reservePrice;
@ApiModelProperty("预约单价")
@Excel(name = "预约单价")
private BigDecimal reserveUnitPrice;
} }
@@ -450,6 +450,8 @@ public class ReserveStockInOrderDomainService {
for (ReserveInMaterialDetail reserveInMaterialDetail : materialDetailList) { for (ReserveInMaterialDetail reserveInMaterialDetail : materialDetailList) {
ReservationInMaterialDetail reservationInMaterialDetail = new ReservationInMaterialDetail(); ReservationInMaterialDetail reservationInMaterialDetail = new ReservationInMaterialDetail();
BeanUtils.copyProperties(reserveInMaterialDetail, reservationInMaterialDetail,"materialDetailId"); BeanUtils.copyProperties(reserveInMaterialDetail, reservationInMaterialDetail,"materialDetailId");
reservationInMaterialDetail.setQuantity(reserveInMaterialDetail.getReserveQuantity());
//reservationInMaterialDetail.set
inMaterialDetailList.add(reservationInMaterialDetail); inMaterialDetailList.add(reservationInMaterialDetail);
} }
reservationInMaterialDetailService.saveBatch(inMaterialDetailList); reservationInMaterialDetailService.saveBatch(inMaterialDetailList);
@@ -17,6 +17,7 @@ import com.mhd.oms.domain.reserveInMaterialDetail.repository.facade.IReserveInMa
import com.mhd.oms.domain.reserveOutMaterialDetail.repository.facade.IReserveOutMaterialDetailService; import com.mhd.oms.domain.reserveOutMaterialDetail.repository.facade.IReserveOutMaterialDetailService;
import com.mhd.oms.domain.reserveOutMaterialDetail.repository.po.ReserveOutMaterialDetailPO; import com.mhd.oms.domain.reserveOutMaterialDetail.repository.po.ReserveOutMaterialDetailPO;
import com.mhd.oms.domain.reserveOutMaterialDetail.repository.todo.ReserveOutMaterialDetailDO; import com.mhd.oms.domain.reserveOutMaterialDetail.repository.todo.ReserveOutMaterialDetailDO;
import com.mhd.oms.domain.reserveStockInOrder.repository.todo.ReserveStockInOrderDO;
import com.mhd.oms.domain.reserveStockOutOrder.repository.facade.IReserveStockOutOrderService; import com.mhd.oms.domain.reserveStockOutOrder.repository.facade.IReserveStockOutOrderService;
import com.mhd.oms.domain.reserveStockOutOrder.repository.po.ReserveStockOutOrderPO; import com.mhd.oms.domain.reserveStockOutOrder.repository.po.ReserveStockOutOrderPO;
import com.mhd.oms.domain.reserveStockOutOrder.repository.todo.ReserveStockOutOrderDO; import com.mhd.oms.domain.reserveStockOutOrder.repository.todo.ReserveStockOutOrderDO;
@@ -790,6 +791,16 @@ public class ReserveStockOutOrderApplicationService {
public Boolean issueOrder(ReserveStockOutOrderDO stockOutOrderDO){ public Boolean issueOrder(ReserveStockOutOrderDO stockOutOrderDO){
return stockOutOrderDomainService.issueOrder(stockOutOrderDO); return stockOutOrderDomainService.issueOrder(stockOutOrderDO);
} }
/**
* @description 审核入库单
* @author ZhouGY
* @date 2024/5/21 13:53
* @param stockInOrderDO
* @return Boolean
*/
public Boolean orderReject(ReserveStockOutOrderDO stockOutOrderDO){
return stockOutOrderDomainService.orderReject(stockOutOrderDO);
}
@@ -8,14 +8,23 @@ import com.mhd.common.core.utils.StringUtils;
import com.mhd.common.core.utils.bean.BeanUtils; import com.mhd.common.core.utils.bean.BeanUtils;
import com.mhd.common.security.utils.SecurityUtils; import com.mhd.common.security.utils.SecurityUtils;
import com.mhd.oms.domain.businessDocumentOrder.repository.mapper.BusinessDocumentOrderMapper; import com.mhd.oms.domain.businessDocumentOrder.repository.mapper.BusinessDocumentOrderMapper;
import com.mhd.oms.domain.reservationInMaterialDetail.entity.ReservationInMaterialDetail;
import com.mhd.oms.domain.reservationOutMaterialDetail.entity.ReservationOutMaterialDetail;
import com.mhd.oms.domain.reservationOutMaterialDetail.repository.facade.IReservationOutMaterialDetailService;
import com.mhd.oms.domain.reservationStockInOrder.entity.ReservationStockInOrder;
import com.mhd.oms.domain.reservationStockInOrder.repository.po.MaterialBaseInfoPO; import com.mhd.oms.domain.reservationStockInOrder.repository.po.MaterialBaseInfoPO;
import com.mhd.oms.domain.reservationStockOutOrder.entity.ReservationStockOutOrder;
import com.mhd.oms.domain.reservationStockOutOrder.repository.facade.IReservationStockOutOrderService;
import com.mhd.oms.domain.reserveInMaterialDetail.entity.ReserveInMaterialDetail;
import com.mhd.oms.domain.reserveOutMaterialDetail.entity.ReserveOutMaterialDetail; import com.mhd.oms.domain.reserveOutMaterialDetail.entity.ReserveOutMaterialDetail;
import com.mhd.oms.domain.reserveOutMaterialDetail.repository.facade.IReserveOutMaterialDetailService; import com.mhd.oms.domain.reserveOutMaterialDetail.repository.facade.IReserveOutMaterialDetailService;
import com.mhd.oms.domain.reserveOutMaterialDetail.repository.po.ReserveOutMaterialDetailPO; import com.mhd.oms.domain.reserveOutMaterialDetail.repository.po.ReserveOutMaterialDetailPO;
import com.mhd.oms.domain.reserveOutMaterialDetail.repository.todo.ReserveOutMaterialDetailBaseDO; import com.mhd.oms.domain.reserveOutMaterialDetail.repository.todo.ReserveOutMaterialDetailBaseDO;
import com.mhd.oms.domain.reserveOutMaterialDetail.repository.todo.ReserveOutMaterialDetailDO; import com.mhd.oms.domain.reserveOutMaterialDetail.repository.todo.ReserveOutMaterialDetailDO;
import com.mhd.oms.domain.reserveStockInOrder.entity.ReserveStockInOrder;
import com.mhd.oms.domain.reserveStockInOrder.repository.facade.IReserveStockInOrderService; import com.mhd.oms.domain.reserveStockInOrder.repository.facade.IReserveStockInOrderService;
import com.mhd.oms.domain.reserveStockInOrder.repository.mapper.ReserveStockInOrderMapper; import com.mhd.oms.domain.reserveStockInOrder.repository.mapper.ReserveStockInOrderMapper;
import com.mhd.oms.domain.reserveStockInOrder.repository.todo.ReserveStockInOrderDO;
import com.mhd.oms.domain.reserveStockOutOrder.entity.ReserveStockOutOrder; import com.mhd.oms.domain.reserveStockOutOrder.entity.ReserveStockOutOrder;
import com.mhd.oms.domain.reserveStockOutOrder.repository.facade.IReserveStockOutOrderService; import com.mhd.oms.domain.reserveStockOutOrder.repository.facade.IReserveStockOutOrderService;
import com.mhd.oms.domain.reserveStockOutOrder.repository.po.ReserveStockOutOrderPO; import com.mhd.oms.domain.reserveStockOutOrder.repository.po.ReserveStockOutOrderPO;
@@ -56,48 +65,12 @@ public class ReserveStockOutOrderDomainService {
private IReserveOutMaterialDetailService outMaterialDetailService; private IReserveOutMaterialDetailService outMaterialDetailService;
@Autowired @Autowired
private IReserveStockInOrderService reservationStockInOrderService; private IReserveStockInOrderService reservationStockInOrderService;
// @Autowired @Autowired
// private IHandoverTaskOrderService handoverTaskOrderService; private IReservationStockOutOrderService reservationStockOutOrderService;
// @Autowired @Autowired
// private IOutOrderAbnormalService outOrderAbnormalService; private IReservationOutMaterialDetailService reservationOutMaterialDetailService;
// @Autowired
// private PickingOrderDomainService pickingOrderDomainService;
// @Autowired
// private ReplenishmentNoticeDomainService replenishmentNoticeDomainService;
// @Autowired
// private IMobilizeManageService iMobilizeManageService;
// @Autowired
// private IMobilizeManageDetailService iMobilizeManageDetailService;
// @Autowired
// private StockInOrderDomainService stockInOrderDomainService;
// @Autowired
// private IInventoryStandingDetailService inventoryStandingDetailService;
// @Autowired
// private IDeliveTaskService deliveTaskService;
// @Autowired
// private WaveOrderServiceFactory waveOrderServiceFactory;
// @Autowired
// private IMaterialBaseInfoService materialBaseInfoService;
@Autowired @Autowired
private ReserveStockInOrderMapper reservationStockInOrderMapper; private ReserveStockInOrderMapper reservationStockInOrderMapper;
@Autowired
private BusinessDocumentOrderMapper businessDocumentOrderMapper;
// @Autowired
// private IMaterialWarehouseControlService materialWarehouseControlService;
// @Autowired
// private IMaterialInventoryService materialInventoryService;
@Resource
private SystemServiceFeign systemServiceFeign;
@Resource
private WmsServiceFeign wmsServiceFeign;
// @Autowired
// private PushSyncBmsDomainService pushSyncBmsDomainService;
// @Autowired
// private MaterialBaseInfoMapper materialBaseInfoMapper;
// @Autowired
// private MaterialInventoryMapper materialInventoryMapper;
// @Autowired
// private IPickingMaterialDetailService pickingMaterialDetailService;
/** /**
* 分页查询出库单列表 * 分页查询出库单列表
@@ -288,25 +261,53 @@ public class ReserveStockOutOrderDomainService {
.in(ReserveStockOutOrder::getOutOrderId, stockOutOrderDO.getOutOrderIds())); .in(ReserveStockOutOrder::getOutOrderId, stockOutOrderDO.getOutOrderIds()));
//todo下发推送到wms //todo下发推送到wms
List<Long> inOrderIds = stockOutOrderDO.getOutOrderIds(); List<Long> outOrderIds = stockOutOrderDO.getOutOrderIds();
for (Long inOrderId : inOrderIds) { for (Long outOrderId : outOrderIds) {
ReserveStockOutOrder byId = stockOutOrderService.getById(inOrderId); ReserveStockOutOrder byId = stockOutOrderService.getById(outOrderId);
StockOutOrder stockOutOrder = new StockOutOrder(); ReservationStockOutOrder reservationStockOutOrder = new ReservationStockOutOrder();
BeanUtils.copyProperties(byId, stockOutOrder,"outOrderId"); BeanUtils.copyProperties(byId, reservationStockOutOrder,"inOrderId");
wmsServiceFeign.omsOutOrderAdd(stockOutOrder); reservationStockOutOrderService.save(reservationStockOutOrder);
String inOrderNumber = stockOutOrder.getOutOrderNumber(); String outOrderNumber = reservationStockOutOrder.getOutOrderNumber();
List<ReserveOutMaterialDetail> materialDetailList = outMaterialDetailService.list(new QueryWrapper<ReserveOutMaterialDetail>().lambda().eq(ReserveOutMaterialDetail::getOutOrderNumber, inOrderNumber)); List<ReserveOutMaterialDetail> materialDetailList = outMaterialDetailService.list(new QueryWrapper<ReserveOutMaterialDetail>().lambda().eq(ReserveOutMaterialDetail::getOutOrderNumber, outOrderNumber));
List<OutMaterialDetail> outMaterialDetailList = new ArrayList<>(); List<ReservationOutMaterialDetail> inMaterialDetailList = new ArrayList<>();
for (ReserveOutMaterialDetail reservationOutMaterialDetail : materialDetailList) { for (ReserveOutMaterialDetail reserveOutMaterialDetail : materialDetailList) {
OutMaterialDetail outMaterialDetail = new OutMaterialDetail(); ReservationOutMaterialDetail reservationOutMaterialDetail = new ReservationOutMaterialDetail();
BeanUtils.copyProperties(reservationOutMaterialDetail, outMaterialDetail,"materialDetailId"); BeanUtils.copyProperties(reserveOutMaterialDetail, reservationOutMaterialDetail,"materialDetailId");
outMaterialDetailList.add(outMaterialDetail); inMaterialDetailList.add(reservationOutMaterialDetail);
} }
wmsServiceFeign.omsOutOrderAddDetail(outMaterialDetailList); reservationOutMaterialDetailService.saveBatch(inMaterialDetailList);
} }
return update; return update;
} }
/**
* @description 审核入库单
* @author ZhouGY
* @date 2024/5/21 13:53
* @param
* @return Boolean
*/
@Transactional(rollbackFor = Exception.class)
public Boolean orderReject(ReserveStockOutOrderDO stockOutOrderDO) {
LoginUser loginUser = SecurityUtils.getLoginUser();
Integer auditStatus = stockOutOrderDO.getIssueStatus();
Integer issueStatus = 2;
//issueStatus = auditStatus == 2 ? 2 : 3;
// 获取用户姓名(优先从UserPo获取,如果为空则使用realname,最后使用username作为兜底)
String userRealName = loginUser.getUserPo() != null && loginUser.getUserPo().getUserName() != null
? loginUser.getUserPo().getUserName()
: (loginUser.getRealname() != null ? loginUser.getRealname() : loginUser.getUsername());
return stockOutOrderService.update(null, new UpdateWrapper<ReserveStockOutOrder>().lambda()
.set(ReserveStockOutOrder::getReservationAuditId, loginUser.getUserid())
.set(ReserveStockOutOrder::getReservationAuditName, userRealName)
.set(ReserveStockOutOrder::getReservationAuditTime, new Date())
.set(ReserveStockOutOrder::getUpdateBy, loginUser.getUserid())
.set(ReserveStockOutOrder::getUpdateByName, userRealName)
.set(ReserveStockOutOrder::getUpdateTime, new Date())
.set(ReserveStockOutOrder::getIssueStatus, issueStatus)
.in(ReserveStockOutOrder::getOutOrderId, stockOutOrderDO.getOutOrderIds()));
}
/** /**
* @description 修改出库单 * @description 修改出库单
* @author ZhouGY * @author ZhouGY
@@ -5,6 +5,8 @@ import com.mhd.common.core.web.controller.BaseController;
import com.mhd.common.core.web.domain.AjaxResult; import com.mhd.common.core.web.domain.AjaxResult;
import com.mhd.common.core.web.page.TableDataInfo; import com.mhd.common.core.web.page.TableDataInfo;
import com.mhd.oms.domain.reserveOutMaterialDetail.repository.po.ReserveOutMaterialDetailPO; import com.mhd.oms.domain.reserveOutMaterialDetail.repository.po.ReserveOutMaterialDetailPO;
import com.mhd.oms.domain.reserveStockInOrder.repository.todo.ReserveStockInOrderDO;
import com.mhd.oms.domain.reserveStockInOrder.repository.todo.ReserveStockInOrderDTO;
import com.mhd.oms.domain.reserveStockOutOrder.entity.ReserveStockOutOrder; import com.mhd.oms.domain.reserveStockOutOrder.entity.ReserveStockOutOrder;
import com.mhd.oms.domain.reserveStockOutOrder.repository.facade.IReserveStockOutOrderService; import com.mhd.oms.domain.reserveStockOutOrder.repository.facade.IReserveStockOutOrderService;
import com.mhd.oms.domain.reserveStockOutOrder.repository.po.ReserveStockOutOrderPO; import com.mhd.oms.domain.reserveStockOutOrder.repository.po.ReserveStockOutOrderPO;
@@ -58,6 +60,27 @@ public class ReserveStockOutOrderApi extends BaseController {
} }
/**
* 审核入库单
*/
@ApiOperation("驳回")
@PostMapping(value = "/orderReject")
public AjaxResult orderReject(@RequestBody ReserveStockOutOrderDTO stockOutOrderDTO) {
ReserveStockOutOrderDO stockOutOrderDO = stockOutOrderAssembler.toDO(stockOutOrderDTO);
return AjaxResult.success(stockOutOrderApplicationService.orderReject(stockOutOrderDO));
}
/**
* 下发入库单
*/
@ApiOperation("确认入库单")
@PostMapping(value = "/issueOrder")
public AjaxResult issueOrder(@RequestBody ReserveStockOutOrderDTO stockOutOrderDTO) {
ReserveStockOutOrderDO stockOutOrderDO = stockOutOrderAssembler.toDO(stockOutOrderDTO);
return AjaxResult.success(stockOutOrderApplicationService.issueOrder(stockOutOrderDO));
}
/** /**
* 编辑出库单 * 编辑出库单
*/ */
@@ -163,12 +186,12 @@ public class ReserveStockOutOrderApi extends BaseController {
/** /**
* 下发出库单 * 下发出库单
*/ */
@ApiOperation("下发出库单") // @ApiOperation("下发出库单")
@PostMapping(value = "/issueOrder") // @PostMapping(value = "/issueOrder")
public AjaxResult issueOrder(@RequestBody ReserveStockOutOrderDTO stockOutOrderDTO) { // public AjaxResult issueOrder(@RequestBody ReserveStockOutOrderDTO stockOutOrderDTO) {
ReserveStockOutOrderDO stockOutOrderDO = stockOutOrderAssembler.toDO(stockOutOrderDTO); // ReserveStockOutOrderDO stockOutOrderDO = stockOutOrderAssembler.toDO(stockOutOrderDTO);
return AjaxResult.success(stockOutOrderApplicationService.issueOrder(stockOutOrderDO)); // return AjaxResult.success(stockOutOrderApplicationService.issueOrder(stockOutOrderDO));
} // }
@ApiOperation("关闭出库单") @ApiOperation("关闭出库单")
@PostMapping("/close") @PostMapping("/close")
@@ -95,7 +95,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="stockUnit" column="stock_unit" /> <result property="stockUnit" column="stock_unit" />
<result property="stockQuantity" column="stock_quantity" /> <result property="stockQuantity" column="stock_quantity" />
<result property="perWeight" column="PER_WEIGHT" /> <result property="perWeight" column="PER_WEIGHT" />
<result property="coefficient" column="COEFFICIENT" /> <result property="coefficient" column="COEFFICIENT" />.
<result property="reservePrice" column="reserve_price" />
<result property="reserveUnitPrice" column="reserve_unit_price" />
</resultMap> </resultMap>
@@ -108,7 +110,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
a.single_gross_weight , a.single_gross_weight ,
a.lot_no , a.lot_no ,
a.stock_quantity , a.stock_quantity ,
a.stock_unit ,a.in_order_number ,a.PER_WEIGHT,a.COEFFICIENT, a.stock_unit ,a.in_order_number ,a.PER_WEIGHT,a.COEFFICIENT,a.reserve_price,a.reserve_unit_price,
a.material_detail_id, a.organization_id, a.organization_name, a.top_organization_id, a.unique_id, a.out_order_number, a.material_base_info_id, a.line_number, a.material_code, a.material_name, a.bar_code, a.weight_limit, a.volume_limit, a.material_detail_id, a.organization_id, a.organization_name, a.top_organization_id, a.unique_id, a.out_order_number, a.material_base_info_id, a.line_number, a.material_code, a.material_name, a.bar_code, a.weight_limit, a.volume_limit,
a.quantity, a.already_allocation_quantity, a.allocation_quantity, a.picking_quantity, a.check_quantity, ROUND(GREATEST(0, IFNULL(a.quantity, 0) - IFNULL(a.check_quantity, 0), IFNULL(a.picking_quantity, 0) - IFNULL(a.check_quantity, 0)), 2) AS wait_check_quantity, a.quantity, a.already_allocation_quantity, a.allocation_quantity, a.picking_quantity, a.check_quantity, ROUND(GREATEST(0, IFNULL(a.quantity, 0) - IFNULL(a.check_quantity, 0), IFNULL(a.picking_quantity, 0) - IFNULL(a.check_quantity, 0)), 2) AS wait_check_quantity,
a.pack_id, a.pack_code, a.pack_name, a.pack_detail_id, a.unit_code, a.unit_name, a.material_warehouse_control_id, a.serial_number_manage, a.pack_id, a.pack_code, a.pack_name, a.pack_detail_id, a.unit_code, a.unit_name, a.material_warehouse_control_id, a.serial_number_manage,