Merge branch 'dev' into dev-wuhan

tags/yfai-mes-ext-v2.4
王杰 5 months ago
commit da514d59d9

@ -0,0 +1,13 @@
package cn.estsh.i3plus.ext.mes.api.base;
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentSpotCheckTag;
/**
* @Description :
* @Reference :
* @Author : junsheng.li
* @CreateDate 2024/11/22 19:08
* @Modify:
**/
public interface IMesEquipmentSpotCheckTagService extends IBaseMesService<MesEquipmentSpotCheckTag> {
}

@ -7,7 +7,7 @@ import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.mes.bean.MesCokpitKanbanData;
import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn;
import cn.estsh.i3plus.pojo.mes.bean.MesProductionRecord;
import cn.estsh.i3plus.pojo.mes.model.MesProductionRecordModel;
import cn.estsh.i3plus.pojo.mes.model.report.MesGeneralExportReportModel;
import cn.estsh.i3plus.pojo.mes.model.report.MesGeneralShippingReportModel;
import cn.estsh.i3plus.pojo.mes.model.report.MesTraceabilityReportModel;
@ -50,7 +50,7 @@ public interface IMesYfReportService {
ListPager<MesProduceSn> queryMesProduceSn(MesProduceSn mesProduceSn, Pager pager);
@ApiOperation("产品加工记录")
ListPager<MesProductionRecord> queryMesProductionRecord(MesProductionRecord mesProductionRecord, Pager pager);
ListPager<MesProductionRecordModel> queryMesProductionRecord(MesProductionRecordModel mesProductionRecordModel, Pager pager);
@ApiOperation("看板数据")
ListPager<MesCokpitKanbanData> queryMesCokpitKanbanData(MesCokpitKanbanData kanbanData, Pager pager);

@ -0,0 +1,58 @@
import cn.estsh.i3plus.ext.mes.pojo.util.OverwriteStringJoin
import cn.estsh.i3plus.platform.common.tool.TimeTool
import cn.estsh.i3plus.platform.plugin.datasource.DynamicDataSourceProxy
import cn.estsh.i3plus.pojo.mes.dbinterface.MesInterfaceDataMapper
import lombok.Getter
import lombok.Setter
import org.apache.commons.collections.CollectionUtils
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import org.springframework.util.StringUtils
import javax.annotation.Resource
import java.sql.Connection
/**
* @Description : PiscesToMesBom
* @Reference :
* @Author : junsheng.li
* @CreateDate 2024/11/24 12:40
* @Modify:
* */
class PiscesToMesBom {
public static final Logger LOGGER = LoggerFactory.getLogger(PiscesToMesBom.class)
@Resource(name = "mesDataSource")
private DynamicDataSourceProxy mesDataSource;
@Getter
@Setter
private Connection mesConn;
def filterData(MesInterfaceDataMapper mapper, List<Map<String, Object>> srcData) throws Exception {
if (srcData == null || srcData.size() == 0) {
return srcData
}
String organizeCode = mapper.getOrganizeCode();
List<String> partNoList = new ArrayList<>();
for (Map<String, Object> rowMap : srcData) {
//
if (!StringUtils.isEmpty(rowMap.get("PART_NO"))) {
partNoList.add(String.valueOf(rowMap.get("PART_NO")))
}
}
updateMesBomDelete(organizeCode, partNoList);
return srcData;
}
private void updateMesBomDelete(String organizeCode, List<String> partNoList) {
if (StringUtils.isEmpty(organizeCode) || CollectionUtils.isEmpty(partNoList)) return;
List<String> updateList = new ArrayList<>();
updateList.add("update mes_bom set system_sync_date_time='" + TimeTool.getNowTime(true) + "',system_sync_status = 2,is_deleted=1 where organize_code = '" + organizeCode + "' and part_no in (" + OverwriteStringJoin.join(",", partNoList) + ") ;")
this.mesConn = mesDataSource.getWriteConnectionWithoutPool();
mesDataSource.executeAsBatch(updateList, mesConn)
mesDataSource.closeConnectionWithoutPoll(this.mesConn)
}
}

@ -11,6 +11,7 @@ import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn;
import cn.estsh.i3plus.pojo.mes.bean.MesProductionRecord;
import cn.estsh.i3plus.pojo.mes.model.MesProductionRecordModel;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import cn.estsh.i3plus.pojo.model.common.ExportDataModel;
import cn.estsh.impp.framework.base.controller.MesBaseController;
@ -126,9 +127,9 @@ public class BaseExtDataController extends MesBaseController {
//查询数据
listPager = mesYfReportService.queryMesProduceSn(JSON.parseObject(exportDataModel.getSelectWhere(), MesProduceSn.class),null);break;
case MES_PRODUCTION_RECORD_DATA_EXPORT:
mesClass = MesProductionRecord.class;
mesClass = MesProductionRecordModel.class;
//查询数据
listPager = mesYfReportService.queryMesProductionRecord(JSON.parseObject(exportDataModel.getSelectWhere(), MesProductionRecord.class),null);break;
listPager = mesYfReportService.queryMesProductionRecord(JSON.parseObject(exportDataModel.getSelectWhere(), MesProductionRecordModel.class),null);break;
case MES_SHIPPING_DETAIL_DATA_EXPORT:
mesClass = MesShippingOrderManagementDetailModel.class;
//查询数据

@ -0,0 +1,19 @@
package cn.estsh.i3plus.ext.mes.apiservice.controller.base;
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentSpotCheckTag;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Description :
* @Reference :
* @Author : junsheng.li
* @CreateDate 2024/11/22 19:06
* @Modify:
**/
@Api(description = "设备点检地址")
@RestController
@RequestMapping(MesCommonConstant.MES_YANFEN + "/mesEquipmentSpotCheckTag")
public class MesEquipmentSpotCheckTagController extends BaseMesController<MesEquipmentSpotCheckTag> {
}

@ -80,9 +80,9 @@ public class MesBusiReportController extends MesBaseController {
@ApiOperation(value = "产品加工记录", notes = "产品加工记录")
@GetMapping("/mesProductionRecord/query")
public ResultBean queryMesProductionRecord(MesProductionRecord mesProductionRecord, Pager pager) {
public ResultBean queryMesProductionRecord(MesProductionRecordModel mesProductionRecordModel, Pager pager) {
try {
return ResultBean.success("查询成功").setListPager(mesYfReportService.queryMesProductionRecord(mesProductionRecord,pager));
return ResultBean.success("查询成功").setListPager(mesYfReportService.queryMesProductionRecord(mesProductionRecordModel,pager));
} catch (ImppBusiException e) {
return ResultBean.fail(e);
} catch (Exception e) {

@ -4,6 +4,7 @@ import cn.estsh.i3plus.ext.mes.pojo.model.report.MesDeviceDataQueryReportConditi
import cn.estsh.i3plus.ext.mes.pojo.model.report.MesDeviceDataQueryReportResultModel;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.mes.model.MesProductionRecordModel;
import cn.estsh.i3plus.pojo.mes.model.report.MesGeneralExportReportModel;
import cn.estsh.i3plus.pojo.mes.model.report.MesGeneralShippingReportModel;
import io.swagger.annotations.ApiOperation;
@ -33,4 +34,7 @@ public interface IMesYfReportDao {
@ApiOperation("通用发运报表查询")
ListPager<MesGeneralShippingReportModel> queryGeneralShipping(MesGeneralShippingReportModel model, Pager pager, List<String> shippingGroupList);
@ApiOperation("产品加工记录")
ListPager<MesProductionRecordModel> queryMesProductionRecord(MesProductionRecordModel mesProductionRecordModel, Pager pager);
}

@ -3,10 +3,12 @@ package cn.estsh.i3plus.ext.mes.apiservice.daoimpl.report;
import cn.estsh.i3plus.ext.mes.apiservice.dao.report.IMesYfReportDao;
import cn.estsh.i3plus.ext.mes.pojo.model.report.MesDeviceDataQueryReportConditionModel;
import cn.estsh.i3plus.ext.mes.pojo.model.report.MesDeviceDataQueryReportResultModel;
import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.common.PagerHelper;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.mes.model.MesProductionRecordModel;
import cn.estsh.i3plus.pojo.mes.model.report.MesGeneralExportReportModel;
import cn.estsh.i3plus.pojo.mes.model.report.MesGeneralShippingReportModel;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
@ -158,6 +160,27 @@ public class MesYfReportDaoImpl implements IMesYfReportDao {
return new ListPager<>(dataQuery.getResultList(), pager);
}
@Override
public ListPager<MesProductionRecordModel> queryMesProductionRecord(MesProductionRecordModel model, Pager pager) {
StringBuilder dataHql = new StringBuilder();
dataHql.append(" select new ").append(MesProductionRecordModel.class.getName()).append("(record,wo.workOrderStatus)");
//共用HQL
String commonHql = getMesProductionRecordCommonHql(model);
//行数
Query countQuery = entityManager.createQuery("select count(1) " + commonHql);
setMesProductionRecordParameter(model, countQuery);
//数据
Query dataQuery = entityManager.createQuery(dataHql.append(commonHql).append(getMesProductionRecordOrderBy(model)).toString(), MesProductionRecordModel.class);
setMesProductionRecordParameter(model, dataQuery);
if (Objects.isNull(pager)) return new ListPager<>(dataQuery.getResultList(), pager);
int count = Integer.parseInt(String.valueOf(countQuery.getSingleResult()));
if (count <= 0) return new ListPager<>(new ArrayList<>(), pager);
pager = PagerHelper.getPager(pager, count);
dataQuery.setFirstResult(pager.getStartRow()).setMaxResults(pager.getPageSize());
return new ListPager<>(dataQuery.getResultList(), pager);
}
private void setGeneralExportParameter(MesGeneralExportReportModel model, Query query) {
query.setParameter("isValid", CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue());
query.setParameter("isDeleted", CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
@ -246,4 +269,51 @@ public class MesYfReportDaoImpl implements IMesYfReportDao {
return commonHql.toString();
}
private String getMesProductionRecordCommonHql(MesProductionRecordModel model) {
StringBuilder commonHql = new StringBuilder();
commonHql.append(" from MesProductionRecord record left join MesWorkOrder wo on wo.workOrderNo = record.workOrderNo ");
commonHql.append(" where record.organizeCode = :organizeCode and record.isDeleted=:isDeleted and record.isValid=:isValid ");
if (!StringUtils.isEmpty(model.getProductSn())) commonHql.append(" and record.productSn like '%").append(model.getProductSn()).append("%' ");
if (!StringUtils.isEmpty(model.getWorkOrderNo())) commonHql.append(" and record.workOrderNo like '%").append(model.getWorkOrderNo()).append("%' ");
if (!StringUtils.isEmpty(model.getWorkCenterCode())) commonHql.append(" and record.workCenterCode like '%").append(model.getWorkCenterCode()).append("%' ");
if (!StringUtils.isEmpty(model.getWorkCellCode())) commonHql.append(" and record.workCellCode like '%").append(model.getWorkCellCode()).append("%' ");
if (!StringUtils.isEmpty(model.getCompleteDateTimeStart())) commonHql.append(" and record.completeDateTime >= :completeDateTimeStart ");
if (!StringUtils.isEmpty(model.getCompleteDateTimeEnd())) commonHql.append(" and record.completeDateTime <= :completeDateTimeEnd ");
if (!StringUtils.isEmpty(model.getEquipmentCode())) commonHql.append(" and record.equipmentCode like '%").append(model.getEquipmentCode()).append("%' ");
if (!StringUtils.isEmpty(model.getEquipmentName())) commonHql.append(" and record.equipmentName like '%").append(model.getEquipmentName()).append("%' ");
if (!StringUtils.isEmpty(model.getMouldNo())) commonHql.append(" and record.mouldNo like '%").append(model.getMouldNo()).append("%' ");
if (!StringUtils.isEmpty(model.getShiftGroup())) commonHql.append(" and record.shiftGroup like '%").append(model.getShiftGroup()).append("%' ");
if (!StringUtils.isEmpty(model.getShiftCode())) commonHql.append(" and record.shiftCode like '%").append(model.getShiftCode()).append("%' ");
if (!StringUtils.isEmpty(model.getReportStatus()) && model.getReportStatus() > MesExtConstWords.ZERO) commonHql.append(" and record.reportStatus = :reportStatus ");
if (!StringUtils.isEmpty(model.getReportType()) && model.getReportType() > MesExtConstWords.ZERO) commonHql.append(" and record.reportType = :reportType ");
if (!StringUtils.isEmpty(model.getIsComplete()) && model.getIsComplete() > MesExtConstWords.ZERO) commonHql.append(" and record.isComplete = :isComplete ");
if (!StringUtils.isEmpty(model.getWorkOrderStatus()) && model.getWorkOrderStatus() > MesExtConstWords.ZERO) commonHql.append(" and wo.workOrderStatus = :workOrderStatus ");
if (!StringUtils.isEmpty(model.getIsTest())) commonHql.append(" and record.isTest like '%").append(model.getIsTest()).append("%' ");
if (!StringUtils.isEmpty(model.getPartNo())) commonHql.append(" and record.partNo like '%").append(model.getPartNo()).append("%' ");
if (!StringUtils.isEmpty(model.getPartName())) commonHql.append(" and record.partName like '%").append(model.getPartName()).append("%' ");
return commonHql.toString();
}
private void setMesProductionRecordParameter(MesProductionRecordModel model, Query query) {
query.setParameter("isValid", CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue());
query.setParameter("isDeleted", CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
query.setParameter("organizeCode", model.getOrganizeCode());
if(!StringUtils.isEmpty(model.getCompleteDateTimeStart())) query.setParameter("completeDateTimeStart", model.getCompleteDateTimeStart());
if (!StringUtils.isEmpty(model.getCompleteDateTimeEnd())) query.setParameter("completeDateTimeEnd", model.getCompleteDateTimeEnd());
if (!StringUtils.isEmpty(model.getReportStatus()) && model.getReportStatus() > MesExtConstWords.ZERO) query.setParameter("reportStatus", model.getReportStatus());
if (!StringUtils.isEmpty(model.getReportType()) && model.getReportType() > MesExtConstWords.ZERO) query.setParameter("reportType", model.getReportType());
if (!StringUtils.isEmpty(model.getIsComplete()) && model.getIsComplete() > MesExtConstWords.ZERO) query.setParameter("isComplete", model.getIsComplete());
if (!StringUtils.isEmpty(model.getWorkOrderStatus()) && model.getWorkOrderStatus() > MesExtConstWords.ZERO) query.setParameter("workOrderStatus", model.getWorkOrderStatus());
}
private String getMesProductionRecordOrderBy(MesProductionRecordModel model) {
StringBuilder orderBy = new StringBuilder();
if (StringUtils.isEmpty(model.getOrderByParam()) || StringUtils.isEmpty(model.getAscOrDesc())) {
model.setOrderByParam("createDatetime");
model.setAscOrDesc(CommonEnumUtil.ASC_OR_DESC.DESC.getValue());
}
return orderBy.append(" order by record.").append(model.getOrderByParam()).append(" ").append(CommonEnumUtil.ASC_OR_DESC.DESC.getValue() == model.getAscOrDesc() ? "desc" : "asc").toString();
}
}

@ -0,0 +1,18 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesEquipmentSpotCheckTagService;
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentSpotCheckTag;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* @Description :
* @Reference :
* @Author : junsheng.li
* @CreateDate 2024/11/22 19:09
* @Modify:
**/
@Service
@Slf4j
public class MesEquipmentSpotCheckTagServiceImpl extends BaseMesService<MesEquipmentSpotCheckTag> implements IMesEquipmentSpotCheckTagService {
}

@ -10,7 +10,6 @@ import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.MesPartProdGroup;
import cn.estsh.i3plus.pojo.mes.bean.MesPartProdGroupDetail;
import cn.estsh.i3plus.pojo.mes.bean.MesPrintQueue;
import cn.estsh.i3plus.pojo.mes.repository.MesPartProdGroupDetailRepository;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
@ -18,9 +17,9 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
@Service
@ -61,10 +60,15 @@ public class MesPartProdGroupService extends BaseMesService<MesPartProdGroup> im
@Override
public Map<String, MesPartProdGroup> getMesPartProdGroupMap(String organizeCode, List<String> partProdGroupCodeList) {
if (CollectionUtils.isEmpty(partProdGroupCodeList) || StringUtils.isEmpty(organizeCode)) return null;
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getInPackList(partProdGroupCodeList, MesExtConstWords.PART_PROD_GROUP_CODE, packBean);
if (partProdGroupCodeList.size() == 1) DdlPreparedPack.getStringEqualPack(partProdGroupCodeList.get(0), MesExtConstWords.PART_PROD_GROUP_CODE, packBean);
else DdlPreparedPack.getInPackList(partProdGroupCodeList, MesExtConstWords.PART_PROD_GROUP_CODE, packBean);
List<MesPartProdGroup> partProdGroupList = baseRDao.findByHqlWhere(packBean);
return CollectionUtils.isEmpty(partProdGroupList) ? null : partProdGroupList.stream().collect(Collectors.toMap(MesPartProdGroup::getPartProdGroupCode, Function.identity(), (x, y) -> y));
if (CollectionUtils.isEmpty(partProdGroupList)) return null;
partProdGroupList = partProdGroupList.stream().filter(o -> null != o).collect(
Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(MesPartProdGroup::getPartProdGroupCode))), ArrayList::new));
return partProdGroupList.stream().filter(o -> null != o).collect(Collectors.toMap(MesPartProdGroup::getPartProdGroupCode, o -> o));
}

@ -19,7 +19,7 @@ import java.util.List;
public class MesProdRuleSortCfgService extends BaseMesService<MesProdRuleSortCfg> implements IMesProdRuleSortCfgService {
protected void setPackQueryBean(MesProdRuleSortCfg bean, DdlPackBean packBean) {
DdlPreparedPack.getStringEqualPack(bean.getWorkCenterCode(), MesExtConstWords.WORK_CENTER_CODE, packBean);
DdlPreparedPack.getStringLikerPack(bean.getWorkCenterCode(), MesExtConstWords.WORK_CENTER_CODE, packBean);
DdlPreparedPack.getStringEqualPack(bean.getWorkCellCode(), MesExtConstWords.WORK_CELL_CODE, packBean);
DdlPreparedPack.getStringEqualPack(bean.getProcessCode(), MesExtConstWords.PROCESS_CODE, packBean);
DdlPreparedPack.getStringEqualPack(bean.getCraftCode(), MesExtConstWords.CRAFT_CODE, packBean);

@ -187,7 +187,7 @@ public class MesPullingOrderInfoService extends BaseMesService<MesPullingOrderIn
pullingOrder.setWorkOrderSeq(StringUtil.isEmpty(mesWorkOrder.getWorkOrderSeq()) ? "" : mesWorkOrder.getWorkOrderSeq());
pullingOrder.setIsPrint(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
pullingOrder.setPrintStatus(MesExtEnumUtil.PRINT_STATUS.UNPRINT.getValue());
pullingOrder.setPullOrderStatus(MesExtEnumUtil.PULL_ORDER_STATUS.KITTING_PULL.getValue());
pullingOrder.setPullOrderStatus(MesExtEnumUtil.PULL_ORDER_STATUS.PULL_ORDER_STATUS_10.getValue());
pullingOrder.setWorkCenterCode(mesPartPull.getWorkCenterCode());
pullingOrder.setPullCode(mesPartPull.getPullCode());
pullingOrder.setPartNo(mesWorkOrder.getPartNo());
@ -294,7 +294,7 @@ public class MesPullingOrderInfoService extends BaseMesService<MesPullingOrderIn
DdlPackBean seriesPackBean = DdlPackBean.getDdlPackBean(organizeCode);
// DdlPreparedPack.getStringEqualPack(pullingGroupCode, "pullCode", seriesPackBean);
DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.PART_PULL_ORDER_TYPE.SPS_PULL.getValue(), "pullOrderType", seriesPackBean);
DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.PULL_ORDER_STATUS.JIS_PULL.getValue(), "pullOrderStatus", seriesPackBean);
DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.PULL_ORDER_STATUS.PULL_ORDER_STATUS_20.getValue(), "pullOrderStatus", seriesPackBean);
// DdlPreparedPack.getStringEqualPack(assemblyLine, "workCenterCode", seriesPackBean);
seriesPackBean.setWhereAppend(seriesPackBean.getWhereAppend() + " order by modifyDatetime desc");
@ -306,7 +306,7 @@ public class MesPullingOrderInfoService extends BaseMesService<MesPullingOrderIn
return resultMap;
}
//更新主表状态 源系统为25配料完成 现在-【已发送设备-30】
mesPullingOrder.setPullOrderStatus(MesExtEnumUtil.PULL_ORDER_STATUS.SPS_PULL.getValue());
mesPullingOrder.setPullOrderStatus(MesExtEnumUtil.PULL_ORDER_STATUS.PULL_ORDER_STATUS_30.getValue());
ConvertBean.serviceModelUpdate(mesPullingOrder, "WS.SPS");
baseRDao.update(mesPullingOrder);
String message = "更新SPS状态成功已发送SPS信息给设备! id:" + mesPullingOrder.getId() + "Code:" + mesPullingOrder.getPullingOrderNo() + "产线" + assemblyLine + "拉动组" + pullingGroupCode + "";

@ -66,7 +66,7 @@ public class MesShippingOrderManagementService extends BaseMesService<MesShippin
private IMesLoadingListService mesLoadingListService;
protected void setPackQueryBean(MesShippingOrderManagement bean, DdlPackBean packBean) {
DdlPreparedPack.getStringEqualPack(bean.getShippingCode(), "shippingCode", packBean);
DdlPreparedPack.getStringLikerPack(bean.getShippingCode(), "shippingCode", packBean);
DdlPreparedPack.getStringEqualPack(bean.getOrderCode(), "orderCode", packBean);
DdlPreparedPack.getStringEqualPack(bean.getShippingGroupCode(), "shippingGroupCode", packBean);
DdlPreparedPack.getStringEqualPack(bean.getCustCode(), "custCode", packBean);

@ -10,6 +10,7 @@ import cn.estsh.i3plus.pojo.mes.repository.MesWorkCenterRepository;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.List;
@ -45,9 +46,10 @@ public class MesWorkCenterService extends BaseMesService<MesWorkCenter> implemen
@Override
public List<MesWorkCenter> queryMesWorkCenterList(List<String> workCenterCodeList, String organizeCode) {
if (CollectionUtils.isEmpty(workCenterCodeList) || StringUtils.isEmpty(organizeCode)) return null;
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getInPackList(workCenterCodeList, MesExtConstWords.WORK_CENTER_CODE, packBean);
if (workCenterCodeList.size() == 1) DdlPreparedPack.getStringEqualPack(workCenterCodeList.get(0), MesExtConstWords.WORK_CENTER_CODE, packBean);
else DdlPreparedPack.getInPackList(workCenterCodeList, MesExtConstWords.WORK_CENTER_CODE, packBean);
return workCenterRepository.findByHqlWhere(packBean);
}

@ -35,18 +35,19 @@ import cn.estsh.impp.framework.boot.util.SpringContextsUtil;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.map.CaseInsensitiveMap;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@Service
@Slf4j
@ -156,6 +157,9 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
private MesQueueOrderRepository queueOrderRao;
@Autowired
private MesPullingOrderInfoRepository pullingOrderInfoRepository;
@Autowired
private IMesWorkOrderAssemblyService mesWorkOrderAssemblyService;
@Autowired
@ -246,9 +250,11 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
if (!Objects.equals(bean.getWorkOrderStatus(), result.getWorkOrderStatus()) && bean.getWorkOrderStatus() == MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue()) {
isSavePrintQueue = true;
}
//排序工单 关闭工单对列表
//排序工单关闭 同时关闭 创建状态单工单队列 JIS拉动单 SPS拉动单 目视单打印队列
if (!Objects.equals(bean.getWorkOrderStatus(), result.getWorkOrderStatus()) && MesExtEnumUtil.ORDER_STATUS.CLOSE.getValue() == bean.getWorkOrderStatus() && MesExtEnumUtil.ORDER_TYPE.SORT.getValue() == bean.getWorkOrderType()) {
closeMesQueueOrder(bean.getWorkOrderNo(), bean.getOrganizeCode(), AuthUtilExt.getUserName());
closeMesPullingOrderInfo(bean.getWorkOrderNo(), bean.getOrganizeCode(), AuthUtilExt.getUserName());
closeMesPrintQueue(bean.getWorkOrderNo(), bean.getOrganizeCode(), AuthUtilExt.getUserName());
}
result.setWorkOrderStatus(bean.getWorkOrderStatus());
}
@ -262,24 +268,21 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
@Override
protected void setPackQueryBean(MesWorkOrder bean, DdlPackBean packBean) {
DdlPreparedPack.getStringLikerPack(bean.getWorkOrderNo(), "workOrderNo", packBean);
DdlPreparedPack.getStringLikerPack(bean.getPartName(), "partName", packBean);
DdlPreparedPack.getStringLikerPack(bean.getCreateUser(), "createUser", packBean);
DdlPreparedPack.getStringLikerPack(bean.getPartNo(), "partNo", packBean);
DdlPreparedPack.getStringEqualPack(bean.getCustPartNo(), "custPartNo", packBean);
DdlPreparedPack.getStringLikerPack(bean.getWorkCenterCode(), "workCenterCode", packBean);
DdlPreparedPack.getStringLikerPack(bean.getVinCode(), "vinCode", packBean);
DdlPreparedPack.getStringEqualPack(bean.getOrderFlag(), "orderFlag", packBean);
DdlPreparedPack.getStringLikerPack(bean.getWorkOrderNo(), MesExtConstWords.WORK_ORDER_NO, packBean);
DdlPreparedPack.getStringLikerPack(bean.getPartName(), MesExtConstWords.PART_NAME, packBean);
DdlPreparedPack.getStringLikerPack(bean.getCreateUser(), MesExtConstWords.CREATE_USER, packBean);
DdlPreparedPack.getStringLikerPack(bean.getPartNo(), MesExtConstWords.PART_NO, packBean);
DdlPreparedPack.getStringEqualPack(bean.getCustPartNo(), MesExtConstWords.CUST_PART_NO, packBean);
DdlPreparedPack.getStringLikerPack(bean.getWorkCenterCode(), MesExtConstWords.WORK_CENTER_CODE, packBean);
DdlPreparedPack.getStringLikerPack(bean.getVinCode(), MesExtConstWords.VIN_CODE, packBean);
DdlPreparedPack.getStringEqualPack(bean.getOrderFlag(), MesExtConstWords.ORDER_FLAG, packBean);
if (!StringUtil.isEmpty(bean.getWorkOrderStatusQuery())) {
DdlPreparedPack.getInPackList(Arrays.stream(bean.getWorkOrderStatusQuery().split(MesExtConstWords.COMMA)).map(Integer::parseInt).collect(Collectors.toList()), "workOrderStatus", packBean);
} else DdlPreparedPack.getNumEqualPack(bean.getWorkOrderStatus(), "workOrderStatus", packBean);
DdlPreparedPack.getNumEqualPack(bean.getWorkOrderType(), "workOrderType", packBean);
DdlPreparedPack.getStringBiggerPack(bean.getCreateDateTimeStart(), "createDatetime", packBean);
DdlPreparedPack.getStringSmallerPack(bean.getCreateDateTimeEnd(), "createDatetime", packBean);
DdlPreparedPack.getStringBiggerPack(bean.getStartTimeStart(), "planStartTime", packBean);
DdlPreparedPack.getStringSmallerPack(bean.getStartTimeEnd(), "planStartTime", packBean);
DdlPreparedPack.getStringBiggerPack(bean.getEndTimeStart(), "planEndTime", packBean);
DdlPreparedPack.getStringSmallerPack(bean.getEndTimeEnd(), "planEndTime", packBean);
DdlPreparedPack.getInPackList(Arrays.stream(bean.getWorkOrderStatusQuery().split(MesExtConstWords.COMMA)).map(Integer::parseInt).collect(Collectors.toList()), MesExtConstWords.WORK_ORDER_STATUS, packBean);
} else DdlPreparedPack.getNumEqualPack(bean.getWorkOrderStatus(), MesExtConstWords.WORK_ORDER_STATUS, packBean);
DdlPreparedPack.getNumEqualPack(bean.getWorkOrderType(), MesExtConstWords.WORK_ORDER_TYPE, packBean);
DdlPreparedPack.timeBuilder(bean.getCreateDateTimeStart(), bean.getCreateDateTimeEnd(), MesExtConstWords.CREATE_DATE_TIME, packBean, false);
DdlPreparedPack.timeBuilder(bean.getStartTimeStart(), bean.getStartTimeEnd(), MesExtConstWords.PLAN_START_TIME, packBean, false);
DdlPreparedPack.timeBuilder(bean.getEndTimeStart(), bean.getEndTimeEnd(), MesExtConstWords.PLAN_END_TIME, packBean, false);
packBean.setOrderByStr(" order by workOrderSeq desc, createDatetime desc, productSeq asc, workOrderNo asc ");
}
@ -291,15 +294,13 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
}
MesWorkOrder mesWorkOrder = mesWorkOrderList.iterator().next();
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mesWorkOrder.getOrganizeCode());
DdlPreparedPack.getInPackList(mesWorkOrderList.stream().map(MesWorkOrder::getWorkCenterCode).filter(workCenterCode -> !StringUtils.isEmpty(workCenterCode)).distinct().collect(Collectors.toList()), "workCenterCode", ddlPackBean);
DdlPreparedPack.getInPackList(mesWorkOrderList.stream().map(MesWorkOrder::getWorkCenterCode).filter(workCenterCode -> !StringUtils.isEmpty(workCenterCode)).distinct().collect(Collectors.toList()), MesExtConstWords.WORK_CENTER_CODE, ddlPackBean);
List<MesWorkCenter> mesWorkCenterList = mesWorkCenterRDao.findByHqlWhere(ddlPackBean);
if (CollectionUtils.isEmpty(mesWorkCenterList)) {
return;
}
Map<String, List<MesWorkCenter>> mesWorkCenterMap = mesWorkCenterList.stream().collect(Collectors.groupingBy(MesWorkCenter::getWorkCenterCode));
mesWorkOrderList.forEach(t -> {
t.setWorkCenterName(mesWorkCenterMap.containsKey(t.getWorkCenterCode()) ? mesWorkCenterMap.get(t.getWorkCenterCode()).iterator().next().getWorkCenterName() : "");
});
mesWorkOrderList.forEach(t -> t.setWorkCenterName(mesWorkCenterMap.containsKey(t.getWorkCenterCode()) ? mesWorkCenterMap.get(t.getWorkCenterCode()).iterator().next().getWorkCenterName() : MesExtConstWords.EMPTY));
}
@ -308,7 +309,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
if(item.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.SORT.getValue()){
GenSerialNoModel genSerialNoModel = new GenSerialNoModel("MES_WORK_ORDER_NO_WU_HAN");
List<String> resultList = syncFuncService.syncSerialNo(genSerialNoModel.organizeCode(item.getOrganizeCode()), item.getCreateUser(), item.getOrganizeCode(), 1).getResultList();
String serialNo = resultList.get(0).replace("MES_WORK_ORDER_NO_WU_HAN", "");
String serialNo = resultList.get(0).replace("MES_WORK_ORDER_NO_WU_HAN", MesExtConstWords.EMPTY);
orderNo = item.getOrganizeCode() + item.getOrderFlag() + item.getShiftCode() + serialNo;
}else if(item.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.BTO.getValue()){
GenSerialNoModel genSerialNoModel = new GenSerialNoModel(MesCommonConstant.MES_WORK_CENTER_ORDER_NO);
@ -319,7 +320,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
orderNo = (String)syncFuncService.syncSerialNo(genSerialNoModel.organizeCode(item.getOrganizeCode()), item.getCreateUser(), item.getOrganizeCode(), 1).getResultList().get(0);
}
DdlPackBean orderPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(orderNo, "workOrderNo", orderPackBean);
DdlPreparedPack.getStringEqualPack(orderNo, MesExtConstWords.WORK_ORDER_NO, orderPackBean);
if (baseRDao.isExitByHql(orderPackBean)) {
MesException.throwMesBusiException("单号流水码生成重复");
}
@ -327,81 +328,104 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
}
private void insertMesWorkOrder(MesWorkOrder item, List<MesWorkOrderPart> orderPartList) {
/**
* bom,
*
*/
Map<String,String> ptrRuleListMap = new HashMap<>();
//是否修改为P单
boolean isModifyPOrder = false;
//查询mes_part_ptr表根据物料清单查找ptr替换信息
if (!CollectionUtils.isEmpty(orderPartList)){
Map<String, MesWorkOrderPart> orderPartMap = orderPartList.stream().collect(Collectors.toMap(MesWorkOrderPart::getPartNo, Function.identity()));
//先替换客户的ptr信息
String ptrInfo = item.getPtrInfo();
if (!StringUtils.isEmpty(ptrInfo)) {
List<String> ptrInfoList = Arrays.asList(ptrInfo.replace("_", "").split("\\|"));
if (!ptrInfoList.isEmpty()){
List<MesPartPtr> custPartPtrList = getCustPartPtrList(ptrInfoList, item.getOrganizeCode());
for (MesPartPtr mesPartPtr : custPartPtrList) {
//根据mesPartPtr的目标零件号找到零件信息
String destPartNo = mesPartPtr.getDestPartNo();
MesPartSap mesPartSap = mesPartSapService.getMesPartSapByPartNo(destPartNo, item.getOrganizeCode());
//更新物料清单
MesWorkOrderPart orderPart = orderPartMap.get(destPartNo);
if (orderPart != null) {
orderPart.setPartNo(mesPartSap.getPartNo());
orderPart.setPartName(mesPartSap.getPartName());
orderPart.setShippingPartNo(mesPartSap.getPartNo());
if (!isModifyPOrder){
isModifyPOrder = true;
}
}
}
}
}
//打印目视单使用
StringBuilder descriptionStr = new StringBuilder();
//客户ptr信息
StringBuilder ptrInfos = new StringBuilder();
boolean ptrFlag = false;
boolean fOrderFlag = false;
List<MesWorkOrderAssembly> assemblyList = new ArrayList<>();
if (!CollectionUtils.isEmpty(orderPartList)) {
//是否基于排序加工规则--待定
//查询装配目视项
assemblyList = getAssemblyList(item.getWorkCenterCode(), item.getCarModelCode(), orderPartList, item.getOrganizeCode());
//ptr信息
List<String> partNoList = orderPartList.stream().map(MesWorkOrderPart::getPartNo).collect(Collectors.toList());
List<MesPartPtr> partPtrList = getPartPtrList(item.getOrganizeCode(), item.getWorkCenterCode(), partNoList);
//装配件规则如果进行了零件替换 则使用ptr的规则 key 零件号value 是规则
for (MesPartPtr mesPartPtr : partPtrList) {
//根据mesPartPtr的目标零件号找到零件信息
String destPartNo = mesPartPtr.getDestPartNo();
String srcPartNo = mesPartPtr.getSrcPartNo();
MesPartSap mesPartSap = mesPartSapService.getMesPartSapByPartNo(destPartNo, item.getOrganizeCode());
//更新物料清单
MesWorkOrderPart orderPart = orderPartMap.get(srcPartNo);
if (orderPart != null) {
orderPart.setPartNo(mesPartSap.getPartNo());
orderPart.setPartName(mesPartSap.getPartName());
orderPart.setShippingPartNo(mesPartSap.getPartNo());
ptrRuleListMap.put(mesPartSap.getPartNo(), mesPartPtr.getReplacePartSnRule());
if (!isModifyPOrder){
isModifyPOrder = true;
for (MesWorkOrderPart orderPart : orderPartList) {
List<MesPartPtr> ptr = partPtrList.stream().filter(t -> t.getSrcPartNo().equals(orderPart.getPartNo())).collect(Collectors.toList());
if (ptr.isEmpty()) {
continue;
}
MesPartPtr mesPartPtr = null;
MesPartPtrDetail mesPartPtrDetail = null;
//获取相同总成的ptrId 在ptr详情中
List<MesPartPtr> custPartPtrList = ptr.stream().filter(t -> t.getIsCustomerSendPrtInfo() == null || t.getIsCustomerSendPrtInfo() != CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(custPartPtrList)) {
mesPartPtr = custPartPtrList.iterator().next();
//查询ptr总成--只有特定总成才会替换
DdlPackBean detailPartPtr = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getNumEqualPack(mesPartPtr.getId(), MesExtConstWords.PTR_ID, detailPartPtr);
DdlPreparedPack.getStringEqualPack(item.getPartNo(), MesExtConstWords.TOTAL_PART_NO, detailPartPtr);
List<MesPartPtrDetail> ptrDetailList = partPtrDetailRao.findByHqlWhere(detailPartPtr);
if (!ptrDetailList.isEmpty()) {
mesPartPtrDetail = ptrDetailList.get(0);
}
//更新mes_part_ptr的实际数量 + 1
mesPartPtr.setPrtVehicleActualCount(mesPartPtr.getPrtVehicleActualCount() + 1);
ConvertBean.saveOrUpdate(mesPartPtr, item.getModifyUser());
partPtrRao.update(mesPartPtr);
DdlPackBean partPtrDetailPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getNumEqualPack(mesPartPtr.getId(),"ptrId",partPtrDetailPackBean);
DdlPreparedPack.getStringEqualPack(item.getPartNo(),"totalPartNo",partPtrDetailPackBean);
List<MesPartPtrDetail> partPtrDetailList = partPtrDetailRao.findByHqlWhere(partPtrDetailPackBean);
if (!partPtrDetailList.isEmpty()){
MesPartPtrDetail mesPartPtrDetail = partPtrDetailList.get(0);
mesPartPtrDetail.setQty(mesPartPtrDetail.getQty() + 1);
ConvertBean.saveOrUpdate(mesPartPtrDetail, item.getModifyUser());
partPtrDetailRao.update(mesPartPtrDetail);
}
if (mesPartPtr == null || mesPartPtrDetail == null) {
continue;
}
ptrFlag = true;
if (mesPartPtr.getIsInterPrt() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) {
fOrderFlag = true;
}
//将工单类零件表替换位PTR条件中维护的替换零件
MesPartSap mesPartSap = mesPartSapService.getMesPartSapByPartNo(mesPartPtr.getDestPartNo(), item.getOrganizeCode());
orderPart.setPartNo(mesPartSap.getPartNo());
orderPart.setPartName(mesPartSap.getPartName());
//用于打印目视单
descriptionStr.append(mesPartPtr.getMemo());
//更新mes_part_ptr的实际数量 + 1
mesPartPtr.setPrtVehicleActualCount(mesPartPtr.getPrtVehicleActualCount() + 1);
ConvertBean.saveOrUpdate(mesPartPtr, MesExtConstWords.JOB);
partPtrRao.update(mesPartPtr);
if (mesPartPtrDetail != null) {
mesPartPtrDetail.setQty(mesPartPtrDetail.getQty() + 1);
ConvertBean.saveOrUpdate(mesPartPtrDetail, MesExtConstWords.JOB);
partPtrDetailRao.update(mesPartPtrDetail);
}
MesWorkOrderAssembly orderAssemblyList = null;
for (MesWorkOrderAssembly orderAssembly : assemblyList) {
String assemblyPartNo = orderAssembly.getAssemblyPartNo();
if (!StringUtils.isEmpty(assemblyPartNo) && assemblyPartNo.equals(mesPartPtr.getSrcPartNo())) {
orderAssemblyList = orderAssembly;
}
}
/**
* pisces
* add by aix 2017.4.11 PTRWORKORDERASSEMBLYpartdesc
*/
if (!Objects.isNull(orderAssemblyList)) {
if (orderAssemblyList.getDisplaySeq() != null && orderAssemblyList.getDisplaySeq() != 0) {
orderAssemblyList.setDisplayValue(mesPartPtr.getVisualItem());
}
orderAssemblyList.setAssemblyPartNo(mesPartSap.getPartNo());
orderAssemblyList.setAssemblyPartName(mesPartSap.getPartName());
orderAssemblyList.setMatchRule(mesPartPtr.getReplacePartSnRule());
ptrInfos.append("INFO|").append(mesPartPtr.getId());
if (mesPartPtrDetail != null) {
ptrInfos.append("PART|").append(mesPartPtrDetail.getId());
}
//更新mes_part_ptr_detail 的workOrder.partNo 数量加 1 ;替换了几次还是什么
}
}
}
// 生成装配件清单
if (isModifyPOrder){
if (ptrFlag && !fOrderFlag) {
item.setOrderFlag(MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.PTR.getValue());
} else if (ptrFlag) {
item.setOrderFlag(MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.F.getValue());
}
item.setPtrInfo(ptrInfos.toString());
//生成工单号
item.setWorkOrderNo(getOrderNo(item));
//获取车型remark用于目视单打印
String remark = getCarRemark(item.getCustCode(), item.getCarModelCode(), item.getOrganizeCode());
item.setDescription(descriptionStr.append(remark).toString());
if (!CollectionUtils.isEmpty(orderPartList)) {
for (MesWorkOrderPart orderPart : orderPartList) {
@ -411,12 +435,8 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
}
workOrderPartRao.saveAll(orderPartList);
}
List<MesWorkOrderAssembly> assemblyList = getAssemblyList(item.getWorkCenterCode(), item.getCarModelCode(), orderPartList, item.getOrganizeCode());
if (!CollectionUtils.isEmpty(assemblyList)) {
for (MesWorkOrderAssembly orderAssembly : assemblyList) {
if (ptrRuleListMap.get(orderAssembly.getPartNo()) != null){
orderAssembly.setMatchRule(ptrRuleListMap.get(orderAssembly.getPartNo()));
}
orderAssembly.setPartNo(item.getPartNo());
orderAssembly.setPartName(item.getPartName());
orderAssembly.setWorkOrderNo(item.getWorkOrderNo());
@ -486,7 +506,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
mesPartProdGroup = getMesPartProdGroup(item);
}else{
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(item.getPartProdGroupCode(), "partProdGroupCode", ddlPackBean);
DdlPreparedPack.getStringEqualPack(item.getPartProdGroupCode(), MesExtConstWords.PART_PROD_GROUP_CODE, ddlPackBean);
mesPartProdGroup = mesPartProdGroupRDao.getByProperty(ddlPackBean);
if(Objects.isNull(mesPartProdGroup)){
MesException.throwMesBusiException("零件生产组【%s】信息不存在",item.getPartProdGroupCode());
@ -499,8 +519,6 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
//自动发布
if (CommonEnumUtil.VALID == mesPartProdGroup.getIsAutoRelease()) {
item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue());
// 创建工单打印队列
insertPrintQueue(item);
} else {
item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.CREATE.getValue());
}
@ -541,7 +559,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
private void getCustomerPart(MesWorkOrder item) {
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(item.getPartNo(), "erpPartNo", ddlPackBean);
DdlPreparedPack.getStringEqualPack(item.getPartNo(), MesExtConstWords.ERP_PART_NO, ddlPackBean);
MesCustomerPart customerPart = mesCustomerPartRDao.getByProperty(ddlPackBean);
if (!Objects.isNull(customerPart)) {
item.setCustPartNo(customerPart.getCustPartNo());
@ -570,8 +588,8 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
item.setShiftName(mesShift.getShiftName());
try {
//拼接
item.setPlanStartTime(TimeTool.parseStringFormat(item.getPlanDate() + " " + mesShift.getStartTime(),DateUtil.BASE_FORMAT1,DateUtil.BASE_FORMAT));
item.setPlanEndTime(TimeTool.parseStringFormat(item.getPlanDate() + " " + mesShift.getEndTime(),DateUtil.BASE_FORMAT1,DateUtil.BASE_FORMAT));
item.setPlanStartTime(TimeTool.parseStringFormat(item.getPlanDate() + MesExtConstWords.ONE_SPACE + mesShift.getStartTime(),DateUtil.BASE_FORMAT1,DateUtil.BASE_FORMAT));
item.setPlanEndTime(TimeTool.parseStringFormat(item.getPlanDate() + MesExtConstWords.ONE_SPACE + mesShift.getEndTime(),DateUtil.BASE_FORMAT1,DateUtil.BASE_FORMAT));
int windowStartEndTimeCompare = DateUtilExt.compareDateTime(DateUtil.BASE_FORMAT, item.getPlanStartTime(), item.getPlanEndTime());
if (windowStartEndTimeCompare > 0) {
item.setPlanEndTime(TimeTool.pareDateToString(DateUtil.addDays(item.getPlanEndTime(), 1)));
@ -586,8 +604,8 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
@Override
public ListPager<MesProductVersion> queryMesProductVersionByPager(MesProductVersion mesProductVersion, Pager pager) {
DdlPackBean productVersionQueryPackBean = DdlPackBean.getDdlPackBean(mesProductVersion.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(mesProductVersion.getPartNo(), "partNo", productVersionQueryPackBean);
DdlPreparedPack.getStringEqualPack(mesProductVersion.getWorkCenterCode(), "workCenterCode", productVersionQueryPackBean);
DdlPreparedPack.getStringEqualPack(mesProductVersion.getPartNo(), MesExtConstWords.PART_NO, productVersionQueryPackBean);
DdlPreparedPack.getStringEqualPack(mesProductVersion.getWorkCenterCode(), MesExtConstWords.WORK_CENTER_CODE, productVersionQueryPackBean);
pager = PagerHelper.getPager(pager, mesProductVersionRDao.findByHqlWhereCount(productVersionQueryPackBean));
List<MesProductVersion> mesProductVersions = mesProductVersionRDao.findByHqlWherePage(productVersionQueryPackBean, pager);
return new ListPager<>(mesProductVersions, pager);
@ -609,9 +627,9 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
for (MesWorkOrder item : mesWorkOrderList) {
//获取相同类型 相同标识 生产序号最大值的
DdlPackBean orderPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getNumEqualPack(item.getWorkOrderStatus(), "workOrderStatus", orderPackBean);
DdlPreparedPack.getStringEqualPack(item.getOrderFlag(), "orderFlag", orderPackBean);
DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{"productSeq"}, orderPackBean);
DdlPreparedPack.getNumEqualPack(item.getWorkOrderStatus(), MesExtConstWords.WORK_ORDER_STATUS, orderPackBean);
DdlPreparedPack.getStringEqualPack(item.getOrderFlag(), MesExtConstWords.ORDER_FLAG, orderPackBean);
DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{MesExtConstWords.PRODUCT_SEQ}, orderPackBean);
MesWorkOrder result = baseRDao.getByProperty(orderPackBean);
//若工单类型为排序 则根据排序插入工单数量插入多行 工单数量为1
@ -655,7 +673,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
mesWorkOrderLogList.add(workOrderLog);
}
//保存工单记录
if (CollectionUtils.isNotEmpty(mesWorkOrderLogList)) {
if (!CollectionUtils.isEmpty(mesWorkOrderLogList)) {
workOrderLogService.insertBatch(mesWorkOrderLogList);
}
}
@ -665,7 +683,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
String nowDate = TimeTool.getNowTime(true);
//获取产线信息
List<String> workCenterCodeList = mesWorkOrderList.stream().map(MesWorkOrder::getWorkCenterCode).distinct().collect(Collectors.toList());
List<MesWorkCenter> mesWorkCenterList = BeanMapUtilsExt.getBeanList(mesWorkCenterRDao, "workCenterCode", organizeCode, workCenterCodeList, "产线信息");
List<MesWorkCenter> mesWorkCenterList = BeanMapUtilsExt.getBeanList(mesWorkCenterRDao, MesExtConstWords.WORK_CENTER_CODE, organizeCode, workCenterCodeList, "产线信息");
//产线导入不区分大小小
Map<String, MesWorkCenter> workCenterMap = new CaseInsensitiveMap();
for (MesWorkCenter workCenter : mesWorkCenterList) {
@ -676,21 +694,21 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
Map<String, List<MesShift>> mesShiftMap = mesShiftList.stream().collect(Collectors.groupingBy(t -> t.getWorkCenterCode() + t.getShiftCode()));
//获取生产版本
List<String> partNoList = mesWorkOrderList.stream().map(MesWorkOrder::getPartNo).distinct().collect(Collectors.toList());
List<MesProductVersion> mesProductVersionList = BeanMapUtilsExt.getBeanList(mesProductVersionRDao, "partNo", organizeCode, partNoList, "生产版本信息");
List<MesProductVersion> mesProductVersionList = BeanMapUtilsExt.getBeanList(mesProductVersionRDao, MesExtConstWords.PART_NO, organizeCode, partNoList, "生产版本信息");
//客户物料信息
Map<String, MesCustomerPart> mesCustomerPartMap = null;
try {
mesCustomerPartMap = BeanMapUtilsExt.getBeanMap(mesCustomerPartRDao, "erpPartNo", organizeCode, partNoList, "客户物料信息");
mesCustomerPartMap = BeanMapUtilsExt.getBeanMap(mesCustomerPartRDao, MesExtConstWords.ERP_PART_NO, organizeCode, partNoList, "客户物料信息");
} catch (Exception e) {
}
//获取物料信息
Map<String, MesPartSap> mesPartSapMap = BeanMapUtilsExt.getBeanMap(mesPartSapRDao, "partNo", organizeCode, partNoList, "物料信息");
Map<String, MesPartSap> mesPartSapMap = BeanMapUtilsExt.getBeanMap(mesPartSapRDao, MesExtConstWords.PART_NO, organizeCode, partNoList, "物料信息");
//获取获取vin号
List<String> vinCodeList = mesWorkOrderList.stream().map(MesWorkOrder::getVinCode).filter(Objects::nonNull).distinct().collect(Collectors.toList());
if (!CollectionUtils.isEmpty(vinCodeList)) {
List<MesWorkOrder> mesWorkOrders = null;
try {
mesWorkOrders = BeanMapUtilsExt.getBeanList(baseRDao, "vinCode", organizeCode, vinCodeList, "生产工单");
mesWorkOrders = BeanMapUtilsExt.getBeanList(baseRDao, MesExtConstWords.VIN_CODE, organizeCode, vinCodeList, "生产工单");
} catch (Exception e) {
}
if (!CollectionUtils.isEmpty(mesWorkOrders)) {
@ -713,7 +731,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
}
//查询工单是否已经存在
DdlPackBean orderPackBean = DdlPackBean.getDdlPackBean(next.getOrganizeCode());
DdlPreparedPack.getInPackList(orderList, "workOrderNo", orderPackBean);
DdlPreparedPack.getInPackList(orderList, MesExtConstWords.WORK_ORDER_NO, orderPackBean);
if (baseRDao.isExitByHql(orderPackBean)) {
MesException.throwMesBusiException("单号已存在");
}
@ -893,9 +911,9 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
private List<MesShift> getMesShifts(String organizeCode, String nowDate, List<String> workCenterCodeList) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getInPackList(workCenterCodeList, "workCenterCode", packBean);
DdlPreparedPack.getStringSmallerPack(nowDate, "beginDate", packBean);
DdlPreparedPack.getStringBiggerPack(nowDate, "endDate", packBean);
DdlPreparedPack.getInPackList(workCenterCodeList, MesExtConstWords.WORK_CENTER_CODE, packBean);
DdlPreparedPack.getStringSmallerPack(nowDate, MesExtConstWords.BEGIN_DATE, packBean);
DdlPreparedPack.getStringBiggerPack(nowDate, MesExtConstWords.END_DATE, packBean);
List<MesShift> mesShiftList = mesShiftRDao.findByHqlWhere(packBean);
if (CollectionUtils.isEmpty(mesShiftList)) {
MesException.throwMesBusiException("有效期内的班次信息不存在");
@ -1079,7 +1097,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
updateMesWorkOrder(mesWorkOrder, (MesExtEnumUtil.REPORT_TYPE.REPORT.getValue() == mesWorkOrderNew.getReportType()) ? MesExtEnumUtil.WORK_ORDER_LOG_TYPE.REPORT : MesExtEnumUtil.WORK_ORDER_LOG_TYPE.REPORT_ADJUST,mesWorkOrderNew.getNum());
//保存报工记录 试制单不报工
if (CollectionUtils.isNotEmpty(mesProductOffLineList) && (Objects.isNull(mesWorkOrder.getOrderFlag()) || !MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(mesWorkOrder.getOrderFlag()))) {
if (!CollectionUtils.isEmpty(mesProductOffLineList) && (Objects.isNull(mesWorkOrder.getOrderFlag()) || !MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(mesWorkOrder.getOrderFlag()))) {
mesProductOffLineList.forEach(t->{
if(Objects.isNull(t.getBomTotalSize())){
t.setBomTotalSize(mesProductOffLineList.size());
@ -1088,7 +1106,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
mesProductOffLineService.insertBatch(mesProductOffLineList);
}
//保存移库记录
if (CollectionUtils.isNotEmpty(mesMoveList)) {
if (!CollectionUtils.isEmpty(mesMoveList)) {
mesMoveRDao.saveAll(mesMoveList);
}
}
@ -1096,13 +1114,13 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
@Override
public void doCloseUnSortOrder(String organizeCode,String userName) {
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.ORDER_TYPE.UN_SORT.getValue(), "workOrderType", ddlPackBean);
DdlPreparedPack.getStringSmallerNotEqualPack(TimeTool.getToday(), "planStartTime", ddlPackBean);
DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.ORDER_TYPE.UN_SORT.getValue(), MesExtConstWords.WORK_ORDER_TYPE, ddlPackBean);
DdlPreparedPack.getStringSmallerNotEqualPack(TimeTool.getToday(), MesExtConstWords.PLAN_START_TIME, ddlPackBean);
//非排序的试制工单(P单)不自动关单(芜湖)
if (mesConfigService.checkCfgValue(organizeCode, MesExtConstWords.CLOSE_P_WORK_ORDER, MesExtConstWords.ONE_STR)) {
DdlPreparedPack.getStringNoEqualPack(MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue(), "orderFlag", ddlPackBean);
DdlPreparedPack.getStringNoEqualPack(MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue(), MesExtConstWords.ORDER_FLAG, ddlPackBean);
}
DdlPreparedPack.getNumberSmallerPack(MesExtEnumUtil.ORDER_STATUS.CLOSE.getValue(), "workOrderStatus", ddlPackBean);
DdlPreparedPack.getNumberSmallerPack(MesExtEnumUtil.ORDER_STATUS.CLOSE.getValue(), MesExtConstWords.WORK_ORDER_STATUS, ddlPackBean);
List<MesWorkOrder> mesWorkOrderList = baseRDao.findByHqlWhere(ddlPackBean);
if(CollectionUtils.isEmpty(mesWorkOrderList)){
return;
@ -1110,10 +1128,10 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
log.info("关闭工单个数{},工单:{}",mesWorkOrderList.size(),mesWorkOrderList.stream().map(MesWorkOrder::getWorkOrderNo).collect(Collectors.toList()));
//查询自制件零件
List<String> partNoList = mesPartSapService.findMesPartSapByPartNoList(mesWorkOrderList.stream().map(MesWorkOrder::getPartNo).distinct().collect(Collectors.toList()), organizeCode).stream().filter(t -> t.getIsTestPiece() == CommonEnumUtil.FALSE).map(MesPartSap::getPartNo).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(partNoList)) {
if (!CollectionUtils.isEmpty(partNoList)) {
//关闭工单回传
List<String> partNoAndDataKey = mesWorkOrderList.stream().filter(t -> !MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(t.getOrderFlag()) && partNoList.contains(t.getPartNo())).map(t -> new StringJoiner(MesExtConstWords.COMMA).add(t.getPartNo()).add(t.getProductVersion()).add(t.getPlanStartTime().substring(0, 10)).toString()).distinct().collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(partNoAndDataKey)) {
if (!CollectionUtils.isEmpty(partNoAndDataKey)) {
List<MesWorkOrderToSap> mesWorkOrderToSapList = new ArrayList<>();
for (String partNoAndData : partNoAndDataKey) {
MesWorkOrderToSap orderToSap = new MesWorkOrderToSap(organizeCode, partNoAndData.split(MesExtConstWords.COMMA)[0], partNoAndData.split(MesExtConstWords.COMMA)[1], 0d, partNoAndData.split(MesExtConstWords.COMMA)[2]);
@ -1124,8 +1142,8 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
}
}
//关闭工单
baseRDao.updateByProperties(new String[]{"modifyUser", "modifyDatetime", "workOrderStatus","systemSyncStatus"},
new Object[]{userName, TimeTool.getNowTime(true), MesExtEnumUtil.ORDER_STATUS.CLOSE.getValue(),CommonEnumUtil.FALSE}, ddlPackBean);
baseRDao.updateByProperties(new String[]{MesExtConstWords.MODIFY_USER, MesExtConstWords.MODIFY_DATE_TIME, MesExtConstWords.WORK_ORDER_STATUS, MesExtConstWords.SYSTEM_SYNC_STATUS},
new Object[]{userName, TimeTool.getNowTime(true), MesExtEnumUtil.ORDER_STATUS.CLOSE.getValue(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()}, ddlPackBean);
}
@ -1171,7 +1189,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
}
//更新工单状态
mesWorkOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue());
mesWorkOrder.setCcscStatus("");
mesWorkOrder.setCcscStatus(MesExtConstWords.EMPTY);
updateMesWorkOrder(mesWorkOrder,MesExtEnumUtil.WORK_ORDER_LOG_TYPE.UPDATE,mesWorkOrder.getQty());
}
//重新生成CCSC task
@ -1211,19 +1229,21 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
Map<String, MesWorkOrder> workOrderMapByWorkOrderNo = mesWorkOrderList.stream().collect(Collectors.toMap(MesWorkOrder::getWorkOrderNo, Function.identity(), (x, y) -> y));
// 产线代码集合
List<String> workCenterCodeList = mesWorkOrderList.stream().map(MesWorkOrder::getWorkCenterCode).distinct().collect(Collectors.toList());
List<String> workCenterCodeList = (mesWorkOrderList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getWorkCenterCode()))).map(MesWorkOrder::getWorkCenterCode).collect(Collectors.toList()))
.stream().filter(o -> !StringUtils.isEmpty(o)).distinct().collect(Collectors.toList());
// 根据产线代码节后获取产线信息集合
List<MesWorkCenter> mesWorkCenters = workCenterService.queryMesWorkCenterList(workCenterCodeList, organizeCode);
List<MesWorkCenter> workCenterList = CollectionUtils.isEmpty(workCenterCodeList) ? null : workCenterService.queryMesWorkCenterList(workCenterCodeList, organizeCode);
// 产线名称集合
Map<String, String> workCenterNameMap = CollectionUtils.isEmpty(mesWorkCenters) ? null : mesWorkCenters.stream().collect(Collectors.toMap(MesWorkCenter::getWorkCenterCode, MesWorkCenter::getWorkCenterName, (x, y) -> y));
Map<String, List<MesWorkCenter>> workCenterNameMap = CollectionUtils.isEmpty(workCenterList) ? null : workCenterList.stream().filter(o -> null != o).collect(Collectors.groupingBy(MesWorkCenter::getWorkCenterCode));
// 生产零件号
List<String> partProdGroupCodeList = mesWorkOrderList.stream().map(MesWorkOrder::getPartProdGroupCode).distinct().collect(Collectors.toList());
// 零件生产组代码
List<String> partProdGroupCodeList = (mesWorkOrderList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getPartProdGroupCode()))).map(MesWorkOrder::getPartProdGroupCode).collect(Collectors.toList()))
.stream().filter(o -> !StringUtils.isEmpty(o)).distinct().collect(Collectors.toList());
// 根据零件生产组代码分组
Map<String, MesPartProdGroup> partProdGroupMap = partProdGroupService.getMesPartProdGroupMap(organizeCode, partProdGroupCodeList);
Map<String, MesPartProdGroup> partProdGroupMap = CollectionUtils.isEmpty(partProdGroupCodeList) ? null : partProdGroupService.getMesPartProdGroupMap(organizeCode, partProdGroupCodeList);
// 客户车型配置名称MAP
Map<String, MesCustomerCarModel> carModelMapByCode = getMesCustomerCarModelMap(organizeCode, mesWorkOrderList);
@ -1244,9 +1264,9 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
continue;
}
mesWorkOrder.setWorkCenterName(!Objects.isNull(workCenterNameMap) && workCenterNameMap.containsKey(mesWorkOrder.getWorkCenterCode()) ? workCenterNameMap.get(mesWorkOrder.getWorkCenterCode()) : "");
mesWorkOrder.setWorkCenterName((!StringUtils.isEmpty(mesWorkOrder.getWorkCenterCode()) && !CollectionUtils.isEmpty(workCenterNameMap) && workCenterNameMap.containsKey(mesWorkOrder.getWorkCenterCode())) ? workCenterNameMap.get(mesWorkOrder.getWorkCenterCode()).get(0).getWorkCenterName() : MesExtConstWords.EMPTY);
MesPartProdGroup mesPartProdGroup = !Objects.isNull(partProdGroupMap) && partProdGroupMap.containsKey(mesWorkOrder.getPartProdGroupCode()) ? partProdGroupMap.get(mesWorkOrder.getPartProdGroupCode()) : null;
MesPartProdGroup mesPartProdGroup = (!StringUtils.isEmpty(mesWorkOrder.getPartProdGroupCode()) && !CollectionUtils.isEmpty(partProdGroupMap) && partProdGroupMap.containsKey(mesWorkOrder.getPartProdGroupCode())) ? partProdGroupMap.get(mesWorkOrder.getPartProdGroupCode()) : null;
if (mesPartProdGroup == null) {
MesException.throwMesBusiException("工单【%s】关联零件生产组【%s】不存在", mesWorkOrder.getWorkOrderNo(), mesWorkOrder.getPartProdGroupCode());
@ -1273,10 +1293,9 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
if (customerCarModel != null) {
modelMap.put("mesCustomerCarModel", customerCarModel);
}
List<MesWorkOrderAssembly> workOrderAssemblyListByWorkOrderNo = !Objects.isNull(workOrderAssemblyMapByWorkOrderNo) && workOrderAssemblyMapByWorkOrderNo.containsKey(mesWorkOrder.getWorkOrderNo()) ? workOrderAssemblyMapByWorkOrderNo.get(mesWorkOrder.getWorkOrderNo()) : null;
if (!CollectionUtils.isEmpty(workOrderAssemblyListByWorkOrderNo)) {
modelMap.put("mesWorkOrderAssemblyList", workOrderAssemblyListByWorkOrderNo);
if (!CollectionUtils.isEmpty(workOrderAssemblyMapByWorkOrderNo) && workOrderAssemblyMapByWorkOrderNo.containsKey(mesWorkOrder.getWorkOrderNo())) {
modelMap.put("mesWorkOrderAssemblyList", workOrderAssemblyMapByWorkOrderNo.get(mesWorkOrder.getWorkOrderNo()));
}
MesProduceSnPrintModel mesProduceSnPrintModel = new MesProduceSnPrintModel();
@ -1330,21 +1349,29 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
}
private Map<String, MesCustomerCarModel> getMesCustomerCarModelMap(String organizeCode, List<MesWorkOrder> workOrderList) {
List<String> carModelCodeList = workOrderList.stream().map(MesWorkOrder::getCarModelCode).distinct().collect(Collectors.toList());
List<String> carModelCodeList = CollectionUtils.isEmpty(workOrderList) ? null :
(workOrderList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getCarModelCode()))).map(MesWorkOrder::getCarModelCode).collect(Collectors.toList()))
.stream().filter(o -> !StringUtils.isEmpty(o)).distinct().collect(Collectors.toList());
if (StringUtils.isEmpty(organizeCode) || CollectionUtils.isEmpty(workOrderList)) return null;
// 客户车型配置
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getInPackList(carModelCodeList, MesExtConstWords.CAR_MODEL_CODE, packBean);
if (carModelCodeList.size() == 1) DdlPreparedPack.getStringEqualPack(carModelCodeList.get(0), MesExtConstWords.CAR_MODEL_CODE, packBean);
else DdlPreparedPack.getInPackList(carModelCodeList, MesExtConstWords.CAR_MODEL_CODE, packBean);
List<MesCustomerCarModel> customerCarModelList = customerCarModelRepository.findByHqlWhere(packBean);
return CollectionUtils.isEmpty(customerCarModelList) ? null : customerCarModelList.stream().collect(Collectors.toMap(MesCustomerCarModel::getCarModelCode, Function.identity(), (x, y) -> y));
if (CollectionUtils.isEmpty(customerCarModelList)) return null;
customerCarModelList = customerCarModelList.stream().filter(o -> null != o).collect(
Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(MesCustomerCarModel::getCarModelCode))), ArrayList::new));
return customerCarModelList.stream().filter(o -> null != o).collect(Collectors.toMap(MesCustomerCarModel::getCarModelCode, o -> o));
}
private Map<String, List<MesWorkOrderAssembly>> getWorkOrderAssemblyMapByWorkOrderNo(String organizeCode, Map<String, MesWorkOrder> workOrderMapByWorkOrderNo) {
if (CollectionUtils.isEmpty(workOrderMapByWorkOrderNo)) return null;
List<String> workOrderNoList = workOrderMapByWorkOrderNo.keySet().stream().collect(Collectors.toList());
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getInPackList(workOrderNoList, MesExtConstWords.WORK_ORDER_NO, packBean);
if (workOrderNoList.size() == 1) DdlPreparedPack.getStringEqualPack(workOrderNoList.get(0), MesExtConstWords.WORK_ORDER_NO, packBean);
else DdlPreparedPack.getInPackList(workOrderNoList, MesExtConstWords.WORK_ORDER_NO, packBean);
List<MesWorkOrderAssembly> workOrderAssemblyList = workOrderAssemblyRepository.findByHqlWhere(packBean);
return CollectionUtils.isEmpty(workOrderAssemblyList) ? null : workOrderAssemblyList.stream().collect(Collectors.groupingBy(MesWorkOrderAssembly::getWorkOrderNo));
return CollectionUtils.isEmpty(workOrderAssemblyList) ? null : workOrderAssemblyList.stream().filter(o -> null != o).collect(Collectors.groupingBy(MesWorkOrderAssembly::getWorkOrderNo));
}
private List<MesProductOffLine> getMesProductOffLineList(WmsProductModel model, String nowTime) {
@ -1365,7 +1392,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
mesProductOffLine.setDescription(nowTime);
mesProductOffLine.setStgeLoc(item.getAlort());
mesProductOffLine.setSystemSyncStatus(CommonEnumUtil.FALSE);
mesProductOffLine.setSystemSyncDatetime("");
mesProductOffLine.setSystemSyncDatetime(MesExtConstWords.EMPTY);
ConvertBean.serviceModelInitialize(mesProductOffLine, model.getUserName());
newProductOffLineList.add(mesProductOffLine);
});
@ -1384,7 +1411,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
public MesWorkOrder getMesWorkOrder(String workOrderNo, String organizeCode) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(workOrderNo,"workOrderNo",packBean);
DdlPreparedPack.getStringEqualPack(workOrderNo,MesExtConstWords.WORK_ORDER_NO,packBean);
MesWorkOrder mesWorkOrder = baseRDao.getByProperty(packBean);
if (Objects.isNull(mesWorkOrder)) {
MesException.throwMesBusiException("工单【%s】信息不存在", workOrderNo);
@ -1488,7 +1515,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
if (mesPartSapMap.containsKey(mesBom.getItemPartNo())) {
mesPartSap = mesPartSapMap.get(mesBom.getItemPartNo()).iterator().next();
}
MesMove move = createMove(mesPartSap, moveRule.getErpSrcLocateNo(), moveRule.getErpDestLocateNo(), mesBom.getOrganizeCode(), mesWorkOrder.getWorkCenterCode(), mesBom.getItemQty(), "", MesExtEnumUtil.MOVE_TYPE.RAW_MATERIAL_MOVE.getValue());
MesMove move = createMove(mesPartSap, moveRule.getErpSrcLocateNo(), moveRule.getErpDestLocateNo(), mesBom.getOrganizeCode(), mesWorkOrder.getWorkCenterCode(), mesBom.getItemQty(), MesExtConstWords.EMPTY, MesExtEnumUtil.MOVE_TYPE.RAW_MATERIAL_MOVE.getValue());
move.setMatnr(mesBom.getItemPartNo());
mesMoveList.add(move);
}
@ -1514,8 +1541,8 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
private MesProdRuleSortCfg getMesProdRuleSortCfg(MesWorkOrder mesWorkOrder) {
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mesWorkOrder.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(mesWorkOrder.getPartNo(), "reportPartNo", ddlPackBean);
DdlPreparedPack.getStringEqualPack(mesWorkOrder.getWorkCenterCode(), "workCenterCode", ddlPackBean);
DdlPreparedPack.getStringEqualPack(mesWorkOrder.getPartNo(), MesExtConstWords.REPORT_PART_NO, ddlPackBean);
DdlPreparedPack.getStringEqualPack(mesWorkOrder.getWorkCenterCode(), MesExtConstWords.WORK_CENTER_CODE, ddlPackBean);
MesProdRuleSortCfg mesProdRuleSortCfg = mesProdRuleSortCfgRDao.getByProperty(ddlPackBean);
if (Objects.isNull(mesProdRuleSortCfg)) {
MesException.throwMesBusiException("产线【%s】物料【%s】排序加工规则未维护", mesWorkOrder.getWorkCenterCode(), mesWorkOrder.getPartNo());
@ -1541,9 +1568,9 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
if (isItemReport && mesBom.getPartNo().equals(mesWorkOrder.getPartNo())) {
newMesProductOffLine.setReportPartNo(mesBom.getItemPartNo());
newMesProductOffLine.setReportPartNameRdd(mesBom.getItemPartName());
newMesProductOffLine.setItemPartNo("");
newMesProductOffLine.setItemPartName("");
newMesProductOffLine.setItemUnit("");
newMesProductOffLine.setItemPartNo(MesExtConstWords.EMPTY);
newMesProductOffLine.setItemPartName(MesExtConstWords.EMPTY);
newMesProductOffLine.setItemUnit(MesExtConstWords.EMPTY);
newMesProductOffLine.setItemQty(0d);
}
newMesProductOffLine.setReportSn(sn);
@ -1623,7 +1650,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
// statusList.add(MesExtEnumUtil.ORDER_STATUS.CLOSE.getValue());
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getInPackList(statusList, "workOrderStatus", packBean);
DdlPreparedPack.getInPackList(statusList, MesExtConstWords.WORK_ORDER_STATUS, packBean);
return baseRDao.findByHqlWhere(packBean);
}
@ -1650,36 +1677,33 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
//1.获取生产加工记录production_record表中report_status为待汇报状态的工单
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(workCenterCode,"workCenterCode",ddlPackBean);
DdlPreparedPack.getNumEqualPack( MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_10.getValue(),"reportStatus",ddlPackBean);
DdlPreparedPack.getStringEqualPack(workCenterCode, MesExtConstWords.WORK_CENTER_CODE, ddlPackBean);
DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_10.getValue(), MesExtConstWords.REPORT_STATUS, ddlPackBean);
//获取前一天的早班到当天早班的区间的所有加工记录,统计个数
DdlPreparedPack.timeBuilder(
new SimpleDateFormat("yyyy-MM-dd").format(TimeTool.getDateBefore(new Date(),1))+" 08:00:00",
TimeTool.getToday()+" 08:00:00",
"completeDateTime", ddlPackBean, true);
DdlPreparedPack.timeBuilder(new SimpleDateFormat(MesExtConstWords.DATE_FORMAT).format(TimeTool.getDateBefore(new Date(),MesExtConstWords.ONE)) + MesExtConstWords.APPEND_8_HMS,
TimeTool.getToday() + MesExtConstWords.APPEND_8_HMS, MesExtConstWords.COMPLETE_DATE_TIME, ddlPackBean, true);
return productionRecordRao.findByHqlWhere(ddlPackBean);
}
@Override
public List<MesProduceSn> getPreDayReportMesProduceSn(String organizeCode,List<MesProductionRecord> mesProductionRecordList ) {
DdlPackBean snPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getInPackList(mesProductionRecordList.stream().map(MesProductionRecord::getProductSn).collect(Collectors.toList()),
"productSn",snPackBean);
DdlPreparedPack.getInPackList(mesProductionRecordList.stream().map(MesProductionRecord::getProductSn).collect(Collectors.toList()), MesExtConstWords.PRODUCT_SN, snPackBean);
return mesProduceSnRao.findByHqlWhere(snPackBean);
}
@Override
public List<MesWorkOrder> insertMesWorkOrder(List<MesProductionRecord> mesProductionRecordList,List<MesShift> mesShiftList, String organizeCode, String userName) {
List<MesWorkOrder> mesWorkOrderList=new ArrayList<>();
Map<String, List<MesProductionRecord>> mesProductionRecordListMap = mesProductionRecordList.stream().collect(Collectors.groupingBy(sn -> sn.getWorkCenterCode() +"="+ sn.getPartNo()));
Map<String, List<MesProductionRecord>> mesProductionRecordListMap = mesProductionRecordList.stream().collect(Collectors.groupingBy(sn -> sn.getWorkCenterCode() + MesExtConstWords.EQUAL + sn.getPartNo()));
for (Map.Entry<String, List<MesProductionRecord>> stringListEntry : mesProductionRecordListMap.entrySet()) {
List<MesProductionRecord> value = stringListEntry.getValue();
MesProductionRecord mesProductionRecord = value.get(0);
String[] split = stringListEntry.getKey().split("=");
String[] split = stringListEntry.getKey().split(MesExtConstWords.EQUAL);
String workCenterCode = split[0];
String partNo = split[1];
//查询工作中心
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(workCenterCode, "workCenterCode", ddlPackBean);
DdlPreparedPack.getStringEqualPack(workCenterCode, MesExtConstWords.WORK_CENTER_CODE, ddlPackBean);
MesWorkCenter mesWorkCenter = mesWorkCenterRDao.getByProperty(ddlPackBean);
if (Objects.isNull(mesWorkCenter)) {
MesException.throwMesBusiException("产线【%s】不存在",workCenterCode);
@ -1691,13 +1715,13 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
item.setPartNo(partNo);
item.setWorkOrderType(MesExtEnumUtil.ORDER_TYPE.UN_SORT.getValue());
item.setOrderFlag(MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.N.getValue());
List<MesShift> collect = mesShiftList.stream().filter(s -> s.getShiftCode().equalsIgnoreCase("1")).collect(Collectors.toList());
List<MesShift> collect = mesShiftList.stream().filter(s -> s.getShiftCode().equalsIgnoreCase(MesExtConstWords.ONE_STR)).collect(Collectors.toList());
MesShift mesShift= collect.get(0);
item.setShiftCode(mesShift.getShiftCode());
item.setShiftCode(mesShift.getShiftName());
String today = TimeTool.getToday();
item.setPlanStartTime(today+" "+mesShift.getStartTime()+":00");
item.setPlanEndTime(today+" "+mesShift.getEndTime()+":00");
item.setPlanStartTime(today + MesExtConstWords.ONE_SPACE + mesShift.getStartTime() + MesExtConstWords.APPEND_SECONDS);
item.setPlanEndTime(today + MesExtConstWords.ONE_SPACE + mesShift.getEndTime() + MesExtConstWords.APPEND_SECONDS);
//生成工单号
List<String> orderList=new ArrayList<>();
@ -1707,7 +1731,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
String orderNo = orderList.get(0);
DdlPackBean orderPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(orderNo, "workOrderNo", orderPackBean);
DdlPreparedPack.getStringEqualPack(orderNo, MesExtConstWords.WORK_ORDER_NO, orderPackBean);
if (baseRDao.isExitByHql(orderPackBean)) {
MesException.throwMesBusiException("单号流水码生成重复");
}
@ -1772,7 +1796,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
if (!StringUtil.isEmpty(bean.getVinCode())) {
//校验vin号是否重复
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(bean.getVinCode(), "vinCode", ddlPackBean);
DdlPreparedPack.getStringEqualPack(bean.getVinCode(), MesExtConstWords.VIN_CODE, ddlPackBean);
if (baseRDao.isExitByHql(ddlPackBean)) {
MesException.throwMesBusiException("vin号【%s】重复", bean.getVinCode());
}
@ -1780,8 +1804,6 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
//排序工单数量为1
bean.setQty(1d);
//生成工单号
bean.setWorkOrderNo(getOrderNo(bean));
//自动发布
List<MesWorkOrderPart> orderPartList = autoPublish(bean);
//顺序号
@ -1790,6 +1812,10 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
bean.setCustSn(getCustSn(bean.getCustPartNo(), bean.getOrganizeCode(), bean.getCreateUser()));
//生成工单零件 工单装配件
insertMesWorkOrder(bean, orderPartList);
// 创建工单打印队列
if(bean.getWorkOrderStatus() == MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue()){
insertPrintQueue(bean);
}
//物料名称不存在,从物料信息中获取
MesPartSap mesPart = mesPartSapService.getMesPartSapByPartNo(bean.getPartNo(), bean.getOrganizeCode());
@ -1884,7 +1910,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
bean.setFid(UUID.randomUUID().toString());
//生成WorkOrderSeq
GenSerialNoModel orderSeqSerialNoModel = new GenSerialNoModel(MesCommonConstant.ORDER_NO_BTO_SEQ);
List<String> resultList = syncFuncService.syncSerialNo(orderSeqSerialNoModel.organizeCode(bean.getOrganizeCode()), bean.getCreateUser(), bean.getOrganizeCode(), 1).getResultList();
List<String> resultList = syncFuncService.syncSerialNo(orderSeqSerialNoModel.organizeCode(bean.getOrganizeCode()), bean.getCreateUser(), bean.getOrganizeCode(), MesExtConstWords.ONE).getResultList();
bean.setWorkOrderSeq(resultList.get(0));
baseRDao.insert(bean);
workOrderLogService.saveMesWorkOrderLog(bean,MesExtEnumUtil.WORK_ORDER_LOG_TYPE.INSERT,bean.getQty());
@ -1894,7 +1920,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
//查询物料信息
DdlPackBean ddlPackBeanPart = DdlPackBean.getDdlPackBean(mesWorkOrderDb.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(mesWorkOrderDb.getPartNo(), "partNo", ddlPackBeanPart);
DdlPreparedPack.getStringEqualPack(mesWorkOrderDb.getPartNo(), MesExtConstWords.PART_NO, ddlPackBeanPart);
MesPart mesPart = mesPartRDao.getByProperty(ddlPackBeanPart);
if (null == mesPart) {
MesException.throwMesBusiException("物料【%s】信息不存在", mesWorkOrderDb.getPartNo());
@ -1902,7 +1928,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
//查询产线信息
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mesWorkOrderDb.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(mesWorkOrderDb.getWorkCenterCode(), "workCenterCode", ddlPackBean);
DdlPreparedPack.getStringEqualPack(mesWorkOrderDb.getWorkCenterCode(), MesExtConstWords.WORK_CENTER_CODE, ddlPackBean);
MesWorkCenter mesWorkCenter = mesWorkCenterRDao.getByProperty(ddlPackBean);
if (Objects.isNull(mesWorkCenter)) {
MesException.throwMesBusiException("产线【%s】不存在", mesWorkOrderDb.getWorkCenterCode());
@ -1961,7 +1987,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
log.info("工厂:{}不存在未推送的工单", organizeCode);
}
//获取物料信息
Map<String, MesPart> partMap = BeanMapUtilsExt.getBeanMap(mesPartRDao, "partNo", organizeCode, mesWorkOrderListToWms.stream().map(MesWorkOrder::getPartNo).distinct().collect(Collectors.toList()), "物料信息");
Map<String, MesPart> partMap = BeanMapUtilsExt.getBeanMap(mesPartRDao, MesExtConstWords.PART_NO, organizeCode, mesWorkOrderListToWms.stream().map(MesWorkOrder::getPartNo).distinct().collect(Collectors.toList()), "物料信息");
// 根据零件加生产版本分组
Map<String, List<MesWorkOrder>> mesWorkOrderListToWmsMap = mesWorkOrderListToWms.stream().collect(Collectors.groupingBy(t -> new StringJoiner(MesExtConstWords.COMMA).add(t.getPartNo()).add(t.getProductVersion()).toString()));
@ -2009,7 +2035,9 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
} else {
DdlPreparedPack.getInPackList(workOrderNoList, MesExtConstWords.WORK_ORDER_NO, packBean);
}
baseRDao.updateByPropertiesNoSync(new String[]{"modifyUser", "modifyDatetime", "syncToWms"}, new Object[]{userName, TimeTool.getNowTime(true), CommonEnumUtil.VALID}, packBean);
baseRDao.updateByPropertiesNoSync(
new String[]{MesExtConstWords.MODIFY_USER, MesExtConstWords.MODIFY_DATE_TIME, MesExtConstWords.SYNC_TO_WMS},
new Object[]{userName, TimeTool.getNowTime(true), CommonEnumUtil.VALID}, packBean);
}
public void saveMesWorkOrderLog(MesWorkOrder mesWorkOrder) {
@ -2020,9 +2048,9 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
private List<MesWorkOrder> getMesWorkOrderListToWms(String organizeCode, Integer pageSize) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getInPackList(Arrays.asList(MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue(),MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue()), "workOrderStatus", packBean);
DdlPreparedPack.getNumEqualPack(CommonEnumUtil.FALSE, "syncToWms", packBean);
DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.ASC.getValue()}, new String[]{"createDatetime"}, packBean);
DdlPreparedPack.getInPackList(Arrays.asList(MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue(),MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue()), MesExtConstWords.WORK_ORDER_STATUS, packBean);
DdlPreparedPack.getNumEqualPack(CommonEnumUtil.FALSE, MesExtConstWords.SYNC_TO_WMS, packBean);
DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.ASC.getValue()}, new String[]{MesExtConstWords.CREATE_DATE_TIME}, packBean);
return baseRDao.findByHqlTopWhere(packBean, StringUtil.isEmpty(pageSize) ? MesExtConstWords.TEN : pageSize);
}
@ -2092,10 +2120,11 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
}
public List<MesBom> findMesBomByPartNoAndBomVersion(String partNo, String organizeCode, String bomVersion) {
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(partNo, "partNo", ddlPackBean);
DdlPreparedPack.getStringEqualPack(bomVersion, "bomVersion", ddlPackBean);
DdlPreparedPack.getStringSmallerPack(TimeTool.getNowTime(true), "effStartTime", ddlPackBean);
DdlPreparedPack.getOrderBy("effStartTime", CommonEnumUtil.ASC_OR_DESC.DESC.getValue(), ddlPackBean);
DdlPreparedPack.getStringEqualPack(partNo, MesExtConstWords.PART_NO, ddlPackBean);
DdlPreparedPack.getStringEqualPack(bomVersion, MesExtConstWords.BOM_VERSION, ddlPackBean);
DdlPreparedPack.getStringSmallerPack(TimeTool.getNowTime(true), MesExtConstWords.EFF_START_TIME, ddlPackBean);
DdlPreparedPack.getStringBiggerPack(TimeTool.getNowTime(true), MesExtConstWords.EFF_END_TIME, ddlPackBean);
DdlPreparedPack.getOrderBy(MesExtConstWords.EFF_START_TIME, CommonEnumUtil.ASC_OR_DESC.DESC.getValue(), ddlPackBean);
List<MesBom> mesBoms = mesBomRDao.findByHqlWhere(ddlPackBean);
if (org.springframework.util.CollectionUtils.isEmpty(mesBoms)) {
MesException.throwMesBusiException("物料【%s】生产版本【%s】对应bom信息不存在", partNo, bomVersion);
@ -2108,8 +2137,8 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
private boolean checkWorkCenterPartRelation(String workCenterCode,String partNo){
DdlPackBean partRelationPackBean = DdlPackBean.getDdlPackBean(AuthUtil.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(workCenterCode,"workCenterCode", partRelationPackBean);
DdlPreparedPack.getStringEqualPack(partNo, "partNo", partRelationPackBean);
DdlPreparedPack.getStringEqualPack(workCenterCode,MesExtConstWords.WORK_CENTER_CODE, partRelationPackBean);
DdlPreparedPack.getStringEqualPack(partNo, MesExtConstWords.PART_NO, partRelationPackBean);
int count = partRelationRao.findByHqlWhereCount(partRelationPackBean);
return count > 0;
}
@ -2121,7 +2150,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
String prefix = partNo.substring(0, partNo.length() - 4);
String partNo4 = partNo.substring(partNo.length() - 4).toUpperCase();
custGenSerialNoModel.setPartNo(prefix+partNo4);
String year = custCalendar.get(Calendar.YEAR)+"";
String year = custCalendar.get(Calendar.YEAR)+ MesExtConstWords.EMPTY;
custGenSerialNoModel.setYear(year.substring(2));
custGenSerialNoModel.setDay(String.format("%03d",custCalendar.get(Calendar.DAY_OF_YEAR)));
List<String> custNumRuleList = syncFuncService.syncSerialNo(custGenSerialNoModel, userName, organizeCode, 1).getResultList();
@ -2180,24 +2209,47 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
}
private List<MesPartPtr> getPartPtrList(String organizeCode,String workCenterCode, List<String> partNoList) {
/**
* 2024/11/16
* PTR
* 1.
* 2.
* 3.
*/
DdlPackBean partPtrPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(workCenterCode, "workCenterCode", partPtrPackBean);
DdlPreparedPack.getInPackList(partNoList, "srcPartNo", partPtrPackBean);
DdlPreparedPack.getStringSmallerPack(TimeTool.getNowTime("yyyy-MM-dd HH:mm:ss"), "startTime", partPtrPackBean);
DdlPreparedPack.getStringBiggerPack(TimeTool.getNowTime("yyyy-MM-dd HH:mm:ss"), "endTime", partPtrPackBean);
DdlPreparedPack.getIsNotNull("prtVehicleCount", partPtrPackBean);
DdlPreparedPack.getStringEqualPack(workCenterCode, MesExtConstWords.WORK_CENTER_CODE, partPtrPackBean);
DdlPreparedPack.getInPackList(partNoList, MesExtConstWords.SRC_PART_NO, partPtrPackBean);
DdlPreparedPack.getStringSmallerPack(TimeTool.getNowTime(true), MesExtConstWords.START_TIME, partPtrPackBean);
List<MesPartPtr> partPtrList = partPtrRao.findByHqlWhere(partPtrPackBean);
/**
*
*/
DdlPackBean part1PtrPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(workCenterCode, MesExtConstWords.WORK_CENTER_CODE, part1PtrPackBean);
DdlPreparedPack.getInPackList(partNoList, MesExtConstWords.SRC_PART_NO, part1PtrPackBean);
DdlPreparedPack.getStringSmallerPack(TimeTool.getNowTime(true), MesExtConstWords.START_TIME, part1PtrPackBean);
DdlPreparedPack.getIsNotNull(MesExtConstWords.PRT_VEHICLE_COUNT, part1PtrPackBean);
DdlPreparedPack.getIsNull(MesExtConstWords.END_TIME, part1PtrPackBean);
List<MesPartPtr> partPtrList1 = partPtrRao.findByHqlWhere(part1PtrPackBean);
partPtrList.addAll(partPtrList1);
partPtrList = partPtrList.stream().filter(item -> item.getPrtVehicleCount() != null && item.getPrtVehicleCount() > 0)
.filter(item-> item.getPrtVehicleCount() > item.getPrtVehicleActualCount())
.collect(Collectors.toList());
return partPtrList;
}
/**
*
*/
//根据排序信息PTR零件号 获取 ptr信息
private List<MesPartPtr> getCustPartPtrList(List<String> ptrInfoList,String organizeCode){
DdlPackBean partPtrPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getInPackList(ptrInfoList, "seqInfoPrtPart", partPtrPackBean);
return partPtrRao.findByHqlWhere(partPtrPackBean);
DdlPackBean part2PtrPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(workCenterCode, MesExtConstWords.WORK_CENTER_CODE, part2PtrPackBean);
DdlPreparedPack.getInPackList(partNoList, MesExtConstWords.SRC_PART_NO, part2PtrPackBean);
DdlPreparedPack.getStringSmallerPack(TimeTool.getNowTime(true), MesExtConstWords.START_TIME, part2PtrPackBean);
DdlPreparedPack.getIsNull(MesExtConstWords.PRT_VEHICLE_COUNT, part2PtrPackBean);
DdlPreparedPack.getIsNull(MesExtConstWords.END_TIME, part2PtrPackBean);
List<MesPartPtr> partPtrList2 = partPtrRao.findByHqlWhere(part2PtrPackBean);
partPtrList.addAll(partPtrList2);
return partPtrList;
}
private MesPartProdGroup getMesPartProdGroup(String organizeCode, String workCenterCode) {
@ -2205,7 +2257,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
return null;
}
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(workCenterCode, "workCenterCode", packBean);
DdlPreparedPack.getStringEqualPack(workCenterCode, MesExtConstWords.WORK_CENTER_CODE, packBean);
return mesPartProdGroupRDao.getByProperty(packBean);
}
@ -2215,8 +2267,8 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
List<MesWorkOrderAssembly> workOrderAssemblyList = new ArrayList<>();
List<String> partNoList = workOrderPartList.stream().map(MesWorkOrderPart::getPartNo).collect(Collectors.toList());
DdlPackBean prodRuleSortPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(workCenterCode, "workCenterCode", prodRuleSortPackBean);
DdlPreparedPack.getInPackList(partNoList, "assemblyPartNo", prodRuleSortPackBean);
DdlPreparedPack.getStringEqualPack(workCenterCode, MesExtConstWords.WORK_CENTER_CODE, prodRuleSortPackBean);
DdlPreparedPack.getInPackList(partNoList, MesExtConstWords.ASSEMBLY_PART_NO, prodRuleSortPackBean);
//查询当前产线的所有排序生产规则--分为当前工单清单的装配件
List<MesProdRuleSortCfg> sortCfgList = mesProdRuleSortCfgRao.findByHqlWhere(prodRuleSortPackBean);
List<MesProdRuleSortCfg> sortCfgListFilter = sortCfgList.stream().filter(item -> partNoList.contains(item.getAssemblyPartNo())).collect(Collectors.toList());
@ -2254,7 +2306,6 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
orderAssembly.setCraftCode(sortCfg.getCraftCode());
orderAssembly.setRouteSeq(sortCfg.getRouteSeq());
orderAssembly.setWorkCellCode(sortCfg.getWorkCellCode());
orderAssembly.setOrderPartId(orderPart.getId().toString());
orderAssembly.setEquipmentCode(sortCfg.getEquipmentCode());
orderAssembly.setReportType(sortCfg.getReportType());
if (sortCfg.getReportType() != null && sortCfg.getReportType() == MesExtEnumUtil.MES_REPORT_TYPE.REPORT.getValue()){
@ -2277,9 +2328,9 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
//车型不为空的逻辑--用于报工
DdlPackBean reportRuleSortPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(workCenterCode, "workCenterCode", reportRuleSortPackBean);
DdlPreparedPack.getStringEqualPack(vehicleNo, "vehicleNo", reportRuleSortPackBean);
DdlPreparedPack.getNotInPackList(partNoList, "assemblyPartNo", reportRuleSortPackBean);
DdlPreparedPack.getStringEqualPack(workCenterCode, MesExtConstWords.WORK_CENTER_CODE, reportRuleSortPackBean);
DdlPreparedPack.getStringEqualPack(vehicleNo, MesExtConstWords.VEHICLE_NO, reportRuleSortPackBean);
DdlPreparedPack.getNotInPackList(partNoList, MesExtConstWords.ASSEMBLY_PART_NO, reportRuleSortPackBean);
//查询当前产线的所有排序生产规则--分为当前工单清单的装配件
List<MesProdRuleSortCfg> prodCfgList = mesProdRuleSortCfgRao.findByHqlWhere(reportRuleSortPackBean);
for (MesProdRuleSortCfg ruleSortCfg : prodCfgList) {
@ -2319,8 +2370,8 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
}
//查询所有共用的零件 且没有零件号,多用于螺钉---查询排序加工规则
DdlPackBean prodRuleSortPublicPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(workCenterCode, "workCenterCode", prodRuleSortPublicPackBean);
DdlPreparedPack.getIsNull("assemblyPartNo", prodRuleSortPublicPackBean);
DdlPreparedPack.getStringEqualPack(workCenterCode, MesExtConstWords.WORK_CENTER_CODE, prodRuleSortPublicPackBean);
DdlPreparedPack.getIsNull(MesExtConstWords.ASSEMBLY_PART_NO, prodRuleSortPublicPackBean);
List<MesProdRuleSortCfg> ruleSortCfgs = mesProdRuleSortCfgRao.findByHqlWhere(prodRuleSortPublicPackBean);
for (MesProdRuleSortCfg ruleSortCfg : ruleSortCfgs) {
MesWorkOrderAssembly orderAssembly = new MesWorkOrderAssembly();
@ -2474,31 +2525,56 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
}
}
public List<MesQueueOrder> findMesQueueOrder(String workOrderNo, String organizeCode) {
private List<MesQueueOrder> findMesQueueOrder(String workOrderNo, String organizeCode) {
if(StringUtil.isEmpty(workOrderNo) || StringUtil.isEmpty(organizeCode)) return null;
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(workOrderNo, "workOrderNo", packBean);
DdlPreparedPack.getStringEqualPack(workOrderNo, MesExtConstWords.WORK_ORDER_NO, packBean);
return queueOrderRao.findByHqlWhere(packBean);
}
public void closeMesQueueOrder(String workOrderNo, String organizeCode, String userName) {
private void closeMesQueueOrder(String workOrderNo, String organizeCode, String userName) {
if (StringUtil.isEmpty(workOrderNo) || StringUtil.isEmpty(organizeCode)) return;
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(workOrderNo, MesExtConstWords.WORK_ORDER_NO, packBean);
DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.QUEUE_ORDER_STATUS.CREATE.getValue(), MesExtConstWords.STATUS, packBean);
queueOrderRao.updateByProperties(
new String[]{MesExtConstWords.MODIFY_USER, MesExtConstWords.MODIFY_DATE_TIME, MesExtConstWords.STATUS},
new Object[]{userName, TimeTool.getNowTime(true), MesExtEnumUtil.QUEUE_ORDER_STATUS.CLOSED.getValue()}, packBean);
}
private void closeMesPullingOrderInfo(String workOrderNo, String organizeCode, String userName) {
if (StringUtil.isEmpty(workOrderNo) || StringUtil.isEmpty(organizeCode)) return;
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(workOrderNo, MesExtConstWords.WORK_ORDER_NO, packBean);
DdlPreparedPack.getInPackList(
Stream.of(MesExtEnumUtil.PART_PULL_ORDER_TYPE.JIS_PULL.getValue(), MesExtEnumUtil.PART_PULL_ORDER_TYPE.SPS_PULL.getValue()).collect(Collectors.toList()),
MesExtConstWords.PULL_ORDER_TYPE, packBean);
pullingOrderInfoRepository.updateByProperties(
new String[]{MesExtConstWords.MODIFY_USER, MesExtConstWords.MODIFY_DATE_TIME, MesExtConstWords.PULL_ORDER_STATUS},
new Object[]{userName, TimeTool.getNowTime(true), MesExtEnumUtil.PULL_ORDER_STATUS.PULL_ORDER_STATUS_50.getValue()}, packBean);
}
private void closeMesPrintQueue(String workOrderNo, String organizeCode, String userName) {
if (StringUtil.isEmpty(workOrderNo) || StringUtil.isEmpty(organizeCode)) return;
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(workOrderNo, "workOrderNo", packBean);
queueOrderRao.updateByProperties(new String[]{"modifyUser", "modifyDatetime", "status"}, new Object[]{userName, TimeTool.getNowTime(true), MesExtEnumUtil.QUEUE_ORDER_STATUS.CLOSED.getValue()}, packBean);
DdlPreparedPack.getStringEqualPack(workOrderNo, MesExtConstWords.WORK_ORDER_NO, packBean);
DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.PRINT_QUEUE_TYPE.WORK_ORDER_ASSEMBLY.getValue(), MesExtConstWords.PRINT_QUEUE_TYPE, packBean);
printQueueRepository.updateByProperties(
new String[]{MesExtConstWords.MODIFY_USER, MesExtConstWords.MODIFY_DATE_TIME, MesExtConstWords.PRINT_STATUS},
new Object[]{userName, TimeTool.getNowTime(true), MesExtEnumUtil.PRINT_STATUS.FAILURE.getValue()}, packBean);
}
public MesPrintQueue getMesPrintQuanOrder(String workOrderNo, String organizeCode) {
private MesPrintQueue getMesPrintQuanOrder(String workOrderNo, String organizeCode) {
if(StringUtil.isEmpty(workOrderNo) || StringUtil.isEmpty(organizeCode)) return null;
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(workOrderNo, "workOrderNo", packBean);
DdlPreparedPack.getStringEqualPack(workOrderNo, MesExtConstWords.WORK_ORDER_NO, packBean);
return printQueueRepository.getByProperty(packBean);
}
private Long getMaxMesWorkOrderProductSeq(MesWorkOrder bean) {
DdlPackBean orderPackBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode());
DdlPreparedPack.getNumEqualPack(bean.getWorkOrderType(), "workOrderType", orderPackBean);
DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{"productSeq"}, orderPackBean);
DdlPreparedPack.getNumEqualPack(bean.getWorkOrderType(), MesExtConstWords.WORK_ORDER_TYPE, orderPackBean);
DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{MesExtConstWords.PRODUCT_SEQ}, orderPackBean);
MesWorkOrder workOrder = baseRDao.getByProperty(orderPackBean);
return Objects.isNull(workOrder) || StringUtils.isEmpty(workOrder.getProductSeq()) ? 0L : workOrder.getProductSeq().toString().endsWith("9") ? workOrder.getProductSeq() + 2L : workOrder.getProductSeq() + 1L;
}
@ -2519,4 +2595,15 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
return mesProductVersion;
}
private String getCarRemark(String custCode,String carModelCode,String organizeCode){
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(custCode, MesExtConstWords.CUST_CODE, ddlPackBean);
DdlPreparedPack.getStringEqualPack(carModelCode,MesExtConstWords.CAR_MODEL_CODE, ddlPackBean);
List<MesCustomerCarModel> carModelList = customerCarModelRepository.findByHqlTopWhere(ddlPackBean, 1);
if (carModelList != null && !carModelList.isEmpty()){
return carModelList.get(0).getRemark();
}
return MesExtConstWords.EMPTY;
}
}

@ -415,6 +415,8 @@ public class MesSpotCheckOrderService extends BaseMesService<MesSpotCheckOrder>
DdlPreparedPack.getStringLikerPack(bean.getSpotCheckName(),"spotCheckName",packBean);
DdlPreparedPack.getStringLikerPack(bean.getEquipCode(),"equipCode",packBean);
DdlPreparedPack.getNumEqualPack(bean.getStatus(),"status",packBean);
DdlPreparedPack.getNumEqualPack(bean.getSpotCheckOrderType(),"spotCheckOrderType",packBean);
DdlPreparedPack.getInPackList(bean.getSpotCheckOrderTypeList(),"spotCheckOrderType",packBean);
DdlPreparedPack.getNumEqualPack(bean.getSpotCheckOrderResult(),"spotCheckOrderResult",packBean);
DdlPreparedPack.getStringLikerPack(bean.getEquipName(),"equipName",packBean);
DdlPreparedPack.getStringBiggerPack(bean.getModifyDateTimeStart(), "spotCheckTime", packBean);

@ -12,7 +12,10 @@ import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
@ -39,8 +42,10 @@ public class AssemblyVisualListPrintStrategy implements IPrintTemplateStrategySe
MesCustomerCarModel customerCarModel = modelMap.containsKey("mesCustomerCarModel") ? (MesCustomerCarModel) modelMap.get("mesCustomerCarModel") : null;
// 工单装配件信息
List<MesWorkOrderAssembly> workOrderAssemblyList = modelMap.containsKey("mesWorkOrderAssemblyList") ? (List<MesWorkOrderAssembly>) modelMap.get("mesWorkOrderAssemblyList") : new ArrayList<>();
workOrderAssemblyList = CollectionUtils.isEmpty(workOrderAssemblyList) ? new ArrayList<>() : workOrderAssemblyList.stream().filter(o -> o.getDisplaySeq() != null && o.getDisplaySeq() != 0).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(workOrderAssemblyList)) workOrderAssemblyList.sort(Comparator.comparing(MesWorkOrderAssembly::getDisplaySeq));
workOrderAssemblyList = CollectionUtils.isEmpty(workOrderAssemblyList) ? new ArrayList<>() :
workOrderAssemblyList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getDisplaySeq()) && o.getDisplaySeq().compareTo(MesExtConstWords.ZERO) != 0)).collect(Collectors.toList());
// 返回的结果集合
List<Map<String, Object>> printDataMapList = new ArrayList<>();
// 单个标签参数值
@ -77,30 +82,20 @@ public class AssemblyVisualListPrintStrategy implements IPrintTemplateStrategySe
//替换总成SN
resultMap.put(MesExtConstWords.REPLACE_CSN,MesExtConstWords.CP+workOrder.getCustPartNo().substring(workOrder.getCustPartNo().length() -4));
// 总个数
Integer totalCount = partProdGroup.getTotalCount();
Map<Integer, List<MesWorkOrderAssembly>> collect = workOrderAssemblyList.stream().collect(Collectors.groupingBy(MesWorkOrderAssembly::getDisplaySeq));
Map<Integer, List<MesWorkOrderAssembly>> collect = CollectionUtils.isEmpty(workOrderAssemblyList) ? null : workOrderAssemblyList.stream().filter(o -> null != o).collect(Collectors.groupingBy(MesWorkOrderAssembly::getDisplaySeq));
// 为空时显示内容
String isNullViewContent = StringUtils.isEmpty(partProdGroup.getIsNullViewContent()) ? "" : partProdGroup.getIsNullViewContent();
for (int index = 0; index < collect.size(); index++) {
List<MesWorkOrderAssembly> orderAssemblyList = collect.get(index+1);
List<String> disPlayValues = orderAssemblyList.stream().map(MesWorkOrderAssembly::getDisplayValue).distinct().collect(Collectors.toList());
String displayValue =isNullViewContent;
if(!disPlayValues.isEmpty()){
for (int i = 1; i <= 9; i ++) {
List<MesWorkOrderAssembly> orderAssemblyList = CollectionUtils.isEmpty(collect) ? null : collect.get(i);
List<String> disPlayValues = CollectionUtils.isEmpty(orderAssemblyList) ? null :
(orderAssemblyList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getDisplayValue()))).map(MesWorkOrderAssembly::getDisplayValue).collect(Collectors.toList()))
.stream().filter(o -> !StringUtils.isEmpty(o)).distinct().collect(Collectors.toList());
String displayValue = isNullViewContent;
if(!CollectionUtils.isEmpty(disPlayValues)){
displayValue = String.join("\r\n", disPlayValues);
}
// String displayValue = workOrderAssemblyList.size() -1 < index ? isNullViewContent : workOrderAssemblyList.get(index).getDisplayValue();
// resultMap.put(MesPcnExtConstWords.ASSEMBLY_PARAM + (index+1), StringUtils.isEmpty(displayValue) ? StringUtils.isEmpty(isNullViewContent) ? "" : isNullViewContent : displayValue);
resultMap.put(MesExtConstWords.ASSEMBLY_PARAM + (index+1), displayValue);
resultMap.put(MesExtConstWords.ASSEMBLY_PARAM + i, displayValue);
}
// 为空时显示内容
// String isNullViewContent = StringUtils.isEmpty(partProdGroup.getIsNullViewContent()) ? "" : partProdGroup.getIsNullViewContent();
// for (Integer index = 0; index < totalCount; index++) {
// String displayValue = workOrderAssemblyList.size() -1 < index ? isNullViewContent : workOrderAssemblyList.get(index).getDisplayValue();
//
// resultMap.put(MesExtConstWords.ASSEMBLY_PARAM + (index+1), StringUtils.isEmpty(displayValue) ? StringUtils.isEmpty(isNullViewContent) ? "" : null : displayValue);
// }
printDataMapList.add(resultMap);

@ -23,6 +23,7 @@ import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.*;
import cn.estsh.i3plus.pojo.mes.model.MesProductionRecordModel;
import cn.estsh.i3plus.pojo.mes.model.report.MesGeneralExportReportModel;
import cn.estsh.i3plus.pojo.mes.model.report.MesGeneralShippingReportModel;
import cn.estsh.i3plus.pojo.mes.model.report.MesTraceabilityReportDataModel;
@ -246,15 +247,8 @@ public class MesYfReportServiceImpl implements IMesYfReportService {
}
@Override
public ListPager<MesProductionRecord> queryMesProductionRecord(MesProductionRecord mesProductionRecord, Pager pager) {
DdlPackBean packBean = getDdlPackBeanMesProductionRecord(mesProductionRecord);
if(Objects.isNull(pager)){
DdlPreparedPack.getOrderBy(mesProductionRecord.getOrderByParam(),mesProductionRecord.getAscOrDesc(),packBean);
return new ListPager<>(mesProductionRecordRepository.findByHqlWhere(packBean), pager);
}
pager = PagerHelper.getPager(pager, mesProductionRecordRepository.findByHqlWhereCount(packBean));
DdlPreparedPack.getOrderBy(mesProductionRecord.getOrderByParam(),mesProductionRecord.getAscOrDesc(),packBean);
return new ListPager<>(mesProductionRecordRepository.findByHqlWherePage(packBean, pager), pager);
public ListPager<MesProductionRecordModel> queryMesProductionRecord(MesProductionRecordModel mesProductionRecordModel, Pager pager) {
return mesYfReportDao.queryMesProductionRecord(mesProductionRecordModel, pager);
}
@Override

@ -151,6 +151,48 @@ public class MesExtConstWords {
public static final String ASSEMBLY_PART_NO = "assemblyPartNo";
//装配件零件名称
public static final String ASSEMBLY_PART_NAME = "assemblyPartName";
//生产序号
public static final String PRODUCT_SEQ = "productSeq";
//ERP物料号
public static final String ERP_PART_NO = "erpPartNo";
//计划开始时间
public static final String PLAN_START_TIME = "planStartTime";
//计划结束时间
public static final String PLAN_END_TIME = "planEndTime";
//执行开始日期
public static final String BEGIN_DATE = "beginDate";
//执行结束日期
public static final String END_DATE = "endDate";
//ptr零件id
public static final String PTR_ID = "ptrId";
//总成零件号
public static final String TOTAL_PART_NO = "totalPartNo";
//汇报零件号
public static final String REPORT_PART_NO = "reportPartNo";
//汇报状态
public static final String REPORT_STATUS = "reportStatus";
//完成时间
public static final String COMPLETE_DATE_TIME = "completeDateTime";
//是否同步给WMS
public static final String SYNC_TO_WMS = "syncToWms";
//BOM版本
public static final String BOM_VERSION = "bomVersion";
//生效时间
public static final String EFF_START_TIME = "effStartTime";
//失效时间
public static final String EFF_END_TIME = "effEndTime";
//原零件号
public static final String SRC_PART_NO = "srcPartNo";
//PTR车辆数量
public static final String PRT_VEHICLE_COUNT = "prtVehicleCount";
//车型代码
public static final String VEHICLE_NO = "vehicleNo";
//拉动单类型
public static final String PULL_ORDER_TYPE = "pullOrderType";
//拉动单状态
public static final String PULL_ORDER_STATUS = "pullOrderStatus";
//打印队列类型
public static final String PRINT_QUEUE_TYPE = "printQueueType";
//时间[开始/结束]条件
public static final String START_TIME_START = "startTimeStart";
@ -210,6 +252,8 @@ public class MesExtConstWords {
public static final String APPEND_ZERO_HMS = " 00:00:00";
//拼接23时:59分:59秒
public static final String APPEND_24_HMS = " 23:59:59";
//拼接23时:59分:59秒
public static final String APPEND_8_HMS = " 08:00:00";
//时间类型
public static final String DATETIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
//时间类型
@ -239,6 +283,9 @@ public class MesExtConstWords {
//系统同步状态
public static final String SYSTEM_SYNC_STATUS = "systemSyncStatus";
//等于
public static final String EQUAL = "=";
//英文逗号
public static final String COMMA = ",";

Loading…
Cancel
Save