diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/WorkOrderExtController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/WorkOrderExtController.java index 5d3fce4..6b1bec3 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/WorkOrderExtController.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/WorkOrderExtController.java @@ -250,8 +250,11 @@ public class WorkOrderExtController extends MesBaseController { try { ValidatorBean.beginValid(model) .notNull(MesExtConstWords.ORGANIZE_CODE, model.getOrganizeCode()); + + SxWmsToMesWorkOrderModel sxWmsToMesWorkOrderModel = workOrderExtService.doHandleWmsWorkOrder(model); + return ResultBean.success("查询成功") - .setResultObject(workOrderExtService.doHandleWmsWorkOrder(model)) + .setResultObject(sxWmsToMesWorkOrderModel) .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/bu/BuFirstManageController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/bu/BuFirstManageController.java index 4d55983..a008a07 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/bu/BuFirstManageController.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/bu/BuFirstManageController.java @@ -107,7 +107,7 @@ public class BuFirstManageController { } @GetMapping(value = "/mes-first-order-detail/report-query") - @ApiOperation(value = "首检单明细数据查询报表", notes = "首检单明细数据查询报表") + @ApiOperation(value = "首检单(更改为Q管理)明细数据查询报表", notes = "首检单(更改为Q管理)明细数据查询报表") public ResultBean queryFirstOrderDetailReportByPager(MesFirstOrderDetail mesFirstOrderDetail, Pager pager) { try { mesFirstOrderDetail.setOrganizeCode(AuthUtil.getOrganize().getOrganizeCode()); diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/mq/SxMesSendEamilQueueRecevier.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/mq/SxMesSendEamilQueueRecevier.java index d8c005d..5988f33 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/mq/SxMesSendEamilQueueRecevier.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/mq/SxMesSendEamilQueueRecevier.java @@ -1,54 +1,54 @@ -package cn.estsh.i3plus.ext.mes.apiservice.mq; - -import cn.estsh.i3plus.ext.mes.apiservice.controller.base.EmailPushService; -import cn.estsh.i3plus.pojo.platform.bean.SysMessage; -import com.alibaba.fastjson.JSON; -import com.rabbitmq.client.Channel; -import io.swagger.annotations.ApiOperation; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.exception.ExceptionUtils; -import org.springframework.amqp.AmqpException; -import org.springframework.amqp.core.Message; -import org.springframework.amqp.rabbit.annotation.RabbitListener; -import org.springframework.amqp.rabbit.core.RabbitTemplate; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; -import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; - -/** - * @PROJECT_NAME: i3plus-mes-panasonic-dev - * @DESCRIPTION: - * @USER: xinwang.yi - * @DATE: 2023-07-14 14:03 - */ -@Slf4j -@Component -@ConditionalOnExpression("${impp.config.rabbitmq:true}") -public class SxMesSendEamilQueueRecevier { - - @Autowired - private RabbitTemplate rabbitTemplate; - - @Autowired - private EmailPushService emailPushService; - - @ApiOperation("邮件发送") - @Transactional(readOnly = false) - @RabbitListener(queues = "SX_MES_SEND_EMAIL", exclusive = true, concurrency = "1") - public void doSendEmail(String data, Channel channel, Message message) { - try { - SysMessage sysMessage = JSON.parseObject(data, SysMessage.class); - - rabbitTemplate.convertAndSend("QUEUE_IMPP_MESSAGE_MAIL", JSON.toJSONString(sysMessage)); - } catch (AmqpException e) { - log.error("邮件发送 执行异常:{} ", ExceptionUtils.getStackTrace(e)); - } finally { - try { - channel.basicAck(message.getMessageProperties().getDeliveryTag(), false); - } catch (Exception e) { - log.error("邮件发送 发送Ack回执异常:{} ", ExceptionUtils.getStackTrace(e)); - } - } - } -} +//package cn.estsh.i3plus.ext.mes.apiservice.mq; +// +//import cn.estsh.i3plus.ext.mes.apiservice.controller.base.EmailPushService; +//import cn.estsh.i3plus.pojo.platform.bean.SysMessage; +//import com.alibaba.fastjson.JSON; +//import com.rabbitmq.client.Channel; +//import io.swagger.annotations.ApiOperation; +//import lombok.extern.slf4j.Slf4j; +//import org.apache.commons.lang3.exception.ExceptionUtils; +//import org.springframework.amqp.AmqpException; +//import org.springframework.amqp.core.Message; +//import org.springframework.amqp.rabbit.annotation.RabbitListener; +//import org.springframework.amqp.rabbit.core.RabbitTemplate; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; +//import org.springframework.stereotype.Component; +//import org.springframework.transaction.annotation.Transactional; +// +///** +// * @PROJECT_NAME: i3plus-mes-panasonic-dev +// * @DESCRIPTION: +// * @USER: xinwang.yi +// * @DATE: 2023-07-14 14:03 +// */ +//@Slf4j +//@Component +//@ConditionalOnExpression("${impp.config.rabbitmq:true}") +//public class SxMesSendEamilQueueRecevier { +// +// @Autowired +// private RabbitTemplate rabbitTemplate; +// +// @Autowired +// private EmailPushService emailPushService; +// +// @ApiOperation("邮件发送") +// @Transactional(readOnly = false) +// @RabbitListener(queues = "SX_MES_SEND_EMAIL", exclusive = true, concurrency = "1") +// public void doSendEmail(String data, Channel channel, Message message) { +// try { +// SysMessage sysMessage = JSON.parseObject(data, SysMessage.class); +// +// rabbitTemplate.convertAndSend("QUEUE_IMPP_MESSAGE_MAIL", JSON.toJSONString(sysMessage)); +// } catch (AmqpException e) { +// log.error("邮件发送 执行异常:{} ", ExceptionUtils.getStackTrace(e)); +// } finally { +// try { +// channel.basicAck(message.getMessageProperties().getDeliveryTag(), false); +// } catch (Exception e) { +// log.error("邮件发送 发送Ack回执异常:{} ", ExceptionUtils.getStackTrace(e)); +// } +// } +// } +//} diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/WorkOrderExtService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/WorkOrderExtService.java index a20c19c..944f36a 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/WorkOrderExtService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/WorkOrderExtService.java @@ -50,7 +50,6 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.TypeReference; import lombok.extern.slf4j.Slf4j; -import org.python.modules.itertools.count; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -1547,7 +1546,7 @@ public class WorkOrderExtService implements IWorkOrderExtService { List newWorkOrderList = new ArrayList<>(); List newWmsWorkOrderList = new ArrayList<>(); for (SxWmsToMesWorkOrderModel workOrderModel : workOrderList) { - log.info("工单信息:{}", workOrderModel); + log.info("工单信息:{} --- orderNo:{} --- erpWarehouse:{}", workOrderModel, workOrderModel.getOrderNo(), workOrderModel.getErpWarehouse()); if (null == workOrderModel) { continue; } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/bu/BuFirstManageService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/bu/BuFirstManageService.java index 4d31a76..c673cb8 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/bu/BuFirstManageService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/bu/BuFirstManageService.java @@ -53,28 +53,17 @@ public class BuFirstManageService implements IBuFirstManageService { HqlPack.getStringEqualPack(mesProcessFirstItem.getProcessCode(), MesExtConstWords.PROCESS_CODE, whereStr); HqlPack.getStringEqualPack(mesProcessFirstItem.getPartNo(), MesExtConstWords.PART_NO, whereStr); HqlPack.getStringEqualPack(mesProcessFirstItem.getCheckMessage(), MesExtConstWords.CHECK_MESSAGE, whereStr); - if(!mesProcessFirstItem.getOrganizeCode().equals(MesExtConstWords.SX_ORGANIZE_CODE)){ - HqlPack.getStringEqualPack(mesProcessFirstItem.getCheckStand(), MesExtConstWords.CHECK_STAND, whereStr); - } + HqlPack.getStringEqualPack(mesProcessFirstItem.getCheckStand(), MesExtConstWords.CHECK_STAND, whereStr); + HqlPack.getNumEqualPack(mesProcessFirstItem.getManageType(), MesExtConstWords.MANAGE_TYPE, whereStr); HqlPack.getNumEqualPack(CommonEnumUtil.IS_VAILD.VAILD.getValue(), MesExtConstWords.IS_VALID, whereStr); if (mesProcessFirstItemRDao.isExitByHqlWhere(whereStr.toString())) { - if(!mesProcessFirstItem.getOrganizeCode().equals(MesExtConstWords.SX_ORGANIZE_CODE)){ - throw ImppExceptionBuilder.newInstance() - .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) - .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_EXIT.getCode()) - .setErrorDetail("工序编号【%s】、物料编码【%s】和检测信息【%s】和检测标准【%s】在工序首检项目信息中已存在" - ,mesProcessFirstItem.getProcessCode(), mesProcessFirstItem.getPartNo(), mesProcessFirstItem.getCheckMessage(), mesProcessFirstItem.getCheckStand()) - .setErrorSolution("请更换新增参数") - .build(); - }else{ - throw ImppExceptionBuilder.newInstance() - .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) - .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_EXIT.getCode()) - .setErrorDetail("工序编号【%s】、物料编码【%s】和检测信息【%s】和检测标准【%s】在工序首检项目信息中已存在" - ,mesProcessFirstItem.getProcessCode(), mesProcessFirstItem.getPartNo(), mesProcessFirstItem.getCheckMessage(), mesProcessFirstItem.getCheckStand()) - .setErrorSolution("请更换新增参数") - .build(); - } + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_EXIT.getCode()) + .setErrorDetail("工序编号【%s】、物料编码【%s】和检测信息【%s】和检测标准【%s】和管理类型【%s】在工序首检项目信息中已存在" + ,mesProcessFirstItem.getProcessCode(), mesProcessFirstItem.getPartNo(), mesProcessFirstItem.getCheckMessage(), mesProcessFirstItem.getCheckStand(), MesExtEnumUtil.Q_MANAGE_MANAGE_TYPE.valueOfDescription(mesProcessFirstItem.getManageType())) + .setErrorSolution("请更换新增参数") + .build(); } //上下限值校验 @@ -150,6 +139,7 @@ public class BuFirstManageService implements IBuFirstManageService { DdlPreparedPack.getStringEqualPack(mesProcessFirstItem.getPartNo(), MesExtConstWords.PART_NO, packBean); DdlPreparedPack.getStringEqualPack(mesProcessFirstItem.getCheckMessage(), MesExtConstWords.CHECK_MESSAGE, packBean); DdlPreparedPack.getStringEqualPack(mesProcessFirstItem.getCheckStand(), MesExtConstWords.CHECK_STAND, packBean); + DdlPreparedPack.getNumEqualPack(mesProcessFirstItem.getManageType(), MesExtConstWords.MANAGE_TYPE, packBean); MesProcessFirstItem processFirstItemExist = mesProcessFirstItemRDao.getByProperty(packBean); if (processFirstItemExist != null && processFirstItemExist.getId().compareTo(processFirstItemDb.getId()) != 0) { diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/QManageOrderService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/QManageOrderService.java index 04f5676..b55d282 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/QManageOrderService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/QManageOrderService.java @@ -1,273 +1,273 @@ -package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.busi; - -import cn.estsh.i3plus.ext.mes.api.busi.IWorkOrderStartService; -import cn.estsh.i3plus.ext.mes.pojo.bean.*; -import cn.estsh.i3plus.ext.mes.pojo.repository.*; -import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords; -import cn.estsh.i3plus.ext.mes.pojo.util.MesExtEnumUtil; -import cn.estsh.i3plus.mes.api.iservice.busi.ISyncFuncService; -import cn.estsh.i3plus.mes.apiservice.util.MesCommonUtil; -import cn.estsh.i3plus.platform.common.convert.ConvertBean; -import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; -import cn.estsh.i3plus.platform.common.tool.TimeTool; -import cn.estsh.i3plus.pojo.base.bean.BaseResultBean; -import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; -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.MesProcess; -import cn.estsh.i3plus.pojo.mes.bean.MesWorkCell; -import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel; -import cn.estsh.i3plus.pojo.mes.repository.MesProcessRepository; -import cn.estsh.i3plus.pojo.mes.repository.MesWorkCellRepository; -import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; -import cn.estsh.impp.framework.boot.util.ResultBean; -import org.springframework.beans.BeanUtils; -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.stream.Collectors; - -/** - * @author wangjie - * @version 1.0 - * @date 2021/1/13 9:28 - **/ -@Service("qManageOrderService") -public class QManageOrderService implements IWorkOrderStartService { - - @Autowired - private MesWorkCenterExtRepository mesWorkCenterExtRDao; - - @Autowired - private MesOrderRuleRepository mesOrderRuleRDao; - - @Autowired - private MesProcessCellRepository mesProcessCellRDao; - - @Autowired - private MesProcessQManageRepository mesProcessQManageRDao; - - @Autowired - private MesOrderJobRepository mesOrderJobRDao; - - @Autowired - private MesQManageTaskDetailRepository mesQManageTaskDetailRDao; - - @Autowired - private ISyncFuncService syncFuncService; - - @Autowired - private MesProcessRepository mesProcessRDao; - - @Autowired - private MesWorkCellRepository mesWorkCellRDao; - - @Override - public ResultBean execute(MesWorkOrderExt mesWorkOrderExt) { - List mesProcessQManages = new ArrayList<>(); - MesOrderRule mesOrderRule = null; - //根据产线获取产线信息 - MesWorkCenterExt mesWorkCenterExt = mesWorkCenterExtRDao.getByProperty( - new String[]{MesExtConstWords.ORGANIZE_CODE, MesExtConstWords.IS_VALID, MesExtConstWords.IS_DELETED,"workCenterCode"}, - new Object[]{mesWorkOrderExt.getOrganizeCode(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), - CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),mesWorkOrderExt.getWorkCenterCode()}); - - //产线代码、班次代码、单据类型【Q管理】创建规则【工单产生】查询单据作业信息 - mesOrderRule = mesOrderRuleRDao.getByProperty( - new String[]{MesExtConstWords.ORGANIZE_CODE, MesExtConstWords.IS_VALID, MesExtConstWords.IS_DELETED, - "orderType","createRule","workCenterCode","shiftCode"}, - new Object[]{mesWorkOrderExt.getOrganizeCode(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), - CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),MesExtEnumUtil.MES_OR_ORDER_TYPE.Q_MANAGE.getValue(), - MesExtEnumUtil.MES_OR_CREATE_RULE.WORK_ORDER_CREATE.getValue(),mesWorkOrderExt.getWorkCenterCode(),mesWorkCenterExt.getShiftCode()}); - - if(mesOrderRule == null){ - mesOrderRule = mesOrderRuleRDao.getByProperty( - new String[]{MesExtConstWords.ORGANIZE_CODE, MesExtConstWords.IS_VALID, MesExtConstWords.IS_DELETED, - "orderType","createRule","workCenterCode"}, - new Object[]{mesWorkOrderExt.getOrganizeCode(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), - CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),MesExtEnumUtil.MES_OR_ORDER_TYPE.Q_MANAGE.getValue(), - MesExtEnumUtil.MES_OR_CREATE_RULE.WORK_ORDER_CREATE.getValue(),mesWorkOrderExt.getWorkCenterCode()}); - - if(mesOrderRule == null){ - throw ImppExceptionBuilder.newInstance() - .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) - .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) - .setErrorDetail("Q管理的单据规则信息不存在,请检查") - .build(); - } - } - - //根据产线获取产线工序工位信息数据 - List mesProcessCellList = mesProcessCellRDao.findByProperty( - new String[]{MesExtConstWords.ORGANIZE_CODE, MesExtConstWords.IS_VALID, MesExtConstWords.IS_DELETED,"workCenterCode"}, - new Object[]{mesWorkOrderExt.getOrganizeCode(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), - CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),mesWorkOrderExt.getWorkCenterCode()}); - - if(CollectionUtils.isEmpty(mesProcessCellList)){ - throw ImppExceptionBuilder.newInstance() - .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) - .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) - .setErrorDetail("当前产线【%s】在产线工序工位信息中不存在数据",mesWorkOrderExt.getWorkCenterCode()) - .build(); - } - - //根据工序代码分组 - Map> processCellmMap = mesProcessCellList.stream().collect(Collectors.groupingBy(MesProcessCell::getProcessCode)); - //获取工序代码集合 - List processCodeList = mesProcessCellList.stream().map(MesProcessCell::getProcessCode).collect(Collectors.toList()); - - //根据工序代码集合和零件号为空查询工序Q管理项目信息 - DdlPackBean packBean = findMesProcessQManage(mesWorkOrderExt.getOrganizeCode(), null, processCodeList); - List processQManageListByMotPartNo = mesProcessQManageRDao.findByHqlWhere(packBean); - if(!CollectionUtils.isEmpty(processQManageListByMotPartNo)){ - mesProcessQManages.addAll(processQManageListByMotPartNo); - } - - //根据工序代码集合和零件号查询工序Q管理项目信息 - packBean = findMesProcessQManage(mesWorkOrderExt.getOrganizeCode(), mesWorkOrderExt.getPartNo(), processCodeList); - List processQManageList = mesProcessQManageRDao.findByHqlWhere(packBean); - if(!CollectionUtils.isEmpty(processQManageList)){ - mesProcessQManages.addAll(processQManageList); - } - - if(CollectionUtils.isEmpty(mesProcessQManages)){ - throw ImppExceptionBuilder.newInstance() - .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) - .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) - .setErrorDetail("根据规则无法查询到工序Q管理项目数据,请检查") - .build(); - } - - //根据单据类型【Q管理】、产线代码和产线信息中的班次代码、生产日期获取Q管理单信息 - packBean = DdlPackBean.getDdlPackBean(mesWorkOrderExt.getOrganizeCode()); - DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.MES_OR_ORDER_TYPE.Q_MANAGE.getValue(), "orderType", packBean); - DdlPreparedPack.getStringEqualPack(mesWorkOrderExt.getWorkCenterCode(), "workCenterCode", packBean); - DdlPreparedPack.getStringEqualPack(mesWorkCenterExt.getShiftCode(), "shiftCode", packBean); - DdlPreparedPack.getStringEqualPack(mesWorkCenterExt.getWorkTime(), "workTime", packBean); - - MesOrderJob mesOrderJob = mesOrderJobRDao.getByProperty(packBean); - - if(mesOrderJob == null){ - String orderNo = insertMesOrderJob(mesWorkOrderExt, mesWorkCenterExt, mesOrderRule.getTaskType()); - insertMesQManageTaskDetail(mesProcessQManages,processCellmMap,mesWorkOrderExt.getCreateUser(),orderNo); - }else { - //根据作业单号查询明细数据 - packBean = DdlPackBean.getDdlPackBean(mesWorkOrderExt.getOrganizeCode()); - DdlPreparedPack.getStringEqualPack(mesOrderJob.getOrderNo(), "orderNo", packBean); - - List mesQManageTaskDetails = mesQManageTaskDetailRDao.findByHqlWhere(packBean); - if(mesQManageTaskDetails.size() >= mesProcessQManages.size()) { - return ResultBean.success("添加成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); - } - - //获取两个存在差异的数据 - Map> processQManageMap = mesProcessQManages.stream().collect(Collectors.groupingBy(q-> q.getProcessCode() +"&"+ q.getManageProjects())); - Map> qManageTaskDetailsMap = mesQManageTaskDetails.stream().collect(Collectors.groupingBy(q-> q.getProcessCode() +"&"+ q.getManageProjects())); - - for(String key : qManageTaskDetailsMap.keySet()){ - if(processQManageMap.containsKey(key)){ - processQManageMap.remove(key); - } - } - - mesProcessQManages = new ArrayList<>(); - for(String key : processQManageMap.keySet()){ - mesProcessQManages.addAll(processQManageMap.get(key)); - } - - String orderNo = insertMesOrderJob(mesWorkOrderExt, mesWorkCenterExt, mesOrderRule.getTaskType()); - insertMesQManageTaskDetail(mesProcessQManages,processCellmMap,mesWorkOrderExt.getCreateUser(),orderNo); - } - - return ResultBean.success("添加成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); - } - - - private String insertMesOrderJob(MesWorkOrderExt mesWorkOrderExt,MesWorkCenterExt mesWorkCenterExt,Integer taskType){ - // 调用平台生成条码的方法 - List orderNoList = getOrderNoByRuleCode(1, - MesExtConstWords.ORDER_NO_RULE, new GenSerialNoModel(), mesWorkOrderExt.getCreateUser(), mesWorkOrderExt.getOrganizeCode()); - - MesOrderJob mesOrderJob = new MesOrderJob(); - mesOrderJob.setOrganizeCode(mesWorkOrderExt.getOrganizeCode()); - mesOrderJob.setOrderType(MesExtEnumUtil.MES_OR_ORDER_TYPE.Q_MANAGE.getValue()); - mesOrderJob.setTaskType(taskType); - mesOrderJob.setOrderNo(orderNoList.get(0)); - mesOrderJob.setWorkCenterCode(mesWorkOrderExt.getWorkCenterCode()); - mesOrderJob.setShiftCode(mesWorkCenterExt.getShiftCode()); - mesOrderJob.setWorkOrderNo(mesWorkOrderExt.getOrderNo()); - mesOrderJob.setOrderStatus(MesExtEnumUtil.MES_ORJ_ORDER_STATUS.CREATE.getValue()); - mesOrderJob.setWorkTime(mesWorkCenterExt.getWorkTime()); - mesOrderJob.setOrderDate(TimeTool.getToday()); - - ConvertBean.serviceModelInitialize(mesOrderJob, mesWorkOrderExt.getCreateUser()); - mesOrderJobRDao.insert(mesOrderJob); - - return orderNoList.get(0); - - } - - private void insertMesQManageTaskDetail(List mesProcessQManages, Map> processCellmMap, String userName,String orderNo){ - // 查询工序表 - Map processCodeEntityMap = new HashMap<>(); - try { - processCodeEntityMap = MesCommonUtil.getCodeEntityMap(mesProcessRDao, MesExtConstWords.PROCESS_CODE, mesProcessQManages.get(0).getOrganizeCode(), "工序表"); - } catch (Exception e) { - } - - // 查询工位表 - Map workCellCodeEntityMap = new HashMap<>(); - try { - workCellCodeEntityMap = MesCommonUtil.getCodeEntityMap(mesWorkCellRDao, MesExtConstWords.WORK_CELL_CODE, mesProcessQManages.get(0).getOrganizeCode(), "工位表"); - } catch (Exception e) { - } - - - MesQManageTaskDetail mesQManageTaskDetail ; - for(MesProcessQManage processQManage : mesProcessQManages){ - mesQManageTaskDetail = new MesQManageTaskDetail(); - BeanUtils.copyProperties(processQManage, mesQManageTaskDetail, "id"); - mesQManageTaskDetail.setOrderNo(orderNo); - mesQManageTaskDetail.setWorkCellCode(processCellmMap.get(processQManage.getProcessCode()).get(0).getWorkCellCode()); - if(!CollectionUtils.isEmpty(processCodeEntityMap) && processCodeEntityMap.containsKey(mesQManageTaskDetail.getProcessCode())){ - mesQManageTaskDetail.setProcessName(((MesProcess)processCodeEntityMap.get(mesQManageTaskDetail.getProcessCode())).getProcessName()); - } - if(!CollectionUtils.isEmpty(workCellCodeEntityMap) && workCellCodeEntityMap.containsKey(mesQManageTaskDetail.getWorkCellCode())){ - mesQManageTaskDetail.setWorkCellName(((MesWorkCell)workCellCodeEntityMap.get(mesQManageTaskDetail.getWorkCellCode())).getWorkCellName()); - } - - ConvertBean.serviceModelInitialize(mesQManageTaskDetail, userName); - mesQManageTaskDetailRDao.insert(mesQManageTaskDetail); - } - } - - public List getOrderNoByRuleCode(int number, String ruleCode, GenSerialNoModel genSerialNoModel, String userName, String org) { - genSerialNoModel.setRuleCode(ruleCode); - BaseResultBean serialNumberBean = syncFuncService.syncSerialNo(genSerialNoModel, userName, org, Integer.valueOf(number)); - if (serialNumberBean != null && serialNumberBean.isSuccess()) { - return serialNumberBean.getResultList(); - } else { - throw ImppExceptionBuilder.newInstance() - .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) - .setErrorCode(ImppExceptionEnum.BUSINESS_EXCEPTION.getCode()) - .setErrorDetail(serialNumberBean == null ? "条码未生成成功" : serialNumberBean.getErrorMsg()) - .build(); - } - } - - - - private static DdlPackBean findMesProcessQManage(String organizeCode, String partNo, List processCodeList) { - DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); - if(StringUtils.isEmpty(partNo)){ - DdlPreparedPack.getStringNullPack("partNo", packBean); - } - DdlPreparedPack.getStringEqualPack(partNo, "partNo", packBean); - DdlPreparedPack.getInPackList(processCodeList, "processCode", packBean); - return packBean; - } -} +//package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.busi; +// +//import cn.estsh.i3plus.ext.mes.api.busi.IWorkOrderStartService; +//import cn.estsh.i3plus.ext.mes.pojo.bean.*; +//import cn.estsh.i3plus.ext.mes.pojo.repository.*; +//import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords; +//import cn.estsh.i3plus.ext.mes.pojo.util.MesExtEnumUtil; +//import cn.estsh.i3plus.mes.api.iservice.busi.ISyncFuncService; +//import cn.estsh.i3plus.mes.apiservice.util.MesCommonUtil; +//import cn.estsh.i3plus.platform.common.convert.ConvertBean; +//import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; +//import cn.estsh.i3plus.platform.common.tool.TimeTool; +//import cn.estsh.i3plus.pojo.base.bean.BaseResultBean; +//import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; +//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.MesProcess; +//import cn.estsh.i3plus.pojo.mes.bean.MesWorkCell; +//import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel; +//import cn.estsh.i3plus.pojo.mes.repository.MesProcessRepository; +//import cn.estsh.i3plus.pojo.mes.repository.MesWorkCellRepository; +//import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; +//import cn.estsh.impp.framework.boot.util.ResultBean; +//import org.springframework.beans.BeanUtils; +//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.stream.Collectors; +// +///** +// * @author wangjie +// * @version 1.0 +// * @date 2021/1/13 9:28 +// **/ +//@Service("qManageOrderService") +//public class QManageOrderService implements IWorkOrderStartService { +// +// @Autowired +// private MesWorkCenterExtRepository mesWorkCenterExtRDao; +// +// @Autowired +// private MesOrderRuleRepository mesOrderRuleRDao; +// +// @Autowired +// private MesProcessCellRepository mesProcessCellRDao; +// +// @Autowired +// private MesProcessQManageRepository mesProcessQManageRDao; +// +// @Autowired +// private MesOrderJobRepository mesOrderJobRDao; +// +// @Autowired +// private MesQManageTaskDetailRepository mesQManageTaskDetailRDao; +// +// @Autowired +// private ISyncFuncService syncFuncService; +// +// @Autowired +// private MesProcessRepository mesProcessRDao; +// +// @Autowired +// private MesWorkCellRepository mesWorkCellRDao; +// +// @Override +// public ResultBean execute(MesWorkOrderExt mesWorkOrderExt) { +// List mesProcessQManages = new ArrayList<>(); +// MesOrderRule mesOrderRule = null; +// //根据产线获取产线信息 +// MesWorkCenterExt mesWorkCenterExt = mesWorkCenterExtRDao.getByProperty( +// new String[]{MesExtConstWords.ORGANIZE_CODE, MesExtConstWords.IS_VALID, MesExtConstWords.IS_DELETED,"workCenterCode"}, +// new Object[]{mesWorkOrderExt.getOrganizeCode(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), +// CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),mesWorkOrderExt.getWorkCenterCode()}); +// +// //产线代码、班次代码、单据类型【Q管理】创建规则【工单产生】查询单据作业信息 +// mesOrderRule = mesOrderRuleRDao.getByProperty( +// new String[]{MesExtConstWords.ORGANIZE_CODE, MesExtConstWords.IS_VALID, MesExtConstWords.IS_DELETED, +// "orderType","createRule","workCenterCode","shiftCode"}, +// new Object[]{mesWorkOrderExt.getOrganizeCode(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), +// CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),MesExtEnumUtil.MES_OR_ORDER_TYPE.Q_MANAGE.getValue(), +// MesExtEnumUtil.MES_OR_CREATE_RULE.WORK_ORDER_CREATE.getValue(),mesWorkOrderExt.getWorkCenterCode(),mesWorkCenterExt.getShiftCode()}); +// +// if(mesOrderRule == null){ +// mesOrderRule = mesOrderRuleRDao.getByProperty( +// new String[]{MesExtConstWords.ORGANIZE_CODE, MesExtConstWords.IS_VALID, MesExtConstWords.IS_DELETED, +// "orderType","createRule","workCenterCode"}, +// new Object[]{mesWorkOrderExt.getOrganizeCode(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), +// CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),MesExtEnumUtil.MES_OR_ORDER_TYPE.Q_MANAGE.getValue(), +// MesExtEnumUtil.MES_OR_CREATE_RULE.WORK_ORDER_CREATE.getValue(),mesWorkOrderExt.getWorkCenterCode()}); +// +// if(mesOrderRule == null){ +// throw ImppExceptionBuilder.newInstance() +// .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) +// .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) +// .setErrorDetail("Q管理的单据规则信息不存在,请检查") +// .build(); +// } +// } +// +// //根据产线获取产线工序工位信息数据 +// List mesProcessCellList = mesProcessCellRDao.findByProperty( +// new String[]{MesExtConstWords.ORGANIZE_CODE, MesExtConstWords.IS_VALID, MesExtConstWords.IS_DELETED,"workCenterCode"}, +// new Object[]{mesWorkOrderExt.getOrganizeCode(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), +// CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),mesWorkOrderExt.getWorkCenterCode()}); +// +// if(CollectionUtils.isEmpty(mesProcessCellList)){ +// throw ImppExceptionBuilder.newInstance() +// .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) +// .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) +// .setErrorDetail("当前产线【%s】在产线工序工位信息中不存在数据",mesWorkOrderExt.getWorkCenterCode()) +// .build(); +// } +// +// //根据工序代码分组 +// Map> processCellmMap = mesProcessCellList.stream().collect(Collectors.groupingBy(MesProcessCell::getProcessCode)); +// //获取工序代码集合 +// List processCodeList = mesProcessCellList.stream().map(MesProcessCell::getProcessCode).collect(Collectors.toList()); +// +// //根据工序代码集合和零件号为空查询工序Q管理项目信息 +// DdlPackBean packBean = findMesProcessQManage(mesWorkOrderExt.getOrganizeCode(), null, processCodeList); +// List processQManageListByMotPartNo = mesProcessQManageRDao.findByHqlWhere(packBean); +// if(!CollectionUtils.isEmpty(processQManageListByMotPartNo)){ +// mesProcessQManages.addAll(processQManageListByMotPartNo); +// } +// +// //根据工序代码集合和零件号查询工序Q管理项目信息 +// packBean = findMesProcessQManage(mesWorkOrderExt.getOrganizeCode(), mesWorkOrderExt.getPartNo(), processCodeList); +// List processQManageList = mesProcessQManageRDao.findByHqlWhere(packBean); +// if(!CollectionUtils.isEmpty(processQManageList)){ +// mesProcessQManages.addAll(processQManageList); +// } +// +// if(CollectionUtils.isEmpty(mesProcessQManages)){ +// throw ImppExceptionBuilder.newInstance() +// .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) +// .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) +// .setErrorDetail("根据规则无法查询到工序Q管理项目数据,请检查") +// .build(); +// } +// +// //根据单据类型【Q管理】、产线代码和产线信息中的班次代码、生产日期获取Q管理单信息 +// packBean = DdlPackBean.getDdlPackBean(mesWorkOrderExt.getOrganizeCode()); +// DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.MES_OR_ORDER_TYPE.Q_MANAGE.getValue(), "orderType", packBean); +// DdlPreparedPack.getStringEqualPack(mesWorkOrderExt.getWorkCenterCode(), "workCenterCode", packBean); +// DdlPreparedPack.getStringEqualPack(mesWorkCenterExt.getShiftCode(), "shiftCode", packBean); +// DdlPreparedPack.getStringEqualPack(mesWorkCenterExt.getWorkTime(), "workTime", packBean); +// +// MesOrderJob mesOrderJob = mesOrderJobRDao.getByProperty(packBean); +// +// if(mesOrderJob == null){ +// String orderNo = insertMesOrderJob(mesWorkOrderExt, mesWorkCenterExt, mesOrderRule.getTaskType()); +// insertMesQManageTaskDetail(mesProcessQManages,processCellmMap,mesWorkOrderExt.getCreateUser(),orderNo); +// }else { +// //根据作业单号查询明细数据 +// packBean = DdlPackBean.getDdlPackBean(mesWorkOrderExt.getOrganizeCode()); +// DdlPreparedPack.getStringEqualPack(mesOrderJob.getOrderNo(), "orderNo", packBean); +// +// List mesQManageTaskDetails = mesQManageTaskDetailRDao.findByHqlWhere(packBean); +// if(mesQManageTaskDetails.size() >= mesProcessQManages.size()) { +// return ResultBean.success("添加成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); +// } +// +// //获取两个存在差异的数据 +// Map> processQManageMap = mesProcessQManages.stream().collect(Collectors.groupingBy(q-> q.getProcessCode() +"&"+ q.getManageProjects())); +// Map> qManageTaskDetailsMap = mesQManageTaskDetails.stream().collect(Collectors.groupingBy(q-> q.getProcessCode() +"&"+ q.getManageProjects())); +// +// for(String key : qManageTaskDetailsMap.keySet()){ +// if(processQManageMap.containsKey(key)){ +// processQManageMap.remove(key); +// } +// } +// +// mesProcessQManages = new ArrayList<>(); +// for(String key : processQManageMap.keySet()){ +// mesProcessQManages.addAll(processQManageMap.get(key)); +// } +// +// String orderNo = insertMesOrderJob(mesWorkOrderExt, mesWorkCenterExt, mesOrderRule.getTaskType()); +// insertMesQManageTaskDetail(mesProcessQManages,processCellmMap,mesWorkOrderExt.getCreateUser(),orderNo); +// } +// +// return ResultBean.success("添加成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); +// } +// +// +// private String insertMesOrderJob(MesWorkOrderExt mesWorkOrderExt,MesWorkCenterExt mesWorkCenterExt,Integer taskType){ +// // 调用平台生成条码的方法 +// List orderNoList = getOrderNoByRuleCode(1, +// MesExtConstWords.ORDER_NO_RULE, new GenSerialNoModel(), mesWorkOrderExt.getCreateUser(), mesWorkOrderExt.getOrganizeCode()); +// +// MesOrderJob mesOrderJob = new MesOrderJob(); +// mesOrderJob.setOrganizeCode(mesWorkOrderExt.getOrganizeCode()); +// mesOrderJob.setOrderType(MesExtEnumUtil.MES_OR_ORDER_TYPE.Q_MANAGE.getValue()); +// mesOrderJob.setTaskType(taskType); +// mesOrderJob.setOrderNo(orderNoList.get(0)); +// mesOrderJob.setWorkCenterCode(mesWorkOrderExt.getWorkCenterCode()); +// mesOrderJob.setShiftCode(mesWorkCenterExt.getShiftCode()); +// mesOrderJob.setWorkOrderNo(mesWorkOrderExt.getOrderNo()); +// mesOrderJob.setOrderStatus(MesExtEnumUtil.MES_ORJ_ORDER_STATUS.CREATE.getValue()); +// mesOrderJob.setWorkTime(mesWorkCenterExt.getWorkTime()); +// mesOrderJob.setOrderDate(TimeTool.getToday()); +// +// ConvertBean.serviceModelInitialize(mesOrderJob, mesWorkOrderExt.getCreateUser()); +// mesOrderJobRDao.insert(mesOrderJob); +// +// return orderNoList.get(0); +// +// } +// +// private void insertMesQManageTaskDetail(List mesProcessQManages, Map> processCellmMap, String userName,String orderNo){ +// // 查询工序表 +// Map processCodeEntityMap = new HashMap<>(); +// try { +// processCodeEntityMap = MesCommonUtil.getCodeEntityMap(mesProcessRDao, MesExtConstWords.PROCESS_CODE, mesProcessQManages.get(0).getOrganizeCode(), "工序表"); +// } catch (Exception e) { +// } +// +// // 查询工位表 +// Map workCellCodeEntityMap = new HashMap<>(); +// try { +// workCellCodeEntityMap = MesCommonUtil.getCodeEntityMap(mesWorkCellRDao, MesExtConstWords.WORK_CELL_CODE, mesProcessQManages.get(0).getOrganizeCode(), "工位表"); +// } catch (Exception e) { +// } +// +// +// MesQManageTaskDetail mesQManageTaskDetail ; +// for(MesProcessQManage processQManage : mesProcessQManages){ +// mesQManageTaskDetail = new MesQManageTaskDetail(); +// BeanUtils.copyProperties(processQManage, mesQManageTaskDetail, "id"); +// mesQManageTaskDetail.setOrderNo(orderNo); +// mesQManageTaskDetail.setWorkCellCode(processCellmMap.get(processQManage.getProcessCode()).get(0).getWorkCellCode()); +// if(!CollectionUtils.isEmpty(processCodeEntityMap) && processCodeEntityMap.containsKey(mesQManageTaskDetail.getProcessCode())){ +// mesQManageTaskDetail.setProcessName(((MesProcess)processCodeEntityMap.get(mesQManageTaskDetail.getProcessCode())).getProcessName()); +// } +// if(!CollectionUtils.isEmpty(workCellCodeEntityMap) && workCellCodeEntityMap.containsKey(mesQManageTaskDetail.getWorkCellCode())){ +// mesQManageTaskDetail.setWorkCellName(((MesWorkCell)workCellCodeEntityMap.get(mesQManageTaskDetail.getWorkCellCode())).getWorkCellName()); +// } +// +// ConvertBean.serviceModelInitialize(mesQManageTaskDetail, userName); +// mesQManageTaskDetailRDao.insert(mesQManageTaskDetail); +// } +// } +// +// public List getOrderNoByRuleCode(int number, String ruleCode, GenSerialNoModel genSerialNoModel, String userName, String org) { +// genSerialNoModel.setRuleCode(ruleCode); +// BaseResultBean serialNumberBean = syncFuncService.syncSerialNo(genSerialNoModel, userName, org, Integer.valueOf(number)); +// if (serialNumberBean != null && serialNumberBean.isSuccess()) { +// return serialNumberBean.getResultList(); +// } else { +// throw ImppExceptionBuilder.newInstance() +// .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) +// .setErrorCode(ImppExceptionEnum.BUSINESS_EXCEPTION.getCode()) +// .setErrorDetail(serialNumberBean == null ? "条码未生成成功" : serialNumberBean.getErrorMsg()) +// .build(); +// } +// } +// +// +// +// private static DdlPackBean findMesProcessQManage(String organizeCode, String partNo, List processCodeList) { +// DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); +// if(StringUtils.isEmpty(partNo)){ +// DdlPreparedPack.getStringNullPack("partNo", packBean); +// } +// DdlPreparedPack.getStringEqualPack(partNo, "partNo", packBean); +// DdlPreparedPack.getInPackList(processCodeList, "processCode", packBean); +// return packBean; +// } +//} diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/excel/ProcessFirstItemExtExcelService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/excel/ProcessFirstItemExtExcelService.java index 053c3ee..f59b479 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/excel/ProcessFirstItemExtExcelService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/excel/ProcessFirstItemExtExcelService.java @@ -23,10 +23,7 @@ import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -94,7 +91,6 @@ public class ProcessFirstItemExtExcelService implements IExcelImportExtService { //用于EXCEL表中的 零件编号+工序编号+检测信息 唯一校验 key:partNo&processCode&checkMessage,value:row Map processFirstItemByOnlyMap = new HashMap<>(); - // 查询物料表 Map partNoEntityMap; try { @@ -115,13 +111,10 @@ public class ProcessFirstItemExtExcelService implements IExcelImportExtService { List processFirstItems = processFirstItemRepository.findByProperty( new String[]{MesExtConstWords.ORGANIZE_CODE, MesExtConstWords.IS_DELETED}, new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()}); - Map> processFirstItemMap = CollectionUtils.isEmpty(processFirstItems) ? null : - processFirstItems.stream().filter(o -> null != o) - .collect(Collectors.groupingBy(o -> o.getPartNo() + "&" + o.getProcessCode() + "&" + o.getCheckMessage())); - Map> epProcessFirstItemMap = CollectionUtils.isEmpty(processFirstItems) ? null : + Map> processFirstItemMap = CollectionUtils.isEmpty(processFirstItems) ? null : processFirstItems.stream().filter(o -> null != o) - .collect(Collectors.groupingBy(o -> o.getPartNo() + "&" + o.getProcessCode() + "&" + o.getCheckMessage() + "&" + o.getCheckStand())); + .collect(Collectors.groupingBy(o -> new StringJoiner(MesExtConstWords.AND).add(o.getPartNo()).add(o.getProcessCode()).add(o.getCheckMessage()).add(o.getCheckStand()).add(o.getManageType()).toString())); //从excel表的第5行数据开始导入,getFirstRowNum是从0行开始读取 for (int i = (sheetAt.getFirstRowNum() + 4); i < totalNumberOfRows; i++) { @@ -157,27 +150,67 @@ public class ProcessFirstItemExtExcelService implements IExcelImportExtService { } catch (Exception e) { } + //管理类型 + String manageType = null; + try { + row.getCell(2).setCellType(CellType.STRING); + partNo = row.getCell(2, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim(); + } catch (Exception e) { + } + + //重要安全部品编码 + String importanceSafePartNo = null; + try { + row.getCell(3).setCellType(CellType.STRING); + partNo = row.getCell(3, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim(); + } catch (Exception e) { + } + //检测信息 String checkMessage = null; try { - row.getCell(2).setCellType(CellType.STRING); - checkMessage = row.getCell(2, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim(); + row.getCell(4).setCellType(CellType.STRING); + checkMessage = row.getCell(4, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim(); + } catch (Exception e) { + } + + //检查频度 + String checkFrequency = null; + try { + row.getCell(5).setCellType(CellType.STRING); + partNo = row.getCell(5, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim(); + } catch (Exception e) { + } + + //样品数量 + String sampleQty = null; + try { + row.getCell(6).setCellType(CellType.STRING); + partNo = row.getCell(6, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim(); + } catch (Exception e) { + } + + //确认方法 + String confirmMethod = null; + try { + row.getCell(7).setCellType(CellType.STRING); + partNo = row.getCell(7, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim(); } catch (Exception e) { } //检测标准 String checkStand = null; try { - row.getCell(3).setCellType(CellType.STRING); - checkStand = row.getCell(3, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim(); + row.getCell(4).setCellType(CellType.STRING); + checkStand = row.getCell(4, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim(); } catch (Exception e) { } //上限值 String upLimits = null; try { - row.getCell(4).setCellType(CellType.STRING); - upLimits = row.getCell(4, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim(); + row.getCell(5).setCellType(CellType.STRING); + upLimits = row.getCell(5, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim(); } catch (Exception e) { } @@ -211,63 +244,72 @@ public class ProcessFirstItemExtExcelService implements IExcelImportExtService { } } - //校验检测信息 - if (StringUtils.isEmpty(checkMessage)) { + //校验管理类型 + if (StringUtils.isEmpty(manageType)) { errorNum++; cellNum += "C;"; errorInfo += "第C列数据必填;"; } else { + manageType = MesExtEnumUtil.Q_MANAGE_MANAGE_TYPE.descriptionOfValue(manageType); + if (StringUtils.isEmpty(manageType)) { + errorNum++; + cellNum += "C;"; + errorInfo += "第C列数据必填;"; + } + } + + //校验重要安全部品编码 + if ((!StringUtils.isEmpty(importanceSafePartNo)) && (CollectionUtils.isEmpty(partNoEntityMap) || !partNoEntityMap.containsKey(partNo))) { + errorNum++; + cellNum += "D;"; + errorInfo += "第D列数据无效;"; + } + + //校验检测信息 + if (StringUtils.isEmpty(checkMessage)) { + errorNum++; + cellNum += "E;"; + errorInfo += "第E列数据必填;"; + } else { if (checkMessage.length() > 255) { errorNum ++; - cellNum += "C;"; - errorInfo += "第C列数据长度不能超过255个字符;"; + cellNum += "E;"; + errorInfo += "第E列数据长度不能超过255个字符;"; + } + } + + //校验检测标志 + if (StringUtils.isEmpty(checkStand)) { + errorNum++; + cellNum += "I;"; + errorInfo += "第I列数据必填;"; + } else { + if (checkStand.length() > 255) { + errorNum ++; + cellNum += "I;"; + errorInfo += "第I列数据长度不能超过255个字符;"; } } //校验唯一性 不重复 boolean isExist = false; - if(organizeCode.contains(MesExtConstWords.CK)){ - /*if(organizeCode.equals(MesExtConstWords.SX_ORGANIZE_CODE)){ - if (!processFirstItemByOnlyMap.containsKey(partNo + "&" + processCode + "&" + checkMessage)) { - processFirstItemByOnlyMap.put(partNo + "&" + processCode + "&" + checkMessage, String.valueOf(rowNum)); + + if (errorNum == 0) { + String key = new StringJoiner(MesExtConstWords.AND).add(partNo).add(processCode).add(checkMessage).add(checkStand).add(manageType).toString(); + + if (!processFirstItemByOnlyMap.containsKey(key)) { + processFirstItemByOnlyMap.put(key, String.valueOf(rowNum)); //校验 项目确认代码 是否已经存在数据库 if (StringUtils.isEmpty(errorInfo) && !CollectionUtils.isEmpty(processFirstItemMap) && - processFirstItemMap.containsKey(partNo + "&" + processCode + "&" + checkMessage)) { - isExist = true; - } - } else { - errorNum++; - cellNum += "A+B+C;"; - errorInfo += "第A+B+C列数据跟第" + processFirstItemByOnlyMap.get(partNo + "&" + processCode + "&" + checkMessage) + - "行的第A+B+C列数据重复;"; - } - }else{ - if (!processFirstItemByOnlyMap.containsKey(partNo + "&" + processCode + "&" + checkMessage + "&" + checkStand)) { - processFirstItemByOnlyMap.put(partNo + "&" + processCode + "&" + checkMessage + "&" + checkStand, String.valueOf(rowNum)); - //校验 项目确认代码 是否已经存在数据库 - if (StringUtils.isEmpty(errorInfo) && !CollectionUtils.isEmpty(epProcessFirstItemMap) && - epProcessFirstItemMap.containsKey(partNo + "&" + processCode + "&" + checkMessage + "&" + checkStand)) { + processFirstItemMap.containsKey(key)) { isExist = true; } } else { errorNum++; - cellNum += "A+B+C+D;"; - errorInfo += "第A+B+C+D列数据跟第" + processFirstItemByOnlyMap.get(partNo + "&" + processCode + "&" + checkMessage +"&"+ checkStand) + - "行的第A+B+C+D列数据重复;"; - }*/ - } - if (!processFirstItemByOnlyMap.containsKey(partNo + "&" + processCode + "&" + checkMessage + "&" + checkStand)) { - processFirstItemByOnlyMap.put(partNo + "&" + processCode + "&" + checkMessage + "&" + checkStand, String.valueOf(rowNum)); - //校验 项目确认代码 是否已经存在数据库 - if (StringUtils.isEmpty(errorInfo) && !CollectionUtils.isEmpty(epProcessFirstItemMap) && - epProcessFirstItemMap.containsKey(partNo + "&" + processCode + "&" + checkMessage + "&" + checkStand)) { - isExist = true; + cellNum += "A+B+C+E+I;"; + errorInfo += "第A+B+C+E+I列数据跟第" + processFirstItemByOnlyMap.get(key) + + "行的第A+B+C+E+I列数据重复;"; } - } else { - errorNum++; - cellNum += "A+B+C+D;"; - errorInfo += "第A+B+C+D列数据跟第" + processFirstItemByOnlyMap.get(partNo + "&" + processCode + "&" + checkMessage +"&"+ checkStand) + - "行的第A+B+C+D列数据重复;"; } //上下限值校验 @@ -275,8 +317,8 @@ public class ProcessFirstItemExtExcelService implements IExcelImportExtService { if ((!StringUtils.isEmpty(upLimits) && StringUtils.isEmpty(downLimits)) || (StringUtils.isEmpty(upLimits) && !StringUtils.isEmpty(downLimits))){ errorNum ++; - cellNum += "E+F;"; - errorInfo += "第E+F列数据缺少,上下限值必须同时存在;"; + cellNum += "J+K;"; + errorInfo += "第J+K列数据缺少,上下限值必须同时存在;"; } //上限值 @@ -289,8 +331,8 @@ public class ProcessFirstItemExtExcelService implements IExcelImportExtService { String[] standard = upLimits.split(MesExtConstWords.DECIMAL_POINT); if (null != standard && standard.length == 2 && standard[1].length() > 4) { errorNum ++; - cellNum += "E+F;"; - errorInfo += "第E+F列数据最多四位小数;"; + cellNum += "J+K;"; + errorInfo += "第J+K列数据最多四位小数;"; } } @@ -299,16 +341,16 @@ public class ProcessFirstItemExtExcelService implements IExcelImportExtService { String[] standard = downLimits.split(MesExtConstWords.DECIMAL_POINT); if (null != standard && standard.length == 2 && standard[1].length() > 4) { errorNum ++; - cellNum += "E+F;"; - errorInfo += "第E+F列数据最多四位小数;"; + cellNum += "J+K;"; + errorInfo += "第J+K列数据最多四位小数;"; } } if (!StringUtils.isEmpty(upLimits) && !StringUtils.isEmpty(downLimits)){ if (upLimit < downLimit){ errorNum ++; - cellNum += "E+F;"; - errorInfo += "第E+F列数据上限值不能小于下限值;"; + cellNum += "J+K;"; + errorInfo += "第J+K列数据上限值不能小于下限值;"; } } @@ -316,7 +358,8 @@ public class ProcessFirstItemExtExcelService implements IExcelImportExtService { if (errorNum == 0) { MesProcessFirstItem processFirstItem; if(isExist){ - processFirstItem = processFirstItemMap.get(partNo + "&" + processCode + "&" + checkMessage).get(0); + String key = new StringJoiner(MesExtConstWords.AND).add(partNo).add(processCode).add(checkMessage).add(checkStand).add(manageType).toString(); + processFirstItem = processFirstItemMap.get(key).get(0); ConvertBean.serviceModelUpdate(processFirstItem, userName); }else{ processFirstItem = new MesProcessFirstItem(); @@ -329,6 +372,11 @@ public class ProcessFirstItemExtExcelService implements IExcelImportExtService { processFirstItem.setCheckStand(checkStand); processFirstItem.setUpLimit(upLimits); processFirstItem.setDownLimit(downLimits); + processFirstItem.setManageType(manageType); + processFirstItem.setImportanceSafePartNo(importanceSafePartNo); + processFirstItem.setCheckFrequency(checkFrequency); + processFirstItem.setConfirmMethod(confirmMethod); + processFirstItem.setSampleQty(sampleQty); processFirstItem.setSystemSyncStatus(MesExtEnumUtil.IF_SYNC_STATUS.NO_SYNC.getValue()); processFirstItem.setOrganizeCode(organizeCode); ConvertBean.serviceModelInitialize(processFirstItem, userName); diff --git a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/bean/MesAntiStaticCheck.java b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/bean/MesAntiStaticCheck.java index e33da39..763bf1e 100644 --- a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/bean/MesAntiStaticCheck.java +++ b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/bean/MesAntiStaticCheck.java @@ -30,7 +30,6 @@ import java.io.Serializable; @Api("MES_防静电工位") public class MesAntiStaticCheck extends BaseBean implements Serializable { - private static final long serialVersionUID = 6128372552980146081L; @Column(name = "WORK_CENTER_CODE") diff --git a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/bean/MesFirstOrderDetail.java b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/bean/MesFirstOrderDetail.java index 6cfbdba..c38e519 100644 --- a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/bean/MesFirstOrderDetail.java +++ b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/bean/MesFirstOrderDetail.java @@ -1,5 +1,7 @@ package cn.estsh.i3plus.ext.mes.pojo.bean; +import cn.estsh.i3plus.ext.mes.pojo.util.MesExtEnumUtil; +import cn.estsh.i3plus.pojo.base.annotation.AnnoOutputColumn; import cn.estsh.i3plus.pojo.base.bean.BaseBean; import io.swagger.annotations.Api; import io.swagger.annotations.ApiParam; @@ -116,6 +118,27 @@ public class MesFirstOrderDetail extends BaseBean implements Serializable { @ApiParam("结果值") private String resultValue; + @Column(name = "MANAGE_TYPE") + @ApiParam("管理类型:10-比值类型;20-结果类型") + @AnnoOutputColumn(refClass = MesExtEnumUtil.Q_MANAGE_MANAGE_TYPE.class, refForeignKey = "value", value = "description") + private String manageType; + + @Column(name = "IMPORTANCE_SAFE_PART_NO") + @ApiParam("重要安全部品编码") + private String importanceSafePartNo; + + @Column(name = "CHECK_FREQUENCY") + @ApiParam("检查频度") + private String checkFrequency; + + @Column(name = "SAMPLE_QTY") + @ApiParam("样品数量") + private String sampleQty; + + @Column(name = "CONFIRM_METHOD") + @ApiParam("确认方法") + private String confirmMethod; + @Transient @ApiParam("生产工单号") private String workOrderNo; diff --git a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/bean/MesProcessFirstItem.java b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/bean/MesProcessFirstItem.java index 0896040..3bfc568 100644 --- a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/bean/MesProcessFirstItem.java +++ b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/bean/MesProcessFirstItem.java @@ -1,5 +1,7 @@ package cn.estsh.i3plus.ext.mes.pojo.bean; +import cn.estsh.i3plus.ext.mes.pojo.util.MesExtEnumUtil; +import cn.estsh.i3plus.pojo.base.annotation.AnnoOutputColumn; import cn.estsh.i3plus.pojo.base.bean.BaseBean; import io.swagger.annotations.Api; import io.swagger.annotations.ApiParam; @@ -64,4 +66,25 @@ public class MesProcessFirstItem extends BaseBean implements Serializable { @ApiParam("下限值") private String downLimit; + @Column(name = "MANAGE_TYPE") + @ApiParam("管理类型:10-比值类型;20-结果类型") + @AnnoOutputColumn(refClass = MesExtEnumUtil.Q_MANAGE_MANAGE_TYPE.class, refForeignKey = "value", value = "description") + private String manageType; + + @Column(name = "IMPORTANCE_SAFE_PART_NO") + @ApiParam("重要安全部品编码") + private String importanceSafePartNo; + + @Column(name = "CHECK_FREQUENCY") + @ApiParam("检查频度") + private String checkFrequency; + + @Column(name = "SAMPLE_QTY") + @ApiParam("样品数量") + private String sampleQty; + + @Column(name = "CONFIRM_METHOD") + @ApiParam("确认方法") + private String confirmMethod; + } diff --git a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/util/MesExtEnumUtil.java b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/util/MesExtEnumUtil.java index 9183482..927b8f8 100644 --- a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/util/MesExtEnumUtil.java +++ b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/util/MesExtEnumUtil.java @@ -801,11 +801,10 @@ public class MesExtEnumUtil { PART_CHECK(10, "物料点检"), PERSON_CHECK(20, "上岗证点检"), - Q_MANAGE(30, "Q管理"), + //Q_MANAGE(30, "Q管理"), EQU_CHECK(40, "设备点检"), - EP_EQU_CHECK(41, "EP设备点检"), ESD_CHECK(50, "防静电点检"), - WORK_ORDER_FIRST(60, "工单首检"), + WORK_ORDER_FIRST(60, "Q管理"), FOUR_M_CHECK(70, "4M变更"), FAILURE_CASE_CHECK(80, "失败事例点检"), SPECIAL_PROCESS_PARAMETERS(90, "特殊过程工艺参数"), @@ -4535,4 +4534,49 @@ public class MesExtEnumUtil { } } + /** + * Q管理管理类型 + */ + public static enum Q_MANAGE_MANAGE_TYPE { + COMPARE_TYPE("10", "比值类型"), + RESULT_TYPE("20", "结果类型") + ; + + private String value; + private String description; + + Q_MANAGE_MANAGE_TYPE(String value, String description) { + this.value = value; + this.description = description; + } + + public String getValue() { + return value; + } + + public String getDescription() { + return description; + } + + public static String valueOfDescription(String val) { + String tmp = null; + for (int i = 0; i < values().length; i++) { + if (values()[i].value.equals(val)) { + tmp = values()[i].description; + } + } + return tmp; + } + + public static String descriptionOfValue(String description) { + String tmp = null; + for (int i = 0; i < values().length; i++) { + if (values()[i].description.equals(description)) { + tmp = values()[i].value; + } + } + return tmp; + } + } + }