Merge remote-tracking branch 'origin/dev-wuhan' into dev-wuhan

tags/yfai-mes-ext-v2.3
臧学普 8 months ago
commit 875883685d

@ -1,5 +1,7 @@
package cn.estsh.i3plus.ext.mes.api.base;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.mes.bean.MesLabelTemplate;
/**
@ -10,4 +12,6 @@ import cn.estsh.i3plus.pojo.mes.bean.MesLabelTemplate;
* @Modify:
**/
public interface IMesLabelTemplateService extends IBaseMesService<MesLabelTemplate> {
ListPager queryMesLabelTemplateAndParamListByPager(MesLabelTemplate labelTemplate, Pager pager);
}

@ -0,0 +1,13 @@
package cn.estsh.i3plus.ext.mes.api.base;
import cn.estsh.i3plus.pojo.mes.bean.nc.MesPartInspection;
/**
* @Description:
* @CreateDate 2024/09/09
* @Author gsz
*/
public interface IMesPartInspectionService extends IBaseMesService<MesPartInspection> {
}

@ -12,4 +12,6 @@ import java.util.Map;
public interface IMesPullingOrderInfoService extends IBaseMesService<MesPullingOrderInfo> {
Map doSPSForEquipment( String assemblyLine, String pullingGroupCode,String organizeCode );
void doCreatePullOrderByPullGroupAndWorkOrder(String organizeCode, String userName);
}

@ -18,4 +18,7 @@ public interface IMesWorkOrderCutService extends IBaseMesService<MesWorkOrderCut
@ApiOperation("发布裁片工单")
void doReleaseCutWorkOrder(List<String> cutWorkOrderNos, String organizeCode, String userName);
@ApiOperation("打印裁片工单")
void doPrintCutWorkOrder(List<String> cutWorkOrderNos, String organizeCode, String userName);
}

@ -1,8 +1,24 @@
package cn.estsh.i3plus.ext.mes.apiservice.controller.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesLabelTemplateService;
import cn.estsh.i3plus.ext.mes.apiservice.config.AuthUtilExt;
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesLabelTemplate;
import cn.estsh.i3plus.pojo.mes.bean.MesSpotCheckOrder;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.ResultBean;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@ -17,4 +33,21 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping(MesCommonConstant.MES_YANFEN + "/mesLabelTemplate")
@Api(tags = "打印模板")
public class MesLabelTemplateController extends BaseMesController<MesLabelTemplate> {
@Autowired
private IMesLabelTemplateService mesLabelTemplateService;
@GetMapping("/query-template-param")
@ApiOperation(value = "查询打印模板和明细")
public ResultBean queryMesLabelTemplateAndParamListByPager(MesLabelTemplate labelTemplate, Pager pager) {
try {
return ResultBean.success("查询成功").setListPager(mesLabelTemplateService.queryMesLabelTemplateAndParamListByPager(labelTemplate, pager));
} catch (ImppBusiException imppException) {
return ResultBean.fail(imppException);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
}

@ -0,0 +1,17 @@
package cn.estsh.i3plus.ext.mes.apiservice.controller.base;
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.pojo.mes.bean.nc.MesPartInspection;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
*
*/
@Api("零件检测")
@RestController
@RequestMapping(MesCommonConstant.MES_YANFEN + "/mesPartInspection")
public class MesPartInspectionController extends BaseMesController<MesPartInspection> {
}

@ -0,0 +1,16 @@
package cn.estsh.i3plus.ext.mes.apiservice.controller.base;
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.pojo.mes.bean.MesPullingOrderInfo;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
*
*/
@Api("拉动单")
@RestController
@RequestMapping(MesCommonConstant.MES_YANFEN + "/mesPullingOrderInfo")
public class MesPullingOrderInfoController extends BaseMesController<MesPullingOrderInfo> {
}

@ -0,0 +1,18 @@
package cn.estsh.i3plus.ext.mes.apiservice.controller.base;
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.pojo.mes.bean.MesPullingOrderInfo;
import cn.estsh.i3plus.pojo.mes.bean.MesPullingOrderPartInfo;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
*
*/
@Api("拉动单")
@RestController
@RequestMapping(MesCommonConstant.MES_YANFEN + "/mesPullingOrderPartInfo")
public class MesPullingOrderPartInfoController extends BaseMesController<MesPullingOrderPartInfo> {
}

@ -76,6 +76,8 @@ public class MesWhiteListController extends MesBaseController {
private MesEquipmentRepository mesEquipmentRDao;
@Autowired
private IMesPullingOrderInfoService pullingOrderInfoService;
@Autowired
private IMesDowntimeRecordService downtimeRecordService;
@PostMapping(value = "/meter/main-data")
@ApiOperation(value = "Maximo仪表主数据", notes = "Maximo仪表主数据")
@ -277,4 +279,17 @@ public class MesWhiteListController extends MesBaseController {
}
return ResultBean.success("执行成功");
}
@GetMapping(value = "/doCreatePullOrder")
@ApiOperation(value = "根据拉动组和生产工单产生拉动单")
public ResultBean doCreatePullOrder(String organizeCode, String equ) {
//统计数据
try {
pullingOrderInfoService.doCreatePullOrderByPullGroupAndWorkOrder(organizeCode,"test");
} catch (ImppBusiException imppException) {
return ResultBean.fail(imppException);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
return ResultBean.success("执行成功");
}
}

@ -0,0 +1,71 @@
package cn.estsh.i3plus.ext.mes.apiservice.schedulejob;
import cn.estsh.i3plus.ext.mes.api.base.IMesConfigService;
import cn.estsh.i3plus.ext.mes.api.base.IMesPullingOrderInfoService;
import cn.estsh.i3plus.mes.apiservice.schedulejob.BaseMesScheduleJob;
import cn.estsh.impp.framework.boot.init.ApplicationProperties;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.JobExecutionContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import java.util.List;
/**
* @Description : JOB
* @Reference :
* @Author : gsz
* @CreateDate 2024/9/4 10:01
* @Modify:
**/
// 禁止 JOB 并发执行
@DisallowConcurrentExecution
@ApiOperation("根据拉动组和生产工单产生拉动单JOB")
public class MesCreatePullOrderByPullGroupAndWorkOrderJob extends BaseMesScheduleJob {
public static final Logger LOGGER = LoggerFactory.getLogger(MesCreatePullOrderByPullGroupAndWorkOrderJob.class);
private static final long serialVersionUID = -321526601595924818L;
@Autowired
private IMesPullingOrderInfoService pullingOrderInfoService;
@Autowired
private IMesConfigService mesConfigService;
@Value("${server.port}")
private String serverPort;
@Value("${impp.server.ip}")
private String ip;
public MesCreatePullOrderByPullGroupAndWorkOrderJob() {
super(MesCreatePullOrderByPullGroupAndWorkOrderJob.class, "根据拉动组和生产工单产生拉动单JOB");
this.setMultiInstance(true);
}
@Override
public void executeMesJob(JobExecutionContext context, ApplicationProperties applicationProperties) {
try {
String jobParam = this.getJobParam();
if (StringUtils.isBlank(jobParam)) {
throw new IllegalArgumentException("job参数为空请检查参数");
}
String[] organizeCodeList = jobParam.split(",");
LOGGER.info("根据拉动组和生产工单产生拉动单JOB开始 -----start");
String userName = "CreatePullOrderJob";
for (String organizeCode : organizeCodeList) {
pullingOrderInfoService.doCreatePullOrderByPullGroupAndWorkOrder(organizeCode,userName);
}
LOGGER.info("根据拉动组和生产工单产生拉动单JOB开始结束 ----- end");
} catch (Exception e) {
LOGGER.error("根据拉动组和生产工单产生拉动单JOB任务结束e:{}", e.toString());
}
}
}

@ -95,6 +95,7 @@ public class MesEquipmentVariableService extends BaseMesService<MesEquipmentVari
mesEquipmentVariable.setEquipmentCode(mesEquipment.getEquipmentCode());
mesEquipmentVariable.setTagName(String.valueOf(objectMap.get("Tag Name")));
mesEquipmentVariable.setTagAddress(String.valueOf(objectMap.get("Address")));
mesEquipmentVariable.setCode(String.valueOf(objectMap.get("Address")));
if ("R/W".equals(objectMap.get("Client Access").toString())) {
mesEquipmentVariable.setReadWriteFlag(MesExtEnumUtil.READ_WRITE_FLAG.READ_WRITE.getValue());
} else if ("RO".equals(objectMap.get("Client Access").toString())) {

@ -1,12 +1,25 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesLabelTemplateService;
import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords;
import cn.estsh.i3plus.platform.common.util.MesPcnConstWords;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.common.PagerHelper;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.MesLabelTemplate;
import cn.estsh.i3plus.pojo.mes.bean.MesLabelTemplateParam;
import cn.estsh.i3plus.pojo.mes.bean.MesSpotCheckOrder;
import cn.estsh.i3plus.pojo.mes.repository.MesLabelTemplateParamRepository;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.util.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @Description :
* @Reference :
@ -18,6 +31,8 @@ import org.springframework.stereotype.Service;
@Slf4j
public class MesLabelTemplateServiceImpl extends BaseMesService<MesLabelTemplate> implements IMesLabelTemplateService {
@Autowired
private MesLabelTemplateParamRepository mesLabelTemplateParamRDao;
@Override
protected void setPackQueryBean(MesLabelTemplate bean, DdlPackBean packBean) {
@ -25,4 +40,27 @@ public class MesLabelTemplateServiceImpl extends BaseMesService<MesLabelTemplate
DdlPreparedPack.getStringLikerPack(bean.getTemplateName(), "templateName", packBean);
}
@Override
public ListPager queryMesLabelTemplateAndParamListByPager(MesLabelTemplate labelTemplate, Pager pager) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(labelTemplate.getOrganizeCode());
DdlPreparedPack.getStringLikerPack(labelTemplate.getTemplateCode(), "templateCode", packBean);
pager = PagerHelper.getPager(pager, baseRDao.findByHqlWhereCount(packBean));
List<MesLabelTemplate> resultList = baseRDao.findByHqlWherePage(packBean, pager);
if (!CollectionUtils.isEmpty(resultList)){
for (MesLabelTemplate mesLabelTemplate : resultList) {
// 根据模板代码查询模板参数信息
List<MesLabelTemplateParam> templateParamList = mesLabelTemplateParamRDao.findByProperty(
new String[]{"templateCode", MesPcnConstWords.IS_VALID, MesPcnConstWords.IS_DELETED, MesExtConstWords.ORGANIZE_CODE},
new Object[]{mesLabelTemplate.getTemplateCode(), CommonEnumUtil.IS_VAILD.VAILD.getValue(),
CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),labelTemplate.getOrganizeCode()});
if (!CollectionUtils.isEmpty(templateParamList)) {
mesLabelTemplate.setLabelTemplateParamList(templateParamList);
}
}
}
return new ListPager<>(resultList, pager);
}
}

@ -1,13 +1,25 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesPackingDefineService;
import cn.estsh.i3plus.ext.mes.apiservice.utils.BeanMapUtilsExt;
import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException;
import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.MesCustomer;
import cn.estsh.i3plus.pojo.mes.bean.MesPackingDefine;
import cn.estsh.i3plus.pojo.mes.repository.MesCustomerRepository;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @Description :
@ -20,6 +32,25 @@ import org.springframework.stereotype.Service;
@Slf4j
public class MesPackingDefineServiceImpl extends BaseMesService<MesPackingDefine> implements IMesPackingDefineService {
@Autowired
private MesCustomerRepository customerRepository;
@Override
public void setBeanModel(List<MesPackingDefine> list) {
if(CollectionUtils.isEmpty(list)){
return;
}
List<String> custCodeList = list.stream().filter(o -> !StringUtils.isEmpty(o.getCustCode())).map(MesPackingDefine::getCustCode).filter(t -> !StringUtils.isEmpty(t)).distinct().collect(Collectors.toList());
Map<String, MesCustomer> beanMap = CollectionUtils.isEmpty(custCodeList) ? new HashMap<>() : BeanMapUtilsExt.getBeanMap(customerRepository, MesExtConstWords.CUST_CODE, list.iterator().next().getOrganizeCode(), custCodeList);
if(!CollectionUtils.isEmpty(beanMap)){
list.forEach(t->{
if (!StringUtils.isEmpty(t.getCustCode()) && beanMap.containsKey(t.getCustCode())) {
t.setCustName(beanMap.get(t.getCustCode()).getCustName());
}
});
}
}
@Override
protected void setPackQueryBean(MesPackingDefine bean, DdlPackBean packBean) {
DdlPreparedPack.getStringEqualPack(bean.getPackCode(), "packCode", packBean);

@ -0,0 +1,31 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesPartInspectionService;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.nc.MesPartInspection;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
@Service
@Slf4j
public class MesPartInspectionService extends BaseMesService<MesPartInspection> implements IMesPartInspectionService {
@Override
protected void setPackQueryBean(MesPartInspection bean, DdlPackBean packBean) {
DdlPreparedPack.getStringEqualPack(bean.getSn(), "sn", packBean);
DdlPreparedPack.getStringLikerPack(bean.getPartNo(), "partNo", packBean);
DdlPreparedPack.getStringLikerPack(bean.getPartName(), "partName", packBean);
DdlPreparedPack.getStringLikerPack(bean.getWorkCenterCode(), "workCenterCode", packBean);
DdlPreparedPack.getNumEqualPack(bean.getNcStatus(), "ncStatus", packBean);
if (StringUtils.isNotBlank(bean.getCreateDateTimeStart()) && StringUtils.isNotBlank(bean.getCreateDateTimeEnd())) {
DdlPreparedPack.timeBuilder(bean.getCreateDateTimeStart(), bean.getCreateDateTimeEnd(), "createDatetime", packBean, true);
}
if (StringUtils.isNotBlank(bean.getModifyDateTimeStart()) && StringUtils.isNotBlank(bean.getModifyDateTimeEnd())) {
DdlPreparedPack.timeBuilder(bean.getModifyDateTimeStart(), bean.getModifyDateTimeEnd(), "modifyDatetime", packBean, true);
}
// DdlPreparedPack.getStringLikerPack(bean.getInspectionDate(), "inspectionDate", packBean);
}
}

@ -5,6 +5,7 @@ import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.base.util.StringUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesPartPullDetail;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
@ -16,7 +17,51 @@ import java.util.List;
@Service
@Slf4j
public class MesPartPullDetailService extends BaseMesService<MesPartPullDetail> implements IMesPartPullDetailService {
@Override
protected void onInsertBean(MesPartPullDetail item) {
// 数据校验
ValidatorBean.checkNotNull(item.getOrganizeCode(), "工厂号不能为空");
//43112 MES:PC拉动单页面问题 6.同一拉动组-根据工位代码&零件号做唯一校验
if (!StringUtil.isEmpty(item.getWorkCellCode())&&!StringUtil.isEmpty(item.getPartNo())){
DdlPackBean partPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(item.getPullCode(), "pullCode", partPackBean);
DdlPreparedPack.getStringEqualPack(item.getPartNo(), "partNo", partPackBean);
DdlPreparedPack.getStringEqualPack(item.getWorkCellCode(), "workCellCode", partPackBean);
boolean flg = baseRDao.isExitByHql(partPackBean);
if (flg) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("拉动组【%s】零件号【%s】工位【%s】已经存在请检查数据",
item.getPullCode(), item.getPartNo(), item.getWorkCellCode())
.build();
}
}
}
@Override
protected void onUpdateBean(MesPartPullDetail item) {
// 数据校验
ValidatorBean.checkNotNull(item.getOrganizeCode(), "工厂号不能为空");
// ValidatorBean.checkNotNull(item.getPartNo(), "零件号不能为空");
//同一拉动组-根据工位代码&零件号做唯一校验
if (!StringUtil.isEmpty(item.getWorkCellCode())&&!StringUtil.isEmpty(item.getPartNo())){
DdlPackBean partPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(item.getPullCode(), "pullCode", partPackBean);
DdlPreparedPack.getStringEqualPack(item.getPartNo(), "partNo", partPackBean);
DdlPreparedPack.getStringEqualPack(item.getWorkCellCode(), "workCellCode", partPackBean);
boolean flg = baseRDao.isExitByHql(partPackBean);
if (flg) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("拉动组【%s】零件号【%s】工位【%s】已经存在请检查数据",
item.getPullCode(), item.getPartNo(), item.getWorkCellCode())
.build();
}
}
}
protected void setPackQueryBean(MesPartPullDetail bean, DdlPackBean packBean) {
DdlPreparedPack.getStringLikerPack(bean.getPullCode(), "pullCode", packBean);
DdlPreparedPack.getStringLikerPack(bean.getWorkCellCode(), "workCellCode", packBean);

@ -2,38 +2,65 @@ package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesPartPullService;
import cn.estsh.i3plus.ext.mes.api.base.IMesPullingOrderInfoService;
import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException;
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords;
import cn.estsh.i3plus.icloud.core.sdk.ICoreUtilCloud;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
import cn.estsh.i3plus.platform.common.util.WmsConstWords;
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.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.base.util.StringUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesPartPull;
import cn.estsh.i3plus.pojo.mes.bean.MesPullingOrderInfo;
import cn.estsh.i3plus.pojo.mes.repository.MesPullingOrderPartInfoRepository;
import cn.estsh.i3plus.pojo.mes.bean.*;
import cn.estsh.i3plus.pojo.mes.repository.*;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.util.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
@Service
@Slf4j
public class MesPullingOrderInfoService extends BaseMesService<MesPullingOrderInfo> implements IMesPullingOrderInfoService {
public static final Logger LOGGER = LoggerFactory.getLogger(MesPullingOrderInfoService.class);
@Autowired
private MesPullingOrderInfoRepository mesPullingOrderInfoRepository;
@Autowired
private MesPullingOrderPartInfoRepository mesPullingOrderPartInfoRepository;
@Autowired
private MesPartPullRepository mesPartPullRDao;
@Autowired
private MesPartPullDetailRepository mesPartPullDetailRDao;
@Autowired
private MesWorkOrderPartRepository workOrderPartRepository;
@Autowired
private MesWorkOrderRepository mesWorkOrderRepository;
@Autowired
private ICoreUtilCloud sysOrderNoRuleCloud;
@Autowired
private MesWorkCenterRepository mesWorkCenterRepository;
@Autowired
private MesPullingOrderExtendsRepository mesPullingOrderExtendsRepository;
protected void setPackQueryBean(MesPullingOrderInfo bean, DdlPackBean packBean) {
DdlPreparedPack.getStringEqualPack(bean.getPullCode(), "pullCode", packBean);
DdlPreparedPack.getStringEqualPack(bean.getPullingOrderNo(), "pullingOrderNo", packBean);
DdlPreparedPack.getStringEqualPack(bean.getWorkCenterCode(), "workCenterCode", packBean);
DdlPreparedPack.getNumEqualPack(bean.getPullOrderType(), "pullOrderType", packBean);
DdlPreparedPack.getNumEqualPack(bean.getPrintStatus(), "printStatus", packBean);
DdlPreparedPack.getNumEqualPack(bean.getPullOrderStatus(), "pullOrderStatus", packBean);
DdlPreparedPack.getStringEqualPack(bean.getWorkOrderNo(), "workOrderNo", packBean);
DdlPreparedPack.getStringLikerPack(bean.getPartNo(), "partNo", packBean);
}
@ -63,6 +90,175 @@ public class MesPullingOrderInfoService extends BaseMesService<MesPullingOrderIn
}
@Override
public void doCreatePullOrderByPullGroupAndWorkOrder(String organizeCode, String userName) {
//1.拉动组集合+拉动组明细集合pullingGroupList+ pullingpartlist
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
List<MesPartPull> pulliGroupList = mesPartPullRDao.findByHqlWhere(ddlPackBean);
if (CollectionUtils.isEmpty(pulliGroupList)) {
LOGGER.info("根据拉动组和生产工单产生拉动单JOB-->{}拉动组不存在", organizeCode);
return;
}
Map<String, List<MesPartPull>> pullCodeMap = pulliGroupList.stream().collect(Collectors.groupingBy(MesPartPull::getPullCode));
DdlPackBean ddlPackBeanDetail = DdlPackBean.getDdlPackBean(organizeCode);
List<MesPartPullDetail> pullDetailList = mesPartPullDetailRDao.findByHqlWhere(ddlPackBeanDetail);
if (CollectionUtils.isEmpty(pullDetailList)) {
LOGGER.info("根据拉动组和生产工单产生拉动单JOB-->{}拉动组明细不存在", organizeCode);
return;
}
Map<String, List<MesPartPullDetail>> partPullDetailListMap = pullDetailList.stream().collect(Collectors.groupingBy(MesPartPullDetail::getPartNo));
//2.客户物料集合 [PART_NO] in 拉动组明细物料集合
//3.产线数据
DdlPackBean workPackBean = DdlPackBean.getDdlPackBean(organizeCode);
List<String> workCenterList = pulliGroupList.stream().map(MesPartPull::getWorkCenterCode).collect(Collectors.toList());
DdlPreparedPack.getInPackList(workCenterList, "workCenterCode", workPackBean);
List<MesWorkCenter> mesWorkCenterList = mesWorkCenterRepository.findByHqlWhere(workPackBean);
if (CollectionUtils.isEmpty(mesWorkCenterList)) {
LOGGER.info("根据拉动组和生产工单产生拉动单JOB-->工厂号{},拉动组对应产线信息不存在-->{}", organizeCode, workCenterList);
return;
}
Map<String, List<MesWorkCenter>> workCenterListMap = mesWorkCenterList.stream().collect(Collectors.groupingBy(MesWorkCenter::getWorkCenterCode));
//4.生产工单 在加工状态 [PULLING_STATUS] =0 未创建
DdlPackBean packBeanWorkOrder = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getInPackList(workCenterList, "workCenterCode", packBeanWorkOrder);
DdlPreparedPack.getInPackList(Arrays.asList(MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue(),MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue()), "workOrderStatus", packBeanWorkOrder);
DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.WORK_ORDER_PULLING_STATUS.NOTCREATE.getValue(), "pullingStatus", packBeanWorkOrder);
List<MesWorkOrder> workOrderList = mesWorkOrderRepository.findByHqlWhere(packBeanWorkOrder);
if (CollectionUtils.isEmpty(workOrderList)) {
LOGGER.info("根据拉动组和生产工单产生拉动单JOB-->工厂号{},产线信息没有【未创建】【在加工】状态的工单-->{}", organizeCode, workCenterList);
return;
}
Map<String, List<MesWorkOrder>> workOrderListMap = workOrderList.stream().collect(Collectors.groupingBy(MesWorkOrder::getWorkOrderNo));
DdlPackBean packBeanWorkOrderPart = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getInPackList(workOrderList.stream().map(MesWorkOrder::getWorkOrderNo).collect(Collectors.toList()), "workOrderNo", workPackBean);
List<MesWorkOrderPart> mesWorkOrderPartList = workOrderPartRepository.findByHqlWhere(packBeanWorkOrderPart);
if (CollectionUtils.isEmpty(mesWorkOrderPartList)) {
LOGGER.info("根据拉动组和生产工单产生拉动单JOB-->工厂号{},产线对应的工单对应工单零件不存在-->{}", organizeCode, workCenterList);
return;
}
//5.取工单零件和拉动组交集,根据拉动主表对应的类型 生成相应的拉动单和拉动单明细
Map<String, List<MesWorkOrderPart>> workOrderNoListMap = mesWorkOrderPartList.stream().collect(Collectors.groupingBy(MesWorkOrderPart::getWorkOrderNo));
for (Map.Entry<String, List<MesWorkOrderPart>> stringListEntry : workOrderNoListMap.entrySet()) {
//需要生成拉动单的工单号 对应工单
List<MesWorkOrder> mesWorkOrders = workOrderListMap.get(stringListEntry.getKey());
MesWorkOrder mesWorkOrder = mesWorkOrders.get(0);
//工单对应的工单零件号
List<MesWorkOrderPart> workOrderParts = stringListEntry.getValue();
//待生成的拉动组明细
List<MesPartPullDetail> pullDetailListNew = new ArrayList<>();
for (MesWorkOrderPart workOrderPart : workOrderParts) {
if (!CollectionUtils.isEmpty(partPullDetailListMap.get(workOrderPart.getPartNo()))) {
pullDetailListNew.addAll(partPullDetailListMap.get(workOrderPart.getPartNo()));
}
}
if (CollectionUtils.isEmpty(pullDetailListNew)) {
LOGGER.info("根据拉动组和生产工单产生拉动单JOB-->工厂号{},产线-->{}对应的工单号-->{}没有需要生成拉动单零件",
organizeCode, mesWorkOrder.getWorkCenterCode(), mesWorkOrder.getWorkOrderNo());
continue;
}
Map<String, List<MesWorkOrderPart>> workOrderPartListMap = workOrderParts.stream().collect(Collectors.groupingBy(MesWorkOrderPart::getPartNo));
//生成拉动单 如果是多个拉动组的话都要产生拉动单
Map<String, List<MesPartPullDetail>> pullCodeListMap = pullDetailListNew.stream().collect(Collectors.groupingBy(MesPartPullDetail::getPullCode));
for (Map.Entry<String, List<MesPartPullDetail>> stringListEntryDetail : pullCodeListMap.entrySet()) {
String pullCode = stringListEntryDetail.getKey();
List<MesPartPull> mesPartPulls = pullCodeMap.get(pullCode);
MesPartPull mesPartPull = mesPartPulls.get(0);//拉动组明细拉动单号对应拉动组
List<MesPartPullDetail> mesPartPullDetails = stringListEntryDetail.getValue();
//调用平台生成拉动单号流水 -yyyyMMdd00001
String orderNo = "";
if (mesPartPull.getPullOrderType() == MesExtEnumUtil.PART_PULL_ORDER_TYPE.KITTING_PULL.getValue()) {
orderNo = "KITTING";
} else if (mesPartPull.getPullOrderType() == MesExtEnumUtil.PART_PULL_ORDER_TYPE.JIS_PULL.getValue()) {
orderNo = "JIS";
} else if (mesPartPull.getPullOrderType() == MesExtEnumUtil.PART_PULL_ORDER_TYPE.SPS_PULL.getValue()) {
orderNo = "SPS";
} else if (mesPartPull.getPullOrderType() == MesExtEnumUtil.PART_PULL_ORDER_TYPE.BENZ_PULL.getValue()) {
orderNo = "BENZ";
} else if (mesPartPull.getPullOrderType() == MesExtEnumUtil.PART_PULL_ORDER_TYPE.PICK_PULL.getValue()) {
orderNo = "PICK";
}
BaseResultBean<LinkedHashMap> orderResutlBean = sysOrderNoRuleCloud.getOrderNo(MesCommonConstant.MES_PULL_ORDER_NO);
if (orderResutlBean != null && orderResutlBean.isSuccess()) {
orderNo += orderResutlBean.getResultObject().get(WmsConstWords.CORE_ORDER_NO).toString();
} else {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.WMS.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode())
.setErrorDetail("生成单号失败")
.setErrorSolution("【MES_PULL_ORDER_NO】请重新操作或查看服务")
.build();
}
MesPullingOrderInfo pullingOrder = new MesPullingOrderInfo();
pullingOrder.setOrganizeCode(organizeCode);
pullingOrder.setPullingOrderNo(orderNo);
pullingOrder.setPullOrderType(mesPartPull.getPullOrderType());
pullingOrder.setPullGroupFid(mesPartPull.getId());
pullingOrder.setCustOrderNo(StringUtil.isEmpty(mesWorkOrder.getCustOrderNo()) ? "" : mesWorkOrder.getCustOrderNo());
pullingOrder.setWorkOrderNo(mesWorkOrder.getWorkOrderNo());
pullingOrder.setWorkOrderSeq(StringUtil.isEmpty(mesWorkOrder.getWorkOrderSeq()) ? "" : mesWorkOrder.getWorkOrderSeq());
pullingOrder.setIsPrint(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
pullingOrder.setPrintStatus(MesExtEnumUtil.PRINT_STATUS.UNPRINT.getValue());
pullingOrder.setPullOrderStatus(MesExtEnumUtil.PULL_ORDER_STATUS.KITTING_PULL.getValue());
pullingOrder.setWorkCenterCode(mesPartPull.getWorkCenterCode());
pullingOrder.setPullCode(mesPartPull.getPullCode());
pullingOrder.setPartNo(mesWorkOrder.getPartNo());
pullingOrder.setPartName(mesWorkOrder.getPartName());
pullingOrder.setCustPartNo(mesWorkOrder.getCustPartNo());
pullingOrder.setProduceSeq(StringUtil.isEmpty(mesWorkOrder.getProduceSeq()) ? 0 : mesWorkOrder.getProduceSeq());
ConvertBean.serviceModelInitialize(pullingOrder, userName);
mesPullingOrderInfoRepository.insert(pullingOrder);
for (MesPartPullDetail partInfo : mesPartPullDetails) {
MesPullingOrderPartInfo pullingOrderPartInfo = new MesPullingOrderPartInfo();
pullingOrderPartInfo.setOrganizeCode(organizeCode);
pullingOrderPartInfo.setPullCode(partInfo.getPullCode());
pullingOrderPartInfo.setPullingOrderNo(pullingOrder.getPullingOrderNo());
pullingOrderPartInfo.setWorkOrderNo(pullingOrder.getWorkOrderNo());
pullingOrderPartInfo.setWorkOrderSeq(pullingOrder.getWorkOrderSeq());
pullingOrderPartInfo.setCustOrderNo(pullingOrder.getCustOrderNo());
pullingOrderPartInfo.setPartNo(partInfo.getPartNo());
pullingOrderPartInfo.setPartName(partInfo.getPartName());
MesWorkOrderPart mesWorkOrderPart = workOrderPartListMap.get(partInfo.getPartNo()).get(0);
pullingOrderPartInfo.setPullQty(mesWorkOrderPart.getItemQty());
pullingOrderPartInfo.setCustOrderNo(pullingOrder.getCustOrderNo());
pullingOrderPartInfo.setWorkOrderSeq(pullingOrder.getWorkOrderSeq());
pullingOrderPartInfo.setWaterSeq(pullingOrder.getProduceSeq());
pullingOrderPartInfo.setWorkCellCode(mesWorkOrderPart.getWorkCellCode());
pullingOrderPartInfo.setEquipment(partInfo.getEquipment());
pullingOrderPartInfo.setLocation(partInfo.getPullAddr());//todo
pullingOrderPartInfo.setStatus(MesExtEnumUtil.PULL_ORDER_PART_STATUS.UN_SENTED.getValue());///明细已送料为1未送料为0
pullingOrderPartInfo.setCustPartNo(pullingOrder.getCustPartNo());
ConvertBean.serviceModelInitialize(pullingOrderPartInfo, userName);
mesPullingOrderPartInfoRepository.insert(pullingOrderPartInfo);
}
//7.拉动组+加工单号+生成拉动单状态的对应关系中间表,每次新增都要记录
MesPullingOrderExtends mesPullingOrderExtends= new MesPullingOrderExtends();
mesPullingOrderExtends.setOrganizeCode(organizeCode);
mesPullingOrderExtends.setPullCode(pullingOrder.getPullCode());
mesPullingOrderExtends.setPullingOrderNo(pullingOrder.getPullingOrderNo());
mesPullingOrderExtends.setWorkOrderNo(pullingOrder.getWorkOrderNo());
mesPullingOrderExtends.setPullOrderStatus(pullingOrder.getPullOrderStatus());
ConvertBean.serviceModelInitialize(mesPullingOrderExtends, userName);
mesPullingOrderExtendsRepository.insert(mesPullingOrderExtends);
}
//6.产生拉动单后更新工单拉动状态为已拉动
mesWorkOrder.setPullingStatus(MesExtEnumUtil.WORK_ORDER_PULLING_STATUS.SUBMIT.getValue());
mesWorkOrderRepository.update(mesWorkOrder);
}
}
@Override
public Map doSPSForEquipment(String assemblyLine, String pullingGroupCode, String organizeCode) {
Map resultMap = new HashMap();
//查询拉动单状态为已扫描=20的 拉动单

@ -89,6 +89,11 @@ public class MesWorkOrderCutService extends BaseMesService<MesWorkOrderCut> impl
Map<String, List<MesWorkOrder>> workOrderListMapByPartNo = workOrderList.stream().collect(Collectors.groupingBy(MesWorkOrder::getPartNo));
MesCutScheme cutScheme = getCutScheme(cutCode, organizeCode);
if (cutScheme == null)
MesException.throwMesBusiException("裁片方案【%s】无效", cutCode);
List<MesCutSchemeMaterial> cutSchemeMaterialList = getCutSchemeMaterialList(cutCode, organizeCode);
if (CollectionUtils.isEmpty(cutSchemeMaterialList)) MesException.throwMesBusiException("裁片方案【%s】缺少原材料配置", cutCode);
@ -116,9 +121,12 @@ public class MesWorkOrderCutService extends BaseMesService<MesWorkOrderCut> impl
MesWorkOrder workOrder = workOrders.get(0);
if (cutSchemeFg.getQty().compareTo(workOrder.getUnCompleteQty()) > 0) {
MesException.throwMesBusiException("零件号【%s】工单未完成数量【%s】不满足产成总数【%s】", cutSchemeFg.getPartNo(), workOrder.getUnCompleteQty(), cutSchemeFg.getQty());
}
if (!workOrder.getWorkCenterCode().equals(cutScheme.getWorkCenterCode()))
MesException.throwMesBusiException("工单【%s】关联产线【%】与裁片方案【%】关联产线不一致!", workOrder.getWorkCenterCode(), cutScheme.getWorkCenterCode());
if (cutSchemeFg.getQty().compareTo(workOrder.getUnCompleteQty()) > 0)
MesException.throwMesBusiException("零件号【%s】工单未完成数量【%s】不满足产成总数【%s】",
cutSchemeFg.getPartNo(), workOrder.getUnCompleteQty(), cutSchemeFg.getQty());
Double unCompleteQty = workOrder.getUnCompleteQty();
@ -136,15 +144,18 @@ public class MesWorkOrderCutService extends BaseMesService<MesWorkOrderCut> impl
}
MesCutScheme cutScheme = getCutScheme(cutCode, organizeCode);
MesWorkOrderCut workOrderCut = new MesWorkOrderCut();
ConvertBean.serviceModelInitialize(workOrderCut, userName);
workOrderCut.setCutCode(cutScheme.getCutCode());
workOrderCut.setCutName(cutScheme.getCutName());
workOrderCut.setWorkOrderStatus(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() == cutScheme.getIsAutoRelease() ? MesExtEnumUtil.CUT_ORDER_STATUS.RELEASED.getValue() : MesExtEnumUtil.CUT_ORDER_STATUS.CREATE.getValue());
workOrderCut.setRemark(remark);
workOrderCut.setCutWorkOrderNo(doGenerateSerialNo(cutScheme.getCutCode(), organizeCode, userName));
String cutWorkOrderNo = doGenerateSerialNo(cutScheme.getCutCode(), organizeCode, userName);
log.info("裁片工单号:{}", cutWorkOrderNo);
workOrderCut.setCutWorkOrderNo(cutWorkOrderNo);
workOrderCut.setOrganizeCode(organizeCode);
workOrderCutDetailtList.forEach(o-> o.setCutWorkOrderNo(workOrderCut.getCutWorkOrderNo()));
@ -191,6 +202,8 @@ public class MesWorkOrderCutService extends BaseMesService<MesWorkOrderCut> impl
if (workOrderCutDb.getWorkOrderStatus() != MesExtEnumUtil.CUT_ORDER_STATUS.CREATE.getValue()) MesException.throwMesBusiException("裁片工单【%】状态不为【%s】,当前状态为【%s】", cutWorkOrderNo, MesExtEnumUtil.CUT_ORDER_STATUS.RELEASED.getValue(), MesExtEnumUtil.CUT_ORDER_STATUS.valueOfDescription(workOrderCutDb.getWorkOrderStatus()));
workOrderCuts.add(workOrderCutDb);
}
for (MesWorkOrderCut workOrderCut : workOrderCuts) {
@ -201,6 +214,27 @@ public class MesWorkOrderCutService extends BaseMesService<MesWorkOrderCut> impl
workOrderCutRepository.saveAll(workOrderCuts);
}
@Override
public void doPrintCutWorkOrder(List<String> cutWorkOrderNos, String organizeCode, String userName) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getInPackList(cutWorkOrderNos, MesExtConstWords.CUT_WORK_ORDER_NO, packBean);
List<MesWorkOrderCut> workOrderCutDbList = workOrderCutRepository.findByHqlWhere(packBean);
List<String> cutWorkOrderNoDbList = workOrderCutDbList.stream().map(MesWorkOrderCut::getCutWorkOrderNo).collect(Collectors.toList());
if (CollectionUtils.isEmpty(cutWorkOrderNoDbList)) MesException.throwMesBusiException("裁片工单不存在");
cutWorkOrderNos.removeAll(cutWorkOrderNoDbList);
if (!CollectionUtils.isEmpty(cutWorkOrderNos))
MesException.throwMesBusiException("裁片工单【%s】不存在", cutWorkOrderNos);
List<String> cutCode = workOrderCutDbList.stream().map(MesWorkOrderCut::getCutCode).distinct().collect(Collectors.toList());
}
private String doGenerateSerialNo(String cutCode, String organizeCode, String userName) {
return syncFuncService.syncSerialNo(
new GenSerialNoModel(MesExtConstWords.CUT_WORK_ORDER_NO_FUL).dynamicRule(cutCode).year(TimeTool.pareDateToString(MesExtConstWords.DATE_FORMAT_YY, new Date())).organizeCode(organizeCode),

@ -224,7 +224,9 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
DdlPreparedPack.getStringLikerPack(bean.getPartNo(), "partNo", packBean);
DdlPreparedPack.getStringEqualPack(bean.getCustPartNo(), "custPartNo", packBean);
DdlPreparedPack.getStringLikerPack(bean.getWorkCenterCode(), "workCenterCode", packBean);
DdlPreparedPack.getNumEqualPack(bean.getWorkOrderStatus(), "workOrderStatus", packBean);
if (StringUtil.isEmpty(bean.getWorkOrderStatusQuery())) {
DdlPreparedPack.getInPackList(Arrays.asList(bean.getWorkOrderStatusQuery().split(MesExtConstWords.COMMA)), "workOrderStatus", packBean);
} else DdlPreparedPack.getNumEqualPack(bean.getWorkOrderStatus(), "workOrderStatus", packBean);
DdlPreparedPack.getNumEqualPack(bean.getWorkOrderType(), "workOrderType", packBean);
DdlPreparedPack.getStringBiggerPack(bean.getCreateDateTimeStart(), "createDatetime", packBean);
DdlPreparedPack.getStringSmallerPack(bean.getCreateDateTimeEnd(), "createDatetime", packBean);
@ -664,6 +666,10 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
}
item.setWorkCenterCode(mesWorkCenter.getWorkCenterCode());
item.setErpWorkCenter(mesWorkCenter.getErpWorkCenter());
//校验产线零件是否存在
if (!checkWorkCenterPartRelation(item.getWorkCenterCode(),item.getPartNo()) && (StringUtil.isEmpty(item.getOrderFlag()) || !MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(item.getOrderFlag()))){
MesException.throwMesBusiException(String.format("工单产线【%s】与工单零件【%s】没有维护产线零件关系",mesWorkCenter.getWorkCenterCode(),item.getPartNo()));
}
//获取客户物料信息
MesCustomerPart customerPart = null == mesCustomerPartMap ? null : mesCustomerPartMap.get(item.getPartNo());
if (!Objects.isNull(customerPart)) {
@ -1038,8 +1044,12 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
return;
}
log.info("关闭工单个数{},工单:{}",mesWorkOrderList.size(),mesWorkOrderList.stream().map(MesWorkOrder::getWorkOrderNo).collect(Collectors.toList()));
//查询自制件零件
List<String> partNoList = mesPartSapService.findMesPartSapByPartNoList(mesWorkOrderList.stream().map(MesWorkOrder::getPartNo).distinct().collect(Collectors.toList()), organizeCode).stream().filter(t -> t.getIsTestPiece() == CommonEnumUtil.FALSE).map(MesPartSap::getPartNo).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(partNoList)) {
//关闭工单回传
List<String> partNoAndDataKey = mesWorkOrderList.stream().map(t -> new StringJoiner(MesExtConstWords.COMMA).add(t.getPartNo()).add(t.getProductVersion()).add(t.getPlanStartTime().substring(0, 10)).toString()).distinct().collect(Collectors.toList());
List<String> partNoAndDataKey = mesWorkOrderList.stream().filter(t -> !MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(t.getOrderFlag()) && partNoList.contains(t.getPartNo())).map(t -> new StringJoiner(MesExtConstWords.COMMA).add(t.getPartNo()).add(t.getProductVersion()).add(t.getPlanStartTime().substring(0, 10)).toString()).distinct().collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(partNoAndDataKey)) {
List<MesWorkOrderToSap> mesWorkOrderToSapList = new ArrayList<>();
for (String partNoAndData : partNoAndDataKey) {
MesWorkOrderToSap orderToSap = new MesWorkOrderToSap(organizeCode, partNoAndData.split(MesExtConstWords.COMMA)[0], partNoAndData.split(MesExtConstWords.COMMA)[1], 0d, partNoAndData.split(MesExtConstWords.COMMA)[2]);
@ -1047,6 +1057,8 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
mesWorkOrderToSapList.add(orderToSap);
}
mesWorkOrderToSapRepository.saveAll(mesWorkOrderToSapList);
}
}
//关闭工单
baseRDao.updateByProperties(new String[]{"modifyUser", "modifyDatetime", "workOrderStatus","systemSyncStatus"},
new Object[]{userName, TimeTool.getNowTime(true), MesExtEnumUtil.ORDER_STATUS.CLOSE.getValue(),CommonEnumUtil.FALSE}, ddlPackBean);

@ -30,17 +30,9 @@ public class MesEquipmentLogDetailService extends BaseMesService<MesEquipmentLog
DdlPreparedPack.getStringEqualPack(new StringJoiner(MesExtConstWords.E_UNDERLINE).add(bean.getOrganizeCode()).add(bean.getEquipId().toString()).toString(), MesExtConstWords.ORG_EQUIP_ID, packBean);
// DdlPreparedPack.getNumEqualPack(bean.getEquipId(), MesExtConstWords.EQUIP_ID, packBean);
DdlPreparedPack.getNumEqualPack(bean.getVariableType(), MesExtConstWords.VARIABLE_TYPE, packBean);
if(!StringUtils.isEmpty(bean.getEquipVariableId().toString().contains(","))){
DdlPreparedPack.getInPackList(Arrays.asList(bean.getEquipVariableId().toString().split(",")), MesExtConstWords.EQUIP_VARIABLE_ID, packBean);
}else {
DdlPreparedPack.getNumEqualPack(bean.getEquipVariableId(), MesExtConstWords.EQUIP_VARIABLE_ID, packBean);
}
if(!StringUtils.isEmpty(bean.getEquipVariableName().contains(","))){
DdlPreparedPack.getInPackList(Arrays.asList(bean.getEquipVariableName().split(",")), MesExtConstWords.EQUIP_VARIABLE_NAME, packBean);
}else {
DdlPreparedPack.getStringLikerPack(bean.getEquipVariableName(), MesExtConstWords.EQUIP_VARIABLE_NAME, packBean);
}
// DdlPreparedPack.getStringEqualPack(bean.getEquipmentCode(), MesExtConstWords.EQUIPMENT_CODE, packBean);
DdlPreparedPack.getStringLikerPack(bean.getEquipVariableName(), MesExtConstWords.EQUIP_VARIABLE_NAME, packBean);
DdlPreparedPack.timeBuilder(bean.getCreateDateTimeStart(), bean.getCreateDateTimeEnd(), MesExtConstWords.CREATE_DATE_TIME, packBean, true);
DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{MesExtConstWords.CREATE_DATE_TIME}, packBean);
}

@ -30,7 +30,11 @@ public class CsvImportUtil {
for (CsvRow row : read.getRows()) {
Map<String, Object> map = new HashMap<>();
for (int i = 0; i < row.size(); i++) {
map.put(read.getHeader().get(i), row.get(i));
String key = read.getHeader().get(i);
if (key.startsWith("\ufeff")) {
key = key.substring(1);
}
map.put(key, row.get(i));
}
mapList.add(map);
}

@ -58,4 +58,5 @@ public class MesCommonConstant {
public static final String CLIENT_HANDLE_ID = "CLIENT_HANDLE_ID";
public static final String QC_ORDER_PRINT_TEMPLATE = "QC_ORDER_PRINT_TEMPLATE";
public static final String MES_PULL_ORDER_NO = "MES_PULL_ORDER_NO";
}

@ -257,4 +257,9 @@ public class MesExtConstWords {
// 条码
public static final String SN = "sn";
// 打印状态
public static final String PRINT_STATUS = "printStatus";
//客户编码
public static final String CUST_CODE = "custCode";
}

Loading…
Cancel
Save