武汉汇报job&装配目视单打印问题修复

tags/yfai-pcn-ext-v2.3
jun 7 months ago
parent 36560566f1
commit 3b3e8014b5

@ -64,6 +64,9 @@ public interface IMesWorkOrderService {
@ApiOperation("排序汇报job")
void doMesWorkOrderSortReport(String organizeCode, Integer pageSize, String userName);
@ApiOperation("非排序汇报job")
void doMesWorkOrderNoSortReport(String organizeCode, Integer pageSize, String userName);
@ApiOperation("根据工单查询工单零件信息")
List<MesWorkOrderPart> findMesWorkOrderPartByOrderNo(String organizeCode,List<String> workOrderNoList);
}

@ -15,5 +15,5 @@ import java.util.List;
public interface IMesProductionRecordDao {
@ApiOperation("查询汇报的加工记录")
List<MesProductionRecord> findMesProductionRecordNoReport(String organizeCode, Integer workOrderType, Integer pageSize);
List<MesProductionRecord> findMesProductionRecordNoReport(String organizeCode, Integer workOrderType, Integer pageSize, List<String> workCenterList);
}

@ -13,10 +13,7 @@ import org.springframework.util.StringUtils;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.StringJoiner;
import java.util.*;
/**
* @Description :
@ -54,7 +51,7 @@ public class MesInsertBatchDaoImpl implements IMesInsertBatchDao {
public void insertMesRecyclablePackageBindingLogLimit(List<MesRecyclablePackageBindingLog> logList, String organizeCode) {
String fieldStr = "`id`,`create_date_time`,`create_user`,`description`,`is_deleted`,`is_valid`,`organize_code`,`remark`,`system_sync_date_time`,`system_sync_status`,`hanger_code`,`hanger_package_sn`,`hanger_rule_code`,`lot_number`,`modify_type`,`order_code`,`package_sn`,`part_name`,`part_no`,`product_sn`,`qty`,`status`,`total_qty`,`type_code`";
String fieldStr = "id,create_date_time,create_user,description,is_deleted,is_valid,organize_code,remark,system_sync_date_time,system_sync_status,hanger_code,hanger_package_sn,hanger_rule_code,lot_number,modify_type,order_code,package_sn,part_name,part_no,product_sn,qty,status,total_qty,type_code";
//拼接字段
StringBuilder fieldBuilder = new StringBuilder();
String[] splitField = fieldStr.split(MesPcnExtConstWords.COMMA);
@ -66,11 +63,9 @@ public class MesInsertBatchDaoImpl implements IMesInsertBatchDao {
if (!StringUtils.isEmpty(mesShardingAppendOrg) && mesShardingAppendOrg.toUpperCase().equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.name())) insertStr.append(MesPcnExtConstWords.E_UNDERLINE).append(organizeCode.toLowerCase());
insertStr.append("(").append(fieldStr).append(") VALUES( ");
//sql组装
Map<String, Object> parameterMap = new HashMap<>();
StringBuilder builder = new StringBuilder();
for (int i = MesPcnExtConstWords.ZERO; i < logList.size(); i++) {
Map<String, Object> parameterMap = new LinkedHashMap<>();
int j = MesPcnExtConstWords.ZERO;
builder.append(insertStr).append(fieldBuilder.substring(MesPcnExtConstWords.ZERO, fieldBuilder.lastIndexOf(MesPcnExtConstWords.COMMA) - MesPcnExtConstWords.ONE).replaceAll("%s", String.valueOf(i))).append(" ); ");
parameterMap.put(new StringJoiner(MesPcnExtConstWords.E_UNDERLINE).add(splitField[j++]).add(String.valueOf(i)).toString(), snowflakeIdMaker.nextId());
parameterMap.put(new StringJoiner(MesPcnExtConstWords.E_UNDERLINE).add(splitField[j++]).add(String.valueOf(i)).toString(), logList.get(i).getCreateDatetime());
parameterMap.put(new StringJoiner(MesPcnExtConstWords.E_UNDERLINE).add(splitField[j++]).add(String.valueOf(i)).toString(), logList.get(i).getCreateUser());
@ -95,8 +90,7 @@ public class MesInsertBatchDaoImpl implements IMesInsertBatchDao {
parameterMap.put(new StringJoiner(MesPcnExtConstWords.E_UNDERLINE).add(splitField[j++]).add(String.valueOf(i)).toString(), logList.get(i).getStatus());
parameterMap.put(new StringJoiner(MesPcnExtConstWords.E_UNDERLINE).add(splitField[j++]).add(String.valueOf(i)).toString(), logList.get(i).getTotalQty());
parameterMap.put(new StringJoiner(MesPcnExtConstWords.E_UNDERLINE).add(splitField[j]).add(String.valueOf(i)).toString(), logList.get(i).getTypeCode());
}
Query queryObject = entityManager.createNativeQuery(builder.toString());
Query queryObject = entityManager.createNativeQuery(insertStr + fieldBuilder.substring(MesPcnExtConstWords.ZERO, fieldBuilder.lastIndexOf(MesPcnExtConstWords.COMMA) - MesPcnExtConstWords.ONE).replaceAll("%s", String.valueOf(i)) + " ); ");
//数据填充
for (String key : parameterMap.keySet()) {
queryObject.setParameter(key, parameterMap.get(key));
@ -104,3 +98,4 @@ public class MesInsertBatchDaoImpl implements IMesInsertBatchDao {
queryObject.executeUpdate();
}
}
}

@ -8,6 +8,7 @@ import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import groovy.util.logging.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import javax.persistence.EntityManager;
import javax.persistence.Query;
@ -31,12 +32,15 @@ public class MesProductionRecordImpl implements IMesProductionRecordDao {
private EntityManager entityManager;
@Override
public List<MesProductionRecord> findMesProductionRecordNoReport(String organizeCode, Integer workOrderType, Integer pageSize) {
public List<MesProductionRecord> findMesProductionRecordNoReport(String organizeCode, Integer workOrderType, Integer pageSize, List<String> workCenterList) {
StringBuilder hql = new StringBuilder();
hql.append(" select record from MesProductionRecord record left join MesWorkCenter center on record.workCenterCode = center.workCenterCode where 1=1");
hql.append(" and record.organizeCode = :organizeCode and record.isValid = :isValid and record.isDeleted = :isDeleted ");
hql.append(" and center.organizeCode = :organizeCode and center.isValid = :isValid and center.isDeleted = :isDeleted ");
hql.append(" and center.centerType = :centerType and record.reportStatus in (:reportStatus) and record.reportType != :reportType ");
if (!CollectionUtils.isEmpty(workCenterList)) {
hql.append(" and record.workCenterCode not in (:workCenterList)");
}
hql.append(" order by record.reportStatus asc,record.createDatetime asc ");
Query hqlQuery = entityManager.createQuery(hql.toString(), MesProductionRecord.class);
hqlQuery.setParameter("organizeCode", organizeCode);
@ -45,6 +49,9 @@ public class MesProductionRecordImpl implements IMesProductionRecordDao {
hqlQuery.setParameter("centerType", workOrderType);
hqlQuery.setParameter("reportType", MesExtEnumUtil.MES_REPORT_TYPE.NO_REPORT.getValue());
hqlQuery.setParameter("reportStatus", Stream.of(MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_10.getValue(), MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_40.getValue()).collect(Collectors.toList()));
if (!CollectionUtils.isEmpty(workCenterList)) {
hqlQuery.setParameter("workCenterList",workCenterList);
}
hqlQuery.setFirstResult(MesPcnExtConstWords.ZERO).setMaxResults(Objects.isNull(pageSize) ? MesPcnExtConstWords.ONE_HUNDRED : pageSize);
return hqlQuery.getResultList();
}

@ -1,6 +1,7 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.schedulejob;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesWorkOrderService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.platform.common.tool.JsonUtilTool;
import cn.estsh.i3plus.pojo.model.wms.WmsJobParamModel;
import cn.estsh.impp.framework.boot.init.ApplicationProperties;
@ -24,14 +25,14 @@ import java.util.List;
@Slf4j
@DisallowConcurrentExecution
@Component
@ApiOperation("排序报工job")
public class MesReportSortJob extends BaseMesScheduleJob {
@ApiOperation("MES汇报报工job")
public class MesProductReportJob extends BaseMesScheduleJob {
@Autowired
private IMesWorkOrderService workOrderService;
public MesReportSortJob() {
super(MesReportSortJob.class, "排序报工job");
public MesProductReportJob() {
super(MesProductReportJob.class, "MES汇报报工job");
}
@Override
@ -39,14 +40,24 @@ public class MesReportSortJob extends BaseMesScheduleJob {
List<WmsJobParamModel> wmsJobParamModelList = JsonUtilTool.toList(this.getJobParam(), WmsJobParamModel.class);
if (!CollectionUtils.isEmpty(wmsJobParamModelList)) {
for (WmsJobParamModel wmsJobParamModel : wmsJobParamModelList) {
//排序汇报
try {
long startTime = System.currentTimeMillis();
workOrderService.doMesWorkOrderSortReport(wmsJobParamModel.getOrganizeCode(), wmsJobParamModel.getPageSize(), "job");
workOrderService.doMesWorkOrderSortReport(wmsJobParamModel.getOrganizeCode(), wmsJobParamModel.getPageSize(), MesPcnExtConstWords.JOB);
long endTime = System.currentTimeMillis();
log.info("工厂{}排序报工job --- END --- 耗时: {} ms", wmsJobParamModel.getOrganizeCode(), endTime - startTime);
} catch (Exception e) {
log.info("工厂{}排序报工job 执行失败{}", wmsJobParamModel.getOrganizeCode(), e);
}
//非排序汇报
try {
long startTime = System.currentTimeMillis();
workOrderService.doMesWorkOrderNoSortReport(wmsJobParamModel.getOrganizeCode(), wmsJobParamModel.getPageSize(), MesPcnExtConstWords.JOB);
long endTime = System.currentTimeMillis();
log.info("工厂{}非排序报工JOB --- END --- 耗时: {} ms", wmsJobParamModel.getOrganizeCode(), endTime - startTime);
} catch (Exception e) {
log.info("工厂{}非排序报工JOB 执行失败{}", wmsJobParamModel.getOrganizeCode(), e);
}
}
}else{
log.info("排序报工job 参数不能为空");

@ -266,8 +266,7 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer
}
private List<MesPackingDefineDetails> getMesPackingDefineDetails(String organizeCode, String packCode) {
DdlPackBean ddlPackBean;
ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(packCode, "packCode", ddlPackBean);
List<MesPackingDefineDetails> defineDetails = mesPackingDefineDetailsRDao.findByHqlWhere(ddlPackBean);
if (CollectionUtils.isEmpty(defineDetails)) {

@ -206,7 +206,7 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
//查询发运单信息 发运跳过
DdlPackBean orderManagementPackBean = DdlPackBean.getDdlPackBean(shippingOrderManagement.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(shippingOrderManagement.getShippingCode(), "shippingCode", orderManagementPackBean);
DdlPreparedPack.getNumberSmallerPack(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), "status", orderManagementPackBean);
// DdlPreparedPack.getNumberSmallerPack(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), "status", orderManagementPackBean);
MesShippingOrderManagement orderManagement = shippingOrderManagementRepository.getByProperty(orderManagementPackBean);
if (StringUtils.isEmpty(orderManagement)) {
throw new ImppBusiException(String.format("【%s】此发运单不存在请检查数据", shippingOrderManagement.getShippingCode()));
@ -247,15 +247,17 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
}
DdlPreparedPack.getStringEqualPack(orderManagement.getShippingGroupCode(), "shippingGroupCode", orderManagementPackBean);
DdlPreparedPack.getInPackList(Stream.of(MesExtEnumUtil.SHIPPING_ORDER_STATUS.CREATE.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.PUBLISHED.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPING.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.PRINTED.getValue()).collect(Collectors.toList()), "status", orderManagementPackBean);
if (shippingOrderManagementRepository.isExitByHql(orderManagementPackBean)) {
DdlPreparedPack.getOrderBy("seq", CommonEnumUtil.ASC_OR_DESC.ASC.getValue(), orderManagementPackBean);
MesShippingOrderManagement shippingOrder = shippingOrderManagementRepository.getByProperty(orderManagementPackBean);
if (!Objects.isNull(shippingOrder)) {
//1强过
if ((!Objects.isNull(shippingOrderManagement.getIsPass()) && Objects.equals(MesPcnExtConstWords.ONE, shippingOrderManagement.getIsPass()))) {
orderManagement.setRemark(MesPcnExtConstWords.STRONGER_PASS);
ConvertBean.serviceModelUpdate(orderManagement, shippingOrderManagement.getModifyUser());
vehiclesOrderRepository.update(orderManagement);
} else {
throw new ImppBusiException(String.format("【%s】发运单对应排序【%s】前存在未扫描发运的发运单,请检查数据!",
orderManagement.getShippingCode(), orderManagement.getSeq()));
throw new ImppBusiException(String.format("【%s】发运单对应排序【%s】前存在未扫描发运的发运单【%s】序号【%s】,请检查数据!",
orderManagement.getShippingCode(), orderManagement.getSeq(),shippingOrder.getShippingCode(),shippingOrder.getSeq()));
}
}
}

@ -1080,6 +1080,38 @@ public class MesWorkOrderService implements IMesWorkOrderService {
}
}
@Override
public void doMesWorkOrderNoSortReport(String organizeCode, Integer pageSize, String userName) {
String workCenterCodes = configService.getCfgValue(organizeCode, "MES_PCN_REPORT_CENTER");
//查询所有非排序工单
List<MesProductionRecord> recordNoReportList = mesProductionRecordDao.findMesProductionRecordNoReport(organizeCode, MesExtEnumUtil.WORK_CENTER_TYPE.NOSORT.getValue(), pageSize, !StringUtils.isEmpty(workCenterCodes) ? Arrays.asList(workCenterCodes.split(",")) : null);
if (CollectionUtils.isEmpty(recordNoReportList)) {
LOGGER.error("非排序加工单加工记录中没有数据,无需处理");
return;
}
List<MesProductionRecord> recordNoReportNotHasOrderNoList = recordNoReportList.stream().filter(item -> StringUtils.isEmpty(item.getWorkOrderNo())).collect(Collectors.toList());
List<MesProductionRecord> recordNoReportHasOrderNoList = recordNoReportList.stream().filter(item -> !StringUtils.isEmpty(item.getWorkOrderNo())).collect(Collectors.toList());
//处理无工单加工记录
if(!CollectionUtils.isEmpty(recordNoReportNotHasOrderNoList)){
for (MesProductionRecord mesProductionRecord : recordNoReportNotHasOrderNoList) {
LOGGER.info("----------处理无工单加工记录报工开始-------{}", mesProductionRecord.getProductSn());
doProductReportByRecord(mesProductionRecord, organizeCode, userName);
LOGGER.info("----------处理无工单加工记录报工结束-------{}", mesProductionRecord.getProductSn());
}
}
//处理有工单加工记录
if(!CollectionUtils.isEmpty(recordNoReportHasOrderNoList)){
try {
for (MesProductionRecord mesProductionRecord : recordNoReportHasOrderNoList) {
LOGGER.info("----------处理有工单加工记录报工开始-------{}", mesProductionRecord.getProductSn());
doProductHasOrderReportByRecord(mesProductionRecord, organizeCode, userName);
LOGGER.info("----------处理有工单加工记录报工结束-------{}", mesProductionRecord.getProductSn());
}
} catch (ImppBusiException e) {
}
}
}
private MesProductVersion getProductVersion(String organizeCode,String partNo,String productVersion) {
MesProductVersion mesProductVersion = mesProductVersionService.getMesProductVersion(organizeCode,partNo,productVersion);
if (null == mesProductVersion) {
@ -1317,7 +1349,7 @@ public class MesWorkOrderService implements IMesWorkOrderService {
}
public MesWorkOrderSortReportModel initMesWorkOrderSortReportModel(String organizeCode, Integer pageSize, String userName) {
MesWorkOrderSortReportModel model = new MesWorkOrderSortReportModel(organizeCode, userName, mesProductionRecordDao.findMesProductionRecordNoReport(organizeCode, MesExtEnumUtil.WORK_CENTER_TYPE.SORT.getValue(), pageSize));
MesWorkOrderSortReportModel model = new MesWorkOrderSortReportModel(organizeCode, userName, mesProductionRecordDao.findMesProductionRecordNoReport(organizeCode, MesExtEnumUtil.WORK_CENTER_TYPE.SORT.getValue(), pageSize,null));
model.setMesWorkOrderList(workOrderExtService.getWorkOrderList(organizeCode, model.getWorkOrderList()));
model.setMesMoveRuleList(mesMoveRuleService.findMesMoveRuleByPartProdGroupCode(model.getPartProdGroupCodeList(), organizeCode));
model.setMesWorkOrderPartList(findMesWorkOrderPartByOrderNo(organizeCode, model.getWorkOrderList()));

@ -65,7 +65,7 @@ public class AssemblyVisualListPrintStrategy implements IPrintTemplateStrategySe
// vinCode
resultMap.put(MesPcnExtConstWords.VIN_CODE, workOrder.getVinCode());
// vinCode 后四位
resultMap.put(MesPcnExtConstWords.VIN_CODE_AFTER_FOUR, workOrder.getVinCode());
resultMap.put(MesPcnExtConstWords.VIN_CODE_AFTER_FOUR, !StringUtils.isEmpty(workOrder.getVinCode()) && workOrder.getVinCode().length() > MesPcnExtConstWords.FOUR ? workOrder.getVinCode().substring(workOrder.getVinCode().length() - MesPcnExtConstWords.FOUR) : workOrder.getVinCode());
// 总成零件号
resultMap.put(MesPcnExtConstWords.PART_NO, workOrder.getPartNo());
// 工单标识

Loading…
Cancel
Save