Merge branch 'uat-temp-nht-202505150000-46881' into yfai-20250418-dev

# Conflicts:
#	modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesShippingKanbanCfgServiceImpl.java
#	modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/shippingscan/strategy/MesShippingScanSnStrategyServiceImpl.java
yfai-20250418-dev
jason 3 months ago
commit 63a5484152

@ -82,6 +82,23 @@ public class MesBoxingErrorProofingController {
}
}
@GetMapping("/do-second-scan")
@ApiOperation(value = "二次装箱扫描")
public ResultBean doSecondScan(MesPackageDetail mesPackageDetail) {
try {
ValidatorBean.checkNotNull(mesPackageDetail.getPackageNo(), "箱条码不能为空");
mesPackageDetail.setOrganizeCode(!StringUtils.isEmpty(mesPackageDetail.getOrganizeCode())?mesPackageDetail.getOrganizeCode():AuthUtil.getOrganizeCode());
ConvertBean.serviceModelInitialize(mesPackageDetail,!StringUtils.isEmpty(mesPackageDetail.getModifyUser())?mesPackageDetail.getModifyUser():AuthUtil.getSessionUser().getUserName());
return mesBoxingErrorProofingService.doScan(mesPackageDetail);
} catch (ImppBusiException imppException) {
return ResultBean.fail(imppException);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@PostMapping("/mes-package-details/saveAll")
@ApiOperation(value = "保存包装明细")

@ -149,7 +149,7 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer
//校验包装条码信息
MesPackage mesPackage = getMesPackageAndCheck(mesPackageDetail.getPackageNo(), mesPackageDetail.getOrganizeCode());
//校验是否已关闭
if (CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() == mesPackage.getIsSealed() ) {
if (CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() == mesPackage.getIsSealed()) {
List<MesProduceSn> produceSnList = mesProduceSnExtService.getProduceSnList(mesPackageDetail.getOrganizeCode(), mesPackageDetail.getSerialNumber());
//1.查询包装明细是否包含此零件
List<MesPackingDefineDetails> defineDetails = getMesPackingDefineDetailsNew(mesPackageDetail.getOrganizeCode(), mesPackage.getPackageSn(), mesPackage.getPartNo());
@ -166,12 +166,12 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer
//校验条码规则
MesPart mesPart = getMesPartNew(mesPackageDetail, mesPackage, packingDefine);
//包装规格明细
MesPackageDetail saveMesPackageDetail = getPackageDetail(mesPackageDetail, mesPart);
MesPackageDetail saveMesPackageDetail = getPackageDetail(mesPackageDetail, mesPart, packingDefine);
if (mesPackageDetail.getIsMemoryBoolean()) {
//保存包装明细
mesPackageDetailRDao.insert(saveMesPackageDetail);
//更新包装表
updateMesPackage(mesPackage, mesPackageDetail.getModifyUser(), 1d, false);
updateMesPackage(mesPackage, mesPackageDetail.getModifyUser(), 1d, false, packingDefine);
}
//缓存是否记忆开关
saveRedis(getKey(mesPackageDetail.getOrganizeCode(), mesPackageDetail.getModifyUser()),mesPackageDetail.getIsMemory());
@ -200,7 +200,7 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer
mesPackageDetailRDao.saveAll(saveMesPackageDetailList);
int qty = saveMesPackageDetailList.size();
//更新包装表
updateMesPackage(mesPackage, userName, qty, false);
updateMesPackage(mesPackage, userName, qty, false, null);
}
if(mesPackage.getIsSealed() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()){
return ResultBean.success("当前箱条码已完成装箱,请扫描下一个箱条码!").setResultObject(mesPackage);
@ -227,7 +227,7 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer
MesPcnException.throwMesBusiException("箱条码[%s]下不存在零件条码,不允许关箱,请检查数据!", mesPackage.getPackageNo());
}
//关箱
updateMesPackage(mesPackageDb, mesPackage.getModifyUser(), 0d, true);
updateMesPackage(mesPackageDb, mesPackage.getModifyUser(), 0d, true, null);
return ResultBean.success("关箱成功!");
} else {
if (CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue() == mesPackageDb.getIsSealed()) {
@ -294,31 +294,34 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer
}
}
private MesPart getMesPart(MesPackageDetail mesPackageDetail, MesPackage mesPackage, MesPackingDefine packingDefine) {
//校验是否重复扫描
checkSerialNumber(mesPackageDetail);
//获取包装定义明细
List<MesPackingDefineDetails> defineDetails = getMesPackingDefineDetails(mesPackageDetail.getOrganizeCode(), mesPackage.getPackageSn());
//校验是否包含
// String partNo = getPartNo(mesPackageDetail, mesPackage, defineDetails);
//校验条码信息
String partNo = checkSn(mesPackageDetail, packingDefine, mesPackage, defineDetails);
//物料信息
return getPart(mesPackageDetail.getOrganizeCode(), partNo);
}
// private MesPart getMesPart(MesPackageDetail mesPackageDetail, MesPackage mesPackage, MesPackingDefine packingDefine) {
// //校验是否重复扫描
// checkSerialNumber(mesPackageDetail);
// //获取包装定义明细
// List<MesPackingDefineDetails> defineDetails = getMesPackingDefineDetails(mesPackageDetail.getOrganizeCode(), mesPackage.getPackageSn());
// //校验是否包含
//// String partNo = getPartNo(mesPackageDetail, mesPackage, defineDetails);
// //校验条码信息
// String partNo = checkSn(mesPackageDetail, packingDefine, mesPackage, defineDetails);
// //物料信息
// return getPart(mesPackageDetail.getOrganizeCode(), partNo);
// }
private MesPart getMesPartNew(MesPackageDetail mesPackageDetail, MesPackage mesPackage, MesPackingDefine packingDefine) {
//校验是否重复扫描
checkSerialNumber(mesPackageDetail);
checkSerialNumber(mesPackageDetail, packingDefine);
//校验条码信息
String partNo = checkSnNew(mesPackageDetail, packingDefine, mesPackage);
//物料信息
return getPart(mesPackageDetail.getOrganizeCode(), partNo);
}
private void checkSerialNumber(MesPackageDetail mesPackageDetail) {
private void checkSerialNumber(MesPackageDetail mesPackageDetail, MesPackingDefine packingDefine) {
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mesPackageDetail.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(mesPackageDetail.getSerialNumber(), MesPcnExtConstWords.SERIAL_NUMBER, ddlPackBean);
if (Objects.equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), packingDefine.getIsConfirmCheck())) {
DdlPreparedPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), "isSecondPack", ddlPackBean);
}
if (mesPackageDetailRDao.isExitByHql(ddlPackBean)) {
MesPcnException.throwMesBusiException("零件条码[%s]已装箱,请检查数据!", mesPackageDetail.getSerialNumber());
}
@ -387,13 +390,15 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer
}
private void updateMesPackage(MesPackage mesPackage, String userName, double qty, boolean close) {
private void updateMesPackage(MesPackage mesPackage, String userName, double qty, boolean close, MesPackingDefine packingDefine) {
mesPackage.setQty(MathOperation.add(mesPackage.getQty(), qty));
if (mesPackage.getPackSpecQty() <= mesPackage.getQty() || close) {
mesPackage.setIsSealed(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue());
mesPackage.setLotNo(TimeTool.getToday());
//数据写入接口表回传wms
saveMesPackageResult(mesPackage, userName);
if (packingDefine == null || !Objects.equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), packingDefine.getIsConfirmCheck())) {
saveMesPackageResult(mesPackage, userName);
}
}
ConvertBean.serviceModelUpdate(mesPackage, userName);
mesPackageRDao.update(mesPackage);
@ -418,7 +423,7 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer
return mesPackageDetails;
}
private MesPackageDetail getPackageDetail(MesPackageDetail mesPackageDetail, MesPart mesPart) {
private MesPackageDetail getPackageDetail(MesPackageDetail mesPackageDetail, MesPart mesPart, MesPackingDefine packingDefine) {
MesPackageDetail saveMesPackageDetail = new MesPackageDetail();
saveMesPackageDetail.setPackageNo(mesPackageDetail.getPackageNo());
saveMesPackageDetail.setSerialNumber(mesPackageDetail.getSerialNumber());
@ -426,6 +431,11 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer
saveMesPackageDetail.setPartName(mesPart.getPartName());
saveMesPackageDetail.setQty(1d);
saveMesPackageDetail.setOrganizeCode(mesPackageDetail.getOrganizeCode());
if (packingDefine != null && Objects.equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), packingDefine.getIsConfirmCheck())) {
saveMesPackageDetail.setIsSecondPack(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue());
} else {
saveMesPackageDetail.setIsSecondPack(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
}
ConvertBean.serviceModelInitialize(saveMesPackageDetail, mesPackageDetail.getCreateUser());
return saveMesPackageDetail;
}

@ -773,7 +773,7 @@ public class MesNcProcessingService implements IMesNcProcessingService {
mesPartInspectionPerson.setPid(model.getPartInspection().getId());
DdlPackBean partyPackBean = DdlPackBean.getDdlPackBean(org);
DdlPreparedPack.getStringEqualPack(mesNcPersonModel.getOnlyPerson(), "responsibleParty", partyPackBean);
DdlPreparedPack.getStringLikerPack(mesNcPersonModel.getOnlyPerson(), "responsibleParty", partyPackBean);
MesOrg mesOrg = mesOrgRDao.getByProperty(partyPackBean);
mesPartInspectionPerson.setResponsibleParty(mesOrg.getResponsibleParty());
@ -850,7 +850,7 @@ public class MesNcProcessingService implements IMesNcProcessingService {
mesPartInspectionPerson.setPid(model.getPartInspection().getId());
DdlPackBean partyPackBean = DdlPackBean.getDdlPackBean(org);
DdlPreparedPack.getStringEqualPack(mesNcPersonModel.getOnlyPerson(), "responsibleParty", partyPackBean);
DdlPreparedPack.getStringLikerPack(mesNcPersonModel.getOnlyPerson(), "responsibleParty", partyPackBean);
MesOrg mesOrg = mesOrgRDao.getByProperty(partyPackBean);
if (mesOrg ==null) {
throw new ImppBusiException(String.format("责任人【%s】不存在", mesNcPersonModel.getOnlyPerson()));

@ -5,10 +5,9 @@ import cn.estsh.i3plus.ext.mes.pcn.pojo.model.CustQtyByTimeChartDataModel;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesShippingKanbanCfgModel;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesShippingKanbanModel;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesShippingKanbanViewModel;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.ShippingKanbanCacheModel;
import cn.estsh.i3plus.mes.pcn.util.DateUtil;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.tool.TimeTool;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
@ -25,6 +24,7 @@ import cn.estsh.i3plus.pojo.mes.repository.MesShippingKanbanCfgRepository;
import cn.estsh.i3plus.pojo.mes.repository.seres.IMesCimSeresJisVinOverPointRepository;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import cn.hutool.core.util.NumberUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
@ -38,6 +38,7 @@ import java.math.RoundingMode;
import java.util.*;
import java.util.stream.Collectors;
@Slf4j
@Service
public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgService {
@Autowired
@ -169,6 +170,7 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer
cfgDetailMap = cfgModel.getDetails().stream().collect(Collectors.toMap(MesShippingKanbanCfgDetail::getDetailCode, v -> v));
}
ShippingKanbanCacheModel cacheModel = new ShippingKanbanCacheModel();
for (MesExtEnumUtil.SHIPPING_KANBAN_DETAIL_INDEX index : MesExtEnumUtil.SHIPPING_KANBAN_DETAIL_INDEX.values()) {
MesShippingKanbanCfgDetail cfgDetail = cfgDetailMap != null ? cfgDetailMap.get(index.getValue()) : null;
if (cfgDetail == null || cfgDetail.getIsShow() == null || cfgDetail.getIsShow() != CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() || cfgDetail.getOrderNumber() == null) {
@ -192,49 +194,49 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer
List<String> values = null;
switch (index) {
case CLIENT_STOCK_QTY:
values = getClientStockQty(cfg);
values = getClientStockQty(cfg, cacheModel);
break;
case WAIT_SHIPPING_QTY:
values = getWaitShippingQty(cfg, cfgDetail);
values = getWaitShippingQty(cfg);
break;
case CP_WAIT_SHIPPING_QTY:
values = getCPWaitShippingQty(cfg, cfgDetail);
values = getCPWaitShippingQty(cfg);
break;
case WAIT_PRODUCT_QTY:
values = getWaitProductQty(cfg, cfgDetail);
values = getWaitProductQty(cfg);
break;
case LAST_SHIPPING_TIME:
values = getLastShippingTime(cfg, cfgDetail);
values = getLastShippingTime(cfg);
break;
case CP_LAST_SHIPPING_TIME:
values = getCPLastShippingTime(cfg, cfgDetail);
values = getCPLastShippingTime(cfg);
break;
case NEXT_SHIPPING_TIME:
values = getNextShippingTime(cfg, cfgDetail);
values = getNextShippingTime(cfg, cacheModel);
break;
case TREE_STOP_WARNING:
values = getTreeStopWarning(cfg, cfgDetail);
values = getTreeStopWarning(cfg, cacheModel);
break;
case SHIPPING_VIN:
values = getShippingVin(cfg, cfgDetail);
values = getShippingVin(cfg);
break;
case CP_SHIPPING_VIN:
values = getCPShippingVin(cfg, cfgDetail);
values = getCPShippingVin(cfg);
break;
case TODAY_ONLINE:
values = getTodayOnline(cfg, cfgDetail);
values = getTodayOnline(cfg);
break;
case TODAY_SHIPPING:
values = getTodayShipping(cfg, cfgDetail);
values = getTodayShipping(cfg);
break;
case TODAY_CAR:
values = getTodayCar(cfg, cfgDetail);
values = getTodayCar(cfg);
break;
case CLIENT_JPH:
values = getClientJPH(cfg, cfgDetail);
values = getClientJph(cfg);
break;
case PRODUCT_JPH:
values = getProductJPH(cfg, cfgDetail);
values = getProductJph(cfg);
break;
}
if (values == null) {
@ -437,9 +439,6 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer
/**
* 线
* @param organizeCode
* @param shippingGroupCodes
* @return
*/
private String getMaxOffNumber(String organizeCode, List<String> shippingGroupCodes) {
String vinCode = getMesShippingVin(organizeCode, shippingGroupCodes, Arrays.asList(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue()));
@ -465,10 +464,12 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer
/**
*
* 线SERIAL_NUMBER- 线+
* @param cfg
* @return
* @param cfg
*/
private List<String> getClientStockQty(MesShippingKanbanCfg cfg) {
private List<String> getClientStockQty(MesShippingKanbanCfg cfg, ShippingKanbanCacheModel cacheModel) {
if (cacheModel.getClientStockQty() != null) {
return cacheModel.getClientStockQty();
}
List<String> values = new ArrayList<>();
List<String> strShippingGroupList = Arrays.asList(cfg.getShippingGroupCode().split(","));
if (CollectionUtils.isEmpty(strShippingGroupList)) {
@ -505,17 +506,16 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer
int adjustValue = cfg.getAdjustValue() != null ? cfg.getAdjustValue() : 0;
int result = Integer.parseInt(offNumber) - Integer.parseInt(onNumber) + adjustValue;
values.add(String.valueOf(result));
cacheModel.setClientStockQty(values);
return values;
}
/**
*
* --线cockpit
* @param cfg
* @param cfgDetail
* @return
* @param cfg
*/
private List<String> getWaitShippingQty(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) {
private List<String> getWaitShippingQty(MesShippingKanbanCfg cfg) {
List<String> values = new ArrayList<>();
List<String> strShippingGroupList = Arrays.asList(cfg.getShippingGroupCode().split(","));
if (CollectionUtils.isEmpty(strShippingGroupList)) {
@ -557,15 +557,23 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer
hql.append("select new Map(s.shippingGroupCode as shippingGroupCode, COUNT(sd.id) as COUNT)");
hql.append(" from MesShippingOrderManagement s inner join MesShippingOrderManagementDetail sd on s.id = sd.pid and sd.organizeCode = :organizeCode and sd.isDeleted=:isDeleted and sd.isValid=:isValid ");
hql.append(" and s.status = :status ");
hql.append(" and s.shippingGroupCode in (:shippingGroupCode) ");
if (strShippingGroupList.size() == 1) {
hql.append(" and s.shippingGroupCode = :shippingGroupCode ");
} else {
hql.append(" and s.shippingGroupCode in (:shippingGroupCode) ");
}
hql.append(" group by s.shippingGroupCode");
List<Map> ddd = entityManager.createQuery(hql.toString())
.setParameter("organizeCode", cfg.getOrganizeCode())
.setParameter("isValid", CommonEnumUtil.VALID)
.setParameter("isDeleted", CommonEnumUtil.FALSE)
.setParameter("status", MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue())
.setParameter("shippingGroupCode", strShippingGroupList)
.getResultList();
Query query = entityManager.createQuery(hql.toString());
query.setParameter("organizeCode", cfg.getOrganizeCode());
query.setParameter("isValid", CommonEnumUtil.VALID);
query.setParameter("isDeleted", CommonEnumUtil.FALSE);
query.setParameter("status", MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue());
if (strShippingGroupList.size() == 1) {
query.setParameter("shippingGroupCode", strShippingGroupList.get(0));
} else {
query.setParameter("shippingGroupCode", strShippingGroupList);
}
List<Map> ddd = query.getResultList();
Map<String, String> shippingGroupCount = new HashMap<>();
if (!CollectionUtils.isEmpty(ddd)) {
for (Map dd : ddd) {
@ -582,7 +590,7 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer
return values;
}
private List<String> getCPWaitShippingQty(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) {
private List<String> getCPWaitShippingQty(MesShippingKanbanCfg cfg) {
List<String> values = new ArrayList<>();
List<String> strShippingGroupList = Arrays.asList(cfg.getShippingGroupCode().split(","));
if (CollectionUtils.isEmpty(strShippingGroupList)) {
@ -629,11 +637,9 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer
/**
* /
* -
* @param cfg
* @param cfgDetail
* @return
* @param cfg
*/
private List<String> getWaitProductQty(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) {
private List<String> getWaitProductQty(MesShippingKanbanCfg cfg) {
List<String> values = new ArrayList<>();
List<String> strShippingGroupList = Arrays.asList(cfg.getShippingGroupCode().split(","));
if (CollectionUtils.isEmpty(strShippingGroupList)) {
@ -669,15 +675,23 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer
hql.append("select new Map(s.shippingGroupCode as shippingGroupCode, max(sd.custInfoSeq) as custInfoSeq)");
hql.append(" from MesShippingOrderManagement s inner join MesShippingOrderManagementDetail sd on s.id = sd.pid and sd.organizeCode = :organizeCode and sd.isDeleted=:isDeleted and sd.isValid=:isValid ");
hql.append(" and s.status in (:status) ");
hql.append(" and s.shippingGroupCode in (:shippingGroupCode) ");
if (strShippingGroupList.size() == 1) {
hql.append(" and s.shippingGroupCode = :shippingGroupCode ");
} else {
hql.append(" and s.shippingGroupCode in (:shippingGroupCode) ");
}
hql.append(" group by s.shippingGroupCode");
List<Map> ddd = entityManager.createQuery(hql.toString())
.setParameter("organizeCode", cfg.getOrganizeCode())
.setParameter("isValid", CommonEnumUtil.VALID)
.setParameter("isDeleted", CommonEnumUtil.FALSE)
.setParameter("status", Arrays.asList(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue()))
.setParameter("shippingGroupCode", strShippingGroupList)
.getResultList();
Query query = entityManager.createQuery(hql.toString());
query.setParameter("organizeCode", cfg.getOrganizeCode());
query.setParameter("isValid", CommonEnumUtil.VALID);
query.setParameter("isDeleted", CommonEnumUtil.FALSE);
query.setParameter("status", Arrays.asList(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue()));
if (strShippingGroupList.size() == 1) {
query.setParameter("shippingGroupCode", strShippingGroupList.get(0));
} else {
query.setParameter("shippingGroupCode", strShippingGroupList);
}
List<Map> ddd = query.getResultList();
Map<String, String> shippingGroupCount = new HashMap<>();
if (!CollectionUtils.isEmpty(ddd)) {
for (Map dd : ddd) {
@ -701,11 +715,9 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer
/**
* (Min)
* -
* @param cfg
* @param cfgDetail
* @return
* @param cfg
*/
private List<String> getLastShippingTime(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) {
private List<String> getLastShippingTime(MesShippingKanbanCfg cfg) {
List<String> values = new ArrayList<>();
List<String> strShippingGroupList = Arrays.asList(cfg.getShippingGroupCode().split(","));
if (CollectionUtils.isEmpty(strShippingGroupList)) {
@ -717,16 +729,24 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer
hql.append("select max(s.endScanTime)");
hql.append(" from MesShippingOrderManagement s inner join MesShippingOrderManagementDetail sd on s.id = sd.pid and sd.organizeCode = :organizeCode and sd.isDeleted=:isDeleted and sd.isValid=:isValid ");
hql.append(" and s.status in (:status) ");
hql.append(" and s.shippingGroupCode in (:shippingGroupCode) ");
if (strShippingGroupList.size() == 1) {
hql.append(" and s.shippingGroupCode = :shippingGroupCode ");
} else {
hql.append(" and s.shippingGroupCode in (:shippingGroupCode) ");
}
String strScanEndTime = "";
try {
strScanEndTime = entityManager.createQuery(hql.toString(), String.class)
.setParameter("organizeCode", cfg.getOrganizeCode())
.setParameter("isValid", CommonEnumUtil.VALID)
.setParameter("isDeleted", CommonEnumUtil.FALSE)
.setParameter("status", Arrays.asList(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue()))
.setParameter("shippingGroupCode", strShippingGroupList)
.getSingleResult();
Query query = entityManager.createQuery(hql.toString(), String.class);
query.setParameter("organizeCode", cfg.getOrganizeCode());
query.setParameter("isValid", CommonEnumUtil.VALID);
query.setParameter("isDeleted", CommonEnumUtil.FALSE);
query.setParameter("status", Arrays.asList(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue()));
if (strShippingGroupList.size() == 1) {
query.setParameter("shippingGroupCode", strShippingGroupList.get(0));
} else {
query.setParameter("shippingGroupCode", strShippingGroupList);
}
strScanEndTime = query.getSingleResult().toString();
} catch (NoResultException ignored) {
}
@ -739,15 +759,23 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer
hql.append("select new Map(s.shippingGroupCode as shippingGroupCode, max(l.endScanTime) as endScanTime)");
hql.append(" from MesLoadingList l inner join MesLoadingListDetail ld on l.id = ld.pid inner join MesShippingOrderManagement s on s.id = ld.shippingId and l.organizeCode = :organizeCode and l.isDeleted=:isDeleted and l.isValid=:isValid ");
hql.append(" and l.status in (:status) ");
hql.append(" and s.shippingGroupCode in (:shippingGroupCode) ");
if (strShippingGroupList.size() == 1) {
hql.append(" and s.shippingGroupCode = :shippingGroupCode ");
} else {
hql.append(" and s.shippingGroupCode in (:shippingGroupCode) ");
}
hql.append(" group by s.shippingGroupCode");
List<Map> ddd = entityManager.createQuery(hql.toString())
.setParameter("organizeCode", cfg.getOrganizeCode())
.setParameter("isValid", CommonEnumUtil.VALID)
.setParameter("isDeleted", CommonEnumUtil.FALSE)
.setParameter("status", Arrays.asList(MesExtEnumUtil.MES_LOADING_STATUS.PUBLISH.getValue(), MesExtEnumUtil.MES_LOADING_STATUS.SCANNED.getValue()))
.setParameter("shippingGroupCode", strShippingGroupList)
.getResultList();
Query query = entityManager.createQuery(hql.toString());
query.setParameter("organizeCode", cfg.getOrganizeCode());
query.setParameter("isValid", CommonEnumUtil.VALID);
query.setParameter("isDeleted", CommonEnumUtil.FALSE);
query.setParameter("status", Arrays.asList(MesExtEnumUtil.MES_LOADING_STATUS.PUBLISH.getValue(), MesExtEnumUtil.MES_LOADING_STATUS.SCANNED.getValue()));
if (strShippingGroupList.size() == 1) {
query.setParameter("shippingGroupCode", strShippingGroupList.get(0));
} else {
query.setParameter("shippingGroupCode", strShippingGroupList);
}
List<Map> ddd = query.getResultList();
Map<String, String> shippingGroupCount = new HashMap<>();
if (!CollectionUtils.isEmpty(ddd)) {
for (Map dd : ddd) {
@ -772,7 +800,7 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer
return values;
}
private List<String> getCPLastShippingTime(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) {
private List<String> getCPLastShippingTime(MesShippingKanbanCfg cfg) {
List<String> values = new ArrayList<>();
DdlPackBean packBean = DdlPackBean.getDdlPackBean(cfg.getOrganizeCode());
List<MesPartShippingGroup> shippingGroups = partShippingGroupRDao.findByHqlWhere(packBean);
@ -787,16 +815,24 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer
hql.append("select max(s.endScanTime)");
hql.append(" from MesShippingOrderManagement s inner join MesShippingOrderManagementDetail sd on s.id = sd.pid and sd.organizeCode = :organizeCode and sd.isDeleted=:isDeleted and sd.isValid=:isValid ");
hql.append(" and s.status in (:status) ");
hql.append(" and s.shippingGroupCode in (:shippingGroupCode) ");
if (strShippingGroupList.size() == 1) {
hql.append(" and s.shippingGroupCode = :shippingGroupCode ");
} else {
hql.append(" and s.shippingGroupCode in (:shippingGroupCode) ");
}
String strScanEndTime = "";
try {
strScanEndTime = entityManager.createQuery(hql.toString(), String.class)
.setParameter("organizeCode", cfg.getOrganizeCode())
.setParameter("isValid", CommonEnumUtil.VALID)
.setParameter("isDeleted", CommonEnumUtil.FALSE)
.setParameter("status", Arrays.asList(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue()))
.setParameter("shippingGroupCode", strShippingGroupList)
.getSingleResult();
Query query = entityManager.createQuery(hql.toString(), String.class);
query.setParameter("organizeCode", cfg.getOrganizeCode());
query.setParameter("isValid", CommonEnumUtil.VALID);
query.setParameter("isDeleted", CommonEnumUtil.FALSE);
query.setParameter("status", Arrays.asList(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue()));
if (strShippingGroupList.size() == 1) {
query.setParameter("shippingGroupCode", strShippingGroupList.get(0));
} else {
query.setParameter("shippingGroupCode", strShippingGroupList);
}
strScanEndTime = query.getSingleResult().toString();
} catch (NoResultException ignored) {
}
if (!StringUtils.isEmpty(strScanEndTime)) {
@ -812,21 +848,24 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer
/**
*
* +/JPH-
* @param cfg
* @param cfgDetail
* @return
* @param cfg
*/
private List<String> getNextShippingTime(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) {
private List<String> getNextShippingTime(MesShippingKanbanCfg cfg, ShippingKanbanCacheModel cacheModel) {
if (cacheModel.getCacheNextShipping() != null) {
return cacheModel.getCacheNextShipping();
}
List<String> values = new ArrayList<>();
Date nowTime = DateUtil.now();
//获取客户端库存
List<String> clientStockValue = getClientStockQty(cfg);
List<String> clientStockValue = getClientStockQty(cfg, cacheModel);
if (StringUtils.isEmpty(clientStockValue)) {
cacheModel.setCacheNextShipping(values);
return values;
}
//获取客户JPH
List<String> customerJPHValue = getClientJPH(cfg, cfgDetail);
List<String> customerJPHValue = getClientJph(cfg);
if (CollectionUtils.isEmpty(customerJPHValue)) {
cacheModel.setCacheNextShipping(values);
return values;
}
double clientStock = Double.parseDouble(clientStockValue.get(0));
@ -842,20 +881,19 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer
int minutes = (int)(customerJPHInt * 60);
Date newDate = DateUtil.addMinutes(nowTime, minutes - onTheWayDate);
values.add(DateUtil.formatDate(DateUtil.BASE_FORMAT3, newDate));
cacheModel.setCacheNextShipping(values);
return values;
}
/**
* 线(Min)
* +/JPH-
* @param cfg
* @param cfgDetail
* @return
* @param cfg
*/
private List<String> getTreeStopWarning(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) {
private List<String> getTreeStopWarning(MesShippingKanbanCfg cfg, ShippingKanbanCacheModel cacheModel) {
List<String> values = new ArrayList<>();
//获取下一车最晚发运时间
List<String> nextShippingTimeValue = getNextShippingTime(cfg, cfgDetail);
List<String> nextShippingTimeValue = getNextShippingTime(cfg, cacheModel);
if (StringUtils.isEmpty(nextShippingTimeValue)) {
values.add("0");
return values;
@ -869,11 +907,9 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer
/**
* VIN/6
* @param cfg
* @param cfgDetail
* @return
* @param cfg
*/
private List<String> getShippingVin(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) {
private List<String> getShippingVin(MesShippingKanbanCfg cfg) {
List<String> values = new ArrayList<>();
List<String> strShippingGroupList = Arrays.asList(cfg.getShippingGroupCode().split(","));
if (CollectionUtils.isEmpty(strShippingGroupList)) {
@ -886,19 +922,28 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer
hql.append("select sd.custInfoSeq");
hql.append(" from MesShippingOrderManagement s inner join MesShippingOrderManagementDetail sd on s.id = sd.pid and sd.organizeCode = :organizeCode and sd.isDeleted=:isDeleted and sd.isValid=:isValid ");
hql.append(" and s.status in (:status) ");
hql.append(" and s.shippingGroupCode in (:shippingGroupCode) ");
if (strShippingGroupList.size() == 1) {
hql.append(" and s.shippingGroupCode = :shippingGroupCode ");
} else {
hql.append(" and s.shippingGroupCode in (:shippingGroupCode) ");
}
hql.append(" ORDER BY sd.id DESC");
Long custInfoSeq = null;
try {
custInfoSeq = entityManager.createQuery(hql.toString(), Long.class)
.setParameter("organizeCode", cfg.getOrganizeCode())
.setParameter("isValid", CommonEnumUtil.VALID)
.setParameter("isDeleted", CommonEnumUtil.FALSE)
.setParameter("status", Arrays.asList(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue()))
.setParameter("shippingGroupCode", strShippingGroupList)
.setMaxResults(1)
.getSingleResult();
Query query = entityManager.createQuery(hql.toString(), Long.class);
query.setParameter("organizeCode", cfg.getOrganizeCode());
query.setParameter("isValid", CommonEnumUtil.VALID);
query.setParameter("isDeleted", CommonEnumUtil.FALSE);
query.setParameter("status", Arrays.asList(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue()));
if (strShippingGroupList.size() == 1) {
query.setParameter("shippingGroupCode", strShippingGroupList.get(0));
} else {
query.setParameter("shippingGroupCode", strShippingGroupList);
}
query.setMaxResults(1);
custInfoSeq = (Long) query.getSingleResult();
} catch (NoResultException e) {
log.error("", e);
}
String strCustInfoSeq = custInfoSeq != null ? Long.toString(custInfoSeq) : "";
if (strCustInfoSeq.length() >= 5) {
@ -911,16 +956,23 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer
hql.append("select new Map(s.shippingGroupCode as shippingGroupCode, max(sd.custInfoSeq) as custInfoSeq)");
hql.append(" from MesLoadingList l inner join MesLoadingListDetail ld on l.id = ld.pid inner join MesShippingOrderManagement s on s.id = ld.shippingId inner join MesShippingOrderManagementDetail sd on s.id = sd.pid and l.organizeCode = :organizeCode and l.isDeleted=:isDeleted and l.isValid=:isValid ");
hql.append(" and l.status in (:status) ");
hql.append(" and s.shippingGroupCode in (:shippingGroupCode) ");
if (strShippingGroupList.size() == 1) {
hql.append(" and s.shippingGroupCode = :shippingGroupCode ");
} else {
hql.append(" and s.shippingGroupCode in (:shippingGroupCode) ");
}
hql.append(" group by s.shippingGroupCode");
List<Map> ddd = entityManager.createQuery(hql.toString())
.setParameter("organizeCode", cfg.getOrganizeCode())
.setParameter("isValid", CommonEnumUtil.VALID)
.setParameter("isDeleted", CommonEnumUtil.FALSE)
.setParameter("status", Arrays.asList(MesExtEnumUtil.MES_LOADING_STATUS.PUBLISH.getValue(), MesExtEnumUtil.MES_LOADING_STATUS.SCANNED.getValue()))
.setParameter("shippingGroupCode", strShippingGroupList)
.getResultList();
Query query = entityManager.createQuery(hql.toString());
query.setParameter("organizeCode", cfg.getOrganizeCode());
query.setParameter("isValid", CommonEnumUtil.VALID);
query.setParameter("isDeleted", CommonEnumUtil.FALSE);
query.setParameter("status", Arrays.asList(MesExtEnumUtil.MES_LOADING_STATUS.PUBLISH.getValue(), MesExtEnumUtil.MES_LOADING_STATUS.SCANNED.getValue()));
if (strShippingGroupList.size() == 1) {
query.setParameter("shippingGroupCode", strShippingGroupList.get(0));
} else {
query.setParameter("shippingGroupCode", strShippingGroupList);
}
List<Map> ddd = query.getResultList();
Map<String, String> shippingGroupCount = new HashMap<>();
if (!CollectionUtils.isEmpty(ddd)) {
for (Map dd : ddd) {
@ -951,11 +1003,9 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer
/**
* VIN/6
* @param cfg
* @param cfgDetail
* @return
* @param cfg
*/
private List<String> getCPShippingVin(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) {
private List<String> getCPShippingVin(MesShippingKanbanCfg cfg) {
List<String> values = new ArrayList<>();
DdlPackBean packBean = DdlPackBean.getDdlPackBean(cfg.getOrganizeCode());
List<MesPartShippingGroup> shippingGroups = partShippingGroupRDao.findByHqlWhere(packBean);
@ -971,19 +1021,27 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer
hql.append("select sd.custInfoSeq");
hql.append(" from MesShippingOrderManagement s inner join MesShippingOrderManagementDetail sd on s.id = sd.pid and sd.organizeCode = :organizeCode and sd.isDeleted=:isDeleted and sd.isValid=:isValid ");
hql.append(" and s.status in (:status) ");
hql.append(" and s.shippingGroupCode in (:shippingGroupCode) ");
if (strShippingGroupList.size() == 1) {
hql.append(" and s.shippingGroupCode = :shippingGroupCode ");
} else {
hql.append(" and s.shippingGroupCode in (:shippingGroupCode) ");
}
hql.append(" ORDER BY sd.id DESC");
Long custInfoSeq = null;
try {
custInfoSeq = entityManager.createQuery(hql.toString(), Long.class)
.setParameter("organizeCode", cfg.getOrganizeCode())
.setParameter("isValid", CommonEnumUtil.VALID)
.setParameter("isDeleted", CommonEnumUtil.FALSE)
.setParameter("status", Arrays.asList(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue()))
.setParameter("shippingGroupCode", strShippingGroupList)
.setMaxResults(1)
.getSingleResult();
} catch (NoResultException e) {
Query query = entityManager.createQuery(hql.toString(), Long.class);
query.setParameter("organizeCode", cfg.getOrganizeCode());
query.setParameter("isValid", CommonEnumUtil.VALID);
query.setParameter("isDeleted", CommonEnumUtil.FALSE);
query.setParameter("status", Arrays.asList(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue()));
if (strShippingGroupList.size() == 1) {
query.setParameter("shippingGroupCode", strShippingGroupList.get(0));
} else {
query.setParameter("shippingGroupCode", strShippingGroupList);
}
query.setMaxResults(1);
custInfoSeq = (Long) query.getSingleResult();
} catch (NoResultException ignored) {
}
String strCustInfoSeq = custInfoSeq != null ? Long.toString(custInfoSeq) : "";
@ -1002,11 +1060,9 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer
* 线
*
* 线/线
* @param cfg
* @param cfgDetail
* @return
* @param cfg
*/
private List<String> getTodayOnline(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) {
private List<String> getTodayOnline(MesShippingKanbanCfg cfg) {
List<String> values = new ArrayList<>();
if (StringUtils.isEmpty(cfg.getCustStartShift()) || StringUtils.isEmpty(cfg.getOnlinePoint())) {
values.add("0");
@ -1048,11 +1104,9 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer
/**
*
*
* @param cfg
* @param cfgDetail
* @return
* @param cfg
*/
private List<String> getTodayShipping(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) {
private List<String> getTodayShipping(MesShippingKanbanCfg cfg) {
List<String> values = new ArrayList<>();
List<String> strShippingGroupList = Arrays.asList(cfg.getShippingGroupCode().split(","));
if (CollectionUtils.isEmpty(strShippingGroupList) || StringUtils.isEmpty(cfg.getInterStartShift())) {
@ -1080,17 +1134,25 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer
hql.append(" from MesShippingOrderManagement s inner join MesShippingOrderManagementDetail sd on s.id = sd.pid and sd.organizeCode = :organizeCode and sd.isDeleted=:isDeleted and sd.isValid=:isValid ");
hql.append(" and s.status in (:status) ");
hql.append(" and s.modifyDatetime BETWEEN :startDateTime AND :endDateTime ");
hql.append(" and s.shippingGroupCode in (:shippingGroupCode) ");
if (strShippingGroupList.size() == 1) {
hql.append(" and s.shippingGroupCode = :shippingGroupCode ");
} else {
hql.append(" and s.shippingGroupCode in (:shippingGroupCode) ");
}
hql.append(" group by s.shippingGroupCode");
List<Map> ddd = entityManager.createQuery(hql.toString())
.setParameter("organizeCode", cfg.getOrganizeCode())
.setParameter("isValid", CommonEnumUtil.VALID)
.setParameter("isDeleted", CommonEnumUtil.FALSE)
.setParameter("status", Arrays.asList(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue()))
.setParameter("startDateTime", startDateTime)
.setParameter("endDateTime", endDateTime)
.setParameter("shippingGroupCode", strShippingGroupList)
.getResultList();
Query query = entityManager.createQuery(hql.toString());
query.setParameter("organizeCode", cfg.getOrganizeCode());
query.setParameter("isValid", CommonEnumUtil.VALID);
query.setParameter("isDeleted", CommonEnumUtil.FALSE);
query.setParameter("status", Arrays.asList(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue()));
query.setParameter("startDateTime", startDateTime);
query.setParameter("endDateTime", endDateTime);
if (strShippingGroupList.size() == 1) {
query.setParameter("shippingGroupCode", strShippingGroupList.get(0));
} else {
query.setParameter("shippingGroupCode", strShippingGroupList);
}
List<Map> ddd = query.getResultList();
Map<String, String> shippingGroupCount = new HashMap<>();
if (!CollectionUtils.isEmpty(ddd)) {
for (Map dd : ddd) {
@ -1109,11 +1171,9 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer
/**
*
*
* @param cfg
* @param cfgDetail
* @return
* @param cfg
*/
private List<String> getTodayCar(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) {
private List<String> getTodayCar(MesShippingKanbanCfg cfg) {
List<String> values = new ArrayList<>();
List<String> strShippingGroupList = Arrays.asList(cfg.getShippingGroupCode().split(","));
if (CollectionUtils.isEmpty(strShippingGroupList) || StringUtils.isEmpty(cfg.getInterStartShift())) {
@ -1141,18 +1201,25 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer
hql.append(" from MesLoadingList l inner join MesLoadingListDetail ld on l.id = ld.pid inner join MesShippingOrderManagement s on s.id = ld.shippingId inner join MesShippingOrderManagementDetail sd on s.id = sd.pid and l.organizeCode = :organizeCode and l.isDeleted=:isDeleted and l.isValid=:isValid ");
hql.append(" and l.status = :status ");
hql.append(" and l.modifyDatetime BETWEEN :startDateTime AND :endDateTime ");
hql.append(" and s.shippingGroupCode in (:shippingGroupCode) ");
if (strShippingGroupList.size() == 1) {
hql.append(" and s.shippingGroupCode = :shippingGroupCode ");
} else {
hql.append(" and s.shippingGroupCode in (:shippingGroupCode) ");
}
hql.append(" group by s.shippingGroupCode ");
List<Map> dataList = entityManager.createQuery(hql.toString())
.setParameter("organizeCode", cfg.getOrganizeCode())
.setParameter("isValid", CommonEnumUtil.VALID)
.setParameter("isDeleted", CommonEnumUtil.FALSE)
.setParameter("status", MesExtEnumUtil.MES_LOADING_STATUS.SCANNED.getValue())
.setParameter("startDateTime", startDateTime)
.setParameter("endDateTime", endDateTime)
.setParameter("shippingGroupCode", strShippingGroupList)
.getResultList();
Query query = entityManager.createQuery(hql.toString());
query.setParameter("organizeCode", cfg.getOrganizeCode());
query.setParameter("isValid", CommonEnumUtil.VALID);
query.setParameter("isDeleted", CommonEnumUtil.FALSE);
query.setParameter("status", MesExtEnumUtil.MES_LOADING_STATUS.SCANNED.getValue());
query.setParameter("startDateTime", startDateTime);
query.setParameter("endDateTime", endDateTime);
if (strShippingGroupList.size() == 1) {
query.setParameter("shippingGroupCode", strShippingGroupList.get(0));
} else {
query.setParameter("shippingGroupCode", strShippingGroupList);
}
List<Map> dataList = query.getResultList();
Map<String, String> shippingGroupCount = new HashMap<>();
if (!CollectionUtils.isEmpty(dataList)) {
for (Map data : dataList) {
@ -1171,11 +1238,9 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer
/**
* JPH
* 线0
* @param cfg
* @param cfgDetail
* @return
* @param cfg
*/
private List<String> getClientJPH(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) {
private List<String> getClientJph(MesShippingKanbanCfg cfg) {
List<String> values = new ArrayList<>();
List<String> strShippingGroupList = Arrays.asList(cfg.getShippingGroupCode().split(","));
if (CollectionUtils.isEmpty(strShippingGroupList)) {
@ -1186,7 +1251,7 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer
Date prevHourTime = DateUtil.addMinutes(nowTime, -60);
StringBuilder offNumberHql = new StringBuilder();
offNumberHql.append("select count(1) from " + MesCimSeresJisVinOverPoint.class.getName());
offNumberHql.append("select count(1) from ").append(MesCimSeresJisVinOverPoint.class.getName());
offNumberHql.append(" where organizeCode = :organizeCode and isDeleted = :isDeleted and isValid = :isValid ");
offNumberHql.append(" and createDatetime BETWEEN :startDateTime AND :endDateTime ");
offNumberHql.append(" and overPoint = :overPoint ");
@ -1217,11 +1282,9 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer
/**
* JPH
* /线
* @param cfg
* @param cfgDetail
* @return
* @param cfg
*/
private List<String> getProductJPH(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) {
private List<String> getProductJph(MesShippingKanbanCfg cfg) {
List<String> values = new ArrayList<>();
List<MesPartShippingGroup> partShippingGroups = getShippingGroups(cfg);
if (CollectionUtils.isEmpty(partShippingGroups)) {

@ -1196,6 +1196,8 @@ public class MesWorkOrderService implements IMesWorkOrderService {
try {
//加工记录
MesProductionRecord record = model.getMesProductionRecordMap().get(orderNo).iterator().next();
LOGGER.info("排序报工开始,报工条码={}",record.getProductSn());
//工单信息
MesWorkOrder workOrder = getMesWorkOrder(model.getMesWorkOrderMap(), record.getWorkOrderNo());
//生产版本
@ -1245,11 +1247,23 @@ public class MesWorkOrderService implements IMesWorkOrderService {
//更新加工记录
productionRecordService.updateProductionRecord(model.getMesProductionRecordMap().get(orderNo), userName, MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_20.getValue(), "");
//更新工单汇报数量
workOrder.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
/* workOrder.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
workOrder.setReportedQty(workOrder.getReportedQty()+MesPcnExtConstWords.ONE);
workOrder.setModifyDatetime((new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS")).format(new Date()));
workOrder.setModifyUser(userName);
workOrderExtService.update(workOrder);
workOrderExtService.update(workOrder);*/
double qty = workOrder.getReportedQty()+MesPcnExtConstWords.ONE;
DdlPackBean orderPackBean = DdlPackBean.getDdlPackBean(workOrder.getOrganizeCode());
DdlPreparedPack.getNumEqualPack(workOrder.getId(),"id", orderPackBean);
workOrderRepository.updateByPropertiesNoSync(
new String[]{MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME, MesPcnExtConstWords.SYSTEM_SYNC_STATUS, "reportedQty"},
new Object[]{userName, TimeTool.getNowTime(true), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), qty},
orderPackBean);
LOGGER.info("修改工单数量完成,报工前数量:{},报工后数量:{},工单号【{}】",workOrder.getReportedQty(),qty,workOrder.getWorkOrderNo());
} catch (Exception e) {
String msg = e.getMessage();
if (e instanceof ImppBusiException) {

@ -119,12 +119,14 @@ public class WorkOrderAssemblyPrintQueueStrategyService implements IPrintQueueSt
MesWorkOrder mesWorkOrder = (StringUtils.isEmpty(printQueue.getWorkOrderNo()) || CollectionUtils.isEmpty(workOrderMap) || !workOrderMap.containsKey(printQueue.getWorkOrderNo())) ? null : workOrderMap.get(printQueue.getWorkOrderNo()).get(0);
if (mesWorkOrder == null) {
printQueue.setRemark("生产工单不存在");
/*printQueue.setRemark("生产工单不存在");
printQueue.setPrintStatus(MesExtEnumUtil.PRINT_STATUS.FAILURE.getValue());
printQueue.setSystemSyncStatus(CommonEnumUtil.FALSE);
ConvertBean.serviceModelUpdate(printQueue, model.getModifyUser());
log.info("打印队列查询 --- {} --- 工单[{}]不存在 暂不输出打印 ---", MesExtEnumUtil.PRINT_QUEUE_TYPE.valueOfDescription(model.getPrintQueueType()), printQueue.getWorkOrderNo());
continue;
continue;*/
log.info("打印队列查询 --- {} --- 工单[{}]不存在 暂不输出打印 ---", MesExtEnumUtil.PRINT_QUEUE_TYPE.valueOfDescription(model.getPrintQueueType()), printQueue.getWorkOrderNo());
break;
}
MesPartProdGroup mesPartProdGroup = (StringUtils.isEmpty(printQueue.getPartProdGroupCode()) || CollectionUtils.isEmpty(partProdGroupMap) || !partProdGroupMap.containsKey(printQueue.getPartProdGroupCode())) ? null : partProdGroupMap.get(printQueue.getPartProdGroupCode());

@ -88,6 +88,9 @@ public class MesShippingScanSnStrategyServiceImpl implements IMesShippingScanStr
checkShippingDetails(model, orderManagement, shippingGroup, produceSn, detail);
scanFlg = true;
//明细更新
if (StringUtils.isEmpty(orderManagement.getCheckSeqCode())) {
detail.setBarcode(model.getSn());
}
updateOrderManagementDetails(produceSn, orderManagement, detail, model);
break;
}
@ -254,7 +257,6 @@ public class MesShippingScanSnStrategyServiceImpl implements IMesShippingScanStr
private void updateOrderManagementDetails(MesProduceSn produceSn, MesShippingOrderManagement orderManagement, MesShippingOrderManagementDetail detail, MesSortShippingCheckModel model) {
if (StringUtils.isEmpty(orderManagement.getCheckSeqCode())) {
detail.setBarcode(model.getSn());
detail.setIsScanFlg(MesCommonConstant.TRUE_INTEGER);
detail.setStatus(MesExtEnumUtil.SHIPPING_ORDER_DETAIL_SHIPPING_STATUS.SHIPPINGED.getValue());
detail.setRemark("扫描完成");

@ -0,0 +1,12 @@
package cn.estsh.i3plus.ext.mes.pcn.pojo.model;
import lombok.Data;
import java.util.List;
@Data
public class ShippingKanbanCacheModel {
private List<String> clientStockQty;
private List<String> cacheNextShipping;
}
Loading…
Cancel
Save