合并代码

uat-temp-wj-chongqingdaqu-prod-huaweiyun-temp
王杰 3 months ago
parent af0c638397
commit 86196f23c0

@ -39,4 +39,7 @@ public interface IMesSortShippingCheckService {
void updateDetail(MesShippingOrderManagementDetail item);
@ApiOperation(value = "待发运列表")
MesSortShippingCheckModel getSortShippingQueueList(MesSortShippingCheckModel model);
}

@ -75,6 +75,8 @@ public class MesSortShippingCheckController {
ConvertBean.serviceModelUpdate(shippingOrderManagement, userInfo);
long start = System.currentTimeMillis();
MesSortShippingCheckModel model = sortShippingCheckService.doShippingOrderNoQuery(shippingOrderManagement);
//待发运列表
model = sortShippingCheckService.getSortShippingQueueList(model);
long end = System.currentTimeMillis();
scanLogUtil.info("扫描发运单执行结束", end - start);
return ResultBean.success(model != null ? model.getMsg() : "").setResultObject(model);

@ -1121,7 +1121,7 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer
// Use a single query to fetch counts grouped by work center code
List<Map> productionCounts = entityManager.createQuery(
"SELECT new map(pr.workCenterCode as workCenterCode, COUNT(pr) as totalCount) " +
"SELECT new map(pr.workCenterCode as workCenterCode, COUNT(DISTINCT(pr.productSn)) as totalCount) " +
"FROM " + MesProductionRecord.class.getName() + " pr " +
"WHERE pr.organizeCode = :organizeCode AND pr.isDeleted = :isDeleted AND pr.isValid = :isValid " +
"AND pr.createDatetime BETWEEN :startDateTime AND :endDateTime " +

@ -8,6 +8,7 @@ import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi.shippingscan.IMes
import cn.estsh.i3plus.ext.mes.pcn.apiservice.util.MesPcnException;
import cn.estsh.i3plus.ext.mes.pcn.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesSortShippingCheckModel;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesSortShippingListModel;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesSortShippingModel;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
@ -137,10 +138,13 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
@Autowired
private IMesLoadingGroupRepository mesLoadingGroupRDao;
@Autowired
protected MesCustomerCarModelRepository customerCarModelRepository;
@Override
public MesSortShippingCheckModel doShippingOrderNoQuery(MesShippingOrderManagement shippingOrderManagement) {
//返回数据组装
MesSortShippingCheckModel model = new MesSortShippingCheckModel();
MesSortShippingCheckModel model = new MesSortShippingCheckModel(shippingOrderManagement.getOrganizeCode());
//校验发运单
MesShippingOrderManagement orderManagement = getMesShippingOrderManagement(shippingOrderManagement);
if(Objects.isNull(orderManagement)){
@ -149,7 +153,7 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
}
MesPartShippingGroup partShippingGroup = getMesPartShippingGroup(orderManagement.getOrganizeCode(),orderManagement.getShippingGroupCode());
//校验发运单扫描顺序
checkShippingOrderSeq(shippingOrderManagement, orderManagement);
checkShippingOrderSeq(shippingOrderManagement, orderManagement, model);
//根据扫描的发运单找到是否装车配置,若是,则根据发运单查询是否生成装车单,若没生成装车单则提示此发运单配置是否装车为是,但没生成装车单,请检查数据!
checkLoadingList(shippingOrderManagement, orderManagement, partShippingGroup);
if (!StringUtils.isEmpty(orderManagement.getCheckSeqCode())) {
@ -419,7 +423,7 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
return orderManagement;
}
private void checkShippingOrderSeq(MesShippingOrderManagement shippingOrderManagement, MesShippingOrderManagement orderManagement) {
private void checkShippingOrderSeq(MesShippingOrderManagement shippingOrderManagement, MesShippingOrderManagement orderManagement, MesSortShippingCheckModel model) {
//最后一个扫描完成的发运单信息
DdlPackBean orderManagementPackBean = DdlPackBean.getDdlPackBean(shippingOrderManagement.getOrganizeCode());
DdlPreparedPack.getNumberSmallerPack(orderManagement.getSeq(), "seq", orderManagementPackBean);
@ -448,6 +452,7 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
orderManagement.getShippingCode(), orderManagement.getSeq(),shippingOrder.getShippingCode(),shippingOrder.getSeq()));
}
}
model.setShippingSeq(orderManagement.getSeq());
}
private void checkLoadingList(MesShippingOrderManagement shippingOrderManagement, MesShippingOrderManagement orderManagement, MesPartShippingGroup partShippingGroup) {
@ -633,6 +638,10 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
if (StringUtils.isEmpty(orderManagement)) {
throw new ImppBusiException(String.format("【%s】此发运单不存在请检查数据", model.getShippingCode()));
}
if (orderManagement.getStatus().compareTo(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue()) >= 0) {
throw new ImppBusiException(String.format("【%s】此发运单当前状态【%s】请检查数据",
model.getShippingCode(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.valueOfDescription(orderManagement.getStatus())));
}
return orderManagement;
}
@ -1026,4 +1035,67 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
}
return shippingGroup.getConfirmPartType();
}
@Override
public MesSortShippingCheckModel getSortShippingQueueList(MesSortShippingCheckModel model) {
if (null == model || null == model.getMesPartShippingGroup()) return model;
Integer showQueueNum = model.getMesPartShippingGroup().getShowQueueNum();
if (StringUtils.isEmpty(showQueueNum) || showQueueNum.compareTo(MesPcnExtConstWords.ZERO) <= 0) return model;
//查询当前发运单后面的未发运的单据
DdlPackBean packBean = DdlPackBean.getDdlPackBean(model.getOrganizeCode());
DdlPreparedPack.getNumberBiggerPack(model.getShippingSeq(), MesPcnExtConstWords.SEQ, packBean);
DdlPreparedPack.getStringEqualPack(model.getMesPartShippingGroup().getShippingGroupCode(), MesPcnExtConstWords.SHIPPING_GROUP_CODE, packBean);
DdlPreparedPack.getInPackList(Stream.of(MesExtEnumUtil.SHIPPING_ORDER_STATUS.CREATE.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.PUBLISHED.getValue()).collect(Collectors.toList()), MesPcnExtConstWords.STATUS, packBean);
DdlPreparedPack.getOrderBy(MesPcnExtConstWords.SEQ, CommonEnumUtil.ASC_OR_DESC.ASC.getValue(), packBean);
List<MesShippingOrderManagement> shippingOrderList = shippingOrderManagementRepository.findByHqlTopWhere(packBean, showQueueNum);
if (CollectionUtils.isEmpty(shippingOrderList)) return model;
//查询发运单明细数据
List<Long> idList = shippingOrderList.stream().filter(o -> null != o).map(MesShippingOrderManagement::getId).collect(Collectors.toList());
packBean = DdlPackBean.getDdlPackBean(model.getOrganizeCode());
if (idList.size() == 1) DdlPreparedPack.getNumEqualPack(idList.get(0), MesPcnExtConstWords.PID, packBean);
else DdlPreparedPack.getInPackList(idList, MesPcnExtConstWords.PID, packBean);
List<MesShippingOrderManagementDetail> detailList = shippingOrderManagementDetailRepository.findByHqlWhere(packBean);
Map<Long, List<MesShippingOrderManagementDetail>> detailMap = CollectionUtils.isEmpty(detailList) ? null :
detailList.stream().filter(o -> null != o).collect(Collectors.groupingBy(MesShippingOrderManagementDetail::getPid));
List<String> custPartNoList = CollectionUtils.isEmpty(detailList) ? null :
(detailList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getCustPartNo()))).map(MesShippingOrderManagementDetail::getCustPartNo)
.collect(Collectors.toList())).stream().filter(o -> !StringUtils.isEmpty(o)).distinct().collect(Collectors.toList());
//查询车型
Map<String, List<MesCustomerCarModel>> carModelCodeMap = null;
if (!CollectionUtils.isEmpty(custPartNoList)) {
packBean = DdlPackBean.getDdlPackBean(model.getOrganizeCode());
if (custPartNoList.size() == 1) DdlPreparedPack.getStringEqualPack(custPartNoList.get(0), MesPcnExtConstWords.CUST_PART_NO, packBean);
else DdlPreparedPack.getInPackList(custPartNoList, MesPcnExtConstWords.CUST_PART_NO, packBean);
List<MesCustomerCarModel> customerCarModelList = customerCarModelRepository.findByHqlWhere(packBean);
carModelCodeMap = CollectionUtils.isEmpty(customerCarModelList) ? null :
customerCarModelList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getCarModelCode()))).collect(Collectors.groupingBy(MesCustomerCarModel::getCustPartNo));
}
//返回待发运列表数据
List<MesSortShippingListModel> sortShippingListModelList = new ArrayList<>();
for (MesShippingOrderManagement shippingOrderManagement : shippingOrderList) {
if (null == shippingOrderManagement) continue;
List<MesShippingOrderManagementDetail> details = CollectionUtils.isEmpty(detailMap) ? null : detailMap.get(shippingOrderManagement.getId());
if (CollectionUtils.isEmpty(details)) {
MesSortShippingListModel shippingListModel = new MesSortShippingListModel();
shippingListModel.setShippingCode(shippingOrderManagement.getShippingCode());
sortShippingListModelList.add(shippingListModel);
continue;
}
for (MesShippingOrderManagementDetail detail : details) {
if (null == detail) continue;
MesSortShippingListModel shippingListModel = new MesSortShippingListModel();
shippingListModel.setShippingCode(shippingOrderManagement.getShippingCode());
shippingListModel.setCustOrderNo(detail.getCustOrderNo());
shippingListModel.setPartNo(detail.getPartNo());
shippingListModel.setCustPartNo(detail.getCustPartNo());
if (!CollectionUtils.isEmpty(carModelCodeMap) && carModelCodeMap.containsKey(detail.getCustPartNo())) {
shippingListModel.setCarModelCode(carModelCodeMap.get(detail.getCustPartNo()).get(0).getCarModelCode());
shippingListModel.setCarModelName(carModelCodeMap.get(detail.getCustPartNo()).get(0).getCarModelName());
}
sortShippingListModelList.add(shippingListModel);
}
}
model.setSortShippingListModelList(sortShippingListModelList);
return model;
}
}

@ -152,8 +152,8 @@ public class MesShippingScanSnStrategyServiceImpl implements IMesShippingScanStr
throw new ImppBusiException(String.format("【%s】此条码已经扫描过请检查数据", model.getSn()));
}
DdlPackBean packBean = DdlPackBean.getDdlPackBean(model.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(model.getSn(), "productSn", packBean);
DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{"createDatetime"}, packBean);
packBean.setWhereAppend(packBean.getWhereAppend() + " and (model.productSn = '"+ model.getSn() +"' or model.custSn = '"+ model.getSn() + "')");
DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{MesPcnExtConstWords.CREATE_DATE_TIME}, packBean);
MesProduceSn produceSn = produceSnRepository.getByProperty(packBean);
if (!StringUtils.isEmpty(produceSn)) {
//校验状态

@ -54,12 +54,23 @@ public class MesSortShippingCheckModel {
@ApiParam("提示引导信息")
private String msg;
@ApiParam("发运单顺序号")
private Long shippingSeq;
@ApiParam("料架条码")
private String volvoRackNo;
@ApiParam("待发运列表")
private List<MesSortShippingListModel> sortShippingListModelList;
public void setDetailList(List<MesShippingOrderManagementDetail> detailList) {
this.detailList = detailList;
this.isScanCount = (int) detailList.stream().filter(k -> Objects.equals(k.getIsScanFlg(), MesCommonConstant.TRUE_INTEGER)).count();
}
public MesSortShippingCheckModel() {}
public MesSortShippingCheckModel(String organizeCode) {
this.organizeCode = organizeCode;
}
}

@ -0,0 +1,38 @@
package cn.estsh.i3plus.ext.mes.pcn.pojo.model;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import io.swagger.annotations.ApiParam;
import lombok.Data;
import org.springframework.util.CollectionUtils;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/**
* @Description : MODEL
**/
@Data
public class MesSortShippingListModel implements Serializable {
private static final long serialVersionUID = 4209064017242032556L;
@ApiParam("发运单号")
private String shippingCode;
@ApiParam("客户订单号")
private String custOrderNo;
@ApiParam("零件号")
private String partNo;
@ApiParam("客户零件号")
private String custPartNo;
@ApiParam("车型代码")
private String carModelCode;
@ApiParam("车型名称")
private String carModelName;
}

@ -361,6 +361,8 @@ public class MesPcnExtConstWords {
public static final String LAST_PRINT_TIME = "lastPrintTime";
//发运组名称
public static final String SHIPPING_GROUP_NAME = "shippingGroupName";
//顺序号
public static final String SEQ = "seq";
//队列状态
public static final String QUEUE_STATUS = "queueStatus";
//目标工位

Loading…
Cancel
Save