Compare commits

...

8 Commits

14 changed files with 172 additions and 256 deletions

View File

@ -38,7 +38,6 @@ import com.ktg.common.enums.BusinessType;
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;
import static com.ktg.common.utils.SecurityUtils.getUsername;
import static com.ktg.generator.util.MultiModuleCodeGenerator.generateTaskCode; import static com.ktg.generator.util.MultiModuleCodeGenerator.generateTaskCode;
/** /**
@ -1094,30 +1093,30 @@ public class BaseKnifeController extends BaseController {
wmsInPlanTemp.setCreateTime(DateUtils.getNowDate()); wmsInPlanTemp.setCreateTime(DateUtils.getNowDate());
// 入库任务明细 // 入库任务明细
List<WmsInPlanDetails> wmsInPlanDetailsList = new ArrayList<>(); List<WmsInPlanDetail> wmsInPlanDetailList = new ArrayList<>();
WmsInPlanDetails wmsInPlanDetails = new WmsInPlanDetails(); WmsInPlanDetail wmsInPlanDetail = new WmsInPlanDetail();
wmsInPlanDetails.setMaterialId(zdTask.getmProductId().toString()); wmsInPlanDetail.setMaterialId(zdTask.getmProductId().toString());
wmsInPlanDetails.setBatch(batchNum); wmsInPlanDetail.setBatch(batchNum);
wmsInPlanDetails.setCellId(1L); wmsInPlanDetail.setCellId(1L);
wmsInPlanDetails.setQuantity(zdTask.getProductIdQty().toString()); wmsInPlanDetail.setQuantity(zdTask.getProductIdQty().toString());
wmsInPlanDetails.setQuantityIn(zdTask.getProductIdQty().toString()); wmsInPlanDetail.setQuantityIn(zdTask.getProductIdQty().toString());
wmsInPlanDetails.setPlanInStatus("0"); wmsInPlanDetail.setPlanInStatus("0");
wmsInPlanDetailsList.add(wmsInPlanDetails); wmsInPlanDetailList.add(wmsInPlanDetail);
wmsInPlanTemp.setWmsInPlanDetailsList(wmsInPlanDetailsList); wmsInPlanTemp.setWmsInPlanDetailsList(wmsInPlanDetailList);
wmsInPlanService.insertWmsInPlan(wmsInPlanTemp); wmsInPlanService.insertWmsInPlan(wmsInPlanTemp);
wmsInPlan = wmsInPlanTemp; wmsInPlan = wmsInPlanTemp;
} else { } else {
// 入库任务明细 // 入库任务明细
List<WmsInPlanDetails> wmsInPlanDetailsList = wmsInPlan.getWmsInPlanDetailsList(); List<WmsInPlanDetail> wmsInPlanDetailList = wmsInPlan.getWmsInPlanDetailsList();
WmsInPlanDetails wmsInPlanDetails = new WmsInPlanDetails(); WmsInPlanDetail wmsInPlanDetail = new WmsInPlanDetail();
wmsInPlanDetails.setMaterialId(zdTask.getmProductId().toString()); wmsInPlanDetail.setMaterialId(zdTask.getmProductId().toString());
wmsInPlanDetails.setBatch(batchNum); wmsInPlanDetail.setBatch(batchNum);
wmsInPlanDetails.setCellId(1L); wmsInPlanDetail.setCellId(1L);
wmsInPlanDetails.setQuantity(zdTask.getProductIdQty().toString()); wmsInPlanDetail.setQuantity(zdTask.getProductIdQty().toString());
wmsInPlanDetails.setQuantityIn(zdTask.getProductIdQty().toString()); wmsInPlanDetail.setQuantityIn(zdTask.getProductIdQty().toString());
wmsInPlanDetails.setPlanInStatus("0"); wmsInPlanDetail.setPlanInStatus("0");
wmsInPlanDetailsList.add(wmsInPlanDetails); wmsInPlanDetailList.add(wmsInPlanDetail);
wmsInPlan.setWmsInPlanDetailsList(wmsInPlanDetailsList); wmsInPlan.setWmsInPlanDetailsList(wmsInPlanDetailList);
wmsInPlanService.updateWmsInPlan(wmsInPlan); wmsInPlanService.updateWmsInPlan(wmsInPlan);
} }

View File

@ -64,7 +64,11 @@ public class WmsOutTaskController extends BaseController {
@PutMapping("/open/run/{wmsOutTaskIds}") @PutMapping("/open/run/{wmsOutTaskIds}")
public AjaxResult openRun(@PathVariable Long[] wmsOutTaskIds) throws JAXBException { public AjaxResult openRun(@PathVariable Long[] wmsOutTaskIds) throws JAXBException {
return toAjax(wmsOutTaskService.runWmsOutTask(wmsOutTaskIds)); try {
return toAjax(wmsOutTaskService.runWmsOutTask(wmsOutTaskIds));
} catch (JAXBException e) {
throw new RuntimeException(e);
}
} }
/** /**

View File

@ -13,12 +13,20 @@ public interface IBaseKnifeService
{ {
/** /**
* 查询工具台账 * 查询工具台账
* *
* @param baseKnifeId 工具台账主键 * @param baseKnifeId 工具台账主键
* @return 工具台账 * @return 工具台账 包含基础物料信息BOM清单
*/ */
public BaseKnife selectBaseKnifeByBaseKnifeId(Long baseKnifeId); public BaseKnife selectBaseKnifeByBaseKnifeId(Long baseKnifeId);
/**
* 查询工具台账
*
* @param rfid 工具台账主键
* @return 工具台账 包含物料基础信息
*/
public BaseKnife selectBaseKnifeByRfid(String rfid);
/** /**
* 查询工具台账列表 * 查询工具台账列表
* *

View File

@ -1,27 +1,15 @@
package com.ktg.mes.md.service.impl; package com.ktg.mes.md.service.impl;
import com.ktg.common.annotation.DataSource;
import com.ktg.common.enums.DataSourceType;
import com.ktg.generator.util.MultiModuleCodeGenerator;
import com.ktg.mes.md.domain.AP0AE; import com.ktg.mes.md.domain.AP0AE;
import com.ktg.mes.md.domain.MdItem;
import com.ktg.mes.md.mapper.AP0AEMapper; import com.ktg.mes.md.mapper.AP0AEMapper;
import com.ktg.mes.md.service.IAP0AEService; import com.ktg.mes.md.service.IAP0AEService;
import com.ktg.mes.md.service.IMdItemService; import com.ktg.mes.md.service.IMdItemService;
import com.ktg.mes.wm.domain.WmStorageArea;
import com.ktg.mes.wm.domain.WmsInPlan;
import com.ktg.mes.wm.domain.WmsInPlanDetails;
import com.ktg.mes.wm.domain.WmsInTask;
import com.ktg.mes.wm.service.IWmStorageAreaService; import com.ktg.mes.wm.service.IWmStorageAreaService;
import com.ktg.mes.wm.service.IWmsInPlanService; import com.ktg.mes.wm.service.IWmsInPlanService;
import com.ktg.mes.wm.service.IWmsInTaskService; import com.ktg.mes.wm.service.IWmsInTaskService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List; import java.util.List;
/** /**

View File

@ -12,6 +12,7 @@ import com.ktg.mes.wm.service.impl.WmsInPlanDetailEntityServiceImpl;
import jcifs.smb.NtlmPasswordAuthentication; import jcifs.smb.NtlmPasswordAuthentication;
import jcifs.smb.SmbFile; import jcifs.smb.SmbFile;
import jcifs.smb.SmbFileInputStream; import jcifs.smb.SmbFileInputStream;
import lombok.RequiredArgsConstructor;
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 org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -36,37 +37,14 @@ import java.util.*;
* @date 2024-10-31 * @date 2024-10-31
*/ */
@Service @Service
@RequiredArgsConstructor
public class BaseKnifeServiceImpl implements IBaseKnifeService { public class BaseKnifeServiceImpl implements IBaseKnifeService {
@Autowired private final BaseKnifeMapper baseKnifeMapper;
private BaseKnifeMapper baseKnifeMapper; private final WmsOutPlanMapper wmsOutPlanMapper;
private final WmsOutPlanDetailEntityMapper wmsOutPlanDetailEntityMapper;
private final WmsBusinessTypeMapper wmsBusinessTypeMapper;
private final WmsInPlanDetailEntityServiceImpl wmsInPlanDetailEntityService;
@Autowired
private WmsOutPlanMapper wmsOutPlanMapper;
@Autowired
private WmsOutPlanDetailEntityMapper wmsOutPlanDetailEntityMapper;
@Autowired
private WmsOutTaskMapper wmsOutTaskMapper;
@Autowired
private WmsBusinessTypeMapper wmsBusinessTypeMapper;
@Autowired
private WmsInPlanDetailEntityMapper wmsInPlanDetailEntityMapper;
@Autowired
private WmsInPlanDetailEntityServiceImpl wmsInPlanDetailEntityService;
@Autowired
private MyConfig myConfig;
/**
* 查询工具台账
*
* @param baseKnifeId 工具台账主键
* @return 工具台账
*/
@Override @Override
public BaseKnife selectBaseKnifeByBaseKnifeId(Long baseKnifeId) { public BaseKnife selectBaseKnifeByBaseKnifeId(Long baseKnifeId) {
BaseKnife baseKnife = baseKnifeMapper.selectBaseKnifeByBaseKnifeId(baseKnifeId); BaseKnife baseKnife = baseKnifeMapper.selectBaseKnifeByBaseKnifeId(baseKnifeId);
@ -79,6 +57,17 @@ public class BaseKnifeServiceImpl implements IBaseKnifeService {
return baseKnife; return baseKnife;
} }
/**
* 查询工具台账
*
* @param rfid 工具台账主键
* @return 工具台账
*/
@Override
public BaseKnife selectBaseKnifeByRfid(String rfid) {
return baseKnifeMapper.selectBaseKnifeByRfid(rfid);
}
/** /**
* 查询工具台账列表 * 查询工具台账列表
* *

View File

@ -88,22 +88,7 @@ public class WmsInPlanController extends BaseController {
@Log(title = "入库计划", businessType = BusinessType.INSERT) @Log(title = "入库计划", businessType = BusinessType.INSERT)
@PostMapping @PostMapping
public AjaxResult add(@RequestBody WmsInPlan wmsInPlan) { public AjaxResult add(@RequestBody WmsInPlan wmsInPlan) {
// 校验是否指定了库区 wmsInPlanService.autoCell(wmsInPlan);
if (wmsInPlan.getLocationCode() != null && !wmsInPlan.getLocationCode().isEmpty()) {
wmsInPlan.getWmsInPlanDetailsList().forEach(wmsInPlanDetails -> {
// 获得物料ID
MdItem mdItemById = mdItemMapper.selectMdItemById(Long.parseLong(wmsInPlanDetails.getMaterialId()));
if (mdItemById == null) throw new RuntimeException("操作失败,该物料不存在");
// 根据限定条件自动获取库位
WmStorageArea wmStorageArea = wmStorageLocationService.queryOneAreaByLocationCode(wmsInPlan.getLocationCode(), mdItemById.getAttr3() == 1);
if (wmStorageArea == null) throw new RuntimeException("操作失败,缺少空闲库位");
// 设定库位
wmsInPlanDetails.setCellId(wmStorageArea.getAreaId());
});
}
return toAjax(wmsInPlanService.insertWmsInPlan(wmsInPlan)); return toAjax(wmsInPlanService.insertWmsInPlan(wmsInPlan));
} }

View File

@ -167,7 +167,7 @@ public class WmsInPlan extends BaseEntity {
/** /**
* 入库计划明细信息 * 入库计划明细信息
*/ */
private List<WmsInPlanDetails> wmsInPlanDetailsList; private List<WmsInPlanDetail> wmsInPlanDetailList;
public void setPlanId(Long planId) { public void setPlanId(Long planId) {
this.planId = planId; this.planId = planId;
@ -361,12 +361,12 @@ public class WmsInPlan extends BaseEntity {
this.planTypeCode = planTypeCode; this.planTypeCode = planTypeCode;
} }
public List<WmsInPlanDetails> getWmsInPlanDetailsList() { public List<WmsInPlanDetail> getWmsInPlanDetailsList() {
return wmsInPlanDetailsList; return wmsInPlanDetailList;
} }
public void setWmsInPlanDetailsList(List<WmsInPlanDetails> wmsInPlanDetailsList) { public void setWmsInPlanDetailsList(List<WmsInPlanDetail> wmsInPlanDetailList) {
this.wmsInPlanDetailsList = wmsInPlanDetailsList; this.wmsInPlanDetailList = wmsInPlanDetailList;
} }
public String getLocationCode() { public String getLocationCode() {

View File

@ -1,5 +1,7 @@
package com.ktg.mes.wm.domain; package com.ktg.mes.wm.domain;
import lombok.Getter;
import lombok.Setter;
import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle; import org.apache.commons.lang3.builder.ToStringStyle;
import com.ktg.common.annotation.Excel; import com.ktg.common.annotation.Excel;
@ -13,7 +15,9 @@ import java.util.List;
* @author yinjinlu * @author yinjinlu
* @date 2024-10-31 * @date 2024-10-31
*/ */
public class WmsInPlanDetails extends BaseEntity @Setter
@Getter
public class WmsInPlanDetail extends BaseEntity
{ {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@ -60,103 +64,6 @@ public class WmsInPlanDetails extends BaseEntity
private List<WmsInPlanDetailEntity> wmsInPlanDetailEntityList; private List<WmsInPlanDetailEntity> wmsInPlanDetailEntityList;
public void setDetailsId(Long detailsId) {
this.detailsId = detailsId;
}
public Long getDetailsId()
{
return detailsId;
}
public void setPlanId(Long planId) {
this.planId = planId;
}
public Long getPlanId() {
return planId;
}
public void setMaterialId(String materialId)
{
this.materialId = materialId;
}
public String getMaterialId()
{
return materialId;
}
public void setBatch(String batch)
{
this.batch = batch;
}
public String getBatch()
{
return batch;
}
public void setCellId(Long cellId)
{
this.cellId = cellId;
}
public Long getCellId()
{
return cellId;
}
public void setQuantity(String quantity)
{
this.quantity = quantity;
}
public String getQuantity()
{
return quantity;
}
public void setQuantityIn(String quantityIn)
{
this.quantityIn = quantityIn;
}
public String getQuantityIn()
{
return quantityIn;
}
public void setPlanInStatus(String planInStatus)
{
this.planInStatus = planInStatus;
}
public String getPlanInStatus()
{
return planInStatus;
}
public void setIsActivy(String isActivy)
{
this.isActivy = isActivy;
}
public String getIsActivy()
{
return isActivy;
}
public void setIsDelete(String isDelete)
{
this.isDelete = isDelete;
}
public String getIsDelete()
{
return isDelete;
}
public List<WmsInPlanDetailEntity> getWmsInPlanDetailEntityList() {
return wmsInPlanDetailEntityList;
}
public void setWmsInPlanDetailEntityList(List<WmsInPlanDetailEntity> wmsInPlanDetailEntityList) {
this.wmsInPlanDetailEntityList = wmsInPlanDetailEntityList;
}
@Override @Override
public String toString() { public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)

View File

@ -2,7 +2,7 @@ package com.ktg.mes.wm.mapper;
import java.util.List; import java.util.List;
import com.ktg.mes.wm.domain.WmsInPlan; import com.ktg.mes.wm.domain.WmsInPlan;
import com.ktg.mes.wm.domain.WmsInPlanDetails; import com.ktg.mes.wm.domain.WmsInPlanDetail;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
/** /**
@ -73,10 +73,10 @@ public interface WmsInPlanMapper
/** /**
* 批量新增入库计划明细 * 批量新增入库计划明细
* *
* @param wmsInPlanDetailsList 入库计划明细列表 * @param wmsInPlanDetailList 入库计划明细列表
* @return 结果 * @return 结果
*/ */
public int batchWmsInPlanDetails(List<WmsInPlanDetails> wmsInPlanDetailsList); public int batchWmsInPlanDetails(List<WmsInPlanDetail> wmsInPlanDetailList);
/** /**
@ -96,5 +96,5 @@ public interface WmsInPlanMapper
*/ */
public Boolean isDuplicatePlanCode(String planCode); public Boolean isDuplicatePlanCode(String planCode);
WmsInPlanDetails selectWmsInPlanDetailById(Long planDetailsId); WmsInPlanDetail selectWmsInPlanDetailById(Long planDetailsId);
} }

View File

@ -72,8 +72,20 @@ public interface IWmsInPlanService
/** /**
* 执行入库计划 * 执行入库计划
*
* @param planId 入库计划ID * @param planId 入库计划ID
* @return 结果
*/ */
public int issueWmsInPlan(Long planId); public void issueWmsInPlan(Long planId);
/**
* 创建并执行入库计划
* @param wmsInPlan 入库计划
*/
public void insertAndIssueWmsInPlan(WmsInPlan wmsInPlan);
/**
* 分配库位
* @param wmsInPlan 入库计划
*/
public void autoCell(WmsInPlan wmsInPlan);
} }

View File

@ -70,7 +70,7 @@ public class WmsInPlanDetailEntityServiceImpl implements IWmsInPlanDetailEntityS
// 获取入库计划 // 获取入库计划
WmsBusinessType wmsBusinessType = wmsBusinessTypeMapper.selectWmsBusinessTypeByTypeId(wmsInPlan.getPlanTypeId().toString()); WmsBusinessType wmsBusinessType = wmsBusinessTypeMapper.selectWmsBusinessTypeByTypeId(wmsInPlan.getPlanTypeId().toString());
for (WmsInPlanDetails detail : wmsInPlan.getWmsInPlanDetailsList()) { for (WmsInPlanDetail detail : wmsInPlan.getWmsInPlanDetailsList()) {
// 匹配入库明细 // 匹配入库明细
if (detail.getDetailsId().equals(entity.getPlanDetailsId())) { if (detail.getDetailsId().equals(entity.getPlanDetailsId())) {
System.out.println("---" + detail.getDetailsId() + "+测试+" + entity.getPlanDetailsId()); System.out.println("---" + detail.getDetailsId() + "+测试+" + entity.getPlanDetailsId());

View File

@ -52,15 +52,15 @@ public class WmsInPlanServiceImpl implements IWmsInPlanService {
@Override @Override
public WmsInPlan selectWmsInPlanByPlanId(Long planId) { public WmsInPlan selectWmsInPlanByPlanId(Long planId) {
WmsInPlan wmsInPlan = wmsInPlanMapper.selectWmsInPlanByPlanId(planId); WmsInPlan wmsInPlan = wmsInPlanMapper.selectWmsInPlanByPlanId(planId);
List<WmsInPlanDetails> wmsInPlanDetailsList = new ArrayList<>(); List<WmsInPlanDetail> wmsInPlanDetailList = new ArrayList<>();
wmsInPlan.getWmsInPlanDetailsList().forEach(detail -> { wmsInPlan.getWmsInPlanDetailsList().forEach(detail -> {
WmsInPlanDetailEntity wmsInPlanDetailEntityQuery = new WmsInPlanDetailEntity(); WmsInPlanDetailEntity wmsInPlanDetailEntityQuery = new WmsInPlanDetailEntity();
wmsInPlanDetailEntityQuery.setPlanDetailsId(detail.getDetailsId()); wmsInPlanDetailEntityQuery.setPlanDetailsId(detail.getDetailsId());
List<WmsInPlanDetailEntity> wmsInPlanDetailEntityList = wmsInPlanDetailEntityMapper.selectWmsInPlanDetailEntityList(wmsInPlanDetailEntityQuery); List<WmsInPlanDetailEntity> wmsInPlanDetailEntityList = wmsInPlanDetailEntityMapper.selectWmsInPlanDetailEntityList(wmsInPlanDetailEntityQuery);
detail.setWmsInPlanDetailEntityList(wmsInPlanDetailEntityList); detail.setWmsInPlanDetailEntityList(wmsInPlanDetailEntityList);
wmsInPlanDetailsList.add(detail); wmsInPlanDetailList.add(detail);
}); });
wmsInPlan.setWmsInPlanDetailsList(wmsInPlanDetailsList); wmsInPlan.setWmsInPlanDetailsList(wmsInPlanDetailList);
return wmsInPlan; return wmsInPlan;
} }
@ -83,6 +83,7 @@ public class WmsInPlanServiceImpl implements IWmsInPlanService {
/** /**
* 同步小型刀具库数据 * 同步小型刀具库数据
*/ */
@Transactional
@Override @Override
public int asyncSmallKnifeData() { public int asyncSmallKnifeData() {
// List<AP0AE> ap0aeList = ap0AEMapper.selectInNewData(); // List<AP0AE> ap0aeList = ap0AEMapper.selectInNewData();
@ -90,7 +91,6 @@ public class WmsInPlanServiceImpl implements IWmsInPlanService {
int count = 0; int count = 0;
inventoryAdjustments.stream().filter(adjustment -> adjustment.getBillDate() != null).forEach(ap0ae -> { inventoryAdjustments.stream().filter(adjustment -> adjustment.getBillDate() != null).forEach(ap0ae -> {
WmsInPlan wmsInPlan = new WmsInPlan(); WmsInPlan wmsInPlan = new WmsInPlan();
wmsInPlan.setPlanCode(MultiModuleCodeGenerator.generateTaskCode("RKP"));
// 发布人 // 发布人
wmsInPlan.setPublishName(ap0ae.getDataEntryClerk()); wmsInPlan.setPublishName(ap0ae.getDataEntryClerk());
// 计划日期 // 计划日期
@ -109,16 +109,16 @@ public class WmsInPlanServiceImpl implements IWmsInPlanService {
MdItem mdItem = mdItemService.selectMdItemByCode(ap0ae.getProductNumber()); MdItem mdItem = mdItemService.selectMdItemByCode(ap0ae.getProductNumber());
//-- 入库计划详情 //-- 入库计划详情
WmsInPlanDetails wmsInPlanDetails = new WmsInPlanDetails(); WmsInPlanDetail wmsInPlanDetail = new WmsInPlanDetail();
// 状态-待执行 // 状态-待执行
wmsInPlanDetails.setPlanInStatus("0"); wmsInPlanDetail.setPlanInStatus("0");
// 库位ID // 库位ID
wmsInPlanDetails.setCellId(wmStorageArea.getAreaId()); wmsInPlanDetail.setCellId(wmStorageArea.getAreaId());
wmsInPlanDetails.setQuantity(ap0ae.getQuantity().toString()); wmsInPlanDetail.setQuantity(ap0ae.getQuantity().toString());
wmsInPlanDetails.setQuantityIn(ap0ae.getQuantity().toString()); wmsInPlanDetail.setQuantityIn(ap0ae.getQuantity().toString());
wmsInPlanDetails.setMaterialId(mdItem.getItemId().toString()); wmsInPlanDetail.setMaterialId(mdItem.getItemId().toString());
wmsInPlan.setWmsInPlanDetailsList(Collections.singletonList(wmsInPlanDetails)); wmsInPlan.setWmsInPlanDetailsList(Collections.singletonList(wmsInPlanDetail));
this.insertWmsInPlan(wmsInPlan); this.insertWmsInPlan(wmsInPlan);
// 执行入库计划 // 执行入库计划
@ -206,24 +206,24 @@ public class WmsInPlanServiceImpl implements IWmsInPlanService {
* @param wmsInPlan 入库计划对象 * @param wmsInPlan 入库计划对象
*/ */
public void insertWmsInPlanDetails(WmsInPlan wmsInPlan) { public void insertWmsInPlanDetails(WmsInPlan wmsInPlan) {
List<WmsInPlanDetails> wmsInPlanDetailsList = wmsInPlan.getWmsInPlanDetailsList(); List<WmsInPlanDetail> wmsInPlanDetailList = wmsInPlan.getWmsInPlanDetailsList();
Long planId = wmsInPlan.getPlanId(); Long planId = wmsInPlan.getPlanId();
if (StringUtils.isNotNull(wmsInPlanDetailsList)) { if (StringUtils.isNotNull(wmsInPlanDetailList)) {
List<WmsInPlanDetails> list = new ArrayList<>(); List<WmsInPlanDetail> list = new ArrayList<>();
for (WmsInPlanDetails wmsInPlanDetails : wmsInPlanDetailsList) { for (WmsInPlanDetail wmsInPlanDetail : wmsInPlanDetailList) {
wmsInPlanDetails.setPlanId(planId); wmsInPlanDetail.setPlanId(planId);
list.add(wmsInPlanDetails); list.add(wmsInPlanDetail);
} }
if (!list.isEmpty()) { if (!list.isEmpty()) {
wmsInPlanMapper.batchWmsInPlanDetails(list); wmsInPlanMapper.batchWmsInPlanDetails(list);
WmsInPlan wmsInPlan1 = selectWmsInPlanByPlanId(planId); WmsInPlan wmsInPlan1 = selectWmsInPlanByPlanId(planId);
List<WmsInPlanDetails> wmsInPlanDetailsList1 = wmsInPlan1.getWmsInPlanDetailsList(); List<WmsInPlanDetail> wmsInPlanDetailList1 = wmsInPlan1.getWmsInPlanDetailsList();
for (int i = 0; i < list.size(); i++) { for (int i = 0; i < list.size(); i++) {
List<WmsInPlanDetailEntity> wmsInPlanDetailEntityList = list.get(i).getWmsInPlanDetailEntityList(); List<WmsInPlanDetailEntity> wmsInPlanDetailEntityList = list.get(i).getWmsInPlanDetailEntityList();
wmsInPlanDetailsList1.get(i).setWmsInPlanDetailEntityList(wmsInPlanDetailEntityList); wmsInPlanDetailList1.get(i).setWmsInPlanDetailEntityList(wmsInPlanDetailEntityList);
wmsInPlanDetailEntityMapper.deleteWmsInPlanDetailEntityByPlanDetailsId(wmsInPlanDetailsList1.get(i).getDetailsId()); wmsInPlanDetailEntityMapper.deleteWmsInPlanDetailEntityByPlanDetailsId(wmsInPlanDetailList1.get(i).getDetailsId());
// 插入实例 // 插入实例
insertWmsInPlanDetailEntity(wmsInPlanDetailsList1.get(i)); insertWmsInPlanDetailEntity(wmsInPlanDetailList1.get(i));
} }
} }
} }
@ -232,12 +232,12 @@ public class WmsInPlanServiceImpl implements IWmsInPlanService {
/** /**
* 新增入库计划明细实例 * 新增入库计划明细实例
* *
* @param wmsInPlanDetails 入库计划明细对象 * @param wmsInPlanDetail 入库计划明细对象
*/ */
public void insertWmsInPlanDetailEntity(WmsInPlanDetails wmsInPlanDetails) { public void insertWmsInPlanDetailEntity(WmsInPlanDetail wmsInPlanDetail) {
List<WmsInPlanDetailEntity> wmsInPlanDetailEntityList = wmsInPlanDetails.getWmsInPlanDetailEntityList(); List<WmsInPlanDetailEntity> wmsInPlanDetailEntityList = wmsInPlanDetail.getWmsInPlanDetailEntityList();
Long planId = wmsInPlanDetails.getPlanId(); Long planId = wmsInPlanDetail.getPlanId();
Long planDetailsId = wmsInPlanDetails.getDetailsId(); Long planDetailsId = wmsInPlanDetail.getDetailsId();
if (StringUtils.isNotNull(wmsInPlanDetailEntityList)) { if (StringUtils.isNotNull(wmsInPlanDetailEntityList)) {
ArrayList<WmsInPlanDetailEntity> list = new ArrayList<>(); ArrayList<WmsInPlanDetailEntity> list = new ArrayList<>();
for (WmsInPlanDetailEntity wmsInPlanDetailEntity : wmsInPlanDetailEntityList) { for (WmsInPlanDetailEntity wmsInPlanDetailEntity : wmsInPlanDetailEntityList) {
@ -268,10 +268,10 @@ public class WmsInPlanServiceImpl implements IWmsInPlanService {
* 执行入库计划 * 执行入库计划
* *
* @param planId 入库计划ID * @param planId 入库计划ID
* @return 结果
*/ */
@Override @Override
public int issueWmsInPlan(Long planId) { @Transactional
public void issueWmsInPlan(Long planId) {
WmsInPlan wmsInPlan = selectWmsInPlanByPlanId(planId); WmsInPlan wmsInPlan = selectWmsInPlanByPlanId(planId);
WmsInTask wmsInTask = new WmsInTask(); WmsInTask wmsInTask = new WmsInTask();
@ -299,6 +299,42 @@ public class WmsInPlanServiceImpl implements IWmsInPlanService {
}); });
wmsInPlan.setState("1"); wmsInPlan.setState("1");
return wmsInPlanMapper.updateWmsInPlan(wmsInPlan); wmsInPlanMapper.updateWmsInPlan(wmsInPlan);
}
/**
* 创建并执行入库计划
*
* @param wmsInPlan 入库计划
*/
@Transactional
@Override
public void insertAndIssueWmsInPlan(WmsInPlan wmsInPlan) {
this.insertWmsInPlan(wmsInPlan);
this.issueWmsInPlan(wmsInPlan.getPlanId());
}
/**
* 自动分配库位
*
* @param wmsInPlan 入库计划
*/
@Override
public void autoCell(WmsInPlan wmsInPlan) {
// 校验是否指定了库区
if (StringUtils.isNotEmpty(wmsInPlan.getLocationCode())) {
wmsInPlan.getWmsInPlanDetailsList().forEach(wmsInPlanDetails -> {
// 获得物料ID
MdItem mdItemById = mdItemService.selectMdItemById(Long.parseLong(wmsInPlanDetails.getMaterialId()));
if (mdItemById == null) throw new RuntimeException("操作失败,该物料不存在");
// 根据限定条件自动获取库位
WmStorageArea wmStorageArea = wmStorageLocationService.queryOneAreaByLocationCode(wmsInPlan.getLocationCode(), mdItemById.getAttr3() == 1);
if (wmStorageArea == null) throw new RuntimeException("操作失败,缺少空闲库位");
// 设定库位
wmsInPlanDetails.setCellId(wmStorageArea.getAreaId());
});
}
} }
} }

View File

@ -1,29 +1,17 @@
package com.ktg.mes.wm.service.impl; package com.ktg.mes.wm.service.impl;
import java.io.IOException;
import java.util.*; import java.util.*;
import com.alibaba.fastjson.JSON;
import com.ktg.common.constant.UserConstants; import com.ktg.common.constant.UserConstants;
import com.ktg.common.core.domain.AjaxResult; import com.ktg.common.core.domain.AjaxResult;
import com.ktg.common.utils.DateUtils; import com.ktg.common.utils.DateUtils;
import com.ktg.common.utils.StringUtils; import com.ktg.common.utils.StringUtils;
import com.ktg.generator.util.MultiModuleCodeGenerator; import com.ktg.generator.util.MultiModuleCodeGenerator;
import com.ktg.mes.cal.utils.CalendarUtil;
import com.ktg.mes.md.domain.*; import com.ktg.mes.md.domain.*;
import com.ktg.mes.md.mapper.*; import com.ktg.mes.md.mapper.*;
import com.ktg.mes.md.service.IBaseKnifeService;
import com.ktg.mes.md.service.IBaseTechnologyBomService;
import com.ktg.mes.md.service.IBomRouteService;
import com.ktg.mes.md.service.IMdItemService;
import com.ktg.mes.wm.domain.*; import com.ktg.mes.wm.domain.*;
import com.ktg.mes.wm.mapper.*; import com.ktg.mes.wm.mapper.*;
import com.ktg.mes.wm.service.IWmStorageAreaService;
import com.ktg.mes.wm.service.IWmsInPlanService; import com.ktg.mes.wm.service.IWmsInPlanService;
import com.ktg.mes.wm.service.IWmsInTaskService;
import com.ktg.system.mapper.SysOperLogMapper;
import com.ktg.system.service.ISysOperLogService;
import okhttp3.*;
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.service.IWmsZdTaskService; import com.ktg.mes.wm.service.IWmsZdTaskService;
@ -436,14 +424,14 @@ public class WmsZdTaskServiceImpl implements IWmsZdTaskService
wmsInPlanTemp.setCreateTime(DateUtils.getNowDate()); wmsInPlanTemp.setCreateTime(DateUtils.getNowDate());
// 入库任务明细 // 入库任务明细
List<WmsInPlanDetails> wmsInPlanDetailsList = new ArrayList<>(); List<WmsInPlanDetail> wmsInPlanDetailList = new ArrayList<>();
WmsInPlanDetails wmsInPlanDetails = new WmsInPlanDetails(); WmsInPlanDetail wmsInPlanDetail = new WmsInPlanDetail();
wmsInPlanDetails.setMaterialId(zdTask.getmProductId().toString()); wmsInPlanDetail.setMaterialId(zdTask.getmProductId().toString());
wmsInPlanDetails.setBatch(batchNum); wmsInPlanDetail.setBatch(batchNum);
wmsInPlanDetails.setCellId(wmStorageArea.getAreaId()); wmsInPlanDetail.setCellId(wmStorageArea.getAreaId());
wmsInPlanDetails.setQuantity(zdTask.getProductIdQty().toString()); wmsInPlanDetail.setQuantity(zdTask.getProductIdQty().toString());
wmsInPlanDetails.setQuantityIn(zdTask.getProductIdQty().toString()); wmsInPlanDetail.setQuantityIn(zdTask.getProductIdQty().toString());
wmsInPlanDetails.setPlanInStatus("0"); wmsInPlanDetail.setPlanInStatus("0");
// 构建入库明细实体 // 构建入库明细实体
List<WmsInPlanDetailEntity> wmsInPlanDetailEntityList = new ArrayList<>(); List<WmsInPlanDetailEntity> wmsInPlanDetailEntityList = new ArrayList<>();
baseKnifeList.forEach(baseKnife -> { baseKnifeList.forEach(baseKnife -> {
@ -451,23 +439,23 @@ public class WmsZdTaskServiceImpl implements IWmsZdTaskService
wmsInPlanDetailEntity.setKnifeId(baseKnife.getBaseKnifeId()); wmsInPlanDetailEntity.setKnifeId(baseKnife.getBaseKnifeId());
wmsInPlanDetailEntityList.add(wmsInPlanDetailEntity); wmsInPlanDetailEntityList.add(wmsInPlanDetailEntity);
}); });
wmsInPlanDetails.setWmsInPlanDetailEntityList(wmsInPlanDetailEntityList); wmsInPlanDetail.setWmsInPlanDetailEntityList(wmsInPlanDetailEntityList);
wmsInPlanDetailsList.add(wmsInPlanDetails); wmsInPlanDetailList.add(wmsInPlanDetail);
wmsInPlanTemp.setWmsInPlanDetailsList(wmsInPlanDetailsList); wmsInPlanTemp.setWmsInPlanDetailsList(wmsInPlanDetailList);
wmsInPlanService.insertWmsInPlan(wmsInPlanTemp); wmsInPlanService.insertWmsInPlan(wmsInPlanTemp);
wmsInPlan = wmsInPlanTemp; wmsInPlan = wmsInPlanTemp;
} else { } else {
// 入库任务明细 // 入库任务明细
List<WmsInPlanDetails> wmsInPlanDetailsList = wmsInPlan.getWmsInPlanDetailsList(); List<WmsInPlanDetail> wmsInPlanDetailList = wmsInPlan.getWmsInPlanDetailsList();
WmsInPlanDetails wmsInPlanDetails = new WmsInPlanDetails(); WmsInPlanDetail wmsInPlanDetail = new WmsInPlanDetail();
wmsInPlanDetails.setMaterialId(zdTask.getmProductId().toString()); wmsInPlanDetail.setMaterialId(zdTask.getmProductId().toString());
wmsInPlanDetails.setBatch(batchNum); wmsInPlanDetail.setBatch(batchNum);
wmsInPlanDetails.setCellId(wmStorageArea.getAreaId()); wmsInPlanDetail.setCellId(wmStorageArea.getAreaId());
wmsInPlanDetails.setQuantity(zdTask.getProductIdQty().toString()); wmsInPlanDetail.setQuantity(zdTask.getProductIdQty().toString());
wmsInPlanDetails.setQuantityIn(zdTask.getProductIdQty().toString()); wmsInPlanDetail.setQuantityIn(zdTask.getProductIdQty().toString());
wmsInPlanDetails.setPlanInStatus("0"); wmsInPlanDetail.setPlanInStatus("0");
wmsInPlanDetailsList.add(wmsInPlanDetails); wmsInPlanDetailList.add(wmsInPlanDetail);
wmsInPlan.setWmsInPlanDetailsList(wmsInPlanDetailsList); wmsInPlan.setWmsInPlanDetailsList(wmsInPlanDetailList);
wmsInPlanService.updateWmsInPlan(wmsInPlan); wmsInPlanService.updateWmsInPlan(wmsInPlan);
} }

View File

@ -37,11 +37,11 @@
</resultMap> </resultMap>
<resultMap id="WmsInPlanWmsInPlanDetailsResult" type="WmsInPlan" extends="WmsInPlanResult"> <resultMap id="WmsInPlanWmsInPlanDetailsResult" type="WmsInPlan" extends="WmsInPlanResult">
<collection property="wmsInPlanDetailsList" notNullColumn="sub_DETAILS_ID" javaType="java.util.List" <collection property="wmsInPlanDetailList" notNullColumn="sub_DETAILS_ID" javaType="java.util.List"
resultMap="WmsInPlanDetailsResult"/> resultMap="WmsInPlanDetailsResult"/>
</resultMap> </resultMap>
<resultMap type="WmsInPlanDetails" id="WmsInPlanDetailsResult"> <resultMap type="WmsInPlanDetail" id="WmsInPlanDetailsResult">
<result property="detailsId" column="sub_DETAILS_ID"/> <result property="detailsId" column="sub_DETAILS_ID"/>
<result property="planId" column="sub_PLAN_ID"/> <result property="planId" column="sub_PLAN_ID"/>
<result property="materialId" column="sub_MATERIAL_ID"/> <result property="materialId" column="sub_MATERIAL_ID"/>
@ -59,7 +59,7 @@
<result property="isDelete" column="sub_IS_DELETE"/> <result property="isDelete" column="sub_IS_DELETE"/>
</resultMap> </resultMap>
<resultMap type="WmsInPlanDetails" id="BizWmsInPlanDetailsResult"> <resultMap type="WmsInPlanDetail" id="BizWmsInPlanDetailsResult">
<result property="detailsId" column="sub_DETAILS_ID"/> <result property="detailsId" column="sub_DETAILS_ID"/>
<result property="planId" column="sub_PLAN_ID"/> <result property="planId" column="sub_PLAN_ID"/>
<result property="materialId" column="sub_MATERIAL_ID"/> <result property="materialId" column="sub_MATERIAL_ID"/>