工单首检更改为Q管理

tags/yfai-mes-ext-v1.0
yxw 2 years ago
parent 58868d8d6e
commit 3a557484fe

@ -250,8 +250,11 @@ public class WorkOrderExtController extends MesBaseController {
try { try {
ValidatorBean.beginValid(model) ValidatorBean.beginValid(model)
.notNull(MesExtConstWords.ORGANIZE_CODE, model.getOrganizeCode()); .notNull(MesExtConstWords.ORGANIZE_CODE, model.getOrganizeCode());
SxWmsToMesWorkOrderModel sxWmsToMesWorkOrderModel = workOrderExtService.doHandleWmsWorkOrder(model);
return ResultBean.success("查询成功") return ResultBean.success("查询成功")
.setResultObject(workOrderExtService.doHandleWmsWorkOrder(model)) .setResultObject(sxWmsToMesWorkOrderModel)
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException busExcep) { } catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep); return ResultBean.fail(busExcep);

@ -107,7 +107,7 @@ public class BuFirstManageController {
} }
@GetMapping(value = "/mes-first-order-detail/report-query") @GetMapping(value = "/mes-first-order-detail/report-query")
@ApiOperation(value = "首检单明细数据查询报表", notes = "首检单明细数据查询报表") @ApiOperation(value = "首检单(更改为Q管理)明细数据查询报表", notes = "首检单更改为Q管理明细数据查询报表")
public ResultBean queryFirstOrderDetailReportByPager(MesFirstOrderDetail mesFirstOrderDetail, Pager pager) { public ResultBean queryFirstOrderDetailReportByPager(MesFirstOrderDetail mesFirstOrderDetail, Pager pager) {
try { try {
mesFirstOrderDetail.setOrganizeCode(AuthUtil.getOrganize().getOrganizeCode()); mesFirstOrderDetail.setOrganizeCode(AuthUtil.getOrganize().getOrganizeCode());

@ -1,54 +1,54 @@
package cn.estsh.i3plus.ext.mes.apiservice.mq; //package cn.estsh.i3plus.ext.mes.apiservice.mq;
//
import cn.estsh.i3plus.ext.mes.apiservice.controller.base.EmailPushService; //import cn.estsh.i3plus.ext.mes.apiservice.controller.base.EmailPushService;
import cn.estsh.i3plus.pojo.platform.bean.SysMessage; //import cn.estsh.i3plus.pojo.platform.bean.SysMessage;
import com.alibaba.fastjson.JSON; //import com.alibaba.fastjson.JSON;
import com.rabbitmq.client.Channel; //import com.rabbitmq.client.Channel;
import io.swagger.annotations.ApiOperation; //import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; //import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.exception.ExceptionUtils; //import org.apache.commons.lang3.exception.ExceptionUtils;
import org.springframework.amqp.AmqpException; //import org.springframework.amqp.AmqpException;
import org.springframework.amqp.core.Message; //import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener; //import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.amqp.rabbit.core.RabbitTemplate; //import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired; //import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; //import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.stereotype.Component; //import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; //import org.springframework.transaction.annotation.Transactional;
//
/** ///**
* @PROJECT_NAME: i3plus-mes-panasonic-dev // * @PROJECT_NAME: i3plus-mes-panasonic-dev
* @DESCRIPTION: // * @DESCRIPTION:
* @USER: xinwang.yi // * @USER: xinwang.yi
* @DATE: 2023-07-14 14:03 // * @DATE: 2023-07-14 14:03
*/ // */
@Slf4j //@Slf4j
@Component //@Component
@ConditionalOnExpression("${impp.config.rabbitmq:true}") //@ConditionalOnExpression("${impp.config.rabbitmq:true}")
public class SxMesSendEamilQueueRecevier { //public class SxMesSendEamilQueueRecevier {
//
@Autowired // @Autowired
private RabbitTemplate rabbitTemplate; // private RabbitTemplate rabbitTemplate;
//
@Autowired // @Autowired
private EmailPushService emailPushService; // private EmailPushService emailPushService;
//
@ApiOperation("邮件发送") // @ApiOperation("邮件发送")
@Transactional(readOnly = false) // @Transactional(readOnly = false)
@RabbitListener(queues = "SX_MES_SEND_EMAIL", exclusive = true, concurrency = "1") // @RabbitListener(queues = "SX_MES_SEND_EMAIL", exclusive = true, concurrency = "1")
public void doSendEmail(String data, Channel channel, Message message) { // public void doSendEmail(String data, Channel channel, Message message) {
try { // try {
SysMessage sysMessage = JSON.parseObject(data, SysMessage.class); // SysMessage sysMessage = JSON.parseObject(data, SysMessage.class);
//
rabbitTemplate.convertAndSend("QUEUE_IMPP_MESSAGE_MAIL", JSON.toJSONString(sysMessage)); // rabbitTemplate.convertAndSend("QUEUE_IMPP_MESSAGE_MAIL", JSON.toJSONString(sysMessage));
} catch (AmqpException e) { // } catch (AmqpException e) {
log.error("邮件发送 执行异常:{} ", ExceptionUtils.getStackTrace(e)); // log.error("邮件发送 执行异常:{} ", ExceptionUtils.getStackTrace(e));
} finally { // } finally {
try { // try {
channel.basicAck(message.getMessageProperties().getDeliveryTag(), false); // channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
} catch (Exception e) { // } catch (Exception e) {
log.error("邮件发送 发送Ack回执异常:{} ", ExceptionUtils.getStackTrace(e)); // log.error("邮件发送 发送Ack回执异常:{} ", ExceptionUtils.getStackTrace(e));
} // }
} // }
} // }
} //}

@ -50,7 +50,6 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference; import com.alibaba.fastjson.TypeReference;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.python.modules.itertools.count;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -1547,7 +1546,7 @@ public class WorkOrderExtService implements IWorkOrderExtService {
List<MesWorkOrderExt> newWorkOrderList = new ArrayList<>(); List<MesWorkOrderExt> newWorkOrderList = new ArrayList<>();
List<SxWmsToMesWorkOrderModel> newWmsWorkOrderList = new ArrayList<>(); List<SxWmsToMesWorkOrderModel> newWmsWorkOrderList = new ArrayList<>();
for (SxWmsToMesWorkOrderModel workOrderModel : workOrderList) { for (SxWmsToMesWorkOrderModel workOrderModel : workOrderList) {
log.info("工单信息:{}", workOrderModel); log.info("工单信息:{} --- orderNo:{} --- erpWarehouse:{}", workOrderModel, workOrderModel.getOrderNo(), workOrderModel.getErpWarehouse());
if (null == workOrderModel) { if (null == workOrderModel) {
continue; continue;
} }

@ -53,28 +53,17 @@ public class BuFirstManageService implements IBuFirstManageService {
HqlPack.getStringEqualPack(mesProcessFirstItem.getProcessCode(), MesExtConstWords.PROCESS_CODE, whereStr); HqlPack.getStringEqualPack(mesProcessFirstItem.getProcessCode(), MesExtConstWords.PROCESS_CODE, whereStr);
HqlPack.getStringEqualPack(mesProcessFirstItem.getPartNo(), MesExtConstWords.PART_NO, whereStr); HqlPack.getStringEqualPack(mesProcessFirstItem.getPartNo(), MesExtConstWords.PART_NO, whereStr);
HqlPack.getStringEqualPack(mesProcessFirstItem.getCheckMessage(), MesExtConstWords.CHECK_MESSAGE, 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); HqlPack.getNumEqualPack(CommonEnumUtil.IS_VAILD.VAILD.getValue(), MesExtConstWords.IS_VALID, whereStr);
if (mesProcessFirstItemRDao.isExitByHqlWhere(whereStr.toString())) { if (mesProcessFirstItemRDao.isExitByHqlWhere(whereStr.toString())) {
if(!mesProcessFirstItem.getOrganizeCode().equals(MesExtConstWords.SX_ORGANIZE_CODE)){
throw ImppExceptionBuilder.newInstance() throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_EXIT.getCode()) .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_EXIT.getCode())
.setErrorDetail("工序编号【%s】、物料编码【%s】和检测信息【%s】和检测标准【%s】在工序首检项目信息中已存在" .setErrorDetail("工序编号【%s】、物料编码【%s】和检测信息【%s】和检测标准【%s】和管理类型【%s】在工序首检项目信息中已存在"
,mesProcessFirstItem.getProcessCode(), mesProcessFirstItem.getPartNo(), mesProcessFirstItem.getCheckMessage(), mesProcessFirstItem.getCheckStand()) ,mesProcessFirstItem.getProcessCode(), mesProcessFirstItem.getPartNo(), mesProcessFirstItem.getCheckMessage(), mesProcessFirstItem.getCheckStand(), MesExtEnumUtil.Q_MANAGE_MANAGE_TYPE.valueOfDescription(mesProcessFirstItem.getManageType()))
.setErrorSolution("请更换新增参数") .setErrorSolution("请更换新增参数")
.build(); .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();
}
} }
//上下限值校验 //上下限值校验
@ -150,6 +139,7 @@ public class BuFirstManageService implements IBuFirstManageService {
DdlPreparedPack.getStringEqualPack(mesProcessFirstItem.getPartNo(), MesExtConstWords.PART_NO, packBean); DdlPreparedPack.getStringEqualPack(mesProcessFirstItem.getPartNo(), MesExtConstWords.PART_NO, packBean);
DdlPreparedPack.getStringEqualPack(mesProcessFirstItem.getCheckMessage(), MesExtConstWords.CHECK_MESSAGE, packBean); DdlPreparedPack.getStringEqualPack(mesProcessFirstItem.getCheckMessage(), MesExtConstWords.CHECK_MESSAGE, packBean);
DdlPreparedPack.getStringEqualPack(mesProcessFirstItem.getCheckStand(), MesExtConstWords.CHECK_STAND, packBean); DdlPreparedPack.getStringEqualPack(mesProcessFirstItem.getCheckStand(), MesExtConstWords.CHECK_STAND, packBean);
DdlPreparedPack.getNumEqualPack(mesProcessFirstItem.getManageType(), MesExtConstWords.MANAGE_TYPE, packBean);
MesProcessFirstItem processFirstItemExist = mesProcessFirstItemRDao.getByProperty(packBean); MesProcessFirstItem processFirstItemExist = mesProcessFirstItemRDao.getByProperty(packBean);
if (processFirstItemExist != null && processFirstItemExist.getId().compareTo(processFirstItemDb.getId()) != 0) { if (processFirstItemExist != null && processFirstItemExist.getId().compareTo(processFirstItemDb.getId()) != 0) {

@ -1,273 +1,273 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.busi; //package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.busi;
//
import cn.estsh.i3plus.ext.mes.api.busi.IWorkOrderStartService; //import cn.estsh.i3plus.ext.mes.api.busi.IWorkOrderStartService;
import cn.estsh.i3plus.ext.mes.pojo.bean.*; //import cn.estsh.i3plus.ext.mes.pojo.bean.*;
import cn.estsh.i3plus.ext.mes.pojo.repository.*; //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.MesExtConstWords;
import cn.estsh.i3plus.ext.mes.pojo.util.MesExtEnumUtil; //import cn.estsh.i3plus.ext.mes.pojo.util.MesExtEnumUtil;
import cn.estsh.i3plus.mes.api.iservice.busi.ISyncFuncService; //import cn.estsh.i3plus.mes.api.iservice.busi.ISyncFuncService;
import cn.estsh.i3plus.mes.apiservice.util.MesCommonUtil; //import cn.estsh.i3plus.mes.apiservice.util.MesCommonUtil;
import cn.estsh.i3plus.platform.common.convert.ConvertBean; //import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; //import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
import cn.estsh.i3plus.platform.common.tool.TimeTool; //import cn.estsh.i3plus.platform.common.tool.TimeTool;
import cn.estsh.i3plus.pojo.base.bean.BaseResultBean; //import cn.estsh.i3plus.pojo.base.bean.BaseResultBean;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; //import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; //import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; //import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; //import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.MesProcess; //import cn.estsh.i3plus.pojo.mes.bean.MesProcess;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkCell; //import cn.estsh.i3plus.pojo.mes.bean.MesWorkCell;
import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel; //import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel;
import cn.estsh.i3plus.pojo.mes.repository.MesProcessRepository; //import cn.estsh.i3plus.pojo.mes.repository.MesProcessRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesWorkCellRepository; //import cn.estsh.i3plus.pojo.mes.repository.MesWorkCellRepository;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; //import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.ResultBean; //import cn.estsh.impp.framework.boot.util.ResultBean;
import org.springframework.beans.BeanUtils; //import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; //import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; //import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; //import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils; //import org.springframework.util.StringUtils;
//
import java.util.*; //import java.util.*;
import java.util.stream.Collectors; //import java.util.stream.Collectors;
//
/** ///**
* @author wangjie // * @author wangjie
* @version 1.0 // * @version 1.0
* @date 2021/1/13 9:28 // * @date 2021/1/13 9:28
**/ // **/
@Service("qManageOrderService") //@Service("qManageOrderService")
public class QManageOrderService implements IWorkOrderStartService { //public class QManageOrderService implements IWorkOrderStartService {
//
@Autowired // @Autowired
private MesWorkCenterExtRepository mesWorkCenterExtRDao; // private MesWorkCenterExtRepository mesWorkCenterExtRDao;
//
@Autowired // @Autowired
private MesOrderRuleRepository mesOrderRuleRDao; // private MesOrderRuleRepository mesOrderRuleRDao;
//
@Autowired // @Autowired
private MesProcessCellRepository mesProcessCellRDao; // private MesProcessCellRepository mesProcessCellRDao;
//
@Autowired // @Autowired
private MesProcessQManageRepository mesProcessQManageRDao; // private MesProcessQManageRepository mesProcessQManageRDao;
//
@Autowired // @Autowired
private MesOrderJobRepository mesOrderJobRDao; // private MesOrderJobRepository mesOrderJobRDao;
//
@Autowired // @Autowired
private MesQManageTaskDetailRepository mesQManageTaskDetailRDao; // private MesQManageTaskDetailRepository mesQManageTaskDetailRDao;
//
@Autowired // @Autowired
private ISyncFuncService syncFuncService; // private ISyncFuncService syncFuncService;
//
@Autowired // @Autowired
private MesProcessRepository mesProcessRDao; // private MesProcessRepository mesProcessRDao;
//
@Autowired // @Autowired
private MesWorkCellRepository mesWorkCellRDao; // private MesWorkCellRepository mesWorkCellRDao;
//
@Override // @Override
public ResultBean execute(MesWorkOrderExt mesWorkOrderExt) { // public ResultBean execute(MesWorkOrderExt mesWorkOrderExt) {
List<MesProcessQManage> mesProcessQManages = new ArrayList<>(); // List<MesProcessQManage> mesProcessQManages = new ArrayList<>();
MesOrderRule mesOrderRule = null; // MesOrderRule mesOrderRule = null;
//根据产线获取产线信息 // //根据产线获取产线信息
MesWorkCenterExt mesWorkCenterExt = mesWorkCenterExtRDao.getByProperty( // MesWorkCenterExt mesWorkCenterExt = mesWorkCenterExtRDao.getByProperty(
new String[]{MesExtConstWords.ORGANIZE_CODE, MesExtConstWords.IS_VALID, MesExtConstWords.IS_DELETED,"workCenterCode"}, // new String[]{MesExtConstWords.ORGANIZE_CODE, MesExtConstWords.IS_VALID, MesExtConstWords.IS_DELETED,"workCenterCode"},
new Object[]{mesWorkOrderExt.getOrganizeCode(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), // new Object[]{mesWorkOrderExt.getOrganizeCode(), CommonEnumUtil.IS_VAILD.VAILD.getValue(),
CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),mesWorkOrderExt.getWorkCenterCode()}); // CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),mesWorkOrderExt.getWorkCenterCode()});
//
//产线代码、班次代码、单据类型【Q管理】创建规则【工单产生】查询单据作业信息 // //产线代码、班次代码、单据类型【Q管理】创建规则【工单产生】查询单据作业信息
mesOrderRule = mesOrderRuleRDao.getByProperty( // mesOrderRule = mesOrderRuleRDao.getByProperty(
new String[]{MesExtConstWords.ORGANIZE_CODE, MesExtConstWords.IS_VALID, MesExtConstWords.IS_DELETED, // new String[]{MesExtConstWords.ORGANIZE_CODE, MesExtConstWords.IS_VALID, MesExtConstWords.IS_DELETED,
"orderType","createRule","workCenterCode","shiftCode"}, // "orderType","createRule","workCenterCode","shiftCode"},
new Object[]{mesWorkOrderExt.getOrganizeCode(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), // new Object[]{mesWorkOrderExt.getOrganizeCode(), CommonEnumUtil.IS_VAILD.VAILD.getValue(),
CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),MesExtEnumUtil.MES_OR_ORDER_TYPE.Q_MANAGE.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()}); // MesExtEnumUtil.MES_OR_CREATE_RULE.WORK_ORDER_CREATE.getValue(),mesWorkOrderExt.getWorkCenterCode(),mesWorkCenterExt.getShiftCode()});
//
if(mesOrderRule == null){ // if(mesOrderRule == null){
mesOrderRule = mesOrderRuleRDao.getByProperty( // mesOrderRule = mesOrderRuleRDao.getByProperty(
new String[]{MesExtConstWords.ORGANIZE_CODE, MesExtConstWords.IS_VALID, MesExtConstWords.IS_DELETED, // new String[]{MesExtConstWords.ORGANIZE_CODE, MesExtConstWords.IS_VALID, MesExtConstWords.IS_DELETED,
"orderType","createRule","workCenterCode"}, // "orderType","createRule","workCenterCode"},
new Object[]{mesWorkOrderExt.getOrganizeCode(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), // new Object[]{mesWorkOrderExt.getOrganizeCode(), CommonEnumUtil.IS_VAILD.VAILD.getValue(),
CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),MesExtEnumUtil.MES_OR_ORDER_TYPE.Q_MANAGE.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()}); // MesExtEnumUtil.MES_OR_CREATE_RULE.WORK_ORDER_CREATE.getValue(),mesWorkOrderExt.getWorkCenterCode()});
//
if(mesOrderRule == null){ // if(mesOrderRule == null){
throw ImppExceptionBuilder.newInstance() // throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) // .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) // .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("Q管理的单据规则信息不存在请检查") // .setErrorDetail("Q管理的单据规则信息不存在请检查")
.build(); // .build();
} // }
} // }
//
//根据产线获取产线工序工位信息数据 // //根据产线获取产线工序工位信息数据
List<MesProcessCell> mesProcessCellList = mesProcessCellRDao.findByProperty( // List<MesProcessCell> mesProcessCellList = mesProcessCellRDao.findByProperty(
new String[]{MesExtConstWords.ORGANIZE_CODE, MesExtConstWords.IS_VALID, MesExtConstWords.IS_DELETED,"workCenterCode"}, // new String[]{MesExtConstWords.ORGANIZE_CODE, MesExtConstWords.IS_VALID, MesExtConstWords.IS_DELETED,"workCenterCode"},
new Object[]{mesWorkOrderExt.getOrganizeCode(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), // new Object[]{mesWorkOrderExt.getOrganizeCode(), CommonEnumUtil.IS_VAILD.VAILD.getValue(),
CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),mesWorkOrderExt.getWorkCenterCode()}); // CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),mesWorkOrderExt.getWorkCenterCode()});
//
if(CollectionUtils.isEmpty(mesProcessCellList)){ // if(CollectionUtils.isEmpty(mesProcessCellList)){
throw ImppExceptionBuilder.newInstance() // throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) // .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) // .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("当前产线【%s】在产线工序工位信息中不存在数据",mesWorkOrderExt.getWorkCenterCode()) // .setErrorDetail("当前产线【%s】在产线工序工位信息中不存在数据",mesWorkOrderExt.getWorkCenterCode())
.build(); // .build();
} // }
//
//根据工序代码分组 // //根据工序代码分组
Map<String, List<MesProcessCell>> processCellmMap = mesProcessCellList.stream().collect(Collectors.groupingBy(MesProcessCell::getProcessCode)); // Map<String, List<MesProcessCell>> processCellmMap = mesProcessCellList.stream().collect(Collectors.groupingBy(MesProcessCell::getProcessCode));
//获取工序代码集合 // //获取工序代码集合
List<String> processCodeList = mesProcessCellList.stream().map(MesProcessCell::getProcessCode).collect(Collectors.toList()); // List<String> processCodeList = mesProcessCellList.stream().map(MesProcessCell::getProcessCode).collect(Collectors.toList());
//
//根据工序代码集合和零件号为空查询工序Q管理项目信息 // //根据工序代码集合和零件号为空查询工序Q管理项目信息
DdlPackBean packBean = findMesProcessQManage(mesWorkOrderExt.getOrganizeCode(), null, processCodeList); // DdlPackBean packBean = findMesProcessQManage(mesWorkOrderExt.getOrganizeCode(), null, processCodeList);
List<MesProcessQManage> processQManageListByMotPartNo = mesProcessQManageRDao.findByHqlWhere(packBean); // List<MesProcessQManage> processQManageListByMotPartNo = mesProcessQManageRDao.findByHqlWhere(packBean);
if(!CollectionUtils.isEmpty(processQManageListByMotPartNo)){ // if(!CollectionUtils.isEmpty(processQManageListByMotPartNo)){
mesProcessQManages.addAll(processQManageListByMotPartNo); // mesProcessQManages.addAll(processQManageListByMotPartNo);
} // }
//
//根据工序代码集合和零件号查询工序Q管理项目信息 // //根据工序代码集合和零件号查询工序Q管理项目信息
packBean = findMesProcessQManage(mesWorkOrderExt.getOrganizeCode(), mesWorkOrderExt.getPartNo(), processCodeList); // packBean = findMesProcessQManage(mesWorkOrderExt.getOrganizeCode(), mesWorkOrderExt.getPartNo(), processCodeList);
List<MesProcessQManage> processQManageList = mesProcessQManageRDao.findByHqlWhere(packBean); // List<MesProcessQManage> processQManageList = mesProcessQManageRDao.findByHqlWhere(packBean);
if(!CollectionUtils.isEmpty(processQManageList)){ // if(!CollectionUtils.isEmpty(processQManageList)){
mesProcessQManages.addAll(processQManageList); // mesProcessQManages.addAll(processQManageList);
} // }
//
if(CollectionUtils.isEmpty(mesProcessQManages)){ // if(CollectionUtils.isEmpty(mesProcessQManages)){
throw ImppExceptionBuilder.newInstance() // throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) // .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) // .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("根据规则无法查询到工序Q管理项目数据请检查") // .setErrorDetail("根据规则无法查询到工序Q管理项目数据请检查")
.build(); // .build();
} // }
//
//根据单据类型【Q管理】、产线代码和产线信息中的班次代码、生产日期获取Q管理单信息 // //根据单据类型【Q管理】、产线代码和产线信息中的班次代码、生产日期获取Q管理单信息
packBean = DdlPackBean.getDdlPackBean(mesWorkOrderExt.getOrganizeCode()); // packBean = DdlPackBean.getDdlPackBean(mesWorkOrderExt.getOrganizeCode());
DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.MES_OR_ORDER_TYPE.Q_MANAGE.getValue(), "orderType", packBean); // DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.MES_OR_ORDER_TYPE.Q_MANAGE.getValue(), "orderType", packBean);
DdlPreparedPack.getStringEqualPack(mesWorkOrderExt.getWorkCenterCode(), "workCenterCode", packBean); // DdlPreparedPack.getStringEqualPack(mesWorkOrderExt.getWorkCenterCode(), "workCenterCode", packBean);
DdlPreparedPack.getStringEqualPack(mesWorkCenterExt.getShiftCode(), "shiftCode", packBean); // DdlPreparedPack.getStringEqualPack(mesWorkCenterExt.getShiftCode(), "shiftCode", packBean);
DdlPreparedPack.getStringEqualPack(mesWorkCenterExt.getWorkTime(), "workTime", packBean); // DdlPreparedPack.getStringEqualPack(mesWorkCenterExt.getWorkTime(), "workTime", packBean);
//
MesOrderJob mesOrderJob = mesOrderJobRDao.getByProperty(packBean); // MesOrderJob mesOrderJob = mesOrderJobRDao.getByProperty(packBean);
//
if(mesOrderJob == null){ // if(mesOrderJob == null){
String orderNo = insertMesOrderJob(mesWorkOrderExt, mesWorkCenterExt, mesOrderRule.getTaskType()); // String orderNo = insertMesOrderJob(mesWorkOrderExt, mesWorkCenterExt, mesOrderRule.getTaskType());
insertMesQManageTaskDetail(mesProcessQManages,processCellmMap,mesWorkOrderExt.getCreateUser(),orderNo); // insertMesQManageTaskDetail(mesProcessQManages,processCellmMap,mesWorkOrderExt.getCreateUser(),orderNo);
}else { // }else {
//根据作业单号查询明细数据 // //根据作业单号查询明细数据
packBean = DdlPackBean.getDdlPackBean(mesWorkOrderExt.getOrganizeCode()); // packBean = DdlPackBean.getDdlPackBean(mesWorkOrderExt.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(mesOrderJob.getOrderNo(), "orderNo", packBean); // DdlPreparedPack.getStringEqualPack(mesOrderJob.getOrderNo(), "orderNo", packBean);
//
List<MesQManageTaskDetail> mesQManageTaskDetails = mesQManageTaskDetailRDao.findByHqlWhere(packBean); // List<MesQManageTaskDetail> mesQManageTaskDetails = mesQManageTaskDetailRDao.findByHqlWhere(packBean);
if(mesQManageTaskDetails.size() >= mesProcessQManages.size()) { // if(mesQManageTaskDetails.size() >= mesProcessQManages.size()) {
return ResultBean.success("添加成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); // return ResultBean.success("添加成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} // }
//
//获取两个存在差异的数据 // //获取两个存在差异的数据
Map<String, List<MesProcessQManage>> processQManageMap = mesProcessQManages.stream().collect(Collectors.groupingBy(q-> q.getProcessCode() +"&"+ q.getManageProjects())); // Map<String, List<MesProcessQManage>> processQManageMap = mesProcessQManages.stream().collect(Collectors.groupingBy(q-> q.getProcessCode() +"&"+ q.getManageProjects()));
Map<String, List<MesQManageTaskDetail>> qManageTaskDetailsMap = mesQManageTaskDetails.stream().collect(Collectors.groupingBy(q-> q.getProcessCode() +"&"+ q.getManageProjects())); // Map<String, List<MesQManageTaskDetail>> qManageTaskDetailsMap = mesQManageTaskDetails.stream().collect(Collectors.groupingBy(q-> q.getProcessCode() +"&"+ q.getManageProjects()));
//
for(String key : qManageTaskDetailsMap.keySet()){ // for(String key : qManageTaskDetailsMap.keySet()){
if(processQManageMap.containsKey(key)){ // if(processQManageMap.containsKey(key)){
processQManageMap.remove(key); // processQManageMap.remove(key);
} // }
} // }
//
mesProcessQManages = new ArrayList<>(); // mesProcessQManages = new ArrayList<>();
for(String key : processQManageMap.keySet()){ // for(String key : processQManageMap.keySet()){
mesProcessQManages.addAll(processQManageMap.get(key)); // mesProcessQManages.addAll(processQManageMap.get(key));
} // }
//
String orderNo = insertMesOrderJob(mesWorkOrderExt, mesWorkCenterExt, mesOrderRule.getTaskType()); // String orderNo = insertMesOrderJob(mesWorkOrderExt, mesWorkCenterExt, mesOrderRule.getTaskType());
insertMesQManageTaskDetail(mesProcessQManages,processCellmMap,mesWorkOrderExt.getCreateUser(),orderNo); // insertMesQManageTaskDetail(mesProcessQManages,processCellmMap,mesWorkOrderExt.getCreateUser(),orderNo);
} // }
//
return ResultBean.success("添加成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); // return ResultBean.success("添加成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} // }
//
//
private String insertMesOrderJob(MesWorkOrderExt mesWorkOrderExt,MesWorkCenterExt mesWorkCenterExt,Integer taskType){ // private String insertMesOrderJob(MesWorkOrderExt mesWorkOrderExt,MesWorkCenterExt mesWorkCenterExt,Integer taskType){
// 调用平台生成条码的方法 // // 调用平台生成条码的方法
List<String> orderNoList = getOrderNoByRuleCode(1, // List<String> orderNoList = getOrderNoByRuleCode(1,
MesExtConstWords.ORDER_NO_RULE, new GenSerialNoModel(), mesWorkOrderExt.getCreateUser(), mesWorkOrderExt.getOrganizeCode()); // MesExtConstWords.ORDER_NO_RULE, new GenSerialNoModel(), mesWorkOrderExt.getCreateUser(), mesWorkOrderExt.getOrganizeCode());
//
MesOrderJob mesOrderJob = new MesOrderJob(); // MesOrderJob mesOrderJob = new MesOrderJob();
mesOrderJob.setOrganizeCode(mesWorkOrderExt.getOrganizeCode()); // mesOrderJob.setOrganizeCode(mesWorkOrderExt.getOrganizeCode());
mesOrderJob.setOrderType(MesExtEnumUtil.MES_OR_ORDER_TYPE.Q_MANAGE.getValue()); // mesOrderJob.setOrderType(MesExtEnumUtil.MES_OR_ORDER_TYPE.Q_MANAGE.getValue());
mesOrderJob.setTaskType(taskType); // mesOrderJob.setTaskType(taskType);
mesOrderJob.setOrderNo(orderNoList.get(0)); // mesOrderJob.setOrderNo(orderNoList.get(0));
mesOrderJob.setWorkCenterCode(mesWorkOrderExt.getWorkCenterCode()); // mesOrderJob.setWorkCenterCode(mesWorkOrderExt.getWorkCenterCode());
mesOrderJob.setShiftCode(mesWorkCenterExt.getShiftCode()); // mesOrderJob.setShiftCode(mesWorkCenterExt.getShiftCode());
mesOrderJob.setWorkOrderNo(mesWorkOrderExt.getOrderNo()); // mesOrderJob.setWorkOrderNo(mesWorkOrderExt.getOrderNo());
mesOrderJob.setOrderStatus(MesExtEnumUtil.MES_ORJ_ORDER_STATUS.CREATE.getValue()); // mesOrderJob.setOrderStatus(MesExtEnumUtil.MES_ORJ_ORDER_STATUS.CREATE.getValue());
mesOrderJob.setWorkTime(mesWorkCenterExt.getWorkTime()); // mesOrderJob.setWorkTime(mesWorkCenterExt.getWorkTime());
mesOrderJob.setOrderDate(TimeTool.getToday()); // mesOrderJob.setOrderDate(TimeTool.getToday());
//
ConvertBean.serviceModelInitialize(mesOrderJob, mesWorkOrderExt.getCreateUser()); // ConvertBean.serviceModelInitialize(mesOrderJob, mesWorkOrderExt.getCreateUser());
mesOrderJobRDao.insert(mesOrderJob); // mesOrderJobRDao.insert(mesOrderJob);
//
return orderNoList.get(0); // return orderNoList.get(0);
//
} // }
//
private void insertMesQManageTaskDetail(List<MesProcessQManage> mesProcessQManages, Map<String, List<MesProcessCell>> processCellmMap, String userName,String orderNo){ // private void insertMesQManageTaskDetail(List<MesProcessQManage> mesProcessQManages, Map<String, List<MesProcessCell>> processCellmMap, String userName,String orderNo){
// 查询工序表 // // 查询工序表
Map<String, Object> processCodeEntityMap = new HashMap<>(); // Map<String, Object> processCodeEntityMap = new HashMap<>();
try { // try {
processCodeEntityMap = MesCommonUtil.getCodeEntityMap(mesProcessRDao, MesExtConstWords.PROCESS_CODE, mesProcessQManages.get(0).getOrganizeCode(), "工序表"); // processCodeEntityMap = MesCommonUtil.getCodeEntityMap(mesProcessRDao, MesExtConstWords.PROCESS_CODE, mesProcessQManages.get(0).getOrganizeCode(), "工序表");
} catch (Exception e) { // } catch (Exception e) {
} // }
//
// 查询工位表 // // 查询工位表
Map<String, Object> workCellCodeEntityMap = new HashMap<>(); // Map<String, Object> workCellCodeEntityMap = new HashMap<>();
try { // try {
workCellCodeEntityMap = MesCommonUtil.getCodeEntityMap(mesWorkCellRDao, MesExtConstWords.WORK_CELL_CODE, mesProcessQManages.get(0).getOrganizeCode(), "工位表"); // workCellCodeEntityMap = MesCommonUtil.getCodeEntityMap(mesWorkCellRDao, MesExtConstWords.WORK_CELL_CODE, mesProcessQManages.get(0).getOrganizeCode(), "工位表");
} catch (Exception e) { // } catch (Exception e) {
} // }
//
//
MesQManageTaskDetail mesQManageTaskDetail ; // MesQManageTaskDetail mesQManageTaskDetail ;
for(MesProcessQManage processQManage : mesProcessQManages){ // for(MesProcessQManage processQManage : mesProcessQManages){
mesQManageTaskDetail = new MesQManageTaskDetail(); // mesQManageTaskDetail = new MesQManageTaskDetail();
BeanUtils.copyProperties(processQManage, mesQManageTaskDetail, "id"); // BeanUtils.copyProperties(processQManage, mesQManageTaskDetail, "id");
mesQManageTaskDetail.setOrderNo(orderNo); // mesQManageTaskDetail.setOrderNo(orderNo);
mesQManageTaskDetail.setWorkCellCode(processCellmMap.get(processQManage.getProcessCode()).get(0).getWorkCellCode()); // mesQManageTaskDetail.setWorkCellCode(processCellmMap.get(processQManage.getProcessCode()).get(0).getWorkCellCode());
if(!CollectionUtils.isEmpty(processCodeEntityMap) && processCodeEntityMap.containsKey(mesQManageTaskDetail.getProcessCode())){ // if(!CollectionUtils.isEmpty(processCodeEntityMap) && processCodeEntityMap.containsKey(mesQManageTaskDetail.getProcessCode())){
mesQManageTaskDetail.setProcessName(((MesProcess)processCodeEntityMap.get(mesQManageTaskDetail.getProcessCode())).getProcessName()); // mesQManageTaskDetail.setProcessName(((MesProcess)processCodeEntityMap.get(mesQManageTaskDetail.getProcessCode())).getProcessName());
} // }
if(!CollectionUtils.isEmpty(workCellCodeEntityMap) && workCellCodeEntityMap.containsKey(mesQManageTaskDetail.getWorkCellCode())){ // if(!CollectionUtils.isEmpty(workCellCodeEntityMap) && workCellCodeEntityMap.containsKey(mesQManageTaskDetail.getWorkCellCode())){
mesQManageTaskDetail.setWorkCellName(((MesWorkCell)workCellCodeEntityMap.get(mesQManageTaskDetail.getWorkCellCode())).getWorkCellName()); // mesQManageTaskDetail.setWorkCellName(((MesWorkCell)workCellCodeEntityMap.get(mesQManageTaskDetail.getWorkCellCode())).getWorkCellName());
} // }
//
ConvertBean.serviceModelInitialize(mesQManageTaskDetail, userName); // ConvertBean.serviceModelInitialize(mesQManageTaskDetail, userName);
mesQManageTaskDetailRDao.insert(mesQManageTaskDetail); // mesQManageTaskDetailRDao.insert(mesQManageTaskDetail);
} // }
} // }
//
public List<String> getOrderNoByRuleCode(int number, String ruleCode, GenSerialNoModel genSerialNoModel, String userName, String org) { // public List<String> getOrderNoByRuleCode(int number, String ruleCode, GenSerialNoModel genSerialNoModel, String userName, String org) {
genSerialNoModel.setRuleCode(ruleCode); // genSerialNoModel.setRuleCode(ruleCode);
BaseResultBean<String> serialNumberBean = syncFuncService.syncSerialNo(genSerialNoModel, userName, org, Integer.valueOf(number)); // BaseResultBean<String> serialNumberBean = syncFuncService.syncSerialNo(genSerialNoModel, userName, org, Integer.valueOf(number));
if (serialNumberBean != null && serialNumberBean.isSuccess()) { // if (serialNumberBean != null && serialNumberBean.isSuccess()) {
return serialNumberBean.getResultList(); // return serialNumberBean.getResultList();
} else { // } else {
throw ImppExceptionBuilder.newInstance() // throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) // .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.BUSINESS_EXCEPTION.getCode()) // .setErrorCode(ImppExceptionEnum.BUSINESS_EXCEPTION.getCode())
.setErrorDetail(serialNumberBean == null ? "条码未生成成功" : serialNumberBean.getErrorMsg()) // .setErrorDetail(serialNumberBean == null ? "条码未生成成功" : serialNumberBean.getErrorMsg())
.build(); // .build();
} // }
} // }
//
//
//
private static DdlPackBean findMesProcessQManage(String organizeCode, String partNo, List<String> processCodeList) { // private static DdlPackBean findMesProcessQManage(String organizeCode, String partNo, List<String> processCodeList) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); // DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
if(StringUtils.isEmpty(partNo)){ // if(StringUtils.isEmpty(partNo)){
DdlPreparedPack.getStringNullPack("partNo", packBean); // DdlPreparedPack.getStringNullPack("partNo", packBean);
} // }
DdlPreparedPack.getStringEqualPack(partNo, "partNo", packBean); // DdlPreparedPack.getStringEqualPack(partNo, "partNo", packBean);
DdlPreparedPack.getInPackList(processCodeList, "processCode", packBean); // DdlPreparedPack.getInPackList(processCodeList, "processCode", packBean);
return packBean; // return packBean;
} // }
} //}

@ -23,10 +23,7 @@ import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import java.util.ArrayList; import java.util.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -94,7 +91,6 @@ public class ProcessFirstItemExtExcelService implements IExcelImportExtService {
//用于EXCEL表中的 零件编号+工序编号+检测信息 唯一校验 keypartNo&processCode&checkMessagevaluerow //用于EXCEL表中的 零件编号+工序编号+检测信息 唯一校验 keypartNo&processCode&checkMessagevaluerow
Map<String, String> processFirstItemByOnlyMap = new HashMap<>(); Map<String, String> processFirstItemByOnlyMap = new HashMap<>();
// 查询物料表 // 查询物料表
Map<String, Object> partNoEntityMap; Map<String, Object> partNoEntityMap;
try { try {
@ -115,13 +111,10 @@ public class ProcessFirstItemExtExcelService implements IExcelImportExtService {
List<MesProcessFirstItem> processFirstItems = processFirstItemRepository.findByProperty( List<MesProcessFirstItem> processFirstItems = processFirstItemRepository.findByProperty(
new String[]{MesExtConstWords.ORGANIZE_CODE, MesExtConstWords.IS_DELETED}, new String[]{MesExtConstWords.ORGANIZE_CODE, MesExtConstWords.IS_DELETED},
new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()}); new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()});
Map<String, List<MesProcessFirstItem>> processFirstItemMap = CollectionUtils.isEmpty(processFirstItems) ? null :
processFirstItems.stream().filter(o -> null != o)
.collect(Collectors.groupingBy(o -> o.getPartNo() + "&" + o.getProcessCode() + "&" + o.getCheckMessage()));
Map<String, List<MesProcessFirstItem>> epProcessFirstItemMap = CollectionUtils.isEmpty(processFirstItems) ? null : Map<String, List<MesProcessFirstItem>> processFirstItemMap = CollectionUtils.isEmpty(processFirstItems) ? null :
processFirstItems.stream().filter(o -> null != o) 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行开始读取 //从excel表的第5行数据开始导入getFirstRowNum是从0行开始读取
for (int i = (sheetAt.getFirstRowNum() + 4); i < totalNumberOfRows; i++) { for (int i = (sheetAt.getFirstRowNum() + 4); i < totalNumberOfRows; i++) {
@ -157,27 +150,67 @@ public class ProcessFirstItemExtExcelService implements IExcelImportExtService {
} catch (Exception e) { } 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; String checkMessage = null;
try { try {
row.getCell(2).setCellType(CellType.STRING); row.getCell(4).setCellType(CellType.STRING);
checkMessage = row.getCell(2, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim(); 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) { } catch (Exception e) {
} }
//检测标准 //检测标准
String checkStand = null; String checkStand = null;
try { try {
row.getCell(3).setCellType(CellType.STRING); row.getCell(4).setCellType(CellType.STRING);
checkStand = row.getCell(3, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim(); checkStand = row.getCell(4, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) { } catch (Exception e) {
} }
//上限值 //上限值
String upLimits = null; String upLimits = null;
try { try {
row.getCell(4).setCellType(CellType.STRING); row.getCell(5).setCellType(CellType.STRING);
upLimits = row.getCell(4, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim(); upLimits = row.getCell(5, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) { } catch (Exception e) {
} }
@ -211,63 +244,72 @@ public class ProcessFirstItemExtExcelService implements IExcelImportExtService {
} }
} }
//校验检测信息 //校验管理类型
if (StringUtils.isEmpty(checkMessage)) { if (StringUtils.isEmpty(manageType)) {
errorNum++; errorNum++;
cellNum += "C;"; cellNum += "C;";
errorInfo += "第C列数据必填;"; errorInfo += "第C列数据必填;";
} else { } else {
if (checkMessage.length() > 255) { manageType = MesExtEnumUtil.Q_MANAGE_MANAGE_TYPE.descriptionOfValue(manageType);
errorNum ++; if (StringUtils.isEmpty(manageType)) {
errorNum++;
cellNum += "C;"; cellNum += "C;";
errorInfo += "第C列数据长度不能超过255个字符;"; errorInfo += "第C列数据必填;";
} }
} }
//校验唯一性 不重复 //校验重要安全部品编码
boolean isExist = false; if ((!StringUtils.isEmpty(importanceSafePartNo)) && (CollectionUtils.isEmpty(partNoEntityMap) || !partNoEntityMap.containsKey(partNo))) {
if(organizeCode.contains(MesExtConstWords.CK)){ errorNum++;
/*if(organizeCode.equals(MesExtConstWords.SX_ORGANIZE_CODE)){ cellNum += "D;";
if (!processFirstItemByOnlyMap.containsKey(partNo + "&" + processCode + "&" + checkMessage)) { errorInfo += "第D列数据无效;";
processFirstItemByOnlyMap.put(partNo + "&" + processCode + "&" + checkMessage, String.valueOf(rowNum));
//校验 项目确认代码 是否已经存在数据库
if (StringUtils.isEmpty(errorInfo) && !CollectionUtils.isEmpty(processFirstItemMap) &&
processFirstItemMap.containsKey(partNo + "&" + processCode + "&" + checkMessage)) {
isExist = true;
} }
} else {
//校验检测信息
if (StringUtils.isEmpty(checkMessage)) {
errorNum++; errorNum++;
cellNum += "A+B+C;"; cellNum += "E;";
errorInfo += "第A+B+C列数据跟第" + processFirstItemByOnlyMap.get(partNo + "&" + processCode + "&" + checkMessage) + errorInfo += "第E列数据必填;";
"行的第A+B+C列数据重复;"; } else {
if (checkMessage.length() > 255) {
errorNum ++;
cellNum += "E;";
errorInfo += "第E列数据长度不能超过255个字符;";
} }
}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)) {
isExist = true;
} }
} else {
//校验检测标志
if (StringUtils.isEmpty(checkStand)) {
errorNum++; errorNum++;
cellNum += "A+B+C+D;"; cellNum += "I;";
errorInfo += "第A+B+C+D列数据跟第" + processFirstItemByOnlyMap.get(partNo + "&" + processCode + "&" + checkMessage +"&"+ checkStand) + errorInfo += "第I列数据必填;";
"行的第A+B+C+D列数据重复;"; } else {
}*/ if (checkStand.length() > 255) {
errorNum ++;
cellNum += "I;";
errorInfo += "第I列数据长度不能超过255个字符;";
}
} }
if (!processFirstItemByOnlyMap.containsKey(partNo + "&" + processCode + "&" + checkMessage + "&" + checkStand)) {
processFirstItemByOnlyMap.put(partNo + "&" + processCode + "&" + checkMessage + "&" + checkStand, String.valueOf(rowNum)); //校验唯一性 不重复
boolean isExist = false;
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(epProcessFirstItemMap) && if (StringUtils.isEmpty(errorInfo) && !CollectionUtils.isEmpty(processFirstItemMap) &&
epProcessFirstItemMap.containsKey(partNo + "&" + processCode + "&" + checkMessage + "&" + checkStand)) { processFirstItemMap.containsKey(key)) {
isExist = true; isExist = true;
} }
} else { } else {
errorNum++; errorNum++;
cellNum += "A+B+C+D;"; cellNum += "A+B+C+E+I;";
errorInfo += "第A+B+C+D列数据跟第" + processFirstItemByOnlyMap.get(partNo + "&" + processCode + "&" + checkMessage +"&"+ checkStand) + errorInfo += "第A+B+C+E+I列数据跟第" + processFirstItemByOnlyMap.get(key) +
"行的第A+B+C+D列数据重复;"; "行的第A+B+C+E+I列数据重复;";
}
} }
//上下限值校验 //上下限值校验
@ -275,8 +317,8 @@ public class ProcessFirstItemExtExcelService implements IExcelImportExtService {
if ((!StringUtils.isEmpty(upLimits) && StringUtils.isEmpty(downLimits)) || if ((!StringUtils.isEmpty(upLimits) && StringUtils.isEmpty(downLimits)) ||
(StringUtils.isEmpty(upLimits) && !StringUtils.isEmpty(downLimits))){ (StringUtils.isEmpty(upLimits) && !StringUtils.isEmpty(downLimits))){
errorNum ++; errorNum ++;
cellNum += "E+F;"; cellNum += "J+K;";
errorInfo += "第E+F列数据缺少,上下限值必须同时存在;"; errorInfo += "第J+K列数据缺少,上下限值必须同时存在;";
} }
//上限值 //上限值
@ -289,8 +331,8 @@ public class ProcessFirstItemExtExcelService implements IExcelImportExtService {
String[] standard = upLimits.split(MesExtConstWords.DECIMAL_POINT); String[] standard = upLimits.split(MesExtConstWords.DECIMAL_POINT);
if (null != standard && standard.length == 2 && standard[1].length() > 4) { if (null != standard && standard.length == 2 && standard[1].length() > 4) {
errorNum ++; errorNum ++;
cellNum += "E+F;"; cellNum += "J+K;";
errorInfo += "第E+F列数据最多四位小数;"; errorInfo += "第J+K列数据最多四位小数;";
} }
} }
@ -299,16 +341,16 @@ public class ProcessFirstItemExtExcelService implements IExcelImportExtService {
String[] standard = downLimits.split(MesExtConstWords.DECIMAL_POINT); String[] standard = downLimits.split(MesExtConstWords.DECIMAL_POINT);
if (null != standard && standard.length == 2 && standard[1].length() > 4) { if (null != standard && standard.length == 2 && standard[1].length() > 4) {
errorNum ++; errorNum ++;
cellNum += "E+F;"; cellNum += "J+K;";
errorInfo += "第E+F列数据最多四位小数;"; errorInfo += "第J+K列数据最多四位小数;";
} }
} }
if (!StringUtils.isEmpty(upLimits) && !StringUtils.isEmpty(downLimits)){ if (!StringUtils.isEmpty(upLimits) && !StringUtils.isEmpty(downLimits)){
if (upLimit < downLimit){ if (upLimit < downLimit){
errorNum ++; errorNum ++;
cellNum += "E+F;"; cellNum += "J+K;";
errorInfo += "第E+F列数据上限值不能小于下限值;"; errorInfo += "第J+K列数据上限值不能小于下限值;";
} }
} }
@ -316,7 +358,8 @@ public class ProcessFirstItemExtExcelService implements IExcelImportExtService {
if (errorNum == 0) { if (errorNum == 0) {
MesProcessFirstItem processFirstItem; MesProcessFirstItem processFirstItem;
if(isExist){ 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); ConvertBean.serviceModelUpdate(processFirstItem, userName);
}else{ }else{
processFirstItem = new MesProcessFirstItem(); processFirstItem = new MesProcessFirstItem();
@ -329,6 +372,11 @@ public class ProcessFirstItemExtExcelService implements IExcelImportExtService {
processFirstItem.setCheckStand(checkStand); processFirstItem.setCheckStand(checkStand);
processFirstItem.setUpLimit(upLimits); processFirstItem.setUpLimit(upLimits);
processFirstItem.setDownLimit(downLimits); 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.setSystemSyncStatus(MesExtEnumUtil.IF_SYNC_STATUS.NO_SYNC.getValue());
processFirstItem.setOrganizeCode(organizeCode); processFirstItem.setOrganizeCode(organizeCode);
ConvertBean.serviceModelInitialize(processFirstItem, userName); ConvertBean.serviceModelInitialize(processFirstItem, userName);

@ -30,7 +30,6 @@ import java.io.Serializable;
@Api("MES_防静电工位") @Api("MES_防静电工位")
public class MesAntiStaticCheck extends BaseBean implements Serializable { public class MesAntiStaticCheck extends BaseBean implements Serializable {
private static final long serialVersionUID = 6128372552980146081L; private static final long serialVersionUID = 6128372552980146081L;
@Column(name = "WORK_CENTER_CODE") @Column(name = "WORK_CENTER_CODE")

@ -1,5 +1,7 @@
package cn.estsh.i3plus.ext.mes.pojo.bean; 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 cn.estsh.i3plus.pojo.base.bean.BaseBean;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiParam;
@ -116,6 +118,27 @@ public class MesFirstOrderDetail extends BaseBean implements Serializable {
@ApiParam("结果值") @ApiParam("结果值")
private String resultValue; 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 @Transient
@ApiParam("生产工单号") @ApiParam("生产工单号")
private String workOrderNo; private String workOrderNo;

@ -1,5 +1,7 @@
package cn.estsh.i3plus.ext.mes.pojo.bean; 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 cn.estsh.i3plus.pojo.base.bean.BaseBean;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiParam;
@ -64,4 +66,25 @@ public class MesProcessFirstItem extends BaseBean implements Serializable {
@ApiParam("下限值") @ApiParam("下限值")
private String downLimit; 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;
} }

@ -801,11 +801,10 @@ public class MesExtEnumUtil {
PART_CHECK(10, "物料点检"), PART_CHECK(10, "物料点检"),
PERSON_CHECK(20, "上岗证点检"), PERSON_CHECK(20, "上岗证点检"),
Q_MANAGE(30, "Q管理"), //Q_MANAGE(30, "Q管理"),
EQU_CHECK(40, "设备点检"), EQU_CHECK(40, "设备点检"),
EP_EQU_CHECK(41, "EP设备点检"),
ESD_CHECK(50, "防静电点检"), ESD_CHECK(50, "防静电点检"),
WORK_ORDER_FIRST(60, "工单首检"), WORK_ORDER_FIRST(60, "Q管理"),
FOUR_M_CHECK(70, "4M变更"), FOUR_M_CHECK(70, "4M变更"),
FAILURE_CASE_CHECK(80, "失败事例点检"), FAILURE_CASE_CHECK(80, "失败事例点检"),
SPECIAL_PROCESS_PARAMETERS(90, "特殊过程工艺参数"), 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;
}
}
} }

Loading…
Cancel
Save