深汕kitting拉动完成

tags/yfai-mes-ext-v3.11^2
臧学普 3 months ago
parent d7377fa4c6
commit b63431ef8f

@ -49,6 +49,7 @@ import org.springframework.util.StringUtils;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalTime;
import java.util.*;
@ -290,15 +291,50 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
closeMesPrintQueue(bean.getWorkOrderNo(), bean.getOrganizeCode(), AuthUtilExt.getUserName());
}
result.setWorkOrderStatus(bean.getWorkOrderStatus());
//非排序关闭订单 需要关闭kitting
doCloseKittingOrder(bean,bean.getModifyUser());
}
updateMesWorkOrder(result,MesExtEnumUtil.WORK_ORDER_LOG_TYPE.UPDATE,0);
if (isSavePrintQueue) insertPrintQueue(result);
if (isSavePrintQueue) {
insertPrintQueue(result);
//发布时 校验是否需要生成拉动单
List<MesWorkOrder> list = new ArrayList<>();
list.add(result);
doCreateKitting(list,result.getOrganizeCode());
}
return result;
}
private void doCloseKittingOrder(MesWorkOrder mesWorkOrder,String userName){
String organizeCode = mesWorkOrder.getOrganizeCode();
DdlPackBean pullOrderPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(mesWorkOrder.getWorkOrderNo(),"mesWorkOrder",pullOrderPackBean);
List<MesPullingOrderInfo> pullingOrderInfoList = pullingOrderInfoRepository.findByHqlWhere(pullOrderPackBean);
if (pullingOrderInfoList != null && !pullingOrderInfoList.isEmpty()) {
List<MesPullingOrderInfo> infoList = pullingOrderInfoList.stream().filter(item -> item.getPullOrderStatus() != MesExtEnumUtil.PULL_ORDER_STATUS.PULL_ORDER_STATUS_50.getValue()).collect(Collectors.toList());
if (!infoList.isEmpty()) {
MesPullingOrderInfo info = infoList.get(0);
String pullCode = info.getPullCode();
//查询出拉动组,判断是否需要关闭拉动单
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(pullCode,"pullCode",ddlPackBean);
List<MesPartPull> mesPartPullList = partPullRao.findByHqlWhere(ddlPackBean);
if (mesPartPullList!= null && !mesPartPullList.isEmpty()) {
MesPartPull mesPartPull = mesPartPullList.get(0);
String pullOrderCloseState = mesPartPull.getPullOrderCloseState();
if (!StringUtils.isEmpty(pullOrderCloseState)){
List<String> closeState = Arrays.asList(pullOrderCloseState.split(","));
if (closeState.contains(mesWorkOrder.getWorkOrderStatus().toString())){
mesPullingOrderInfoRao.updateByProperties(new String[]{"workOrderNo"}, new Object[]{mesWorkOrder.getWorkOrderNo()}, new String[]{"pullOrderStatus","modifyUser"}, new Object[]{ MesExtEnumUtil.PULL_ORDER_STATUS.PULL_ORDER_STATUS_50,userName});
}
}
}
}
}
}
@Override
protected void setPackQueryBean(MesWorkOrder bean, DdlPackBean packBean) {
DdlPreparedPack.getStringLikerPack(bean.getWorkOrderNo(), MesExtConstWords.WORK_ORDER_NO, packBean);
@ -704,7 +740,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
ConvertBean.serviceModelInitialize(copyMesWorkOrder, item.getCreateUser());
index++;
baseRDao.insert(copyMesWorkOrder);
workOrderListForKitting.add(copyMesWorkOrder);
//保存记录
MesWorkOrderLog workOrderLog = new MesWorkOrderLog();
BeanUtils.copyProperties(item, workOrderLog,MesExtConstWords.ID,MesExtConstWords.SYSTEM_SYNC_STATUS);
@ -726,6 +762,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
item.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
ConvertBean.serviceModelInitialize(item, item.getCreateUser());
baseRDao.insert(item);
workOrderListForKitting.add(item);
index++;
//保存记录
MesWorkOrderLog workOrderLog = new MesWorkOrderLog();
@ -775,7 +812,11 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
//按成套圆整
} else if (mesPartPull.getRoundMethod() == MesExtEnumUtil.PART_PULL_ROUND_METHOD.ROUND_DOOR_PANELS_NUMBER.getValue()) {
//按成套圆整 会是同一个拉动组 生成拉动单
Map<Long, List<MesWorkOrder>> groupCodeMap = workOrderMap.get(workCenterCode).stream().collect(Collectors.groupingBy(MesWorkOrder::getGroupCode));
List<MesWorkOrder> workOrderList1 = workOrderMap.get(workCenterCode);
if (CollectionUtils.isEmpty(workOrderList1)) {
continue;
}
Map<Long, List<MesWorkOrder>> groupCodeMap = workOrderList1.stream().collect(Collectors.groupingBy(MesWorkOrder::getGroupCode));
for (Long l : groupCodeMap.keySet()) {
List<MesWorkOrder> workOrderList = groupCodeMap.get(l);
List<MesWorkCenter> mesWorkCenters = workCenterMap.get(workCenterCode);
@ -805,9 +846,13 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
for (MesWorkOrder mesWorkOrder : workOrderListNew) {
List<MesBom> bomList = getPlatBom(null, mesWorkOrder.getPartNo(), TimeTool.getNowTime(true), organizeCode);
List<MesBom> collect = bomList.stream().filter(item -> pullPartNoList.contains(item.getItemPartNo())).collect(Collectors.toList());
mesBomRDao.detachList(collect);
collect.forEach(item -> item.setItemQty(item.getItemQty() * mesWorkOrder.getQty()));
list.addAll(collect);
}
if (list.isEmpty()){
return;
}
// 计算所有拉动单的数量,生成拉动单
String kittingOrderNoRuleCode = mesConfigService.getCfgValue(organizeCode, "KITTING_ORDER_NO_RULE_CODE");
GenSerialNoModel genSerialNoModel = new GenSerialNoModel(kittingOrderNoRuleCode);
@ -878,18 +923,19 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
List<String> partNoList = mesPartPullDetailList.stream().map(MesPartPullDetail::getPartNo).collect(Collectors.toList());
//深汕按照数量圆整
if (mesPartPull.getRoundMethod() == MesExtEnumUtil.PART_PULL_ROUND_METHOD.ROUND_BY_QUANTITY.getValue()){
int packRoundQty = Integer.parseInt(mesPartPull.getPackRoundQty());
int packRoundQty =(int)Double.parseDouble(mesPartPull.getPackRoundQty());
String partNo = workOrderListNew.get(0).getPartNo();
//打散bom
List<MesBom> bomList = getPlatBom(null, partNo, TimeTool.getNowTime(true), organizeCode);
//需要生成拉动单的零件
List<MesBom> bomPullList = bomList.stream().filter(item -> partNoList.contains(item.getItemPartNo())).collect(Collectors.toList());
mesBomRDao.detachList(bomPullList);
for (MesWorkOrder mesWorkOrder : workOrderListNew) {
Double qty = mesWorkOrder.getQty();
bomPullList.forEach(item -> item.setItemQty(item.getItemQty() * qty));
DoubleSummaryStatistics summaryStatistics = bomPullList.stream().collect(Collectors.summarizingDouble(MesBom::getItemQty));
double max = summaryStatistics.getMax();
int multiple = Integer.parseInt(String.valueOf(Math.ceil(max / packRoundQty))); //生成的拉动的数量
int multiple = (int)Math.ceil(max / packRoundQty); //生成的拉动的数量
for (int i = 1; i <= multiple; i++) {
insertPullOrderInfo( mesWorkOrder, bomPullList, mesPartPull, mesPartPullDetailList, organizeCode, i, packRoundQty);
}
@ -932,6 +978,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
private void insertPullOrderInfo(MesWorkOrder mesWorkOrder,List<MesBom> bomPullList,MesPartPull mesPartPull,List<MesPartPullDetail> mesPartPullDetailList,String organizeCode,int i, int roundPackQty){
// 计算所有拉动单的数量,生成拉动单
Map<String, MesPartPullDetail> pullDetailMap = mesPartPullDetailList.stream().collect(Collectors.toMap(MesPartPullDetail::getPullPartNo, Function.identity()));
List<String> pullDetailPartList = mesPartPullDetailList.stream().map(MesPartPullDetail::getPullPartNo).collect(Collectors.toList());
String kittingOrderNoRuleCode = mesConfigService.getCfgValue(organizeCode, "KITTING_ORDER_NO_RULE_CODE");
GenSerialNoModel genSerialNoModel = new GenSerialNoModel(kittingOrderNoRuleCode);
genSerialNoModel.setDynamicRule(mesPartPull.getPullCode());
@ -953,10 +1000,13 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
pullingOrder.setCustPartNo(mesWorkOrder.getCustPartNo());
pullingOrder.setCarModelCode(mesWorkOrder.getCarModelCode());
pullingOrder.setOrderFlag(mesWorkOrder.getOrderFlag());
ConvertBean.serviceModelInitialize(pullingOrder, AuthUtil.getSessionUser().getUserName());
mesPullingOrderInfoRao.insert(pullingOrder);
for (MesBom mesBom : bomPullList) {
List<MesBom> filterBomList = bomPullList.stream().filter(item -> pullDetailPartList.contains(item.getItemPartNo())).collect(Collectors.toList());
for (MesBom mesBom : filterBomList) {
MesPullingOrderPartInfo detail = new MesPullingOrderPartInfo();
MesPartPullDetail mesPartPullDetail = pullDetailMap.get(mesBom.getItemPartNo());
detail.setOrganizeCode(organizeCode);
detail.setPullCode(pullingOrder.getPullCode());
detail.setPullingOrderNo(pullingOrder.getPullingOrderNo());
@ -966,12 +1016,15 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
detail.setPartNo(mesBom.getItemPartNo());
detail.setPartName(mesBom.getItemPartName());
double remainingQty = mesBom.getItemQty() - i * roundPackQty;
if (remainingQty < -roundPackQty){
continue;
}
detail.setPullQty(remainingQty > 0 ? roundPackQty : (mesBom.getItemQty() - (i-1) * roundPackQty));
detail.setCustOrderNo(pullingOrder.getCustOrderNo());
detail.setWorkOrderSeq(pullingOrder.getWorkOrderSeq());
detail.setWaterSeq(pullingOrder.getProductSeq());
detail.setWorkCellCode(mesWorkOrder.getWorkCenterCode());
detail.setStatus(MesExtEnumUtil.PULL_ORDER_PART_STATUS.UN_SENTED.getValue());///明细已送料为1未送料为0
detail.setWorkCellCode(mesPartPullDetail.getWorkCellCode());
// detail.setStatus(MesExtEnumUtil.PULL_ORDER_PART_STATUS.UN_SENTED.getValue());///明细已送料为1未送料为0
detail.setCustPartNo(pullingOrder.getCustPartNo());
detail.setCarSeries(pullDetailMap.get(mesBom.getItemPartNo()) == null ? "" : pullDetailMap.get(mesBom.getItemPartNo()).getCarSeries());
detail.setOrderFlag(pullingOrder.getOrderFlag());

@ -1,7 +1,7 @@
#\u9879\u76EE\u540D\u79F0
spring.application.name=i3mes
#\u4F7F\u7528\u914D\u7F6E
spring.profiles.active=docker,cus-docker
spring.profiles.active=6,cus-71
######### \u81EA\u5B9A\u4E49\u53C2\u6570 #########
#\u9879\u76EE\u63CF\u8FF0\u4FE1\u606F\uFF08swagger\u4E2D\u663E\u5F0F\uFF09\uFF0C\u4E2D\u6587\u4F7F\u7528uncode\u8F6C
desc.application.name=\u751F\u4EA7\u6267\u884C\u7CFB\u7EDF

Loading…
Cancel
Save