完成手动组刀

This commit is contained in:
Stang 2024-11-15 10:43:04 +08:00
parent ffa6dc4e99
commit f82a1fb830
7 changed files with 499 additions and 152 deletions

View File

@ -6,7 +6,6 @@ import javax.servlet.http.HttpServletResponse;
import com.alibaba.fastjson.JSON;
import com.ktg.common.utils.DateUtils;
import com.ktg.generator.util.MultiModuleCodeGenerator;
import com.ktg.mes.md.domain.*;
import com.ktg.mes.md.mapper.WmsOutPlanDetailEntityMapper;
import com.ktg.mes.md.mapper.WmsOutPlanMapper;
@ -19,9 +18,9 @@ import com.ktg.mes.wm.service.IWmsInTaskService;
import com.ktg.mes.wm.service.IWmsZdTaskService;
import com.ktg.system.domain.SysOperLog;
import com.ktg.system.service.ISysOperLogService;
import org.codehaus.jackson.map.Serializers;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import com.ktg.common.annotation.Log;
import com.ktg.common.core.controller.BaseController;
@ -305,6 +304,7 @@ public class BaseKnifeController extends BaseController {
@PostMapping("/open/productionArrangements/{planSheet}")
@ResponseBody
@Transactional
public AjaxResult productionArrangements(@PathVariable String planSheet, @RequestBody List<String> processCodeList) {
// 检查计划单是否已存在
@ -647,6 +647,7 @@ public class BaseKnifeController extends BaseController {
baseKnife.setStandardQuantity("1");
baseKnife.setKnifeLife(100);
baseKnife.setKnifeFineState(1);
baseKnife.setIsValid(1);
// 判断是否需要锁定整刀
if (lockedFlag) {
baseKnife.setIsLocked(1);
@ -699,7 +700,7 @@ public class BaseKnifeController extends BaseController {
wmsBaseKnife.setKnifeFineState(2);
wmsBaseKnife.setLockedStartTime(technologyBom.getLockedStartTime());
wmsBaseKnife.setLockedEndTime(technologyBom.getLockedEndTime());
wmsBaseKnife.setAttr1(baseKnife.getBaseKnifeId());
wmsBaseKnife.setParentId(baseKnife.getBaseKnifeId());
wmsBaseKnife.setPlanSheet(zdTask.getAttr4());
baseKnifeListOutPlan.add(wmsBaseKnife);
baseKnifeService.updateBaseKnife(wmsBaseKnife);
@ -768,68 +769,66 @@ public class BaseKnifeController extends BaseController {
mdItemService.updateMdItem(mdItem);
}
// 整刀入库计划, 根据图号查询入库计划如果不存在生成计划存在则往计划中添加任务
WmsInPlan wmsInPlan = wmsInPlanService.selectWmsInPlanByPlanCode(zdTask.getAttr4());
if (wmsInPlan == null) {
WmsInPlan wmsInPlanTemp = new WmsInPlan();
wmsInPlanTemp.setState("1");
wmsInPlanTemp.setSourceType("SGLR");
wmsInPlanTemp.setCellCode(zdTask.getAttr3());
wmsInPlanTemp.setPlanCode(zdTask.getAttr4() == null ? zdTask.getCode() : zdTask.getAttr4());
wmsInPlanTemp.setRelBillCode("组装单据");
wmsInPlanTemp.setPlanTypeId("13");
wmsInPlanTemp.setCreateBy(getUsername());
wmsInPlanTemp.setCreateTime(DateUtils.getNowDate());
// // 整刀入库计划, 根据图号查询入库计划如果不存在生成计划存在则往计划中添加任务
// WmsInPlan wmsInPlan = wmsInPlanService.selectWmsInPlanByPlanCode(zdTask.getAttr4());
// if (wmsInPlan == null) {
// WmsInPlan wmsInPlanTemp = new WmsInPlan();
// wmsInPlanTemp.setState("1");
// wmsInPlanTemp.setSourceType("SGLR");
// wmsInPlanTemp.setCellCode(zdTask.getAttr3());
// wmsInPlanTemp.setPlanCode(zdTask.getAttr4() == null ? zdTask.getCode() : zdTask.getAttr4());
// wmsInPlanTemp.setRelBillCode("组装单据");
// wmsInPlanTemp.setPlanTypeId("13");
// wmsInPlanTemp.setCreateBy(getUsername());
// wmsInPlanTemp.setCreateTime(DateUtils.getNowDate());
//
// // 入库任务明细
// List<WmsInPlanDetails> wmsInPlanDetailsList = new ArrayList<>();
// WmsInPlanDetails wmsInPlanDetails = new WmsInPlanDetails();
// wmsInPlanDetails.setMaterialId(zdTask.getmProductId().toString());
// wmsInPlanDetails.setBatch(batchNum);
// wmsInPlanDetails.setCellId(1L);
// wmsInPlanDetails.setQuantity(zdTask.getProductIdQty().toString());
// wmsInPlanDetails.setQuantityIn(zdTask.getProductIdQty().toString());
// wmsInPlanDetails.setPlanInStatus("0");
// wmsInPlanDetailsList.add(wmsInPlanDetails);
// wmsInPlanTemp.setWmsInPlanDetailsList(wmsInPlanDetailsList);
// wmsInPlanService.insertWmsInPlan(wmsInPlanTemp);
// wmsInPlan = wmsInPlanTemp;
// } else {
// // 入库任务明细
// List<WmsInPlanDetails> wmsInPlanDetailsList = wmsInPlan.getWmsInPlanDetailsList();
// WmsInPlanDetails wmsInPlanDetails = new WmsInPlanDetails();
// wmsInPlanDetails.setMaterialId(zdTask.getmProductId().toString());
// wmsInPlanDetails.setBatch(batchNum);
// wmsInPlanDetails.setCellId(1L);
// wmsInPlanDetails.setQuantity(zdTask.getProductIdQty().toString());
// wmsInPlanDetails.setQuantityIn(zdTask.getProductIdQty().toString());
// wmsInPlanDetails.setPlanInStatus("0");
// wmsInPlanDetailsList.add(wmsInPlanDetails);
// wmsInPlan.setWmsInPlanDetailsList(wmsInPlanDetailsList);
// wmsInPlanService.updateWmsInPlan(wmsInPlan);
// }
//
// // 入库任务
// MdItem mdItem = mdItemService.selectMdItemById(zdTask.getmProductId());
// WmsInTask wmsInTask = new WmsInTask();
// // 生成任务号
// String taskInCode = MultiModuleCodeGenerator.generateTaskCode("RKT");
// wmsInTask.setTaskInCode(taskInCode);
// wmsInTask.setPlanInId(wmsInPlan.getPlanId().toString());
// wmsInTask.setPlanInCode(wmsInPlan.getPlanCode());
// wmsInTask.setMaterialCode(mdItem.getItemCode());
// wmsInTask.setTaskInQuantity(zdTask.getProductIdQty());
// wmsInTask.setActualInQuantity(zdTask.getProductIdQty());
// WmStorageArea wmStorageArea = wmStorageAreaService.selectWmStorageAreaByAreaCode(zdTask.getAttr3());
// wmsInTask.setCellTgt(wmStorageArea.getAreaId());
// wmsInTask.setBatch(batchNum);
// wmsInTask.setMaterialId(zdTask.getmProductId().toString());
// wmsInTask.setPlanTypeId("9");
// wmsInTask.setPlanInStatus("1");
// wmsInTaskService.insertWmsInTask(wmsInTask);
// 入库任务明细
List<WmsInPlanDetails> wmsInPlanDetailsList = new ArrayList<>();
WmsInPlanDetails wmsInPlanDetails = new WmsInPlanDetails();
wmsInPlanDetails.setMaterialId(zdTask.getmProductId().toString());
wmsInPlanDetails.setBatch(batchNum);
wmsInPlanDetails.setCellId(1L);
wmsInPlanDetails.setQuantity(zdTask.getProductIdQty().toString());
wmsInPlanDetails.setQuantityIn(zdTask.getProductIdQty().toString());
wmsInPlanDetails.setPlanInStatus("0");
wmsInPlanDetailsList.add(wmsInPlanDetails);
wmsInPlanTemp.setWmsInPlanDetailsList(wmsInPlanDetailsList);
wmsInPlanService.insertWmsInPlan(wmsInPlanTemp);
wmsInPlan = wmsInPlanTemp;
} else {
// 入库任务明细
List<WmsInPlanDetails> wmsInPlanDetailsList = wmsInPlan.getWmsInPlanDetailsList();
WmsInPlanDetails wmsInPlanDetails = new WmsInPlanDetails();
wmsInPlanDetails.setMaterialId(zdTask.getmProductId().toString());
wmsInPlanDetails.setBatch(batchNum);
wmsInPlanDetails.setCellId(1L);
wmsInPlanDetails.setQuantity(zdTask.getProductIdQty().toString());
wmsInPlanDetails.setQuantityIn(zdTask.getProductIdQty().toString());
wmsInPlanDetails.setPlanInStatus("0");
wmsInPlanDetailsList.add(wmsInPlanDetails);
wmsInPlan.setWmsInPlanDetailsList(wmsInPlanDetailsList);
wmsInPlanService.updateWmsInPlan(wmsInPlan);
}
// 入库任务
MdItem mdItem = mdItemService.selectMdItemById(zdTask.getmProductId());
WmsInTask wmsInTask = new WmsInTask();
// 生成任务号
String taskInCode = MultiModuleCodeGenerator.generateTaskCode("RKT");
wmsInTask.setTaskInCode(taskInCode);
wmsInTask.setPlanInId(wmsInPlan.getPlanId().toString());
wmsInTask.setPlanInCode(wmsInPlan.getPlanCode());
wmsInTask.setMaterialCode(mdItem.getItemCode());
wmsInTask.setTaskInQuantity(zdTask.getProductIdQty());
wmsInTask.setActualInQuantity(zdTask.getProductIdQty());
WmStorageArea wmStorageArea = wmStorageAreaService.selectWmStorageAreaByAreaCode(zdTask.getAttr3());
wmsInTask.setCellTgt(wmStorageArea.getAreaId());
wmsInTask.setBatch(batchNum);
wmsInTask.setMaterialId(zdTask.getmProductId().toString());
wmsInTask.setPlanTypeId("9");
wmsInTask.setPlanInStatus("1");
wmsInTaskService.insertWmsInTask(wmsInTask);
// 更新数量
mdItemService.updateMdItem(mdItem);
// 更新组装任务
zdTask.setStatus("1");

View File

@ -102,6 +102,8 @@ public class BaseKnife extends BaseEntity {
@Excel(name = "是否锁定")
private Integer isLocked;
private Long zdTaskId;
/**
* 库区编码
*/
@ -157,6 +159,12 @@ public class BaseKnife extends BaseEntity {
@Excel(name = "预留字段4")
private String attr4;
@Excel(name = "父物料id")
private Long parentId;
@Excel(name = "是否有效")
private Integer isValid;
/**
* 物料产品信息
*/
@ -383,6 +391,30 @@ public class BaseKnife extends BaseEntity {
this.inInfoList = inInfoList;
}
public Long getParentId() {
return parentId;
}
public void setParentId(Long parentId) {
this.parentId = parentId;
}
public Integer getIsValid() {
return isValid;
}
public void setIsValid(Integer isValid) {
this.isValid = isValid;
}
public Long getZdTaskId() {
return zdTaskId;
}
public void setZdTaskId(Long zdTaskId) {
this.zdTaskId = zdTaskId;
}
@Override
public String toString() {
return "BaseKnife{" +

View File

@ -102,4 +102,6 @@ public interface BaseKnifeMapper {
);
long countBaseKnife(@Param("mbbBdMrlId") Long mbbBdMrlId);
List<BaseKnife> selectBaseKnifeNotValidList(BaseKnife baseKnifeWrapper);
}

View File

@ -17,7 +17,7 @@ public class WmsZdTask extends BaseEntity
private static final long serialVersionUID = 1L;
/** 主键 */
private String wmsZdTaskId;
private Long wmsZdTaskId;
/** 编码 */
@Excel(name = "编码")
@ -50,6 +50,17 @@ public class WmsZdTask extends BaseEntity
@Excel(name = "已完成数量")
private Integer qtyOk;
private Long bomId;
private String itemName;
private String areaName;
private Long areaId;
private String processCode;
/** 预留字段1 */
@Excel(name = "预留字段1")
private Long attr1;
@ -72,12 +83,14 @@ public class WmsZdTask extends BaseEntity
@Excel(name = "完成状态")
private String status;
public void setWmsZdTaskId(String wmsZdTaskId)
private Long technologyBomId;
public void setWmsZdTaskId(Long wmsZdTaskId)
{
this.wmsZdTaskId = wmsZdTaskId;
}
public String getWmsZdTaskId()
public Long getWmsZdTaskId()
{
return wmsZdTaskId;
}
@ -207,6 +220,54 @@ public class WmsZdTask extends BaseEntity
this.planSheet = planSheet;
}
public Long getTechnologyBomId() {
return technologyBomId;
}
public void setTechnologyBomId(Long technologyBomId) {
this.technologyBomId = technologyBomId;
}
public Long getBomId() {
return bomId;
}
public void setBomId(Long bomId) {
this.bomId = bomId;
}
public String getItemName() {
return itemName;
}
public void setItemName(String itemName) {
this.itemName = itemName;
}
public String getAreaName() {
return areaName;
}
public void setAreaName(String areaName) {
this.areaName = areaName;
}
public Long getAreaId() {
return areaId;
}
public void setAreaId(Long areaId) {
this.areaId = areaId;
}
public String getProcessCode() {
return processCode;
}
public void setProcessCode(String processCode) {
this.processCode = processCode;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

View File

@ -25,6 +25,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ktg.mes.wm.mapper.WmsZdTaskMapper;
import com.ktg.mes.wm.service.IWmsZdTaskService;
import org.springframework.transaction.annotation.Transactional;
import static com.ktg.common.utils.SecurityUtils.getUsername;
import static com.ktg.generator.util.MultiModuleCodeGenerator.generateTaskCode;
@ -58,7 +59,7 @@ public class WmsZdTaskServiceImpl implements IWmsZdTaskService
private WmStorageAreaMapper wmStorageAreaMapper;
@Autowired
private WmsInPlanMapper wmsInPlanMapper;
private IWmsInPlanService wmsInPlanService;
@Autowired
private WmsInTaskMapper wmsInTaskMapper;
@ -149,11 +150,12 @@ public class WmsZdTaskServiceImpl implements IWmsZdTaskService
}
@Override
@Transactional
public AjaxResult createOutTaskByWmsZdTask(WmsZdTask zdTask) {
String batchNum = "ZZPC001";
// 判断物料是否充足
BomRoute bomRoute = bomRouteMapper.selectBomRouteByBomRouteId(zdTask.getAttr1());
BomRoute bomRoute = bomRouteMapper.selectBomRouteByBomRouteId(zdTask.getBomId());
BaseKnife baseKnifeWrapper = new BaseKnife();
List<BaseKnife> baseKnifeList = new ArrayList<>();
@ -172,15 +174,22 @@ public class WmsZdTaskServiceImpl implements IWmsZdTaskService
List<WmsOutPlanDetail> wmsOutPlanDetailList = new ArrayList<>();
List<BaseKnife> baseKnifeListOutPlan = new ArrayList<>();
// 查询工艺bom
BaseTechnologyBom technologyBom = new BaseTechnologyBom();
Boolean lockedFlag = false;
// attr4 组装任务所属计划单 如果为空则是手动组装任务不需要锁定
if (zdTask.getPlanSheet() != null) {
lockedFlag = true;
}
// 出库基础物料 根据图号查询出库计划如果不存在生成计划存在则往计划中添加任务
WmsOutPlan outPlan = wmsOutPlanMapper.selectWmsOutPlanByPlanCode(zdTask.getAttr4());
if (outPlan == null){
WmsOutPlan outPlan = wmsOutPlanMapper.selectWmsOutPlanByPlanCode(zdTask.getPlanSheet());
if (outPlan == null) {
// 构建新的出库计划
WmsOutPlan outPlanTemp = new WmsOutPlan();
outPlanTemp.setPlanCode(zdTask.getAttr4() == null ? zdTask.getCode() : zdTask.getAttr4());
outPlanTemp.setWmsBusinessTypeId(12L);
outPlanTemp.setPlanCode(zdTask.getPlanSheet() == null ? zdTask.getCode() : zdTask.getPlanSheet());
// 组刀出库
outPlanTemp.setWmsBusinessTypeId(16L);
outPlanTemp.setPlanState("1");
outPlanTemp.setPlanType("ZDCK");
outPlanTemp.setCreateBy(getUsername());
@ -189,52 +198,98 @@ public class WmsZdTaskServiceImpl implements IWmsZdTaskService
outPlan = outPlanTemp;
}
// 出库任务
for (MbbProduBom mbbProduBom : bomRoute.getMbbProduBomList()) {
// 出库任务进行基础物料的出库
MdItem mdItemOutPlan = mdItemMapper.selectMdItemById(mbbProduBom.getMdItemId());
WmsOutPlanDetail outPlanDetail = new WmsOutPlanDetail();
outPlanDetail.setWmsOutPlanId(outPlan.getWmsOutPlanId());
outPlanDetail.setMdItemId(mbbProduBom.getMdItemId());
outPlanDetail.setMdItemCode(mdItemOutPlan.getItemCode());
outPlanDetail.setMdItemName(mdItemOutPlan.getItemName());
outPlanDetail.setMdItemUnit(mdItemOutPlan.getUnitName());
outPlanDetail.setPlannedQuantity(mbbProduBom.getStandardDosage() * zdTask.getProductIdQty());
outPlanDetail.setRealQuantity(mbbProduBom.getStandardDosage() * zdTask.getProductIdQty());
outPlanDetail.setDetailBatchNum(batchNum);
// 查询库位信息
WmStorageArea wmStorageArea = wmStorageAreaMapper.selectWmStorageAreaByAreaCode(zdTask.getAttr3());
outPlanDetail.setWmStorageAreaId(wmStorageArea.getAreaId());
outPlanDetail.setWmStorageAreaCode(wmStorageArea.getAreaCode());
outPlanDetail.setWmStorageAreaName(wmStorageArea.getAreaName());
outPlanDetail.setDetailState("1");
wmsOutPlanDetailList.add(outPlanDetail);
// 锁定物料
Boolean outPlanFlag = true;
for (int i = 0; i < zdTask.getProductIdQty(); i++) {
// 构建整刀
BaseKnife baseKnife = new BaseKnife();
MdItem mdItem = mdItemMapper.selectMdItemById(zdTask.getmProductId());
baseKnife.setMbbBdMrlId(zdTask.getmProductId());
baseKnife.setKnifeCode(mdItem.getItemCode());
baseKnife.setKnifeName(mdItem.getItemName());
baseKnife.setKnifeUnit(mdItem.getUnitName());
baseKnife.setKnifeType(mdItem.getItemTypeName());
WmStorageArea wmStorageArea = wmStorageAreaMapper.selectWmStorageAreaByAreaId(zdTask.getAreaId());
baseKnife.setAreaCode(wmStorageArea.getAreaCode());
baseKnife.setSafeStock(mdItem.getMinStock());
baseKnife.setStandardQuantity("1");
baseKnife.setKnifeLife(100);
baseKnife.setKnifeFineState(1);
baseKnife.setIsValid(1);
baseKnife.setZdTaskId(zdTask.getWmsZdTaskId());
// 判断是否需要锁定整刀
if (lockedFlag) {
baseKnife.setIsLocked(1);
baseKnife.setLockedStartTime(technologyBom.getLockedStartTime());
baseKnife.setLockedEndTime(technologyBom.getLockedEndTime());
} else {
baseKnife.setIsLocked(0);
}
// attr4 计划编码 整刀
baseKnife.setPlanSheet(zdTask.getPlanSheet());
baseKnife.setItemOrProduct("PRODUCT");
baseKnife.setCreateBy(getUsername());
baseKnife.setCreateTime(DateUtils.getNowDate());
baseKnifeMapper.insertBaseKnife(baseKnife);
// 查询未锁定的物料
baseKnifeWrapper.setMbbBdMrlId(mbbProduBom.getMdItemId());
baseKnifeWrapper.setIsLocked(0);
baseKnifeList = baseKnifeMapper.selectBaseKnifeList(baseKnifeWrapper);
// 锁定物料
int resetCount = 0;
for (MbbProduBom mbbProduBom : bomRoute.getMbbProduBomList()) {
// 查询未锁定的物料
baseKnifeWrapper.setMbbBdMrlId(mbbProduBom.getMdItemId());
baseKnifeWrapper.setIsLocked(0);
baseKnifeList = baseKnifeMapper.selectBaseKnifeList(baseKnifeWrapper);
// 锁定基础 物料
int bomCount = mbbProduBom.getStandardDosage();
for (BaseKnife wmsBaseKnife : baseKnifeList){
if (bomCount > 0){
wmsBaseKnife.setIsLocked(1);
wmsBaseKnife.setKnifeFineState(2);
wmsBaseKnife.setLockedStartTime(technologyBom.getLockedStartTime());
wmsBaseKnife.setLockedEndTime(technologyBom.getLockedEndTime());
// wmsBaseKnife.setAttr1(baseKnife.getBaseKnifeId());
wmsBaseKnife.setPlanSheet(zdTask.getAttr4());
baseKnifeListOutPlan.add(wmsBaseKnife);
baseKnifeMapper.updateBaseKnife(wmsBaseKnife);
bomCount--;
if (outPlanFlag) {
// 出库任务进行基础物料的出库
MdItem mdItemOutPlan = mdItemMapper.selectMdItemById(mbbProduBom.getMdItemId());
WmsOutPlanDetail outPlanDetail = new WmsOutPlanDetail();
outPlanDetail.setWmsOutPlanId(outPlan.getWmsOutPlanId());
outPlanDetail.setMdItemId(mbbProduBom.getMdItemId());
outPlanDetail.setMdItemCode(mdItemOutPlan.getItemCode());
outPlanDetail.setMdItemName(mdItemOutPlan.getItemName());
outPlanDetail.setMdItemUnit(mdItemOutPlan.getUnitName());
outPlanDetail.setPlannedQuantity(mbbProduBom.getStandardDosage() * zdTask.getProductIdQty());
outPlanDetail.setRealQuantity(mbbProduBom.getStandardDosage() * zdTask.getProductIdQty());
outPlanDetail.setDetailBatchNum(batchNum);
// 查询库位信息
wmStorageArea = wmStorageAreaMapper.selectWmStorageAreaByAreaId(zdTask.getAreaId());
outPlanDetail.setWmStorageAreaId(wmStorageArea.getAreaId());
outPlanDetail.setWmStorageAreaCode(wmStorageArea.getAreaCode());
outPlanDetail.setWmStorageAreaName(wmStorageArea.getAreaName());
outPlanDetail.setDetailState("1");
wmsOutPlanDetailList.add(outPlanDetail);
}
// 锁定基础 物料
int bomCount = mbbProduBom.getStandardDosage();
for (BaseKnife wmsBaseKnife : baseKnifeList) {
if (bomCount > 0) {
wmsBaseKnife.setZdTaskId(zdTask.getWmsZdTaskId());
wmsBaseKnife.setIsLocked(1);
wmsBaseKnife.setKnifeFineState(2);
wmsBaseKnife.setLockedStartTime(technologyBom.getLockedStartTime());
wmsBaseKnife.setLockedEndTime(technologyBom.getLockedEndTime());
wmsBaseKnife.setParentId(baseKnife.getBaseKnifeId());
wmsBaseKnife.setPlanSheet(zdTask.getPlanSheet());
baseKnifeListOutPlan.add(wmsBaseKnife);
baseKnifeMapper.updateBaseKnife(wmsBaseKnife);
bomCount--;
// 记录刀片重置次数
resetCount += wmsBaseKnife.getResetCount();
}
}
}
// 更新重置次数
outPlanFlag = false;
baseKnife.setResetCount(resetCount - 1);
baseKnifeMapper.updateBaseKnife(baseKnife);
}
// 出库
int i = 0;
for (WmsOutPlanDetail outPlanDetail : wmsOutPlanDetailList){
for (WmsOutPlanDetail outPlanDetail : wmsOutPlanDetailList) {
wmsOutPlanMapper.insertWmsOutPlanDetail(outPlanDetail);
// 出库计划明细绑定实体
@ -280,56 +335,166 @@ public class WmsZdTaskServiceImpl implements IWmsZdTaskService
wmsOutTaskMapper.insertWmsOutTask(wmsOutTask);
}
// 更新组装任务
zdTask.setStatus("1");
zdTask.setQtyOk(zdTask.getProductIdQty());
// zdTask.setQtyOk(zdTask.getProductIdQty());
wmsZdTaskMapper.updateWmsZdTask(zdTask);
return AjaxResult.success();
// String batchNum = "ZZPC001";
//
// // 判断物料是否充足
// BomRoute bomRoute = bomRouteMapper.selectBomRouteByBomRouteId(zdTask.getAttr1());
// BaseKnife baseKnifeWrapper = new BaseKnife();
// List<BaseKnife> baseKnifeList = new ArrayList<>();
//
// // 遍历组装整刀需要的bom物料
// for (MbbProduBom mbbProduBom : bomRoute.getMbbProduBomList()) {
// // 查找未锁定的物料
// baseKnifeWrapper.setMbbBdMrlId(mbbProduBom.getMdItemId());
// baseKnifeWrapper.setIsLocked(0);
// baseKnifeList = baseKnifeMapper.selectBaseKnifeList(baseKnifeWrapper);
//
// // 如果未锁定的物料不足所需数量
// if (baseKnifeList.size() < mbbProduBom.getStandardDosage() * zdTask.getProductIdQty())
// return AjaxResult.error("bom物料不足进行组装" + mbbProduBom.getMdItemCode());
// }
//
// List<WmsOutPlanDetail> wmsOutPlanDetailList = new ArrayList<>();
// List<BaseKnife> baseKnifeListOutPlan = new ArrayList<>();
//
// BaseTechnologyBom technologyBom = new BaseTechnologyBom();
//
// // 出库基础物料 根据图号查询出库计划如果不存在生成计划存在则往计划中添加任务
// WmsOutPlan outPlan = wmsOutPlanMapper.selectWmsOutPlanByPlanCode(zdTask.getAttr4());
// if (outPlan == null){
// // 构建新的出库计划
// WmsOutPlan outPlanTemp = new WmsOutPlan();
// outPlanTemp.setPlanCode(zdTask.getAttr4() == null ? zdTask.getCode() : zdTask.getAttr4());
// outPlanTemp.setWmsBusinessTypeId(12L);
// outPlanTemp.setPlanState("1");
// outPlanTemp.setPlanType("ZDCK");
// outPlanTemp.setCreateBy(getUsername());
// outPlanTemp.setCreateTime(DateUtils.getNowDate());
// wmsOutPlanMapper.insertWmsOutPlan(outPlanTemp);
// outPlan = outPlanTemp;
// }
//
// // 出库任务
// for (MbbProduBom mbbProduBom : bomRoute.getMbbProduBomList()) {
// // 出库任务进行基础物料的出库
// MdItem mdItemOutPlan = mdItemMapper.selectMdItemById(mbbProduBom.getMdItemId());
// WmsOutPlanDetail outPlanDetail = new WmsOutPlanDetail();
// outPlanDetail.setWmsOutPlanId(outPlan.getWmsOutPlanId());
// outPlanDetail.setMdItemId(mbbProduBom.getMdItemId());
// outPlanDetail.setMdItemCode(mdItemOutPlan.getItemCode());
// outPlanDetail.setMdItemName(mdItemOutPlan.getItemName());
// outPlanDetail.setMdItemUnit(mdItemOutPlan.getUnitName());
// outPlanDetail.setPlannedQuantity(mbbProduBom.getStandardDosage() * zdTask.getProductIdQty());
// outPlanDetail.setRealQuantity(mbbProduBom.getStandardDosage() * zdTask.getProductIdQty());
// outPlanDetail.setDetailBatchNum(batchNum);
// // 查询库位信息
// WmStorageArea wmStorageArea = wmStorageAreaMapper.selectWmStorageAreaByAreaCode(zdTask.getAttr3());
// outPlanDetail.setWmStorageAreaId(wmStorageArea.getAreaId());
// outPlanDetail.setWmStorageAreaCode(wmStorageArea.getAreaCode());
// outPlanDetail.setWmStorageAreaName(wmStorageArea.getAreaName());
// outPlanDetail.setDetailState("1");
// wmsOutPlanDetailList.add(outPlanDetail);
//
// // 查询未锁定的物料
// baseKnifeWrapper.setMbbBdMrlId(mbbProduBom.getMdItemId());
// baseKnifeWrapper.setIsLocked(0);
// baseKnifeList = baseKnifeMapper.selectBaseKnifeList(baseKnifeWrapper);
//
// // 锁定基础 物料
// int bomCount = mbbProduBom.getStandardDosage();
// for (BaseKnife wmsBaseKnife : baseKnifeList){
// if (bomCount > 0){
// wmsBaseKnife.setIsLocked(1);
// wmsBaseKnife.setKnifeFineState(2);
// wmsBaseKnife.setLockedStartTime(technologyBom.getLockedStartTime());
// wmsBaseKnife.setLockedEndTime(technologyBom.getLockedEndTime());
//// wmsBaseKnife.setAttr1(baseKnife.getBaseKnifeId());
// wmsBaseKnife.setPlanSheet(zdTask.getAttr4());
// baseKnifeListOutPlan.add(wmsBaseKnife);
// baseKnifeMapper.updateBaseKnife(wmsBaseKnife);
// bomCount--;
// }
// }
// }
//
// // 出库
// int i = 0;
// for (WmsOutPlanDetail outPlanDetail : wmsOutPlanDetailList){
// wmsOutPlanMapper.insertWmsOutPlanDetail(outPlanDetail);
//
// // 出库计划明细绑定实体
// for (int j = 0; j < outPlanDetail.getPlannedQuantity(); j++) {
// WmsOutPlanDetailEntity wmsOutPlanDetailEntity = new WmsOutPlanDetailEntity();
// wmsOutPlanDetailEntity.setBaseKnifeId(baseKnifeListOutPlan.get(i).getBaseKnifeId());
// wmsOutPlanDetailEntity.setAreaCode(baseKnifeListOutPlan.get(i).getAreaCode());
// wmsOutPlanDetailEntity.setItemOrProduct(baseKnifeListOutPlan.get(i).getItemOrProduct());
// wmsOutPlanDetailEntity.setKnifeCode(baseKnifeListOutPlan.get(i).getKnifeCode());
// wmsOutPlanDetailEntity.setKnifeName(baseKnifeListOutPlan.get(i).getKnifeName());
// wmsOutPlanDetailEntity.setPlanSheet(baseKnifeListOutPlan.get(i).getPlanSheet());
// wmsOutPlanDetailEntity.setKnifeLife(baseKnifeListOutPlan.get(i).getKnifeLife());
// wmsOutPlanDetailEntity.setResetCount(baseKnifeListOutPlan.get(i).getResetCount());
// wmsOutPlanDetailEntity.setKnifeUnit(baseKnifeListOutPlan.get(i).getKnifeUnit());
// wmsOutPlanDetailEntity.setSafeStock(baseKnifeListOutPlan.get(i).getKnifeType());
// wmsOutPlanDetailEntity.setStandardQuantity(baseKnifeListOutPlan.get(i++).getStandardQuantity());
// wmsOutPlanDetailEntity.setWmsOutPlanDetailId(outPlanDetail.getWmsOutPlanDetailId());
// wmsOutPlanDetailEntity.setCreateBy(getUsername());
// wmsOutPlanDetailEntity.setCreateTime(DateUtils.getNowDate());
// wmsOutPlanDetailEntityMapper.insertWmsOutPlanDetailEntity(wmsOutPlanDetailEntity);
// }
//
// // 生成出库任务
// WmsOutTask wmsOutTask = new WmsOutTask();
// wmsOutTask.setWmsOutPlanId(outPlan.getWmsOutPlanId());
// wmsOutTask.setWmsOutPlanCode(outPlan.getPlanCode());
// wmsOutTask.setWmsOutPlanDetailId(outPlanDetail.getWmsOutPlanDetailId());
// // 出库类型 12组刀出库
// wmsOutTask.setWmsBusinessTypeId(12L);
// wmsOutTask.setTaskCode(generateTaskCode(outPlan.getPlanCode()));
// wmsOutTask.setTaskNumber(outPlanDetail.getPlannedQuantity());
// wmsOutTask.setOutNumber(outPlanDetail.getRealQuantity());
// wmsOutTask.setWmStorageAreaId(outPlanDetail.getWmStorageAreaId());
// wmsOutTask.setBatchNum(batchNum);
// wmsOutTask.setMdItemId(outPlanDetail.getMdItemId());
// wmsOutTask.setMdItemCode(outPlanDetail.getMdItemCode());
// wmsOutTask.setMdItemName(outPlanDetail.getMdItemName());
// wmsOutTask.setMdItemUnit(outPlanDetail.getMdItemUnit());
// wmsOutTask.setTaskState("1");
// wmsOutTask.setRecipientUsername("");
// wmsOutTask.setCreateBy(getUsername());
// wmsOutTask.setCreateTime(DateUtils.getNowDate());
// wmsOutTaskMapper.insertWmsOutTask(wmsOutTask);
// }
//
// // 更新组装任务
// zdTask.setStatus("1");
// zdTask.setQtyOk(zdTask.getProductIdQty());
// wmsZdTaskMapper.updateWmsZdTask(zdTask);
// return AjaxResult.success();
}
@Override
@Transactional
public AjaxResult createInTaskByWmsZdTask(WmsZdTask zdTask) {
String batchNum = "ZZPC001";
BaseTechnologyBom technologyBom = new BaseTechnologyBom();
for (int i = 0; i < zdTask.getProductIdQty(); i++) {
// 构建整刀
BaseKnife baseKnife = new BaseKnife();
MdItem mdItem = mdItemMapper.selectMdItemById(zdTask.getmProductId());
baseKnife.setMbbBdMrlId(zdTask.getmProductId());
baseKnife.setKnifeCode(mdItem.getItemCode());
baseKnife.setKnifeName(mdItem.getItemName());
baseKnife.setKnifeUnit(mdItem.getUnitName());
baseKnife.setKnifeType(mdItem.getItemTypeName());
// attr3 库位编码
baseKnife.setAreaCode(zdTask.getAttr3());
baseKnife.setSafeStock(mdItem.getMinStock());
baseKnife.setStandardQuantity("1");
baseKnife.setKnifeLife(100);
baseKnife.setKnifeFineState(1);
// 判断是否需要锁定整刀
baseKnife.setIsLocked(1);
baseKnife.setLockedStartTime(technologyBom.getLockedStartTime());
baseKnife.setLockedEndTime(technologyBom.getLockedEndTime());
// attr4 计划编码 整刀
baseKnife.setPlanSheet(zdTask.getAttr4());
baseKnife.setItemOrProduct("PRODUCT");
baseKnife.setCreateBy(getUsername());
baseKnife.setCreateTime(DateUtils.getNowDate());
baseKnifeMapper.insertBaseKnife(baseKnife);
}
// 整刀入库计划, 根据图号查询入库计划如果不存在生成计划存在则往计划中添加任务
WmsInPlan wmsInPlan = wmsInPlanMapper.selectWmsInPlanByPlanCode(zdTask.getAttr4());
if (wmsInPlan == null){
WmsInPlan wmsInPlan = wmsInPlanService.selectWmsInPlanByPlanCode(zdTask.getPlanSheet());
if (wmsInPlan == null) {
WmsInPlan wmsInPlanTemp = new WmsInPlan();
wmsInPlanTemp.setState("1");
wmsInPlanTemp.setSourceType("SGLR");
wmsInPlanTemp.setCellCode(zdTask.getAttr3());
wmsInPlanTemp.setPlanCode(zdTask.getAttr4() == null ? zdTask.getCode() : zdTask.getAttr4());
WmStorageArea wmStorageArea = wmStorageAreaMapper.selectWmStorageAreaByAreaId(zdTask.getAreaId());
wmsInPlanTemp.setCellCode(wmStorageArea.getAreaCode());
wmsInPlanTemp.setPlanCode(zdTask.getPlanSheet() == null ? zdTask.getCode() : zdTask.getPlanSheet());
wmsInPlanTemp.setRelBillCode("组装单据");
wmsInPlanTemp.setPlanTypeId("13");
wmsInPlanTemp.setCreateBy(getUsername());
@ -346,7 +511,7 @@ public class WmsZdTaskServiceImpl implements IWmsZdTaskService
wmsInPlanDetails.setPlanInStatus("0");
wmsInPlanDetailsList.add(wmsInPlanDetails);
wmsInPlanTemp.setWmsInPlanDetailsList(wmsInPlanDetailsList);
wmsInPlanMapper.insertWmsInPlan(wmsInPlanTemp);
wmsInPlanService.insertWmsInPlan(wmsInPlanTemp);
wmsInPlan = wmsInPlanTemp;
} else {
// 入库任务明细
@ -360,26 +525,41 @@ public class WmsZdTaskServiceImpl implements IWmsZdTaskService
wmsInPlanDetails.setPlanInStatus("0");
wmsInPlanDetailsList.add(wmsInPlanDetails);
wmsInPlan.setWmsInPlanDetailsList(wmsInPlanDetailsList);
wmsInPlanMapper.updateWmsInPlan(wmsInPlan);
wmsInPlanService.updateWmsInPlan(wmsInPlan);
}
// 入库任务
MdItem mdItem = mdItemMapper.selectMdItemById(zdTask.getmProductId());
WmsInTask wmsInTask = new WmsInTask();
wmsInTask.setTaskInCode(MultiModuleCodeGenerator.generateTaskCode("RKT"));
// 生成任务号
String taskInCode = MultiModuleCodeGenerator.generateTaskCode("RKT");
wmsInTask.setTaskInCode(taskInCode);
wmsInTask.setPlanInId(wmsInPlan.getPlanId().toString());
wmsInTask.setPlanInCode(wmsInPlan.getPlanCode());
wmsInTask.setMaterialCode(mdItem.getItemCode());
wmsInTask.setTaskInQuantity(zdTask.getProductIdQty());
wmsInTask.setActualInQuantity(zdTask.getProductIdQty());
WmStorageArea wmStorageArea = wmStorageAreaMapper.selectWmStorageAreaByAreaCode(zdTask.getAttr3());
WmStorageArea wmStorageArea = wmStorageAreaMapper.selectWmStorageAreaByAreaId(zdTask.getAreaId());
wmsInTask.setCellTgt(wmStorageArea.getAreaId());
wmsInTask.setBatch(batchNum);
wmsInTask.setMaterialId(zdTask.getmProductId().toString());
wmsInTask.setPlanTypeId("9");
wmsInTask.setPlanInStatus("1");
wmsInTask.setCreateBy(getUsername());
wmsInTask.setCreateTime(DateUtils.getNowDate());
wmsInTaskMapper.insertWmsInTask(wmsInTask);
// 刀台账设为有效
BaseKnife baseKnifeWrapper = new BaseKnife();
baseKnifeWrapper.setZdTaskId(zdTask.getWmsZdTaskId());
baseKnifeWrapper.setMbbBdMrlId(zdTask.getmProductId());
List<BaseKnife> baseKnifeList = baseKnifeMapper.selectBaseKnifeNotValidList(baseKnifeWrapper);
baseKnifeList.forEach(baseKnife -> {
baseKnife.setIsValid(0);
baseKnife.setCreateTime(DateUtils.getNowDate());
baseKnifeMapper.updateBaseKnife(baseKnife);
});
// 更新组装任务
zdTask.setStatus("2");
zdTask.setQtyOk(zdTask.getProductIdQty());

View File

@ -22,6 +22,9 @@
<result property="planSheet" column="PLAN_SHEET"/>
<result property="resetCount" column="RESET_COUNT"/>
<result property="itemOrProduct" column="ITEM_OR_PRODUCT"/>
<result property="parentId" column="PARENT_ID"/>
<result property="isValid" column="IS_VALID"/>
<result property="zdTaskId" column="ZD_TASK_ID"/>
<result property="remark" column="REMARK"/>
<result property="attr1" column="ATTR1"/>
<result property="attr2" column="ATTR2"/>
@ -70,7 +73,7 @@
<sql id="selectBaseKnifeVo">
SELECT BK.BASE_KNIFE_ID,
BK.MBB_BD_MRL_ID,
RFID,
BK.RFID,
MI.ITEM_CODE AS KNIFE_CODE,
MI.ITEM_NAME AS KNIFE_NAME,
MI.UNIT_NAME AS KNIFE_UNIT,
@ -86,6 +89,9 @@
BK.RESET_COUNT,
BK.ITEM_OR_PRODUCT,
BK.PLAN_SHEET,
BK.PARENT_ID,
BK.IS_VALID,
BK.ZD_TASK_ID,
BK.REMARK,
BK.ATTR1,
BK.ATTR2,
@ -103,6 +109,7 @@
<select id="selectBaseKnifeList" parameterType="BaseKnife" resultMap="BaseKnifeResult">
<include refid="selectBaseKnifeVo"/>
<where>
IS_VALID = 0
<if test="mbbBdMrlId != null and mbbBdMrlId != ''">
and MBB_BD_MRL_ID = #{mbbBdMrlId}
</if>
@ -145,6 +152,9 @@
<if test="planSheet != null and planSheet != ''">
and BK.plan_sheet = #{planSheet}
</if>
<if test="zdTaskId != null and zdTaskId != ''">
and BK.zd_task_id = #{zdTaskId}
</if>
<if test="remark != null and remark != ''">
and BK.REMARK = #{remark}
</if>
@ -176,6 +186,19 @@
order by create_time desc
</select>
<select id="selectBaseKnifeNotValidList" parameterType="BaseKnife" resultMap="BaseKnifeResult">
<include refid="selectBaseKnifeVo"/>
<where>
IS_VALID = 1
<if test="mbbBdMrlId != null and mbbBdMrlId != ''">
and MBB_BD_MRL_ID = #{mbbBdMrlId}
</if>
<if test="zdTaskId != null and zdTaskId != ''">
and BK.zd_task_id = #{zdTaskId}
</if>
</where>
</select>
<select id="selectBaseKnifeByBaseKnifeId" parameterType="Long" resultMap="BaseKnifeMdItemResult">
select a.BASE_KNIFE_ID
, a.MBB_BD_MRL_ID
@ -192,6 +215,9 @@
, a.RESET_COUNT
, a.ITEM_OR_PRODUCT
, a.PLAN_SHEET
, a.PARENT_ID
, a.IS_VALID
, a.ZD_TASK_ID
, a.REMARK
, a.ATTR1
, a.ATTR2
@ -289,6 +315,15 @@
<if test="itemOrProduct != null">
item_or_product,
</if>
<if test="parentId != null">
parent_id,
</if>
<if test="isValid != null">
is_valid,
</if>
<if test="zdTaskId != null">
zd_task_id,
</if>
<if test="remark != null">
REMARK,
</if>
@ -369,6 +404,15 @@
<if test="itemOrProduct != null">
#{itemOrProduct},
</if>
<if test="parentId != null">
#{parentId},
</if>
<if test="isValid != null">
#{isValid},
</if>
<if test="zdTaskId != null">
#{zdTaskId},
</if>
<if test="remark != null">
#{remark},
</if>
@ -453,6 +497,15 @@
<if test="itemOrProduct != null">
item_or_product = #{itemOrProduct},
</if>
<if test="parentId != null">
parent_id = #{parentId},
</if>
<if test="isValid != null">
is_valid = #{isValid},
</if>
<if test="zdTaskId != null">
zd_task_id = #{zdTaskId},
</if>
<if test="remark != null">
REMARK = #{remark},
</if>

View File

@ -21,6 +21,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="attr4" column="ATTR4" />
<result property="figureCode" column="figure_code" />
<result property="planSheet" column="plan_sheet" />
<result property="technologyBomId" column="technology_bom_id" />
<result property="bomId" column="bom_id" />
<result property="itemName" column="item_name" />
<result property="areaId" column="area_id" />
<result property="areaName" column="area_name" />
<result property="processCode" column="process_code" />
<result property="createBy" column="CREATE_BY" />
<result property="createTime" column="CREATE_TIME" />
<result property="updateBy" column="UPDATE_BY" />
@ -31,9 +37,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<sql id="selectWmsZdTaskVo">
select wzt.WMS_ZD_TASK_ID, wzt.CODE, wzt."name", wzt.M_PRODUCT_ID, wzt."product_id_qty", wzt.QTY, wzt.PLAN_OUT_ID,
wzt.PLAN_OUT_TYPE, wzt.QTY_OK, wzt.REMARK, wzt.ATTR1, wzt.ATTR3, wzt.ATTR4, wzt.CREATE_BY, wzt.CREATE_TIME,
wzt.UPDATE_BY, wzt.UPDATE_TIME, wzt.STATUS, mi.item_name attr2
wzt.UPDATE_BY, wzt.UPDATE_TIME, wzt.STATUS, mi.item_name item_name, wzt.technology_bom_id,
wzt.bom_id, wzt.area_id, wzt.plan_sheet, wzt.process_code, wsa.area_name as area_name
from WMS_ZD_TASK wzt
left join md_item mi on wzt.m_product_id = mi.item_id
left join wm_storage_area wsa on wzt.area_id = wsa.area_id
</sql>
<select id="selectWmsZdTaskList" parameterType="WmsZdTask" resultMap="WmsZdTaskResult">
@ -45,6 +53,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="productIdQty != null and productIdQty != ''"> and "product_id_qty" = #{productIdQty}</if>
<if test="planOutId != null and planOutId != ''"> and PLAN_OUT_ID = #{planOutId}</if>
<if test="planOutType != null and planOutType != ''"> and PLAN_OUT_TYPE = #{planOutType}</if>
<if test="technologyBomId != null and technologyBomId != ''"> and technology_bom_id = #{technologyBomId}</if>
<if test="qtyOk != null and qtyOk != ''"> and QTY_OK = #{qtyOk}</if>
<if test="remark != null and remark != ''"> and REMARK = #{remark}</if>
<if test="attr1 != null and attr1 != ''"> and ATTR1 = #{attr1}</if>
@ -81,6 +90,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="attr2 != null">ATTR2,</if>
<if test="attr3 != null">ATTR3,</if>
<if test="attr4 != null">ATTR4,</if>
<if test="technologyBomId != null">technology_bom_id,</if>
<if test="bomId != null">bom_id,</if>
<if test="areaId != null">area_id,</if>
<if test="processCode != null">process_code,</if>
<if test="planSheet != null">plan_sheet,</if>
<if test="createBy != null">CREATE_BY,</if>
<if test="createTime != null">CREATE_TIME,</if>
<if test="updateBy != null">UPDATE_BY,</if>
@ -101,6 +115,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="attr2 != null">#{attr2},</if>
<if test="attr3 != null">#{attr3},</if>
<if test="attr4 != null">#{attr4},</if>
<if test="technologyBomId != null">#{technologyBomId},</if>
<if test="bomId != null">#{bomId},</if>
<if test="areaId != null">#{areaId},</if>
<if test="processCode != null">#{processCode},</if>
<if test="planSheet != null">#{planSheet},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
@ -119,6 +138,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="qty != null">QTY = #{qty},</if>
<if test="planOutId != null">PLAN_OUT_ID = #{planOutId},</if>
<if test="planOutType != null">PLAN_OUT_TYPE = #{planOutType},</if>
<if test="areaId != null">area_id = #{areaId},</if>
<if test="qtyOk != null">QTY_OK = #{qtyOk},</if>
<if test="remark != null">REMARK = #{remark},</if>
<if test="attr1 != null">ATTR1 = #{attr1},</if>