diff --git a/klp-wms/src/main/java/com/klp/controller/WmsCoilPackingRecordController.java b/klp-wms/src/main/java/com/klp/controller/WmsCoilPackingRecordController.java index 1c55e6f8..d640f105 100644 --- a/klp-wms/src/main/java/com/klp/controller/WmsCoilPackingRecordController.java +++ b/klp-wms/src/main/java/com/klp/controller/WmsCoilPackingRecordController.java @@ -96,4 +96,14 @@ public class WmsCoilPackingRecordController extends BaseController { @PathVariable Long[] packingIds) { return toAjax(iWmsCoilPackingRecordService.deleteWithValidByIds(Arrays.asList(packingIds), true)); } + + /** + * 执行钢卷打包操作 + */ + @Log(title = "钢卷打包", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping("/execute") + public R executePacking(@Validated(AddGroup.class) @RequestBody WmsCoilPackingRecordBo bo) { + return toAjax(iWmsCoilPackingRecordService.packing(bo)); + } } diff --git a/klp-wms/src/main/java/com/klp/domain/bo/WmsCoilPackingDetailBo.java b/klp-wms/src/main/java/com/klp/domain/bo/WmsCoilPackingDetailBo.java index e9f32939..ba7079ac 100644 --- a/klp-wms/src/main/java/com/klp/domain/bo/WmsCoilPackingDetailBo.java +++ b/klp-wms/src/main/java/com/klp/domain/bo/WmsCoilPackingDetailBo.java @@ -59,4 +59,7 @@ public class WmsCoilPackingDetailBo extends BaseEntity { private String remark; + private String saleName; + + } diff --git a/klp-wms/src/main/java/com/klp/domain/bo/WmsCoilPackingRecordBo.java b/klp-wms/src/main/java/com/klp/domain/bo/WmsCoilPackingRecordBo.java index 2623fe36..a3aa693a 100644 --- a/klp-wms/src/main/java/com/klp/domain/bo/WmsCoilPackingRecordBo.java +++ b/klp-wms/src/main/java/com/klp/domain/bo/WmsCoilPackingRecordBo.java @@ -7,6 +7,7 @@ import javax.validation.constraints.*; import java.math.BigDecimal; import java.util.Date; +import java.util.List; import com.fasterxml.jackson.annotation.JsonFormat; /** @@ -80,5 +81,10 @@ public class WmsCoilPackingRecordBo extends BaseEntity { */ private String remark; + /** + * 打包明细列表 + */ + private List details; + } diff --git a/klp-wms/src/main/java/com/klp/service/IWmsCoilPackingRecordService.java b/klp-wms/src/main/java/com/klp/service/IWmsCoilPackingRecordService.java index 2f332852..a960ad27 100644 --- a/klp-wms/src/main/java/com/klp/service/IWmsCoilPackingRecordService.java +++ b/klp-wms/src/main/java/com/klp/service/IWmsCoilPackingRecordService.java @@ -46,4 +46,12 @@ public interface IWmsCoilPackingRecordService { * 校验并批量删除钢卷打包记录主(打包待发区专用)信息 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 执行钢卷打包操作 + * + * @param bo 打包业务对象 + * @return 是否成功 + */ + Boolean packing(WmsCoilPackingRecordBo bo); } diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsCoilPackingRecordServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsCoilPackingRecordServiceImpl.java index 7c0b62c8..b8f5bf11 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsCoilPackingRecordServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsCoilPackingRecordServiceImpl.java @@ -6,15 +6,24 @@ import com.klp.common.core.domain.PageQuery; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.klp.common.helper.LoginHelper; import com.klp.common.utils.StringUtils; +import com.klp.domain.WmsCoilPackingDetail; +import com.klp.domain.WmsMaterialCoil; +import com.klp.domain.bo.WmsCoilPackingDetailBo; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import com.klp.domain.bo.WmsCoilPackingRecordBo; import com.klp.domain.vo.WmsCoilPackingRecordVo; import com.klp.domain.WmsCoilPackingRecord; import com.klp.mapper.WmsCoilPackingRecordMapper; +import com.klp.mapper.WmsCoilPackingDetailMapper; +import com.klp.mapper.WmsMaterialCoilMapper; import com.klp.service.IWmsCoilPackingRecordService; +import java.math.BigDecimal; +import java.util.Date; import java.util.List; import java.util.Map; import java.util.Collection; @@ -30,6 +39,8 @@ import java.util.Collection; public class WmsCoilPackingRecordServiceImpl implements IWmsCoilPackingRecordService { private final WmsCoilPackingRecordMapper baseMapper; + private final WmsMaterialCoilMapper wmsMaterialCoilMapper; + private final WmsCoilPackingDetailMapper detailMapper; /** * 查询钢卷打包记录主(打包待发区专用) @@ -115,4 +126,77 @@ public class WmsCoilPackingRecordServiceImpl implements IWmsCoilPackingRecordSer } return baseMapper.deleteBatchIds(ids) > 0; } + + /** + * 执行钢卷打包操作 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean packing(WmsCoilPackingRecordBo bo) { + List details = bo.getDetails(); + if (details == null || details.isEmpty()) { + throw new RuntimeException("打包明细不能为空"); + } + + BigDecimal totalGrossWeight = BigDecimal.ZERO; + BigDecimal totalNetWeight = BigDecimal.ZERO; + + for (WmsCoilPackingDetailBo detailBo : details) { + Long coilId = detailBo.getCoilId(); + Long toWarehouseId = detailBo.getToWarehouseId(); + String saleName = detailBo.getSaleName(); + + if (coilId == null || toWarehouseId == null) { + throw new RuntimeException("钢卷ID和目标库区ID不能为空"); + } + + WmsMaterialCoil coil = wmsMaterialCoilMapper.selectById(coilId); + if (coil == null) { + throw new RuntimeException("钢卷不存在,coilId: " + coilId); + } + + detailBo.setFromWarehouseId(coil.getWarehouseId()); + detailBo.setCoilGrossWeight(coil.getGrossWeight()); + detailBo.setCoilNetWeight(coil.getNetWeight()); + + totalGrossWeight = totalGrossWeight.add(coil.getGrossWeight() != null ? coil.getGrossWeight() : BigDecimal.ZERO); + totalNetWeight = totalNetWeight.add(coil.getNetWeight() != null ? coil.getNetWeight() : BigDecimal.ZERO); + + WmsMaterialCoil updateCoil = new WmsMaterialCoil(); + updateCoil.setCoilId(coilId); + updateCoil.setWarehouseId(toWarehouseId); + updateCoil.setSaleName(saleName); + wmsMaterialCoilMapper.updateById(updateCoil); + } + + WmsCoilPackingRecord record = new WmsCoilPackingRecord(); + record.setPackingNo(bo.getPackingNo()); + record.setCoilCount((long) details.size()); + record.setTotalGrossWeight(totalGrossWeight); + record.setTotalNetWeight(totalNetWeight); + record.setSaleName(bo.getSaleName()); + record.setBatchNo(bo.getBatchNo()); + record.setPackingStatus(1); + record.setPackingTime(new Date()); + record.setPackingBy(bo.getPackingBy()); + record.setWarehouseRemark(bo.getWarehouseRemark()); + record.setRemark(bo.getRemark()); + + baseMapper.insert(record); + + for (WmsCoilPackingDetailBo detailBo : details) { + WmsCoilPackingDetail detail = new WmsCoilPackingDetail(); + detail.setPackingId(record.getPackingId()); + detail.setCoilId(detailBo.getCoilId()); + detail.setFromWarehouseId(detailBo.getFromWarehouseId()); + detail.setToWarehouseId(detailBo.getToWarehouseId()); + detail.setCoilGrossWeight(detailBo.getCoilGrossWeight()); + detail.setCoilNetWeight(detailBo.getCoilNetWeight()); + detail.setRemark(detailBo.getRemark()); + + detailMapper.insert(detail); + } + + return true; + } }