tags/yfai-mes-ext-v1.0
administrator 12 months ago
commit 704e3c30ce

@ -1,17 +0,0 @@
package cn.estsh.i3plus.ext.mes.api.base;
import cn.estsh.i3plus.pojo.mes.bean.MesCorssOrganizeErrorProofing;
import io.swagger.annotations.ApiOperation;
/**
* @Description :
* @Reference :
* @Author : junsheng.li
* @CreateDate 2024/7/4 16:49
* @Modify:
**/
public interface IMesCorssOrganizeErrorProofingService extends IBaseMesService<MesCorssOrganizeErrorProofing> {
@ApiOperation("跨工厂防错JOB")
void doMesCorssOrganizeErrorProofing(String organizeCode ,Integer pageSize,String userName);
}

@ -0,0 +1,17 @@
package cn.estsh.i3plus.ext.mes.api.base;
import cn.estsh.i3plus.pojo.mes.bean.MesCrossOrganizeCfg;
import io.swagger.annotations.ApiOperation;
/**
* @Description :
* @Reference :
* @Author : junsheng.li
* @CreateDate 2024/7/4 16:49
* @Modify:
**/
public interface IMesCrossOrganizeCfgService extends IBaseMesService<MesCrossOrganizeCfg> {
@ApiOperation("跨工厂防错JOB")
void doMesCrossOrganizeCfg(String organizeCode ,Integer pageSize,String userName);
}

@ -0,0 +1,13 @@
package cn.estsh.i3plus.ext.mes.api.base;
import cn.estsh.i3plus.pojo.mes.bean.MesLabelTemplate;
/**
* @Description :
* @Reference :
* @Author : junsheng.li
* @CreateDate 2024/7/10 13:40
* @Modify:
**/
public interface IMesLabelTemplateService extends IBaseMesService<MesLabelTemplate> {
}

@ -6,6 +6,7 @@ import lombok.Setter
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate
import org.springframework.util.StringUtils
import javax.annotation.Resource
import java.sql.Connection
@ -54,10 +55,10 @@ class MesSpotCheckOrderToSap {
checkMap.put("task_item_name",objectMap.get("task_item_name"));
checkMap.put("max_value",objectMap.get("max_value"));
checkMap.put("min_value",objectMap.get("min_value"));
checkMap.put("task_item_type",objectMap.get("data_type"));
checkMap.put("item_task_result",objectMap.get("spot_check_result"));
checkMap.put("task_item_type",StringUtils.isEmpty(objectMap.get("data_type"))?"":"10".equals(objectMap.get("data_type"))?"1":"2");
checkMap.put("item_task_result",StringUtils.isEmpty(objectMap.get("spot_check_result"))?"":"OK".equals(objectMap.get("spot_check_result"))?"True":"False");
checkMap.put("task_value",objectMap.get("spot_check_real_value"));
checkMap.put("IsAuto",objectMap.get("spot_check_item_type"));
checkMap.put("IsAuto",StringUtils.isEmpty(objectMap.get("spot_check_item_type"))?"":"10".equals(objectMap.get("spot_check_item_type"))?"1":"2");
checkMap.put("ConfigValue",objectMap.get("spot_check_set_value"));
checkMap.put("Remark",objectMap.get("remark"));

@ -1,7 +1,7 @@
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.MesCorssOrganizeErrorProofing;
import cn.estsh.i3plus.pojo.mes.bean.MesCrossOrganizeCfg;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@ -15,6 +15,6 @@ import org.springframework.web.bind.annotation.RestController;
**/
@Api(tags = "跨工厂防错")
@RestController
@RequestMapping(MesCommonConstant.MES_YANFEN + "/mesCorssOrganizeErrorProofing")
public class MesCorssOrganizeErrorProofingController extends BaseMesController<MesCorssOrganizeErrorProofing> {
@RequestMapping(MesCommonConstant.MES_YANFEN + "/mesCrossOrganizeCfg")
public class MesCrossOrganizeCfgController extends BaseMesController<MesCrossOrganizeCfg> {
}

@ -0,0 +1,20 @@
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.MesLabelTemplate;
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/7/10 13:39
* @Modify:
**/
@RestController
@RequestMapping(MesCommonConstant.MES_YANFEN + "/mesLabelTemplate")
@Api(tags = "打印模板")
public class MesLabelTemplateController extends BaseMesController<MesLabelTemplate> {
}

@ -67,7 +67,7 @@ public class MesWhiteListController extends MesBaseController {
private IMesQmsSuspiciousService qmsSuspiciousService;
@Autowired
private IMesCorssOrganizeErrorProofingService mesCorssOrganizeErrorProofingService;
private IMesCrossOrganizeCfgService mesCrossOrganizeCfgService;
@PostMapping(value = "/meter/main-data")
@ApiOperation(value = "Maximo仪表主数据", notes = "Maximo仪表主数据")
@ -113,12 +113,12 @@ public class MesWhiteListController extends MesBaseController {
return ResultBean.success().setSuccess(true);
}
@GetMapping(value = "/doMesCorssOrganizeErrorProofing")
@GetMapping(value = "/doMesCrossOrganizeCfg")
@ApiOperation(value = "跨工厂防错JOB")
public ResultBean doMesCorssOrganizeErrorProofing(String organizeCode, Integer pageSize) {
public ResultBean doMesCrossOrganizeCfg(String organizeCode, Integer pageSize) {
//统计数据
try {
mesCorssOrganizeErrorProofingService.doMesCorssOrganizeErrorProofing(organizeCode, pageSize, "job");
mesCrossOrganizeCfgService.doMesCrossOrganizeCfg(organizeCode, pageSize, "job");
} catch (ImppBusiException imppException) {
return ResultBean.fail(imppException);
} catch (Exception e) {

@ -0,0 +1,69 @@
package cn.estsh.i3plus.ext.mes.apiservice.cus_suit;
import cn.estsh.i3plus.platform.common.util.CommonConstWords;
import cn.estsh.i3plus.platform.plugin.datasource.DynamicDataSourceProxy;
import lombok.Getter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.concurrent.TimeUnit;
/**
* @Description : pisces
* @Reference :
* @Author : junsheng.li
* @CreateDate 2024/7/9 11:14
* @Modify:
**/
@Configuration
public class PiscesProperties {
public static final Logger LOGGER = LoggerFactory.getLogger(CommonConstWords.SYSTEM_LOG);
/***********************
* pisces
*/
@Value("${impp.pisces.datasource.isopen}")
@Getter
private boolean piscesIsOpen;
@Value("${impp.pisces.datasource.driver-class-name}")
@Getter
private String piscesDriverClassName;
@Value("${impp.pisces.datasource.alias}")
@Getter
private String piscesDsAlias;
@Value("${impp.pisces.datasource.jdbc-url}")
@Getter
private String piscesDsJdbcUrl;
@Value("${impp.pisces.datasource.username}")
@Getter
private String piscesDsUsername;
@Value("${impp.pisces.datasource.password}")
@Getter
private String piscesDsPassword;
@ConditionalOnExpression("'${impp.pisces.datasource.isopen:false}' == 'true'")
@Bean(name = "piscesDataSource")
public DynamicDataSourceProxy initPiscesCustomerSet(){
LOGGER.info("【初始化客户定制化...】");
/**
*
*/
LOGGER.info("【客户定制化pisces数据源加载...】");
//安道拓定制业务
DynamicDataSourceProxy piscesDataSource = DynamicDataSourceProxy.initDataSourceFactory(this.getPiscesDriverClassName(),
this.getPiscesDsJdbcUrl(),this.getPiscesDsUsername(),this.getPiscesDsPassword(),TimeUnit.MINUTES.toMillis(30));
return piscesDataSource;
}
}

@ -1,6 +1,6 @@
package cn.estsh.i3plus.ext.mes.apiservice.dao;
import cn.estsh.i3plus.pojo.mes.bean.MesCorssOrganizeErrorProofing;
import cn.estsh.i3plus.pojo.mes.bean.MesCrossOrganizeCfg;
import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn;
import io.swagger.annotations.ApiOperation;
@ -13,8 +13,8 @@ import java.util.List;
* @CreateDate 2024/7/4 18:03
* @Modify:
**/
public interface IMesCorssOrganizeErrorProofingDao {
public interface IMesCrossOrganizeCfgDao {
@ApiOperation("根据工厂物料,查询产品条码信息")
List<MesProduceSn> findMesProduceSnByOrganizeCodeAndPart(MesCorssOrganizeErrorProofing mesCorssOrganizeErrorProofing, Integer pageSize);
List<MesProduceSn> findMesProduceSnByOrganizeCodeAndPart(MesCrossOrganizeCfg mesCrossOrganizeCfg, Integer pageSize);
}

@ -1,9 +1,9 @@
package cn.estsh.i3plus.ext.mes.apiservice.daoimpl;
import cn.estsh.i3plus.ext.mes.apiservice.dao.IMesCorssOrganizeErrorProofingDao;
import cn.estsh.i3plus.ext.mes.apiservice.dao.IMesCrossOrganizeCfgDao;
import cn.estsh.i3plus.platform.common.tool.TimeTool;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesCorssOrganizeErrorProofing;
import cn.estsh.i3plus.pojo.mes.bean.MesCrossOrganizeCfg;
import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -22,13 +22,13 @@ import java.util.List;
* @Modify:
**/
@Service
public class MesCorssOrganizeErrorProofingDaoImpl implements IMesCorssOrganizeErrorProofingDao {
public class MesCrossOrganizeCfgDaoImpl implements IMesCrossOrganizeCfgDao {
@Autowired
private EntityManager entityManager;
@Override
public List<MesProduceSn> findMesProduceSnByOrganizeCodeAndPart(MesCorssOrganizeErrorProofing mesCorssOrganizeErrorProofing, Integer pageSize) {
public List<MesProduceSn> findMesProduceSnByOrganizeCodeAndPart(MesCrossOrganizeCfg mesCrossOrganizeCfg, Integer pageSize) {
String sql = "select srcSn from MesProduceSn srcSn left join MesProduceSn destSn on srcSn.serialNumber = destSn.serialNumber " +
" and destSn.organizeCode=:destOrganizeCode and destSn.isDeleted=:isDeleted and destSn.isValid = :isValid " +
" where srcSn.createDatetime >= :createDatetime and srcSn.organizeCode = :srcOrganizeCode " +
@ -36,15 +36,15 @@ public class MesCorssOrganizeErrorProofingDaoImpl implements IMesCorssOrganizeEr
" and srcSn.snStatus in (10,20) and srcSn.qcStatus in (10,15) and destSn.serialNumber is null " +
" order by srcSn.createDatetime asc";
Query query = entityManager.createQuery(sql, MesProduceSn.class);
query.setParameter("srcOrganizeCode", mesCorssOrganizeErrorProofing.getSrcOrganizeCode());
query.setParameter("destOrganizeCode", mesCorssOrganizeErrorProofing.getOrganizeCode());
query.setParameter("srcOrganizeCode", mesCrossOrganizeCfg.getSrcOrganizeCode());
query.setParameter("destOrganizeCode", mesCrossOrganizeCfg.getOrganizeCode());
query.setParameter("isValid", CommonEnumUtil.VALID);
query.setParameter("isDeleted", CommonEnumUtil.FALSE);
query.setParameter("partNo", mesCorssOrganizeErrorProofing.getPartNo());
if (StringUtils.isEmpty(mesCorssOrganizeErrorProofing.getLastCreateDatetime())) {
query.setParameter("partNo", mesCrossOrganizeCfg.getPartNo());
if (StringUtils.isEmpty(mesCrossOrganizeCfg.getLastCreateDatetime())) {
query.setParameter("createDatetime", TimeTool.pareDateToString(new Date(0)));
} else {
query.setParameter("createDatetime", mesCorssOrganizeErrorProofing.getLastCreateDatetime());
query.setParameter("createDatetime", mesCrossOrganizeCfg.getLastCreateDatetime());
}
query.setFirstResult(0).setMaxResults(pageSize);
return query.getResultList();

@ -36,7 +36,7 @@ public class MesYfReportDaoImpl implements IMesYfReportDao {
dataQuerySql.append("select new ")
.append(MesDeviceDataQueryReportResultModel.class.getName())
.append("(organizeCode, workCenterCode, workCellCode, workOrderNo, serialNumber, ")
.append("logType, message, errorType, equipmentCode, equipmentName, createDatetime, createUser, " +
.append("logType, message, equipmentCode, equipmentName, createDatetime, createUser, " +
"modifyDatetime, modifyUser) ");
countQuerySql.append("select count(1) ");
commonQuerySql.append("from MesWorkCellScanMonitorLog " +

@ -47,6 +47,9 @@ public class MesSAPDbAdapter {
@Resource(name = "mesDataSource")
private DynamicDataSourceProxy mesDataSourceProxy;
@Resource(name = "piscesDataSource")
private DynamicDataSourceProxy piscesDataSourceProxy;
@Value("${sync.redis.time:1800}")
private Integer redisTime;
@ -73,7 +76,8 @@ public class MesSAPDbAdapter {
private WmsSAPDbWriter buildWriter(String groupName,
DynamicDataSourceProxy sapDataSourceProxy,
DynamicDataSourceProxy mesDataSourceProxy) throws Exception {
DynamicDataSourceProxy mesDataSourceProxy,
DynamicDataSourceProxy piscesDataSourceProxy) throws Exception {
WmsSAPDbWriter wmsSAPDbWriter = null;
@ -85,6 +89,14 @@ public class MesSAPDbAdapter {
wmsSAPDbWriter = new WmsSAPDbWriter(mesDataSourceProxy, sapDataSourceProxy);
}
if (groupName.equals(MesInterfaceEnumUtil.DIRECTION_TYPE.PISCES2MES.getName())) {
wmsSAPDbWriter = new WmsSAPDbWriter(piscesDataSourceProxy, mesDataSourceProxy);
}
if (groupName.equals(MesInterfaceEnumUtil.DIRECTION_TYPE.MES2PISCES.getName())) {
wmsSAPDbWriter = new WmsSAPDbWriter(mesDataSourceProxy, piscesDataSourceProxy);
}
@ -115,7 +127,8 @@ public class MesSAPDbAdapter {
private WmsSAPDbReader buildReader(String groupName,
DynamicDataSourceProxy sapDataSourceProxy,
DynamicDataSourceProxy mesDataSourceProxy) {
DynamicDataSourceProxy mesDataSourceProxy,
DynamicDataSourceProxy piscesDataSourceProxy) {
WmsSAPDbReader wmsSAPDbReader = null;
@ -127,6 +140,14 @@ public class MesSAPDbAdapter {
wmsSAPDbReader = new WmsSAPDbReader(mesDataSourceProxy);
}
if (groupName.equals(MesInterfaceEnumUtil.DIRECTION_TYPE.PISCES2MES.getName())) {
wmsSAPDbReader = new WmsSAPDbReader(piscesDataSourceProxy);
}
if (groupName.equals(MesInterfaceEnumUtil.DIRECTION_TYPE.MES2PISCES.getName())) {
wmsSAPDbReader = new WmsSAPDbReader(mesDataSourceProxy);
}
// if (groupName.equals(MesInterfaceEnumUtil.DIRECTION_TYPE.WMS2MES.getName())) {
// wmsSAPDbReader = new WmsSAPDbReader(mesDataSourceProxy);
// }
@ -179,11 +200,11 @@ public class MesSAPDbAdapter {
// 不需要在这里处理
//initConnection();
writer = buildWriter(groupName, sapDataSourceProxy, mesDataSourceProxy);
writer = buildWriter(groupName, sapDataSourceProxy, mesDataSourceProxy,piscesDataSourceProxy);
writer.setSrcConn(this.srcConn);
writer.setDestConn(this.destConn);
reader = buildReader(groupName, sapDataSourceProxy, mesDataSourceProxy);
reader = buildReader(groupName, sapDataSourceProxy, mesDataSourceProxy,piscesDataSourceProxy);
reader.setSrcConn(this.srcConn);
@ -340,11 +361,11 @@ public class MesSAPDbAdapter {
// 不需要在这里处理
//initConnection();
writer = buildWriter(groupName, sapDataSourceProxy, mesDataSourceProxy);
writer = buildWriter(groupName, sapDataSourceProxy, mesDataSourceProxy,piscesDataSourceProxy);
writer.setSrcConn(this.srcConn);
writer.setDestConn(this.destConn);
reader = buildReader(groupName, sapDataSourceProxy, mesDataSourceProxy);
reader = buildReader(groupName, sapDataSourceProxy, mesDataSourceProxy,piscesDataSourceProxy);
reader.setSrcConn(this.srcConn);

@ -1,7 +1,7 @@
package cn.estsh.i3plus.ext.mes.apiservice.schedulejob;
import cn.estsh.i3plus.ext.mes.api.base.IMesCorssOrganizeErrorProofingService;
import cn.estsh.i3plus.ext.mes.api.base.IMesCrossOrganizeCfgService;
import cn.estsh.i3plus.mes.apiservice.schedulejob.BaseMesScheduleJob;
import cn.estsh.i3plus.platform.common.tool.JsonUtilTool;
import cn.estsh.i3plus.pojo.model.wms.WmsJobParamModel;
@ -27,13 +27,13 @@ import java.util.List;
@DisallowConcurrentExecution
@Component
@ApiOperation("跨工厂防错JOB")
public class MesCorssOrganizeErrorProofingJob extends BaseMesScheduleJob {
public class MesCrossOrganizeCfgJob extends BaseMesScheduleJob {
@Autowired
private IMesCorssOrganizeErrorProofingService mesCorssOrganizeErrorProofingService;
private IMesCrossOrganizeCfgService mesCrossOrganizeCfgService;
public MesCorssOrganizeErrorProofingJob() {
super(MesCorssOrganizeErrorProofingJob.class, "跨工厂防错JOB");
public MesCrossOrganizeCfgJob() {
super(MesCrossOrganizeCfgJob.class, "跨工厂防错JOB");
}
@Override
@ -41,10 +41,9 @@ public class MesCorssOrganizeErrorProofingJob extends BaseMesScheduleJob {
List<WmsJobParamModel> wmsJobParamModelList = JsonUtilTool.toList(this.getJobParam(), WmsJobParamModel.class);
if (!CollectionUtils.isEmpty(wmsJobParamModelList)) {
for (WmsJobParamModel wmsJobParamModel : wmsJobParamModelList) {
//统计数据
try {
long startTime = System.currentTimeMillis();
mesCorssOrganizeErrorProofingService.doMesCorssOrganizeErrorProofing(wmsJobParamModel.getOrganizeCode(), wmsJobParamModel.getPageSize(), "job");
mesCrossOrganizeCfgService.doMesCrossOrganizeCfg(wmsJobParamModel.getOrganizeCode(), wmsJobParamModel.getPageSize(), "job");
long endTime = System.currentTimeMillis();
log.info("工厂{}跨工厂防错job --- END --- 耗时: {} ms", wmsJobParamModel.getOrganizeCode(), endTime - startTime);
} catch (Exception e) {

@ -0,0 +1,99 @@
package cn.estsh.i3plus.ext.mes.apiservice.schedulejob;
import cn.estsh.i3plus.ext.mes.api.base.IMesConfigService;
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.mes.api.iservice.base.IMessagePushService;
import cn.estsh.i3plus.mes.apiservice.schedulejob.BaseMesScheduleJob;
import cn.estsh.i3plus.mes.apiservice.util.DateUtil;
import cn.estsh.i3plus.platform.common.tool.TimeTool;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.rework.MesReworkTask;
import cn.estsh.i3plus.pojo.mes.repository.MesReworkTaskRepository;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import cn.estsh.impp.framework.boot.init.ApplicationProperties;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.JobExecutionContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
/**
* @Description :
* @Reference :
* @Author : junsheng.li
* @CreateDate 2024/7/8 14:43
* @Modify:
**/
@Slf4j
@DisallowConcurrentExecution
@Component
@ApiOperation("返工单超过时不处理发邮件通知")
public class MesSendOutTimeReworkOrderEmailJob extends BaseMesScheduleJob {
@Autowired
private IMessagePushService messagePushService;
@Autowired
private IMesConfigService mesConfigService;
@Autowired
private MesReworkTaskRepository mesReworkTaskRepository;
public MesSendOutTimeReworkOrderEmailJob() {
super(MesSendOutTimeReworkOrderEmailJob.class, "返工单超过时不处理发邮件通知JOB");
}
@Override
public void executeMesJob(JobExecutionContext context, ApplicationProperties applicationProperties) {
String jobParam = this.getJobParam();
if (StringUtils.isBlank(jobParam)) {
throw new IllegalArgumentException("job参数为空请检查参数");
}
for (String organizeCode : jobParam.split(",")) {
try {
//超时时间
int minutes = Integer.parseInt(mesConfigService.getCfgValue(organizeCode, MesCommonConstant.OUT_TIME_REWORK_ORDER_MINUTES));
//查询超时返工单
List<MesReworkTask> mesReworkTaskList = findMesReworkTaskList(organizeCode, minutes);
if (CollectionUtils.isEmpty(mesReworkTaskList)) {
continue;
}
messagePushService.pushEmail(getContent(minutes, mesReworkTaskList), "返工单超时提醒", "系统管理员", Arrays.asList(mesConfigService.getCfgValue(organizeCode, MesCommonConstant.OUT_TIME_REWORK_ORDER_SEND_URL).split(",")));
long startTime = System.currentTimeMillis();
long endTime = System.currentTimeMillis();
log.info("工厂{}返工单超过时不处理发邮件通知JOB --- END --- 耗时: {} ms", organizeCode, endTime - startTime);
} catch (Exception e) {
log.info("工厂{}返工单超过时不处理发邮件通知JOB 执行失败{}", organizeCode, e);
}
}
}
private String getContent(int minutes, List<MesReworkTask> mesReworkTaskList) {
StringBuilder content = new StringBuilder("<p>尊敬的用户</p> <p>您好!</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;下述返工工单超过" + minutes + "分钟未处理,请及时处理!</p>");
for (MesReworkTask mesReworkTask : mesReworkTaskList) {
content.append("<p>返工工单号:").append(mesReworkTask.getReworkOrder()).append("零件号:").append(mesReworkTask.getPartNo()).append(",返工数量:").append(mesReworkTask.getReworkedQty()).append(",创建时间:").append(mesReworkTask.getCreateDatetime()).append("</p>");
}
log.info(content.toString());
return content.toString();
}
private List<MesReworkTask> findMesReworkTaskList(String organizeCode, int minutes) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.REWORK_TASK_STATUS.CREATE.getValue(), "status", packBean);
packBean.setWhereAppend(packBean.getWhereAppend() + " and model.createDatetime <= '" + TimeTool.pareDateToString(DateUtil.addMinutes(new Date(), -minutes)) + "'");
List<MesReworkTask> mesReworkTaskList = mesReworkTaskRepository.findByHqlWhere(packBean);
return mesReworkTaskList;
}
}

@ -1,7 +1,7 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesCorssOrganizeErrorProofingService;
import cn.estsh.i3plus.ext.mes.apiservice.dao.IMesCorssOrganizeErrorProofingDao;
import cn.estsh.i3plus.ext.mes.api.base.IMesCrossOrganizeCfgService;
import cn.estsh.i3plus.ext.mes.apiservice.dao.IMesCrossOrganizeCfgDao;
import cn.estsh.i3plus.ext.mes.apiservice.unit.exception.MesException;
import cn.estsh.i3plus.mes.apiservice.util.DateUtil;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
@ -9,10 +9,10 @@ import cn.estsh.i3plus.platform.common.tool.TimeTool;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.MesCorssOrganizeErrorProofing;
import cn.estsh.i3plus.pojo.mes.bean.MesCorssOrganizeErrorProofingLog;
import cn.estsh.i3plus.pojo.mes.bean.MesCrossOrganizeCfg;
import cn.estsh.i3plus.pojo.mes.bean.MesCrossOrganizeCfgLog;
import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn;
import cn.estsh.i3plus.pojo.mes.repository.IMesCorssOrganizeErrorProofingLogRepository;
import cn.estsh.i3plus.pojo.mes.repository.IMesCrossOrganizeCfgLogRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesProduceSnRepository;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
@ -22,7 +22,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
/**
@ -34,26 +33,26 @@ import java.util.List;
**/
@Service
@Slf4j
public class MesCorssOrganizeErrorProofingServiceImpl extends BaseMesService<MesCorssOrganizeErrorProofing> implements IMesCorssOrganizeErrorProofingService {
public class MesCrossOrganizeCfgServiceImpl extends BaseMesService<MesCrossOrganizeCfg> implements IMesCrossOrganizeCfgService {
@Autowired
private IMesCorssOrganizeErrorProofingDao mesCorssOrganizeErrorProofingDao;
private IMesCrossOrganizeCfgDao mesCrossOrganizeCfgDao;
@Autowired
private MesProduceSnRepository mesProduceSnRepository;
@Autowired
private IMesCorssOrganizeErrorProofingLogRepository mesCorssOrganizeErrorProofingLogRepository;
private IMesCrossOrganizeCfgLogRepository mesCrossOrganizeCfgLogRepository;
@Override
protected void setPackQueryBean(MesCorssOrganizeErrorProofing bean, DdlPackBean packBean) {
protected void setPackQueryBean(MesCrossOrganizeCfg bean, DdlPackBean packBean) {
DdlPreparedPack.getStringEqualPack(bean.getSrcOrganizeCode(), "srcOrganizeCode", packBean);
DdlPreparedPack.getStringLikerPack(bean.getPartNo(), "partNo", packBean);
DdlPreparedPack.getStringLikerPack(bean.getPartName(), "partName", packBean);
}
@Override
protected void onInsertBean(MesCorssOrganizeErrorProofing item) {
protected void onInsertBean(MesCrossOrganizeCfg item) {
// 数据校验
checkData(item);
@ -66,7 +65,7 @@ public class MesCorssOrganizeErrorProofingServiceImpl extends BaseMesService<Mes
}
@Override
protected void onUpdateBean(MesCorssOrganizeErrorProofing item) {
protected void onUpdateBean(MesCrossOrganizeCfg item) {
// 数据校验
checkData(item);
@ -80,33 +79,33 @@ public class MesCorssOrganizeErrorProofingServiceImpl extends BaseMesService<Mes
}
@Override
public void doMesCorssOrganizeErrorProofing(String organizeCode, Integer pageSize, String userName) {
List<MesCorssOrganizeErrorProofing> corssOrganizeErrorProofingList = baseRDao.findByHqlWhere(DdlPackBean.getDdlPackBean(organizeCode));
if (CollectionUtils.isEmpty(corssOrganizeErrorProofingList)) {
public void doMesCrossOrganizeCfg(String organizeCode, Integer pageSize, String userName) {
List<MesCrossOrganizeCfg> crossOrganizeCfgList = baseRDao.findByHqlWhere(DdlPackBean.getDdlPackBean(organizeCode));
if (CollectionUtils.isEmpty(crossOrganizeCfgList)) {
return;
}
//循环处理数据
for (MesCorssOrganizeErrorProofing organizeErrorProofing : corssOrganizeErrorProofingList) {
for (MesCrossOrganizeCfg crossOrganizeCfg : crossOrganizeCfgList) {
//查询待同步的数据
List<MesProduceSn> produceSnList = mesCorssOrganizeErrorProofingDao.findMesProduceSnByOrganizeCodeAndPart(organizeErrorProofing, pageSize);
List<MesProduceSn> produceSnList = mesCrossOrganizeCfgDao.findMesProduceSnByOrganizeCodeAndPart(crossOrganizeCfg, pageSize);
int transSize = 0;
if (!CollectionUtils.isEmpty(produceSnList)) {
//插入条码
insertMesProduceSn(organizeErrorProofing, produceSnList);
insertMesProduceSn(crossOrganizeCfg, produceSnList);
//最后同步条码创建时间
String createDatetime = produceSnList.get(produceSnList.size() - 1).getCreateDatetime();
organizeErrorProofing.setLastCreateDatetime(TimeTool.pareDateToString(DateUtil.addMinutes(TimeTool.parseDate(createDatetime), -10)));
crossOrganizeCfg.setLastCreateDatetime(TimeTool.pareDateToString(DateUtil.addMinutes(TimeTool.parseDate(createDatetime), -10)));
transSize = produceSnList.size();
}
organizeErrorProofing.setLastExeTime(TimeTool.getNowTime(true));
crossOrganizeCfg.setLastExeTime(TimeTool.getNowTime(true));
//更新数据
baseRDao.update(organizeErrorProofing);
baseRDao.update(crossOrganizeCfg);
//保存记录
saveLog(userName, organizeErrorProofing, transSize);
saveLog(userName, crossOrganizeCfg, transSize);
}
}
private void checkData(MesCorssOrganizeErrorProofing item) {
private void checkData(MesCrossOrganizeCfg item) {
ValidatorBean.checkNotNull(item.getSrcOrganizeCode(), "源工厂代码不能为空");
ValidatorBean.checkNotNull(item.getPartNo(), "零件号不能为空");
if (item.getSrcOrganizeCode().equalsIgnoreCase(item.getOrganizeCode())) {
@ -114,21 +113,21 @@ public class MesCorssOrganizeErrorProofingServiceImpl extends BaseMesService<Mes
}
}
private void saveLog(String userName, MesCorssOrganizeErrorProofing organizeErrorProofing, int transSize) {
MesCorssOrganizeErrorProofingLog mesCorssOrganizeErrorProofingLog = new MesCorssOrganizeErrorProofingLog();
BeanUtils.copyProperties(organizeErrorProofing, mesCorssOrganizeErrorProofingLog, "id");
mesCorssOrganizeErrorProofingLog.setTransSize(transSize);
ConvertBean.serviceModelInitialize(mesCorssOrganizeErrorProofingLog, userName);
mesCorssOrganizeErrorProofingLogRepository.insert(mesCorssOrganizeErrorProofingLog);
private void saveLog(String userName, MesCrossOrganizeCfg crossOrganizeCfg, int transSize) {
MesCrossOrganizeCfgLog mesCrossOrganizeCfgLog = new MesCrossOrganizeCfgLog();
BeanUtils.copyProperties(crossOrganizeCfg, mesCrossOrganizeCfgLog, "id");
mesCrossOrganizeCfgLog.setTransSize(transSize);
ConvertBean.serviceModelInitialize(mesCrossOrganizeCfgLog, userName);
mesCrossOrganizeCfgLogRepository.insert(mesCrossOrganizeCfgLog);
}
private void insertMesProduceSn(MesCorssOrganizeErrorProofing organizeErrorProofing, List<MesProduceSn> produceSnList) {
private void insertMesProduceSn(MesCrossOrganizeCfg crossOrganizeCfg, List<MesProduceSn> produceSnList) {
//数据持久化
for (MesProduceSn produceSn : produceSnList) {
MesProduceSn saveDbProduceSn = new MesProduceSn();
BeanUtils.copyProperties(produceSn, saveDbProduceSn, "id");
saveDbProduceSn.setOrganizeCode(organizeErrorProofing.getOrganizeCode());
saveDbProduceSn.setSnType(MesExtEnumUtil.PRODUCE_SN_TYPE.CORSS_ORGANIZE.getValue());
saveDbProduceSn.setOrganizeCode(crossOrganizeCfg.getOrganizeCode());
saveDbProduceSn.setSnType(MesExtEnumUtil.PRODUCE_SN_TYPE.CROSS_ORGANIZE.getValue());
saveDbProduceSn.setDescription(produceSn.getOrganizeCode());
saveDbProduceSn.setSystemSyncStatus(CommonEnumUtil.FALSE);
mesProduceSnRepository.insert(saveDbProduceSn);

@ -0,0 +1,28 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesLabelTemplateService;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.MesLabelTemplate;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* @Description :
* @Reference :
* @Author : junsheng.li
* @CreateDate 2024/7/10 13:43
* @Modify:
**/
@Service
@Slf4j
public class MesLabelTemplateServiceImpl extends BaseMesService<MesLabelTemplate> implements IMesLabelTemplateService {
@Override
protected void setPackQueryBean(MesLabelTemplate bean, DdlPackBean packBean) {
packBean = DdlPackBean.getDdlPackBean();
DdlPreparedPack.getStringLikerPack(bean.getTemplateCode(), "templateCode", packBean);
DdlPreparedPack.getStringLikerPack(bean.getTemplateName(), "templateName", packBean);
DdlPreparedPack.getOrderBy(bean.getOrderByParam(), bean.getAscOrDesc(), packBean);
}
}

@ -1,13 +0,0 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
import cn.estsh.i3plus.ext.mes.api.base.IBaseMesService;
import cn.estsh.i3plus.pojo.mes.bean.MesPartTypePicture;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@Service
@Slf4j
public class MesPartTypePictureService extends BaseMesService<MesPartTypePicture> implements IBaseMesService<MesPartTypePicture> {
}

@ -0,0 +1,47 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesPartTypePictureService;
import cn.estsh.i3plus.ext.mes.apiservice.unit.exception.MesException;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.MesPartTypePicture;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@Service
@Slf4j
public class MesPartTypePictureServiceImpl extends BaseMesService<MesPartTypePicture> implements IMesPartTypePictureService {
@Override
protected void setPackQueryBean(MesPartTypePicture bean, DdlPackBean packBean) {
DdlPreparedPack.getStringLikerPack(bean.getPartTypeCode(), "partTypeCode", packBean);
DdlPreparedPack.getStringLikerPack(bean.getPartTypeName(), "partTypeName", packBean);
}
@Override
protected void onInsertBean(MesPartTypePicture item) {
// 数据校验
ValidatorBean.checkNotNull(item.getPartTypeCode(), "零件类型代码不能为空");
DdlPackBean packBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(item.getPartTypeCode(), "partTypeCode", packBean);
if (baseRDao.isExitByHql(packBean)) {
MesException.throwMesBusiException("【%s】零件类型代码已经存在请检查数据", item.getPartTypeCode());
}
}
@Override
protected void onUpdateBean(MesPartTypePicture item) {
// 数据校验
ValidatorBean.checkNotNull(item.getPartTypeCode(), "零件类型代码不能为空");
DdlPackBean packBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(item.getPartTypeCode(), "partTypeCode", packBean);
DdlPreparedPack.getNumNOEqualPack(item.getId(), "id", packBean);
if (baseRDao.isExitByHql(packBean)) {
MesException.throwMesBusiException("【%s】零件类型代码已经存在请检查数据", item.getPartTypeCode());
}
}
}

@ -20,7 +20,7 @@ import org.springframework.stereotype.Service;
public class MesShiftGroupService extends BaseMesService<MesShiftGroup> implements IMesShiftGroupService {
protected void setPackQueryBean(MesShiftGroup bean, DdlPackBean packBean) {
DdlPreparedPack.getStringEqualPack(bean.getShiftGroup(), "shiftGroup", packBean);
DdlPreparedPack.getStringLikerPack(bean.getShiftGroup(), "shiftGroup", packBean);
DdlPreparedPack.getStringLikerPack(bean.getShiftGroupName(), "shiftGroupName", packBean);
}

@ -113,7 +113,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
public MesWorkOrder insert(MesWorkOrder bean) {
//校验产线与工位的关系
boolean relationResult = checkWorkCenterPartRelation(bean.getWorkCenterCode(), bean.getPartNo());
if (!relationResult){
if (!relationResult && (StringUtil.isEmpty(bean.getOrderFlag()) || !MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(bean.getOrderFlag()))){
MesException.throwMesBusiException(String.format("工单产线【%s】与工单零件【%s】没有维护产线零件关系",bean.getWorkCenterCode(),bean.getPartNo()));
}
//获取相同类型 相同标识 生产序号最大值的
@ -305,11 +305,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.S.getValue(),
MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue()));
}
//获取生产版本
MesProductVersion mesProductVersion = getMesProductVersion(item, mesWorkCenter);
item.setProductVersion(mesProductVersion.getProductVersion());
//获取bom信息
List<MesBom> bomList = mesBomService.findMesBomByPartNoAndBomVersion(item.getPartNo(), item.getOrganizeCode(), mesProductVersion.getAlternativePartList());
//校验VIN号是否重复
if (!StringUtil.isEmpty(item.getVinCode())) {
//校验vin号是否重复
ddlPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
@ -320,11 +316,10 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
}
//排序工单数量为1
item.setQty(1d);
//是否自动发布
isAuto(item, saveMesWorkOrderToWms, bomList);
//发送工单给WMS
sendToWms(item, mesWorkCenter, saveMesWorkOrderToWms);
} else if (item.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.UN_SORT.getValue()) {
ValidatorBean.checkNotNull(item.getOrderFlag(), "标识不能为空");
ValidatorBean.checkNotNull(item.getProductVersion(), "生产版本不能为空");
if (Objects.isNull(item.getQty()) || item.getQty() <= 0d) {
MesException.throwMesBusiException("生产数量不能小于等于0");
}
@ -341,26 +336,25 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
, MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.N.getValue(),
MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue()));
}
//校验物料生产版本是否存在
MesProductVersion mesProductVersion = checkMesProductVersion(item);
//获取bom信息
List<MesBom> bomList = mesBomService.findMesBomByPartNoAndBomVersion(item.getPartNo(), item.getOrganizeCode(), mesProductVersion.getAlternativePartList());
item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue());
//发送工单信息给WMS
saveMesWorkOrderToWms.addAll(mesWorkOrderToWmsService.saveMesWorkOrderToWms(item, bomList));
//非试制单
if (!MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(item.getOrderFlag())) {
ValidatorBean.checkNotNull(item.getProductVersion(), "生产版本不能为空");
//校验物料生产版本是否存在
MesProductVersion mesProductVersion = checkMesProductVersion(item);
//获取bom信息
List<MesBom> bomList = mesBomService.findMesBomByPartNoAndBomVersion(item.getPartNo(), item.getOrganizeCode(), mesProductVersion.getAlternativePartList());
//发送工单信息给WMS
saveMesWorkOrderToWms.addAll(mesWorkOrderToWmsService.saveMesWorkOrderToWms(item, bomList));
}
} else {
ValidatorBean.checkNotNull(item.getPlanStartTime(), "计划开始时间不能为空");
ValidatorBean.checkNotNull(item.getPlanEndTime(), "计划结束时间不能为空");
if (Objects.isNull(item.getQty()) || item.getQty() <= 0d) {
MesException.throwMesBusiException("生产数量不能小于等于0");
}
//获取生产版本
MesProductVersion mesProductVersion = getMesProductVersion(item, mesWorkCenter);
item.setProductVersion(mesProductVersion.getProductVersion());
//获取bom信息
List<MesBom> bomList = mesBomService.findMesBomByPartNoAndBomVersion(item.getPartNo(), item.getOrganizeCode(), mesProductVersion.getAlternativePartList());
//是否自动发布
isAuto(item, saveMesWorkOrderToWms, bomList);
//发送工单给WMS
sendToWms(item, mesWorkCenter, saveMesWorkOrderToWms);
}
//物料名称不存在,从物料信息中获取
MesPartSap mesPart = iMesPartSapService.getMesPartSapByPartNo(item.getPartNo(), item.getOrganizeCode());
@ -381,6 +375,20 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
}
}
private void sendToWms(MesWorkOrder item, MesWorkCenter mesWorkCenter, List<MesWorkOrderToWms> saveMesWorkOrderToWms) {
//非试制单
List<MesBom> bomList = null;
if (!MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(item.getOrderFlag())) {
//获取生产版本
MesProductVersion mesProductVersion = getMesProductVersion(item, mesWorkCenter);
item.setProductVersion(mesProductVersion.getProductVersion());
//获取bom信息
bomList = mesBomService.findMesBomByPartNoAndBomVersion(item.getPartNo(), item.getOrganizeCode(), mesProductVersion.getAlternativePartList());
}
//是否自动发布
isAuto(item, saveMesWorkOrderToWms, bomList);
}
private void isAuto(MesWorkOrder item, List<MesWorkOrderToWms> saveMesWorkOrderToWms, List<MesBom> bomList) {
MesPartProdGroup mesPartProdGroup = null;
if(StringUtil.isEmpty(item.getPartProdGroupCode())){
@ -400,7 +408,9 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
if (CommonEnumUtil.VALID == mesPartProdGroup.getIsAutoRelease()) {
item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue());
//发送工单信息给WMS
saveMesWorkOrderToWms.addAll(mesWorkOrderToWmsService.saveMesWorkOrderToWms(item, bomList));
if(!Objects.isNull(bomList)){
saveMesWorkOrderToWms.addAll(mesWorkOrderToWmsService.saveMesWorkOrderToWms(item, bomList));
}
} else {
item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.CREATE.getValue());
}
@ -868,6 +878,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
} else {
mesWorkOrderDb.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue());
}
mesWorkOrderDb.setCompleteQty(mesWorkOrderDb.getReportedQty());
} else {
//报工调整数量加-
mesWorkOrderDb.setAdjustQty((MathOperation.add(mesWorkOrder.getNum(), mesWorkOrderDb.getAdjustQty())));
@ -913,12 +924,27 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
double unCompleteQty = MathOperation.sub(mesWorkOrder.getQty(), mesWorkOrder.getReportedQty());
mesWorkOrder.setUnCompleteQty(unCompleteQty > 0 ? unCompleteQty : 0);
if (mesWorkOrder.getReportedQty() > mesWorkOrder.getQty()) {
MesException.throwMesBusiException("工单报工数量大于工单数量【%s】,不允许报工", mesWorkOrder.getQty());
//查询产线信息
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mesWorkOrder.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(mesWorkOrder.getWorkCenterCode(), "workCenterCode", ddlPackBean);
MesWorkCenter workCenter = mesWorkCenterRDao.getByProperty(ddlPackBean);
// 以下则是超工单逻辑
// 如果产线中没有配置超工单,则直接阻断
if (!Objects.equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), workCenter.getIsCheckOrderQty())) {
MesException.throwMesBusiException("请检查工单数量,工单号[%s],工单数量[%s]报工数量[%s],且未配置超工单!", mesWorkOrder.getWorkOrderNo(), mesWorkOrder.getQty(), mesWorkOrder.getReportedQty());
}
// 如果配置了超工单,且比例已经超过了配置的超工单比例,也需要阻断
double rate = (mesWorkOrder.getReportedQty() - mesWorkOrder.getQty())/mesWorkOrder.getQty();
if (rate > workCenter.getOrderRate()) {
MesException.throwMesBusiException("请检查工单数量,工单号[%s],工单数量[%s]报工数量[%s],配置了超工单,但超过了比例[%s]!", mesWorkOrder.getWorkOrderNo(), mesWorkOrder.getQty(), mesWorkOrder.getReportedQty(), workCenter.getOrderRate());
}
mesWorkOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue());
} else if (Objects.equals(mesWorkOrder.getReportedQty(), mesWorkOrder.getQty())) {
mesWorkOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue());
} else {
mesWorkOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue());
}
mesWorkOrder.setCompleteQty(mesWorkOrder.getReportedQty());
} else {
//报工调整数量加-
mesWorkOrder.setAdjustQty((MathOperation.add(mesWorkOrderNew.getNum(), mesWorkOrder.getAdjustQty())));

@ -381,6 +381,8 @@ public class MesSpotCheckOrderService extends BaseMesService<MesSpotCheckOrder>
DdlPreparedPack.getNumEqualPack(bean.getStatus(),"status",packBean);
DdlPreparedPack.getNumEqualPack(bean.getSpotCheckOrderResult(),"spotCheckOrderResult",packBean);
DdlPreparedPack.getStringLikerPack(bean.getEquipName(),"equipName",packBean);
DdlPreparedPack.getStringBiggerPack(bean.getModifyDateTimeStart(), "spotCheckTime", packBean);
DdlPreparedPack.getStringSmallerPack(bean.getModifyDateTimeEnd(), "spotCheckTime", packBean);
DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{"createDatetime"}, packBean);
}

@ -35,4 +35,12 @@ impp.yfas.datasource.password=estsh123
#impp.sweb.datasource.driver-class-name=com.mysql.jdbc.Driver
#impp.sweb.datasource.jdbc-url=jdbc:mysql://dbmaster:3306/impp_i3_wms?autoReconnect=true&useSSL=false&characterEncoding=utf-8
#impp.sweb.datasource.username=root
#impp.sweb.datasource.password=estsh123
#impp.sweb.datasource.password=estsh123
#Pisces数据源
impp.pisces.datasource.isopen=true
impp.pisces.datasource.alias=piscesDataSource
impp.pisces.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
impp.pisces.datasource.jdbc-url=jdbc:sqlserver://172.28.239.113;SelectMethod=cursor;DatabaseName=Pisces
impp.pisces.datasource.username=sa
impp.pisces.datasource.password=sahasnopassword

@ -49,4 +49,8 @@ public class MesCommonConstant {
//字体位置
public static final String FONDS_TEMP_PATH = File.separator+"usr" + File.separator+ "share" + File.separator+ "fonts" + File.separator+ "myfonts" + File.separator;
//返工单超过时不处理发邮件通知
public static final String OUT_TIME_REWORK_ORDER_SEND_URL = "OUT_TIME_REWORK_ORDER_SEND_URL";
public static final String OUT_TIME_REWORK_ORDER_MINUTES = "OUT_TIME_REWORK_ORDER_MINUTES";
}

@ -47,10 +47,6 @@ public class MesDeviceDataQueryReportResultModel {
@AnnoOutputColumn(name = "日志内容")
private String message;
@ApiParam(value = "错误类型")
@AnnoOutputColumn(name = "错误类型")
private String errorType;
@ApiParam(value = "设备编号")
@AnnoOutputColumn(name = "设备编号")
private String equipmentCode;
@ -77,7 +73,7 @@ public class MesDeviceDataQueryReportResultModel {
public MesDeviceDataQueryReportResultModel(String organizeCode, String workCenterCode, String workCellCode,
String workOrderNo, String serialNumber, Integer logType,
String message, String errorType, String equipmentCode,
String message, String equipmentCode,
String equipmentName, String createDatetime, String createUser,
String modifyDatetime, String modifyUser) {
this.organizeCode = organizeCode;
@ -87,7 +83,6 @@ public class MesDeviceDataQueryReportResultModel {
this.serialNumber = serialNumber;
this.logType = logType;
this.message = message;
this.errorType = errorType;
this.equipmentCode = equipmentCode;
this.equipmentName = equipmentName;
this.createDatetime = createDatetime;

Loading…
Cancel
Save