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

tags/yfai-mes-ext-v2.3
臧学普 7 months ago
commit c838de8675

@ -4,6 +4,7 @@ import cn.estsh.i3plus.ext.mes.pojo.model.MesLoadingListDetailModel;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.mes.bean.shipping.MesLoadingListDetail;
import io.swagger.annotations.ApiOperation;
/**
* @Description:
@ -14,4 +15,7 @@ public interface IMesLoadingListDetailService extends IBaseMesService<MesLoading
ListPager<MesLoadingListDetailModel> queryLoadingListDetail(MesLoadingListDetail detail, Pager pager);
@ApiOperation("根据发运单号查询装车单明细信息")
MesLoadingListDetail getMesLoadingListDetail(String organizeCode,String shippingCode);
}

@ -1,6 +1,7 @@
package cn.estsh.i3plus.ext.mes.api.base;
import cn.estsh.i3plus.pojo.mes.bean.shipping.MesLoadingList;
import io.swagger.annotations.ApiOperation;
/**
* @Description:
@ -9,5 +10,7 @@ import cn.estsh.i3plus.pojo.mes.bean.shipping.MesLoadingList;
*/
public interface IMesLoadingListService extends IBaseMesService<MesLoadingList> {
@ApiOperation("根据发运单号查询装车单信息")
MesLoadingList getMesLoadingListByShippingCode(String organizeCode, String shippingCode);
}

@ -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.nc.MesPartInspection;
/**
@ -10,4 +12,5 @@ import cn.estsh.i3plus.pojo.mes.bean.nc.MesPartInspection;
public interface IMesPartInspectionService extends IBaseMesService<MesPartInspection> {
ListPager queryMesPartInspectionParamByPager(MesPartInspection mesPartInspection, Pager pager);
}

@ -4,6 +4,8 @@ import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.mes.bean.MesProductionRecord;
import cn.estsh.i3plus.pojo.mes.model.MesProductionRecordModel;
import cn.estsh.i3plus.pojo.mes.model.report.MesProductAccountModel;
import cn.estsh.i3plus.pojo.mes.model.report.MesProductAccountResModel;
import io.swagger.annotations.ApiOperation;
import java.util.List;
@ -24,4 +26,13 @@ public interface IMesProductionRecordService extends IBaseMesService<MesProducti
@ApiOperation(value = "线边库存报表")
ListPager<MesProductionRecordModel> queryMesProductionOffLine(MesProductionRecordModel mesProductionRecordModel,Pager pager);
@ApiOperation(value = "线边库存报表")
ListPager<MesProductAccountResModel> queryProductAccount(MesProductAccountModel productAccountModel, Pager pager);
@ApiOperation(value = "线边库存报表")
List<MesProductAccountResModel> queryProductAccount(MesProductAccountModel productAccountModel);
@ApiOperation(value = "线边库存报表")
List<MesProductAccountResModel> transferAccount(List<MesProductAccountResModel> list,MesProductAccountModel productAccountModel, Pager pager);
}

@ -1,6 +1,9 @@
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.MesWorkOrderCut;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderCutDetail;
import io.swagger.annotations.ApiOperation;
import java.util.List;
@ -17,6 +20,12 @@ public interface IMesWorkOrderCutService extends IBaseMesService<MesWorkOrderCut
void doGenerateCutWorkOrder(List<Long> workOrderIds, String cutCode, String remark, String organizeCode,
String userName, Integer editionNumber);
@ApiOperation("分页查询裁片工单明细")
ListPager<MesWorkOrderCutDetail> queryWorkOrderCutDetailByPager(MesWorkOrderCutDetail workOrderCutDetail, Pager pager);
//@ApiOperation("分页查询裁片工单明细")
//ListPager<MesWorkOrderCutDetail> queryWorkOrderCutDetailByPager(MesWorkOrderCutDetail workOrderCutDetail, Pager pager);
@ApiOperation("发布裁片工单")
void doReleaseCutWorkOrder(List<String> cutWorkOrderNos, String organizeCode, String userName);

@ -37,6 +37,8 @@ public interface IMesWorkOrderService extends IBaseMesService<MesWorkOrder> {
@ApiOperation("ccscTest")
List<MesWorkOrder> queryMesWorkOrderProcessToSap(String organizeCode);
MesWorkOrder getWorkOrder(String organizeCode, String workOrderNo);
@ApiOperation("反向冲销")
void doReportWorkReversal(WmsProductModel model);

@ -21,6 +21,7 @@ package cn.estsh.i3plus.ext.mes.apiservice.config;
import cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.webservice.WebServiceServer;
import cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.webservice.WebServiceServerIns;
import cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.webservice.WebServiceServerSPS;
import org.apache.cxf.Bus;
import org.apache.cxf.jaxws.EndpointImpl;
import org.apache.cxf.transport.servlet.CXFServlet;
@ -63,4 +64,10 @@ public class WebServiceConfig {
endpoint.publish("/mes-service-instrument");
return endpoint;
}
@Bean
public Endpoint endpointSpsEqu() {
EndpointImpl endpoint = new EndpointImpl(bus, new WebServiceServerSPS());
endpoint.publish("/mes-service-spsEqu");
return endpoint;
}
}

@ -1,8 +1,16 @@
package cn.estsh.i3plus.ext.mes.apiservice.controller.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesPartInspectionService;
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.mes.bean.nc.MesPartInspection;
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 io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@ -14,4 +22,19 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping(MesCommonConstant.MES_YANFEN + "/mesPartInspection")
public class MesPartInspectionController extends BaseMesController<MesPartInspection> {
@Autowired
private IMesPartInspectionService mesPartInspectionService;
@GetMapping("/query-param")
@ApiOperation(value = "查询零件检测")
public ResultBean queryMesPartInspectionParamByPager(MesPartInspection mesPartInspection, Pager pager) {
try {
return ResultBean.success("查询成功").setListPager(mesPartInspectionService.queryMesPartInspectionParamByPager(mesPartInspection, pager));
} catch (ImppBusiException imppException) {
return ResultBean.fail(imppException);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
}

@ -38,17 +38,13 @@ public class MesShippingOrderManagementController extends BaseMesController<MesS
public ResultBean<MesShippingOrderManagement> saveShipping(@RequestBody List<MesShippingOrderManagement> beanList) {
try {
List<String> orderNoList =
beanList.stream().filter(k -> k.getStatus() != MesExtEnumUtil.SHIPPING_ORDER_STATUS.CREATE.getValue() &&
k.getStatus() != MesExtEnumUtil.SHIPPING_ORDER_STATUS.PUBLISHED.getValue()).map(k -> k.getShippingCode()).collect(Collectors.toList());
List<String> orderNoList = beanList.stream().filter(k -> k.getStatus() != MesExtEnumUtil.SHIPPING_ORDER_STATUS.PUBLISHED.getValue()).map(MesShippingOrderManagement::getShippingCode).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(orderNoList)) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("【%s】发运单状态不是【%s】或【%s】请选择状态为【%s】或【%s】的数据", orderNoList, MesExtEnumUtil.SHIPPING_ORDER_STATUS.CREATE.getDescription(),
MesExtEnumUtil.SHIPPING_ORDER_STATUS.PUBLISHED.getDescription(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.CREATE.getDescription(),
MesExtEnumUtil.SHIPPING_ORDER_STATUS.PUBLISHED.getDescription())
.setErrorDetail("【%s】发运单状态不是【%s】状态", orderNoList, MesExtEnumUtil.SHIPPING_ORDER_STATUS.PUBLISHED.getDescription())
.build();
}
//新增初始化

@ -2,17 +2,19 @@ package cn.estsh.i3plus.ext.mes.apiservice.controller.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesWorkOrderCutService;
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderCut;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderCutDetail;
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 cn.hutool.core.collection.ListUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@ -48,6 +50,21 @@ public class MesWorkOrderCutController extends BaseMesController<MesWorkOrderCut
}
}
@GetMapping(value = "/detail/query")
@ApiOperation(value = "分页查询裁片工单明细", notes = "分页查询裁片工单明细")
public ResultBean queryWorkOrderCutDetailByPager(MesWorkOrderCutDetail workOrderCutDetail, Pager pager) {
try {
workOrderCutDetail.setOrganizeCode(AuthUtil.getOrganize().getOrganizeCode());
return ResultBean.success("生成成功")
.setListPager(workOrderCutService.queryWorkOrderCutDetailByPager(workOrderCutDetail, pager))
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@PostMapping(value = "/release")
@ApiOperation(value = "裁片工单发布", notes = "裁片工单发布")
public ResultBean doReleaseCutWorkOrder(String[] cutWorkOrderNos) {

@ -0,0 +1,43 @@
package cn.estsh.i3plus.ext.mes.apiservice.controller.busi;
import cn.estsh.i3plus.ext.mes.apiservice.schedulejob.MesAccountJob;
import cn.estsh.i3plus.ext.mes.apiservice.schedulejob.MesGenerateAccountJob;
import cn.estsh.i3plus.ext.mes.apiservice.schedulejob.MesWorkOrderUpdateQtyJob;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/test")
public class TestController {
@Autowired
private MesWorkOrderUpdateQtyJob mesWorkOrderUpdateQtyJob;
@Autowired
private MesAccountJob mesAccountJob;
@Autowired
private MesGenerateAccountJob mesGenerateAccountJob;
@GetMapping("/reportOrder")
@ApiOperation(value = "报工")
public void reportOrder() {
mesWorkOrderUpdateQtyJob.executeMesJob(null, null);
}
@GetMapping("/mesAccount")
@ApiOperation(value = "报工")
public void mesAccount() {
mesAccountJob.executeMesJob(null, null);
}
@GetMapping("/generateMesAccount")
@ApiOperation(value = "generateMesAccount")
public void generateMesAccount() {
mesGenerateAccountJob.executeMesJob(null, null);
}
}

@ -8,6 +8,8 @@ import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn;
import cn.estsh.i3plus.pojo.mes.bean.MesProductionRecord;
import cn.estsh.i3plus.pojo.mes.model.MesProductionRecordModel;
import cn.estsh.i3plus.pojo.mes.model.report.MesProductAccountModel;
import cn.estsh.i3plus.pojo.mes.model.report.MesProductAccountResModel;
import cn.estsh.impp.framework.base.controller.MesBaseController;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
@ -15,11 +17,15 @@ 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.commons.collections.CollectionUtils;
import org.drools.core.rule.Collect;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @Description : Mes
* @Reference :
@ -95,4 +101,28 @@ public class MesBusiReportController extends MesBaseController {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@ApiOperation(value = "对账报表", notes = "对账报表")
@GetMapping("/product/account/query")
public ResultBean queryProductAccount(MesProductAccountModel productAccountModel, Pager pager) {
try {/*
ValidatorBean.beginValid(productAccountModel)
.notNull("equipmentCode", productAccountModel.getEquipmentCode());*/
/*productAccountModel.setStartTime("2024-09-12 08:00:00");
productAccountModel.setEndTime("2024-09-13 08:00:00");
productAccountModel.setEquipmentCode("760BFoaming");
productAccountModel.setPartNo("Z0020667");*/
List<MesProductAccountResModel> mesProductAccountResModels = mesProductionRecordService.queryProductAccount(productAccountModel);
pager.setTotalRows(CollectionUtils.isEmpty(mesProductAccountResModels) ? 0 : mesProductAccountResModels.size());
List<MesProductAccountResModel> mesProductAccountResModelsRes = mesProductionRecordService.transferAccount(mesProductAccountResModels,productAccountModel, pager);
return ResultBean.success("查询成功").setResultList(mesProductAccountResModelsRes).setPager(pager);
} catch (ImppBusiException e) {
return ResultBean.fail(e);
} catch (Exception e) {
e.printStackTrace();
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
}

@ -0,0 +1,12 @@
package cn.estsh.i3plus.ext.mes.apiservice.controller.report;
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Api("Mes业务报表")
@RestController
@RequestMapping(MesCommonConstant.MES_YANFEN + "/")
public class MesProductAccountController {
}

@ -0,0 +1,203 @@
package cn.estsh.i3plus.ext.mes.apiservice.schedulejob;
import cn.estsh.i3plus.mes.apiservice.schedulejob.BaseMesScheduleJob;
import cn.estsh.i3plus.mes.apiservice.util.DateUtil;
import cn.estsh.i3plus.platform.common.tool.TimeTool;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.*;
import cn.estsh.i3plus.pojo.mes.repository.*;
import cn.estsh.impp.framework.boot.init.ApplicationProperties;
import cn.hutool.json.JSONObject;
import com.google.common.base.Objects;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.beanutils.BeanUtils;
import org.mvel2.util.Make;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.JobExecutionContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import static cn.estsh.i3plus.mes.apiservice.util.DateUtil.FORMAT_HH_MM;
import static cn.estsh.i3plus.mes.apiservice.util.DateUtil.FORMAT_YYYY_MM_DD;
/**
* @author castle,
* @version 1.0
* @date 2021/2/2 16:44
**/
@Slf4j
@DisallowConcurrentExecution
@Component
@ApiOperation("生成对账数据job")
public class MesAccountJob extends BaseMesScheduleJob {
@Autowired
private MesProductRecordLogRepository mesProductRecordLogRepository;
@Autowired
private MesProductionRecordRepository mesProductionRecordRepository;
@Autowired
private MesEquipmentLogDetailRepository mesEquipmentLogDetailRepository;
@Autowired
private MesEquipmentRepository mesEquipmentRepository;
@Autowired
private MesMouldMultiCavityRepository mesMouldMultiCavityRepository;
public MesAccountJob() {
super(MesAccountJob.class, "生成对账数据job");
}
@Override
@Transactional
public void executeMesJob(JobExecutionContext context, ApplicationProperties applicationProperties) {
JSONObject jsonObject = new JSONObject();
String json = this.getJobParam();
//String json = "{\"startTime\":\"2024-09-13 07:50:00\",\"endTime\":\"2024-09-19 08:00:00\"}";
com.alibaba.fastjson.JSONObject reqJson = com.alibaba.fastjson.JSONObject.parseObject(json);
String startDateTime = reqJson.getString("startTime");
String endDateTime = reqJson.getString("endTime");
if (reqJson == null || (StringUtils.isEmpty(startDateTime) && StringUtils.isEmpty(endDateTime))) {
Date yesterday = TimeTool.getDateBefore(new Date(), 1);
startDateTime = FORMAT_YYYY_MM_DD.format(yesterday) + " " + " 07:50:00";
endDateTime = TimeTool.getToday() + " 08:00:00";
}
jsonObject.putIfAbsent("organizeCode", "CK01");
jsonObject.putIfAbsent("userName", "job");
String organizeCode = jsonObject.getStr("organizeCode");
String userName = jsonObject.getStr("userName");
if (null == organizeCode) {
log.error("请添加需要对账的工厂代码!");
return;
}
if (null == userName) {
userName = "JOB";
}
//String startDateTime = FORMAT_YYYY_MM_DD.format(yesterday) + " " + " 07:50:00";
//String endDateTime = TimeTool.getToday() + " 08:00:00";
//String startDateTime = "2024-09-14 07:50:00";
//String endDateTime = "2024-09-15 08:00:00";
//List<String> list = Stream.of("A88_EOL_Electric_inspection").collect(Collectors.toList());
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
//DdlPreparedPack.getInPackList(list, "equipmentCode", ddlPackBean);
DdlPreparedPack.getNumEqualPack(10, "equipmentType", ddlPackBean);
List<MesEquipment> equipments = mesEquipmentRepository.findByHqlWhere(ddlPackBean);
if (CollectionUtils.isEmpty(equipments)) {
return;
}
try {
for (MesEquipment equipment : equipments) {
LOGGER.info("正常处理设备编号:{}的设备数据开始", equipment.getEquipmentCode());
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(equipment.getEquipmentCode(), "equipmentCode", packBean);
DdlPreparedPack.getStringSmallerNotEqualPack(endDateTime, "createDatetime", packBean);
DdlPreparedPack.getStringBiggerPack(startDateTime, "createDatetime", packBean);
DdlPreparedPack.getOrderBy("createDatetime", CommonEnumUtil.ASC_OR_DESC.ASC.getValue(), packBean);
List<MesProductRecordLog> recordLogs = mesProductRecordLogRepository.findByHqlWhere(packBean);
/*recordLogs = recordLogs.stream().filter(productRecordLog ->(!Objects.equal(productRecordLog.getType(), "record") && !Objects.equal(productRecordLog.getType(), "logdetail"))
|| (Objects.equal(productRecordLog.getType(), "logdetail") && StringUtils.isEmpty(productRecordLog.getPartNo()))).collect(Collectors.toList());
*/
if (CollectionUtils.isEmpty(recordLogs)) {
continue;
}
if (equipment.getEquipmentCode().contains("HT")) {
String partNo = "";
List<MesProductRecordLog> productRecordLogList = new ArrayList<>();
DdlPackBean detailPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(equipment.getEquipmentCode(), "equipmentCode", detailPackBean);
DdlPreparedPack.getStringLikerPack("InjDataSeries", "equipVariableName", detailPackBean);
DdlPreparedPack.getStringEqualPack("192", "quality", detailPackBean);
DdlPreparedPack.getStringSmallerNotEqualPack(startDateTime, "createDatetime", detailPackBean);
DdlPreparedPack.getOrderBy("createDatetime", CommonEnumUtil.ASC_OR_DESC.DESC.getValue(), detailPackBean);
List<MesProductRecordLog> detailLogs = mesProductRecordLogRepository.findByHqlTopWhere(detailPackBean, 1);
DdlPackBean mouldMultipackBeanTemp = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(detailLogs.get(0).getEquipVariableValue(), "mouldNo", mouldMultipackBeanTemp);
List<MesMouldMultiCavity> mouldMultiCavities = mesMouldMultiCavityRepository.findByHqlWhere(mouldMultipackBeanTemp);
if (CollectionUtils.isEmpty(mouldMultiCavities)) {
continue;
} else {
List<String> partList = mouldMultiCavities.stream().map(MesMouldMultiCavity::getPartNo).distinct().collect(Collectors.toList());
partNo = String.join(",", partList);
}
for (MesProductRecordLog log : recordLogs) {
if (!StringUtils.isEmpty(log.getPartNo()) && log.getEquipVariableName() != null
&& !log.getEquipVariableName().contains("InjDataSeries")) {
continue;
}
if (log.getType().equals("logdetail") && log.getEquipVariableName().contains("InjDataSeries")) {
if (StringUtils.isEmpty(log.getEquipVariableValue())) {
continue;
}
DdlPackBean mouldMultipackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(log.getEquipVariableValue(), "mouldNo", mouldMultipackBean);
List<MesMouldMultiCavity> mesMouldMultiCavities = mesMouldMultiCavityRepository.findByHqlWhere(mouldMultipackBean);
if (CollectionUtils.isEmpty(mesMouldMultiCavities)) {
continue;
} else {
List<String> partList = mesMouldMultiCavities.stream().map(MesMouldMultiCavity::getPartNo).distinct().collect(Collectors.toList());
partNo = String.join(",", partList);
log.setPartNo(partNo);
}
} else {
log.setPartNo(partNo);
if (!StringUtils.isEmpty(partNo)) {
productRecordLogList.add(log);
}
}
}
mesProductRecordLogRepository.saveAll(productRecordLogList);
} else {
String partNo = "";
List<MesProductRecordLog> productRecordLogs = new ArrayList<>();
for (MesProductRecordLog log : recordLogs) {
if (log.getType().equals("monitor") && !StringUtils.isEmpty(log.getPartNo())) {
partNo = log.getPartNo();
} else {
log.setPartNo(partNo);
if (!StringUtils.isEmpty(partNo)) {
productRecordLogs.add(log);
}
}
}
mesProductRecordLogRepository.saveAll(productRecordLogs);
}
LOGGER.info("正常处理设备编号:{}的设备数据结束");
}
}catch (Exception e) {
e.printStackTrace();
}
//
}
}

@ -0,0 +1,300 @@
package cn.estsh.i3plus.ext.mes.apiservice.schedulejob;
import cn.estsh.i3plus.ext.mes.api.base.IMesProductionRecordService;
import cn.estsh.i3plus.mes.apiservice.schedulejob.BaseMesScheduleJob;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.*;
import cn.estsh.i3plus.pojo.mes.model.report.MesProductAccountModel;
import cn.estsh.i3plus.pojo.mes.model.report.MesProductAccountResModel;
import cn.estsh.i3plus.pojo.mes.repository.*;
import cn.estsh.impp.framework.boot.init.ApplicationProperties;
import cn.hutool.json.JSONObject;
import com.google.common.base.Objects;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.beanutils.BeanUtils;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.JobExecutionContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* @author castle,
* @version 1.0
* @date 2021/2/2 16:44
**/
@Slf4j
@DisallowConcurrentExecution
@Component
@ApiOperation("生成对账数据job")
public class MesGenerateAccountJob extends BaseMesScheduleJob {
@Autowired
private MesProductRecordLogRepository mesProductRecordLogRepository;
@Autowired
private MesProductionRecordRepository mesProductionRecordRepository;
@Autowired
private MesEquipmentLogDetailRepository mesEquipmentLogDetailRepository;
@Autowired
private MesEquipmentRepository mesEquipmentRepository;
@Autowired
private MesMouldMultiCavityRepository mesMouldMultiCavityRepository;
@Autowired
private IMesProductionRecordService mesProductionRecordService;
public MesGenerateAccountJob() {
super(MesGenerateAccountJob.class, "生成对账数据job");
}
@Override
@Transactional
public void executeMesJob(JobExecutionContext context, ApplicationProperties applicationProperties) {
JSONObject jsonObject = new JSONObject();
jsonObject.putIfAbsent("organizeCode", "CK01");
jsonObject.putIfAbsent("userName", "job");
String organizeCode = jsonObject.getStr("organizeCode");
String userName = jsonObject.getStr("userName");
if (null == organizeCode) {
log.error("请添加需要对账的工厂代码!");
return;
}
if (null == userName) {
userName = "JOB";
}
/**
* 760B_A58_ReMaoHan finish
* 760BFoaming
* 760B_LaserCutting
* ZhenKong
*/
List<String> equimentList = Stream.of("760B_A58_ReMaoHan","760BFoaming","760B_LaserCutting","ZhenKong").collect(Collectors.toList());
MesProductAccountModel productAccountModel = new MesProductAccountModel();
productAccountModel.setStartTime("2024-09-12 08:00:00");
productAccountModel.setEndTime("2024-09-13 08:00:00");
productAccountModel.setEquipmentCode("HT2400APrinter_MixUA");
productAccountModel.setPartNo("Y0556325-01");
List<MesProductAccountResModel> mesProductAccountResModels = mesProductionRecordService.queryProductAccount(productAccountModel);
if (!CollectionUtils.isEmpty(mesProductAccountResModels)) {
mesProductAccountResModels = mesProductAccountResModels.stream().filter(mesProductAccountResModel -> mesProductAccountResModel.getDetailCount().compareTo(mesProductAccountResModel.getProductCount())> 0) .collect(Collectors.toList());
}
if (!CollectionUtils.isEmpty(mesProductAccountResModels)) {
for (MesProductAccountResModel mesProductAccountResModel : mesProductAccountResModels) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(mesProductAccountResModel.getEquipmentCode(), "equipmentCode", packBean);
DdlPreparedPack.getStringSmallerNotEqualPack(productAccountModel.getEndTime(), "createDatetime", packBean);
DdlPreparedPack.getStringBiggerPack(productAccountModel.getStartTime(), "createDatetime", packBean);
DdlPreparedPack.getStringEqualPack(mesProductAccountResModel.getPartNo(), "partNo", packBean);
DdlPreparedPack.getOrderBy("createDatetime", CommonEnumUtil.ASC_OR_DESC.ASC.getValue(), packBean);
List<MesProductRecordLog> recordLogs = mesProductRecordLogRepository.findByHqlWhere(packBean);
if (mesProductAccountResModel.getEquipmentCode().contains("HT")) {
// 1 判断2个 shotcount之间有没有加工记录如果没有就需要看 设备是不是192然后看是否是网络原因
String reason = handleHT(recordLogs);
mesProductAccountResModel.setErrorReason(reason);
} else if (equimentList.contains(mesProductAccountResModel.getEquipmentCode())) {
// 1 判断2个 shotcount之间有没有加工记录如果没有就需要看 设备是不是192然后看是否是网络原因
String reason =handleNotHT(recordLogs);
mesProductAccountResModel.setErrorReason(reason);
} else {
String reason =handleNotHTAndHasRelease(recordLogs);
mesProductAccountResModel.setErrorReason(reason);
}
}
}
}
private String handleNotHT(List<MesProductRecordLog> recordLogs) {
int result = 0;
String startTime = "";
String endTime = "";
int errorCount = 0;
String reason = "";
String reasonOffline = "【%s】到【%s】,客户端下线,导致【%s】个完成信号丢失";
String reasonQuality = "【%s】到【%s】设备信号质量有问题导致【%s】个完成信号丢失";
String reasonBypass = "【%s】到【%s】设备信号Bypass,【%s】个完成信号丢失";
boolean bypassFlag = false;
List<String> finishList = Stream.of("Product_finish","PART_OK","Part_Finish","Product_OK").collect(Collectors.toList());
for (MesProductRecordLog recordLog : recordLogs) {
if (Objects.equal(recordLog.getCategoryLevelTwo(), "BYPASS")) {
if (Objects.equal(recordLog.getEquipVariableValue(), "True")) {
if (StringUtils.isEmpty(startTime)) {
startTime = recordLog.getCreateDatetime();
}
endTime = recordLog.getCreateDatetime();
// 每次都取反,第一次是打开,那第二次就是关闭了
bypassFlag = true;
continue;
} else {
if (bypassFlag) {
bypassFlag = false;
errorCount = 0;
continue;
}
}
}
if (bypassFlag && recordLog.getType().equals("record")) {
errorCount ++;
reason = String.format(reasonBypass,startTime, endTime, errorCount +"");
continue;
}
if (result == 0) {
if (!finishList.contains(recordLog.getCategoryLevelTwo()) || !Objects.equal(recordLog.getEquipVariableValue(), "True")) {
continue;
}
result ++;
} else {
if (finishList.contains(recordLog.getCategoryLevelTwo()) && Objects.equal(recordLog.getEquipVariableValue(), "True")) {
if (StringUtils.isEmpty(startTime)) {
startTime = recordLog.getCreateDatetime();
}
errorCount ++;
endTime = recordLog.getCreateDatetime();
if (Objects.equal(recordLog.getQuality(), "192")) {
reason += String.format(reasonOffline,startTime, endTime, errorCount +"");
} else {
reason += String.format(reasonQuality,startTime, endTime, errorCount +"");
}
}
if (recordLog.getType().equals("record")) {
result --;
}
}
}
return reason;
}
private String handleNotHTAndHasRelease(List<MesProductRecordLog> recordLogs) {
int result = 0;
String startTime = "";
String endTime = "";
int errorCount = 0;
String reason = "";
String reasonOffline = "【%s】到【%s】,客户端下线,导致【%s】个完成信号丢失";
String reasonQuality = "【%s】到【%s】设备信号质量有问题导致【%s】个完成信号丢失";
String reasonBypass = "【%s】到【%s】设备信号Bypass,【%s】个完成信号丢失";
String releaseBypass = "【%s】到【%s】设备信号没有个release就给了完成新号,导致【%s】个完成信号丢失";
boolean bypassFlag = false;
boolean releaseFlag = false;
List<String> finishList = Stream.of("Product_finish","PART_OK","Part_Finish","Product_OK").collect(Collectors.toList());
for (MesProductRecordLog recordLog : recordLogs) {
if (Objects.equal(recordLog.getCategoryLevelTwo(), "BYPASS") && Objects.equal(recordLog.getEquipVariableValue(), "True")) {
if (StringUtils.isEmpty(startTime)) {
startTime = recordLog.getCreateDatetime();
}
endTime = recordLog.getCreateDatetime();
// 每次都取反,第一次是打开,那第二次就是关闭了
bypassFlag = !bypassFlag;
if (!bypassFlag) {
errorCount = 0;
}
continue;
}
if (bypassFlag && recordLog.getType().equals("record")) {
errorCount ++;
reason = String.format(reasonBypass,startTime, endTime, errorCount +"");
continue;
}
if (result == 0) {
if (Objects.equal(recordLog.getCategoryLevelTwo(), "Work_Allow") && Objects.equal(recordLog.getEquipVariableValue(), "True")) {
releaseFlag = true;
continue;
}
if (!finishList.contains(recordLog.getCategoryLevelTwo()) || !Objects.equal(recordLog.getEquipVariableValue(), "True")) {
continue;
}
result ++;
} else {
if (finishList.contains(recordLog.getCategoryLevelTwo()) && Objects.equal(recordLog.getEquipVariableValue(), "True")) {
if (StringUtils.isEmpty(startTime)) {
startTime = recordLog.getCreateDatetime();
}
errorCount ++;
endTime = recordLog.getCreateDatetime();
if (!releaseFlag) {
reason = String.format(releaseBypass,startTime, endTime, errorCount +"");
} else {
if (Objects.equal(recordLog.getQuality(), "192")) {
reason = String.format(reasonOffline,startTime, endTime, errorCount +"");
} else {
reason = String.format(reasonQuality,startTime, endTime, errorCount +"");
}
}
}
if (recordLog.getType().equals("record")) {
result --;
}
}
}
return reason;
}
private String handleHT(List<MesProductRecordLog> recordLogs) {
int result = 0;
String startTime = "";
String endTime = "";
int errorCount = 0;
String reason = "";
String reasonOffline = "【%s】到【%s】,客户端下线,导致【%s】个完成信号丢失";
String reasonQuality = "【%s】到【%s】设备信号质量有问题导致【%s】个完成信号丢失";
for (MesProductRecordLog recordLog : recordLogs) {
if (result == 0) {
if (!Objects.equal(recordLog.getCategoryLevelTwo(),"shot_counter") ) {
continue;
}
if (recordLog.getEquipVariableValue().compareTo("0") > 0) {
result ++;
}
} else {
if (Objects.equal(recordLog.getCategoryLevelTwo(),"shot_counter") && recordLog.getEquipVariableValue().compareTo("0") > 0) {
if (StringUtils.isEmpty(startTime)) {
startTime = recordLog.getCreateDatetime();
}
errorCount ++;
endTime = recordLog.getCreateDatetime();
if (Objects.equal(recordLog.getQuality(), "192")) {
reason = String.format(reasonOffline,startTime, endTime, errorCount +"");
} else {
reason = String.format(reasonQuality,startTime, endTime, errorCount +"");
}
}
if (recordLog.getType().equals("record")) {
result --;
}
}
}
return reason;
}
}

@ -0,0 +1,148 @@
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.IMesWorkOrderService;
import cn.estsh.i3plus.ext.mes.api.base.IMesWorkOrderToSapService;
import cn.estsh.i3plus.mes.apiservice.schedulejob.BaseMesScheduleJob;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.MesProductionRecord;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder;
import cn.estsh.i3plus.pojo.mes.model.MesWorkOrderModel;
import cn.estsh.i3plus.pojo.mes.repository.MesProductionRecordRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesWorkOrderRepository;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import cn.estsh.impp.framework.boot.init.ApplicationProperties;
import com.google.common.base.Objects;
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 org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* @Description : SAP
* @Reference :
* @Author : junsheng.li
* @CreateDate 2024/5/11 15:58
* @Modify:
**/
// 禁止 JOB 并发执行
@DisallowConcurrentExecution
@ApiOperation("汇总工单报工数量")
@Service
public class MesWorkOrderUpdateQtyJob extends BaseMesScheduleJob {
public static final Logger LOGGER = LoggerFactory.getLogger(MesWorkOrderUpdateQtyJob.class);
private static final long serialVersionUID = 9072058154235836696L;
@Autowired
private IMesWorkOrderService mesWorkOrderService;
@Autowired
private MesProductionRecordRepository productionRecordRao;
@Autowired
private MesWorkOrderRepository workOrderRepository;
public MesWorkOrderUpdateQtyJob() {
super(MesWorkOrderUpdateQtyJob.class, "汇总工单报工数量");
this.setMultiInstance(true);
}
@Override
public void executeMesJob(JobExecutionContext context, ApplicationProperties applicationProperties) {
try {
//String jobParam = this.getJobParam();
String jobParam = "CK01";
if (StringUtils.isBlank(jobParam)) {
throw new IllegalArgumentException("job参数为空请检查参数");
}
String[] organizeCodeList = jobParam.split(",");
LOGGER.info("汇总工单报工数量开始 -----start");
String userName = "job";
for (String organizeCode : organizeCodeList) {
List<MesProductionRecord> recordList = getUnReportMesProduceSn(organizeCode, null);
if (CollectionUtils.isEmpty(recordList)) {
continue;
}
Map<String, List<MesProductionRecord>> map = recordList.stream().collect(Collectors.groupingBy(MesProductionRecord::getWorkOrderNo));
List<MesWorkOrder> orders = new ArrayList<>();
map.forEach((k,v) -> {
MesWorkOrder workOrder = mesWorkOrderService.getWorkOrder(organizeCode, k);
List<MesProductionRecord> productionRecords = getUnReportMesProduceSn(organizeCode, workOrder.getWorkOrderNo());
workOrder.setReportedQty(Double.valueOf(productionRecords.size()));
workOrder.setCompleteQty(Double.valueOf(productionRecords.size()));
Double uncompleteQty = workOrder.getQty() - Double.valueOf(productionRecords.size());
if (uncompleteQty < 0) {
uncompleteQty = 0d;
}
List<Integer> list = Stream.of(MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue(), MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue(), MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue()).collect(Collectors.toList());
if (!list.contains(workOrder.getWorkOrderStatus())) {
workOrder.setSystemSyncStatus(1);
orders.add(workOrder);
LOGGER.info("工单号【{}】状态不是已发布、加工中、已完成,不进行累积");
} else {
// 如果工单是已发布则修改成加工中
if (Objects.equal(workOrder.getWorkOrderStatus(), MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue())) {
workOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue());
}
// 如果数量满足,则修改成已完成
if (workOrder.getQty() <= workOrder.getReportedQty()) {
workOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue());
}
workOrder.setUnCompleteQty(uncompleteQty);
workOrder.setSystemSyncStatus(1);
orders.add(workOrder);
}
});
workOrderRepository.saveAll(orders);
}
LOGGER.info("汇总工单报工数量结束 ----- end");
} catch (Exception e) {
LOGGER.error("汇总工单报工数量结束e:{}", e.toString());
}
}
public List<MesProductionRecord> getUnReportMesProduceSn(String organizeCode, String workOrderNo) {
//1.获取生产加工记录production_record表中report_status为待汇报状态的工单
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getIsNotNull("workOrderNo", ddlPackBean);
if (!StringUtils.isEmpty(workOrderNo)) {
DdlPreparedPack.getStringEqualPack(workOrderNo, "workOrderNo", ddlPackBean);
} else {
DdlPreparedPack.getNumEqualPack(2,"systemSyncStatus", ddlPackBean);
}
DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_20.getValue(), "reportStatus", ddlPackBean);
List<MesProductionRecord> mesProductionRecordList = productionRecordRao.findByHqlTopWhere(ddlPackBean, 500);
List<MesProductionRecord> recordList = new ArrayList<>();
recordList.addAll(mesProductionRecordList);
return recordList;
}
}

@ -127,7 +127,7 @@ public class MesBomService extends BaseMesService<MesBom> implements IMesBomServ
}
MesBom next = mesBoms.iterator().next();
//如果存在多个bomCode取最新的一个
return mesBoms.stream().collect(Collectors.groupingBy(MesBom::getBomCode)).get(next.getBomCode());
return mesBoms.stream().collect(Collectors.groupingBy(t -> t.getBomCode() + t.getEffStartTime())).get(next.getBomCode() + next.getEffStartTime());
}
@Override

@ -19,6 +19,7 @@ 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.ArrayList;
import java.util.List;
@ -42,6 +43,8 @@ public class MesEquipmentSpotCheckDetailService extends BaseMesService<MesEquipm
DdlPreparedPack.getStringLikerPack(bean.getSpotCheckItemName(), "spotCheckItemName", packBean);
DdlPreparedPack.getNumEqualPack(bean.getDataType(), "dataType", packBean);
DdlPreparedPack.getNumEqualPack(bean.getSpotCheckItemType(), "spotCheckItemType", packBean);
//43100 设备点检设置明细导入完成后,期望序列号可以正排
packBean.setOrderByStr(" order by seqCode ");
}
@ -155,8 +158,8 @@ public class MesEquipmentSpotCheckDetailService extends BaseMesService<MesEquipm
String organizeCode = AuthUtilExt.getOrganizeCode();
List<String> addressList = new ArrayList<>();
//查询设备变量信息
List<String> realAddress = beanList.stream().map(MesEquipmentSpotCheckDetail::getRealValueAddress).distinct().collect(Collectors.toList());
List<String> setAddress = beanList.stream().map(MesEquipmentSpotCheckDetail::getSetValueAddress).distinct().collect(Collectors.toList());
List<String> realAddress = beanList.stream().map(MesEquipmentSpotCheckDetail::getRealValueAddress).filter(t-> !StringUtils.isEmpty(t)).distinct().collect(Collectors.toList());
List<String> setAddress = beanList.stream().map(MesEquipmentSpotCheckDetail::getSetValueAddress).filter(t-> !StringUtils.isEmpty(t)).distinct().collect(Collectors.toList());
if (!CollectionUtils.isEmpty(realAddress)) addressList.addAll(realAddress);
if (!CollectionUtils.isEmpty(setAddress)) addressList.addAll(setAddress);
if (CollectionUtils.isEmpty(addressList)) return null;

@ -23,7 +23,13 @@ public class MesEquipmentSpotCheckService extends BaseMesService<MesEquipmentSpo
DdlPreparedPack.getStringLikerPack(bean.getSpotCheckName(), "spotCheckName", packBean);
DdlPreparedPack.getStringEqualPack(bean.getWorkCenterCode(), "workCenterCode", packBean);
DdlPreparedPack.getStringEqualPack(bean.getWorkCellCode(), "workCellCode", packBean);
DdlPreparedPack.getStringEqualPack(bean.getEquipCode(), "equipCode", packBean);
DdlPreparedPack.getNumEqualPack(bean.getSpotCheckOrderType(), "spotCheckOrderType", packBean);
//43172 点检主数据主表导入和新增时,基于设备代码排序
DdlPreparedPack.getOrderByPack(
new Object[]{CommonEnumUtil.ASC_OR_DESC.ASC.getValue(), CommonEnumUtil.ASC_OR_DESC.DESC.getValue()},
new String[]{"equipCode", "createDatetime"}, packBean);
}
protected void onInsertBean(MesEquipmentSpotCheck item) {
@ -60,6 +66,7 @@ public class MesEquipmentSpotCheckService extends BaseMesService<MesEquipmentSpo
.build();
}
}
@Override
public void validateImport(List<MesEquipmentSpotCheck> beanList) {

@ -3,13 +3,16 @@ package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesLoadingListDetailService;
import cn.estsh.i3plus.ext.mes.apiservice.dao.IMesLoadingListDetailDao;
import cn.estsh.i3plus.ext.mes.pojo.model.MesLoadingListDetailModel;
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.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.shipping.MesLoadingListDetail;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.util.List;
@ -27,4 +30,14 @@ public class MesLoadingListDetailService extends BaseMesService<MesLoadingListDe
List<MesLoadingListDetailModel> list = detailDao.queryLoadingListDetailModel(detail, pager);
return new ListPager<>(list, pager);
}
@Override
public MesLoadingListDetail getMesLoadingListDetail(String organizeCode, String shippingCode) {
if(StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(shippingCode)){
return null;
}
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(shippingCode,"shippingCode",packBean);
return baseRDao.getByProperty(packBean);
}
}

@ -30,6 +30,7 @@ import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
@Service
@Slf4j
@ -230,5 +231,17 @@ public class MesLoadingListService extends BaseMesService<MesLoadingList> implem
DdlPreparedPack.getStringEqualPack(bean.getCustCode(), "custCode", packBean);
DdlPreparedPack.getStringEqualPack(bean.getCustOrganizeCode(), "custOrganizeCode", packBean);
DdlPreparedPack.getStringEqualPack(bean.getTruckNo(), "truckNo", packBean);
DdlPreparedPack.getStringLikerPack(bean.getRemark(), "remark", packBean);
}
@Override
public MesLoadingList getMesLoadingListByShippingCode(String organizeCode, String shippingCode) {
MesLoadingListDetail mesLoadingListDetail = detailService.getMesLoadingListDetail(organizeCode,shippingCode);
if(Objects.isNull(mesLoadingListDetail)){
return null;
}
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getNumEqualPack(mesLoadingListDetail.getPid(),"id",packBean);
return baseRDao.getByProperty(packBean);
}
}

@ -1,17 +1,37 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesPartInspectionService;
import cn.estsh.i3plus.platform.common.util.MesConstWords;
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.base.util.StringUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesOrg;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkCenter;
import cn.estsh.i3plus.pojo.mes.bean.nc.MesPartInspection;
import cn.estsh.i3plus.pojo.mes.repository.MesOrgRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesWorkCenterRepository;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.util.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
@Service
@Slf4j
public class MesPartInspectionService extends BaseMesService<MesPartInspection> implements IMesPartInspectionService {
@Autowired
private MesWorkCenterRepository mesWorkCenterRDao;
@Autowired
private MesOrgRepository mesOrgRDao;
@Override
protected void setPackQueryBean(MesPartInspection bean, DdlPackBean packBean) {
DdlPreparedPack.getStringEqualPack(bean.getSn(), "sn", packBean);
@ -28,4 +48,62 @@ public class MesPartInspectionService extends BaseMesService<MesPartInspection>
// DdlPreparedPack.getStringLikerPack(bean.getInspectionDate(), "inspectionDate", packBean);
}
@Override
public ListPager queryMesPartInspectionParamByPager(MesPartInspection bean, Pager pager) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(bean.getSn(), "sn", packBean);
DdlPreparedPack.getStringLikerPack(bean.getPartNo(), "partNo", packBean);
DdlPreparedPack.getStringLikerPack(bean.getPartName(), "partName", packBean);
//3.增加产线查询条件,选用下拉框,支持多选
if(!StringUtil.isEmpty(bean.getWorkCenterCode())){
DdlPreparedPack.getInPackList(Arrays.asList(bean.getWorkCenterCode().split(",")), "workCenterCode", 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);
}
DdlPackBean packBeanLo = DdlPackBean.getDdlPackBean(bean.getOrganizeCode());
// DdlPreparedPack.getStringLikerPack(bean.getInventoryLocationCode(), "responsibleParty", packBeanLo);
List<MesOrg> orgList = mesOrgRDao.findByHqlWhere(packBeanLo);
//2.增加库区查询条件,文本框,支持模糊输入
// LOGGER.info("queryMesPartInspectionParamByPager-orgList:{}", orgList);
if(!StringUtil.isEmpty(bean.getInventoryLocationCode())){
if (!CollectionUtils.isEmpty(orgList)){
String inventoryLocationCode = bean.getInventoryLocationCode();
List<String> collect = orgList.stream().filter(o->o.getInventoryLocationCode().equals(inventoryLocationCode))
.map(MesOrg::getResponsibleParty).collect(Collectors.toList());
DdlPreparedPack.getInPackList(collect,"responsibleParty", packBean);
}
}
pager = PagerHelper.getPager(pager, baseRDao.findByHqlWhereCount(packBean));
List<MesPartInspection> resultList = baseRDao.findByHqlWherePage(packBean, pager);
if (!CollectionUtils.isEmpty(resultList)){
for (MesPartInspection mesPartInspection : resultList) {
if (!StringUtils.isEmpty(mesPartInspection.getWorkCenterCode())){
MesWorkCenter mesWorkCenter = mesWorkCenterRDao.getByProperty(
new String[]{MesConstWords.ORGANIZE_CODE, MesConstWords.IS_DELETED, MesConstWords.IS_VALID, "workCenterCode"},
new Object[]{bean.getOrganizeCode(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),
CommonEnumUtil.IS_VAILD.VAILD.getValue(), mesPartInspection.getWorkCenterCode()});
if (null != mesWorkCenter) {
mesPartInspection.setWorkCenterName(mesWorkCenter.getWorkCenterName());
}
}
//1.页面增加库区字段(库区根据报废选择的责任人关联查询)
if (!StringUtils.isEmpty(mesPartInspection.getResponsibleParty())){
if (!CollectionUtils.isEmpty(orgList)){
List<MesOrg> collect = orgList.stream().filter(a -> mesPartInspection.getResponsibleParty().equals(a.getResponsibleParty())).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(collect)){
mesPartInspection.setInventoryLocationCode(collect.get(0).getInventoryLocationCode());
}
}
}
}
}
return new ListPager<>(resultList, pager);
}
}

@ -23,8 +23,8 @@ public class MesPartSapService extends BaseMesService<MesPartSap> implements IMe
protected void setPackQueryBean(MesPartSap bean, DdlPackBean packBean) {
DdlPreparedPack.getNumEqualPack(bean.getIsTestPiece(), "isTestPiece", packBean);
DdlPreparedPack.getStringLikerPack(bean.getPartNo(), "partNo", packBean);
DdlPreparedPack.getStringLikeEqualPack(bean.getPartName(), "partName", packBean);
DdlPreparedPack.getStringLikeEqualPack(bean.getPartStatus(), "partStatus", packBean);
DdlPreparedPack.getStringLikerPack(bean.getPartName(), "partName", packBean);
DdlPreparedPack.getStringLikerPack(bean.getPartStatus(), "partStatus", packBean);
}
@Override

@ -4,6 +4,9 @@ import cn.estsh.i3plus.ext.mes.api.base.IMesProductionRecordService;
import cn.estsh.i3plus.ext.mes.apiservice.dao.IMesProdRuleNosortCfgDao;
import cn.estsh.i3plus.ext.mes.apiservice.utils.BeanUtil;
import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException;
import cn.estsh.i3plus.ext.mes.pojo.model.MesLoadingListDetailModel;
import cn.estsh.i3plus.ext.mes.pojo.model.MesShippingOrderManagementDetailModel;
import cn.estsh.i3plus.platform.common.tool.TimeTool;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
@ -13,25 +16,34 @@ import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.base.util.StringUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesProdRuleNosortCfg;
import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn;
import cn.estsh.i3plus.pojo.mes.bean.MesProductRecordLog;
import cn.estsh.i3plus.pojo.mes.bean.MesProductionRecord;
import cn.estsh.i3plus.pojo.mes.bean.shipping.MesLoadingListDetail;
import cn.estsh.i3plus.pojo.mes.model.MesProductionRecordModel;
import cn.estsh.i3plus.pojo.mes.model.report.MesProductAccountModel;
import cn.estsh.i3plus.pojo.mes.model.report.MesProductAccountResModel;
import cn.estsh.i3plus.pojo.mes.repository.MesProduceSnRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesProductRecordLogRepository;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import com.google.common.base.Objects;
import com.google.common.collect.Lists;
import com.xxl.job.core.util.DateUtil;
import lombok.extern.slf4j.Slf4j;
import org.hibernate.SQLQuery;
import org.hibernate.query.internal.NativeQueryImpl;
import org.hibernate.transform.Transformers;
import org.mvel2.util.Make;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* @Description :
@ -52,6 +64,9 @@ public class MesProductionRecordServiceImpl extends BaseMesService<MesProduction
@Autowired
private MesProduceSnRepository mesProduceSnRepository;
@Autowired
private MesProductRecordLogRepository mesProductRecordLogRepository;
@Override
public List<MesProductionRecord> findMesProductionRecord(String organizeCode, String sn) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
@ -105,6 +120,305 @@ public class MesProductionRecordServiceImpl extends BaseMesService<MesProduction
Math.min(pager.getPageSize() * pager.getCurrentPage(), mesProductionRecordModelList.size())), pager);
}
@Override
public ListPager<MesProductAccountResModel> queryProductAccount(MesProductAccountModel productAccountModel, Pager pager) {
List<MesProductAccountResModel> resList = new ArrayList<>();
String sqlStr = "select mpr.part_no,mpr.equipment_code,mpr.equipment_name,mpr.work_cell_code,mpr.work_center_code," +
"mpr.product_count,mpr.detail_count,error_reason from (\n" +
"\n" +
"SELECT\n" +
"\tmpr.part_no ,\n" +
"\tmpr.equipment_code ,\n" +
"\tme.equipment_name ,\n" +
"\tme.work_cell_code ,\n" +
"\tme.work_center_code ,\n" +
"\tmpr.product_count ,\n" +
"\tmpr.detail_count , \n" +
"\t null error_reason\n" +
"\t\n" +
"FROM\n" +
"\t(\n" +
"\tSELECT\n" +
"\t\tequipment_code,\n" +
"\t\tpart_no,\n" +
"\t\tsum( CASE WHEN type = 'record' THEN 1 ELSE 0 END ) product_count,\n" +
"\t\tsum( CASE WHEN type = 'logdetail' THEN 1 ELSE 0 END ) detail_count \n" +
"\tFROM\n" +
"\t\tmes_product_record_log \n" +
"\tWHERE\n" +
"\t\tequipment_code LIKE '%HT%' \n";
if (!StringUtils.isEmpty(productAccountModel.getEquipmentCode())) {
sqlStr += " and equipment_code = :equipmentCode ";
} if (!StringUtils.isEmpty(productAccountModel.getPartNo())) {
sqlStr += " and part_no=:partNo ";
} if (!StringUtils.isEmpty(productAccountModel.getStartTime())) {
sqlStr += " and create_date_time >= :startTime ";
} if (!StringUtils.isEmpty(productAccountModel.getEndTime())) {
sqlStr += " and create_date_time < :endTime ";
}
sqlStr +=
"\t\tAND part_no IS NOT NULL \n" +
"\tGROUP BY\n" +
"\t\tequipment_code,\n" +
"\t\tpart_no \n" +
"\t) mpr\n" +
"\tLEFT JOIN mes_wc_equipment me ON mpr.equipment_code = me.equipment_code \n" +
"\n" +
"\n" +
"UNION\n" +
"SELECT\n" +
"\tmprnc.out_part_no part_no,\n" +
"\tmprnc.equipment_code ,\n" +
"\tme.equipment_name ,\n" +
"\tme.work_cell_code ,\n" +
"\tme.work_center_code ,\n" +
"\teqcount.product_count ,\n" +
"\teqcount.detail_count , \n" +
"\t null error_reason \n" +
"FROM\n" +
"\tmes_prod_rule_nosort_cfg mprnc\n" +
"\tLEFT JOIN mes_wc_equipment me ON mprnc.equipment_code = me.equipment_code and me.is_deleted = 2 and me.is_valid = 1 \n" +
"\tLEFT JOIN (\n" +
"\tSELECT\n" +
"\t\tequipment_code,\n" +
"\t\tpart_no,\n" +
"\t\tsum( CASE WHEN type = 'record' THEN 1 ELSE 0 END ) product_count,\n" +
"\t\tsum(\n" +
"\t\tCASE\n" +
"\t\t\t\t\n" +
"\t\t\t\tWHEN type = 'logdetail' \n" +
"\t\t\t\tAND CATEGORY_LEVEL_TWO IN ( 'Product_finish', 'PART_OK', 'Part_Finish', 'Product_OK' ) \n" +
"\t\t\t\tAND EQUIP_VARIABLE_VALUE = 'True' THEN\n" +
"\t\t\t\t\t1 ELSE 0 \n" +
"\t\t\t\tEND \n" +
"\t\t\t\t) detail_count \n" +
"\t\t\tFROM\n" +
"\t\t\t\tmes_product_record_log \n" +
"\t\t\tWHERE 1 = 1 \n";
if (!StringUtils.isEmpty(productAccountModel.getEquipmentCode())) {
sqlStr += "\t\t\t and equipment_code = :equipmentCode \n";
} if (!StringUtils.isEmpty(productAccountModel.getPartNo())) {
sqlStr += "\t\t\t and part_no= :partNo \n";
} if (!StringUtils.isEmpty(productAccountModel.getStartTime())) {
sqlStr += "\t\t\t and create_date_time >= :startTime \n";
} if (!StringUtils.isEmpty(productAccountModel.getEndTime())) {
sqlStr += "\t\t\t and create_date_time < :endTime \n";
}
sqlStr +=
"\t\t\t and \n" +
"\t\t\t\tpart_no IS NOT NULL \n" +
"\t\t\tGROUP BY\n" +
"\t\t\t\tequipment_code,\n" +
"\t\t\t\tpart_no \n" +
"\t\t\t) eqcount ON mprnc.equipment_code = eqcount.equipment_code \n" +
"\t AND mprnc.out_part_no = eqcount.part_no where 1=1 ";
if (!StringUtils.isEmpty(productAccountModel.getEquipmentCode())) {
sqlStr += "and mprnc.equipment_code= :equipmentCode ";
}
sqlStr += "\tand eqcount.product_count is not null and eqcount.detail_count is not null ) mpr \n" +
"\t\n" +
"\tleft join mes_equipment me\n" +
"\ton mpr.equipment_code = me.equipment_code\n" +
"\n" +
"where mpr.product_count != 0 and mpr.detail_count != 0\n" +
"and me.equipment_type = 10";
Query query = entityManager.createNativeQuery(sqlStr);
if (!StringUtils.isEmpty(productAccountModel.getEquipmentCode())) {
query.setParameter("equipmentCode", productAccountModel.getEquipmentCode());
}
if (!StringUtils.isEmpty(productAccountModel.getPartNo())) {
query.setParameter("partNo", productAccountModel.getPartNo());
}
if (!StringUtils.isEmpty(productAccountModel.getStartTime())) {
query.setParameter("startTime", productAccountModel.getStartTime());
}
if (!StringUtils.isEmpty(productAccountModel.getEndTime())) {
query.setParameter("endTime", productAccountModel.getEndTime());
}
/* query.unwrap(NativeQueryImpl.class).setResultTransformer(Transformers.aliasToBean(MesProductAccountResModel.class));
List<MesProductAccountResModel> results = query.getResultList();*/
List results = query.getResultList();
for (Object result : results) {
Object[] cells = (Object[]) result;
MesProductAccountResModel model = new MesProductAccountResModel();
model.setPartNo(StringUtils.isEmpty(cells[0]) ? "" : String.valueOf(cells[0]));
model.setEquipmentCode(StringUtils.isEmpty(cells[1]) ? "" : String.valueOf(cells[1]));
model.setWorkCellCode(StringUtils.isEmpty(cells[3]) ? "" : String.valueOf(cells[3]));
model.setWorkCenterCode(StringUtils.isEmpty(cells[4]) ? "" : String.valueOf(cells[4]));
model.setProductCount(StringUtils.isEmpty(cells[5]) ? "" : String.valueOf(cells[5]));
model.setDetailCount(StringUtils.isEmpty(cells[6]) ? "" : String.valueOf(cells[6]));
model.setErrorReason(StringUtils.isEmpty(cells[7]) ? "" : String.valueOf(cells[7]));
resList.add(model);
}
//query.unwrap(NativeQueryImpl.class).setResultTransformer(Transformers.aliasToBean(MesProductAccountResModel.class));
//List<MesProductAccountResModel> results = query.getResultList();
return new ListPager<>(resList,pager);
}
@Override
public List<MesProductAccountResModel> queryProductAccount(MesProductAccountModel productAccountModel) {
List<MesProductAccountResModel> resList = new ArrayList<>();
String sqlStr = "select mpr.part_no,mpr.equipment_code,mpr.equipment_name,mpr.work_cell_code,mpr.work_center_code," +
"mpr.product_count,mpr.detail_count,error_reason from (\n" +
"\n" +
"SELECT\n" +
"\tmpr.part_no ,\n" +
"\tmpr.equipment_code ,\n" +
"\tme.equipment_name ,\n" +
"\tme.work_cell_code ,\n" +
"\tme.work_center_code ,\n" +
"\tmpr.product_count ,\n" +
"\tmpr.detail_count , \n" +
"\t null error_reason\n" +
"\t\n" +
"FROM\n" +
"\t(\n" +
"\tSELECT\n" +
"\t\tequipment_code,\n" +
"\t\tpart_no,\n" +
"\t\tsum( CASE WHEN type = 'record' THEN 1 ELSE 0 END ) product_count,\n" +
"\t\tsum( CASE WHEN type = 'logdetail' and CATEGORY_LEVEL_TWO ='shot_counter' and EQUIP_VARIABLE_VALUE > 0 THEN 1 ELSE 0 END ) detail_count \n" +
"\tFROM\n" +
"\t\tmes_product_record_log \n" +
"\tWHERE\n" +
"\t\tequipment_code LIKE '%HT%' \n";
if (!StringUtils.isEmpty(productAccountModel.getEquipmentCode())) {
sqlStr += " and equipment_code = :equipmentCode ";
} if (!StringUtils.isEmpty(productAccountModel.getPartNo())) {
sqlStr += " and part_no like '%' :partNo '%' ";
} if (!StringUtils.isEmpty(productAccountModel.getStartTime())) {
sqlStr += " and create_date_time >= :startTime ";
} if (!StringUtils.isEmpty(productAccountModel.getEndTime())) {
sqlStr += " and create_date_time < :endTime ";
}
sqlStr +=
"\t\tAND part_no IS NOT NULL \n" +
"\tGROUP BY\n" +
"\t\tequipment_code,\n" +
"\t\tpart_no \n" +
"\t) mpr\n" +
"\tLEFT JOIN mes_wc_equipment me ON mpr.equipment_code = me.equipment_code \n" +
"\n" +
"\n" +
"UNION\n" +
"SELECT\n" +
"\teqcount.part_no,\n" +
"\teqcount.equipment_code ,\n" +
"\tme.equipment_name ,\n" +
"\tme.work_cell_code ,\n" +
"\tme.work_center_code ,\n" +
"\teqcount.product_count ,\n" +
"\teqcount.detail_count , \n" +
"\t null error_reason \n" +
"FROM\n" +
"\tmes_prod_rule_nosort_cfg mprnc\n" +
"\tRIGHT JOIN mes_wc_equipment me ON mprnc.equipment_code = me.equipment_code and me.is_deleted = 2 and me.is_valid = 1 \n" +
"\tRIGHT JOIN (\n" +
"\tSELECT\n" +
"\t\tequipment_code,\n" +
"\t\tpart_no,\n" +
"\t\tsum( CASE WHEN type = 'record' THEN 1 ELSE 0 END ) product_count,\n" +
"\t\tsum(\n" +
"\t\tCASE\n" +
"\t\t\t\t\n" +
"\t\t\t\tWHEN type = 'logdetail' \n" +
"AND ( (equipment_code != 'Geiss' and CATEGORY_LEVEL_TWO IN ( 'Product_finish', 'PART_OK', 'Part_Finish', 'Product_OK' ) )\n" +
"\t\t\t\tor (equipment_code = 'Geiss' and CATEGORY_LEVEL_TWO = 'Product_finish') )\n" +
"\t\t\t\tAND EQUIP_VARIABLE_VALUE = 'True' THEN\n" +
"\t\t\t\t\t1 ELSE 0 \n" +
"\t\t\t\tEND" +
"\t\t\t\t) detail_count \n" +
"\t\t\tFROM\n" +
"\t\t\t\tmes_product_record_log \n" +
"\t\t\tWHERE 1 = 1 and equipment_code not like '%HT%' \n";
if (!StringUtils.isEmpty(productAccountModel.getEquipmentCode())) {
sqlStr += "\t\t\t and equipment_code = :equipmentCode \n";
} if (!StringUtils.isEmpty(productAccountModel.getPartNo())) {
sqlStr += " and part_no like '%' :partNo '%' ";
} if (!StringUtils.isEmpty(productAccountModel.getStartTime())) {
sqlStr += "\t\t\t and create_date_time >= :startTime \n";
} if (!StringUtils.isEmpty(productAccountModel.getEndTime())) {
sqlStr += "\t\t\t and create_date_time < :endTime \n";
}
sqlStr +=
"\t\t\t and \n" +
"\t\t\t\tpart_no IS NOT NULL \n" +
"\t\t\tGROUP BY\n" +
"\t\t\t\tequipment_code,\n" +
"\t\t\t\tpart_no \n" +
"\t\t\t) eqcount ON mprnc.equipment_code = eqcount.equipment_code \n" +
"\t AND mprnc.out_part_no = eqcount.part_no where eqcount.equipment_code not LIKE '%HT%' ";
if (!StringUtils.isEmpty(productAccountModel.getEquipmentCode())) {
sqlStr += "and eqcount.equipment_code= :equipmentCode ";
}
sqlStr += "\tand eqcount.product_count is not null and eqcount.detail_count is not null ) mpr \n" +
"\t\n" +
"\tleft join mes_equipment me\n" +
"\ton mpr.equipment_code = me.equipment_code\n" +
"\n" +
"where (mpr.product_count != 0 or mpr.detail_count != 0)\n" +
"and me.equipment_type = 10 order by me.equipment_code asc";
Query query = entityManager.createNativeQuery(sqlStr);
if (!StringUtils.isEmpty(productAccountModel.getEquipmentCode())) {
query.setParameter("equipmentCode", productAccountModel.getEquipmentCode());
}
if (!StringUtils.isEmpty(productAccountModel.getPartNo())) {
query.setParameter("partNo", productAccountModel.getPartNo());
}
if (!StringUtils.isEmpty(productAccountModel.getStartTime())) {
query.setParameter("startTime", productAccountModel.getStartTime());
}
if (!StringUtils.isEmpty(productAccountModel.getEndTime())) {
query.setParameter("endTime", productAccountModel.getEndTime());
}
/* query.unwrap(NativeQueryImpl.class).setResultTransformer(Transformers.aliasToBean(MesProductAccountResModel.class));
List<MesProductAccountResModel> results = query.getResultList();*/
List results = query.getResultList();
for (Object result : results) {
Object[] cells = (Object[]) result;
MesProductAccountResModel model = new MesProductAccountResModel();
model.setPartNo(StringUtils.isEmpty(cells[0]) ? "" : String.valueOf(cells[0]));
model.setEquipmentCode(StringUtils.isEmpty(cells[1]) ? "" : String.valueOf(cells[1]));
model.setEquipmentName(StringUtils.isEmpty(cells[2]) ? "" : String.valueOf(cells[2]));
model.setWorkCellCode(StringUtils.isEmpty(cells[3]) ? "" : String.valueOf(cells[3]));
model.setWorkCenterCode(StringUtils.isEmpty(cells[4]) ? "" : String.valueOf(cells[4]));
model.setProductCount(StringUtils.isEmpty(cells[5]) ? "" : String.valueOf(cells[5]));
model.setDetailCount(StringUtils.isEmpty(cells[6]) ? "" : String.valueOf(cells[6]));
model.setErrorReason(StringUtils.isEmpty(cells[7]) ? "" : String.valueOf(cells[7]));
resList.add(model);
}
//query.unwrap(NativeQueryImpl.class).setResultTransformer(Transformers.aliasToBean(MesProductAccountResModel.class));
//List<MesProductAccountResModel> results = query.getResultList();
return resList;
}
private List<MesProduceSn> getMesProduceSnList(MesProductionRecordModel mesProductionRecordModel) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesProductionRecordModel.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(mesProductionRecordModel.getPartNo(),"partNo",packBean);
@ -215,4 +529,405 @@ public class MesProductionRecordServiceImpl extends BaseMesService<MesProduction
}
@Override
public List<MesProductAccountResModel> transferAccount(List<MesProductAccountResModel> mesProductAccountResModels, MesProductAccountModel productAccountModel, Pager pager) {
/**
* 760B_A58_ReMaoHan finish
* 760BFoaming
* 760B_LaserCutting
* ZhenKong
*/
List<String> equimentList = Stream.of("760B_A58_ReMaoHan","760BFoaming","760B_LaserCutting","ZhenKong").collect(Collectors.toList());
if (CollectionUtils.isEmpty(mesProductAccountResModels)) {
return null;
}
List<MesProductAccountResModel> partitionList = partition(mesProductAccountResModels, pager.getPageSize(), pager.getCurrentPage());
for (MesProductAccountResModel mesProductAccountResModel : partitionList) {
boolean isErrorCount = false;
int size = mesProductAccountResModel.getPartNo().split(",").length == 1 ? mesProductAccountResModel.getPartNo().split(";").length : mesProductAccountResModel.getPartNo().split(",").length;
int productCount = Integer.valueOf(mesProductAccountResModel.getProductCount());
int detailCount = Integer.valueOf(mesProductAccountResModel.getDetailCount());
if (detailCount * size > productCount) {
isErrorCount = true;
}
if (!isErrorCount) {
continue;
}
DdlPackBean packBean = DdlPackBean.getDdlPackBean("CK01");
DdlPreparedPack.getStringEqualPack(mesProductAccountResModel.getEquipmentCode(), "equipmentCode", packBean);
DdlPreparedPack.getStringSmallerNotEqualPack(productAccountModel.getEndTime(), "createDatetime", packBean);
DdlPreparedPack.getStringBiggerPack(productAccountModel.getStartTime(), "createDatetime", packBean);
DdlPreparedPack.getStringEqualPack(mesProductAccountResModel.getPartNo(), "partNo", packBean);
DdlPreparedPack.getOrderBy("createDatetime", CommonEnumUtil.ASC_OR_DESC.ASC.getValue(), packBean);
List<MesProductRecordLog> recordLogs = mesProductRecordLogRepository.findByHqlWhere(packBean);
//
DdlPackBean packOffilinBean = DdlPackBean.getDdlPackBean("CK01");
DdlPreparedPack.getStringEqualPack(mesProductAccountResModel.getEquipmentCode(), "equipmentCode", packOffilinBean);
Date yesterday = TimeTool.getDateBefore(DateUtil.parseDateTime(productAccountModel.getStartTime()), 1);
String yesterdayStr = DateUtil.formatDateTime(yesterday);
DdlPreparedPack.getStringSmallerNotEqualPack(productAccountModel.getStartTime(), "createDatetime", packOffilinBean);
DdlPreparedPack.getStringBiggerPack(yesterdayStr, "createDatetime", packOffilinBean);
DdlPreparedPack.getStringEqualPack(mesProductAccountResModel.getPartNo(), "partNo", packOffilinBean);
DdlPreparedPack.getStringLikerPack("客户端", "message", packOffilinBean);
DdlPreparedPack.getOrderBy("createDatetime", CommonEnumUtil.ASC_OR_DESC.ASC.getValue(), packOffilinBean);
List<MesProductRecordLog> offlineRecordLogs = mesProductRecordLogRepository.findByHqlWhere(packOffilinBean);
recordLogs.addAll(offlineRecordLogs);
recordLogs = recordLogs.stream().sorted(Comparator.comparing(MesProductRecordLog::getCreateDatetime)).collect(Collectors.toList());
if (mesProductAccountResModel.getEquipmentCode().contains("HT")) {
// 1 判断2个 shotcount之间有没有加工记录如果没有就需要看 设备是不是192然后看是否是网络原因
String reason = handleHT(recordLogs);
mesProductAccountResModel.setErrorReason(reason);
} else if (equimentList.contains(mesProductAccountResModel.getEquipmentCode())) {
// 1 判断2个 shotcount之间有没有加工记录如果没有就需要看 设备是不是192然后看是否是网络原因
String reason =handleNotHT(recordLogs);
mesProductAccountResModel.setErrorReason(reason);
} else {
String reason =handleNotHTAndHasRelease(recordLogs);
mesProductAccountResModel.setErrorReason(reason);
}
}
return partitionList;
}
private String handleNotHT(List<MesProductRecordLog> recordLogs) {
int result = 0;
String startTime = "";
String endTime = "";
String reason = "";
String offlineReason = "【%s】到【%s】,客户端下线,导致【%s】个完成信号丢失";
String reasonOffline = "因其他原因:系统,网络,发版等,导致【%s】的完成信号丢失;";
String reasonQuality = "【%s】设备信号质量为0导致【%s】个完成信号丢失;";
String reasonBypass = "【%s】的完成信号,设备打BYPASS,视为无效;";
// BYPASS 默认fasle
boolean bypassFlag = false;
boolean offlineFlag = false;
List<String> finishList = Stream.of("Product_finish","Part_Finish").collect(Collectors.toList());
for (MesProductRecordLog recordLog : recordLogs) {
int errorCount = 0;
/*if (recordLog.getId() ==1834566428726444032l) {
int a = 1;
}*/
if (Objects.equal(recordLog.getType(), "monitor") && recordLog.getMessage().contains("客户端下线")) {
startTime = recordLog.getCreateDatetime();
offlineFlag = true;
continue;
}
if (Objects.equal(recordLog.getType(), "monitor") && recordLog.getMessage().contains("客户端上线") ) {
endTime = recordLog.getCreateDatetime();
offlineFlag = false;
if (errorCount > 0) {
reason += String.format(offlineReason, startTime, endTime, errorCount + "");
errorCount = 0;
}
//result = 0;
continue;
}
if (offlineFlag &&finishList.contains(recordLog.getCategoryLevelTwo()) && Objects.equal(recordLog.getEquipVariableValue(), "True")) {
if (result > 0) {
//endTime = recordLog.getCreateDatetime();
errorCount ++;
reason += String.format(offlineReason, startTime, startTime, errorCount + "");
continue;
}
errorCount ++;
result++;
continue ;
}
if (Objects.equal(recordLog.getCategoryLevelTwo(), "BYPASS")) {
if (Objects.equal(recordLog.getEquipVariableValue(), "True")) {
if (StringUtils.isEmpty(startTime)) {
startTime = recordLog.getCreateDatetime();
}
endTime = recordLog.getCreateDatetime();
// 每次都取反,第一次是打开,那第二次就是关闭了
bypassFlag = true;
continue;
} else {
if (bypassFlag) {
bypassFlag = false;
errorCount = 0;
continue;
}
}
}
if (bypassFlag && recordLog.getType().equals("record")) {
errorCount ++;
reason += String.format(reasonBypass,startTime, errorCount +"");
continue;
}
if (result == 0) {
if (!finishList.contains(recordLog.getCategoryLevelTwo()) || !Objects.equal(recordLog.getEquipVariableValue(), "True")) {
continue;
}
startTime = recordLog.getCreateDatetime();
result ++;
} else {
if (finishList.contains(recordLog.getCategoryLevelTwo()) && Objects.equal(recordLog.getEquipVariableValue(), "True")) {
errorCount ++;
if (Objects.equal(recordLog.getQuality(), "192")) {
reason += String.format(reasonOffline,startTime, errorCount +"");
} else {
reason += String.format(reasonQuality,startTime, errorCount +"");
}
startTime = recordLog.getCreateDatetime();
}
if (recordLog.getType().equals("record")) {
result --;
}
}
}
return reason;
}
private String handleNotHTAndHasRelease(List<MesProductRecordLog> recordLogs) {
int result = 0;
// 定义有问题的开始时间
String startTime = "";
// 定义有问题的结束时间
String endTime = "";
// 错误个数
// 异常原因
String reason = "";
String reasonOffline = "因其他原因:系统,网络,发版等,导致【%s】的完成信号丢失;";
String offlineReason = "【%s】到【%s】,客户端下线,导致【%s】个完成信号丢失;";
String reasonQuality = "【%s】设备信号质量为0视为无效;";
String reasonBypass = "【%s】的完成信号,设备打BYPASS,视为无效;";
String releaseBypass = "【%s】的完成信号,未发送Release信号,视为无效;";
// BYPASS 默认fasle
boolean bypassFlag = false;
// release 默认false
boolean releaseFlag = false;
// BYPASS 默认fasle
boolean offlineFlag = false;
//List<String> finishList = Stream.of("Product_finish","PART_OK","Part_Finish","Product_OK").collect(Collectors.toList());
List<String> finishList = Stream.of("Product_finish","Part_Finish").collect(Collectors.toList());
String preReason = "";
for (MesProductRecordLog recordLog : recordLogs) {
int errorCount = 0;
if (recordLog.getId() ==1288411771211612170l) {
int a = 1;
}
if (Objects.equal(recordLog.getType(), "monitor") && recordLog.getMessage().contains("客户端下线")) {
startTime = recordLog.getCreateDatetime();
offlineFlag = true;
continue;
}
if (Objects.equal(recordLog.getType(), "monitor") && recordLog.getMessage().contains("客户端上线") ) {
endTime = recordLog.getCreateDatetime();
offlineFlag = false;
if (result > 0) {
reason += String.format(offlineReason, startTime, endTime, 1 + "");
errorCount = 0;
}
//result = 0;
continue;
}
// 如果是bypass 遇到的所有加工完成指令 都计数并且原因是bypass导致
if (bypassFlag && finishList.contains(recordLog.getCategoryLevelTwo()) && Objects.equal(recordLog.getEquipVariableValue(), "True")) {
if (!StringUtils.isEmpty(preReason)) {
reason += preReason;
}
preReason = String.format(reasonBypass,startTime, 1 +"");
//reason += String.format(reasonBypass,startTime, 1 +"");
continue;
}
if (offlineFlag && finishList.contains(recordLog.getCategoryLevelTwo()) && Objects.equal(recordLog.getEquipVariableValue(), "True")) {
// 如果经过了1个finish然后再经过客户端下线再遇到finish则认为是客户端下线引起
if (result > 0) {
//endTime = recordLog.getCreateDatetime();
errorCount ++;
reason += String.format(offlineReason, startTime, startTime, errorCount + "");
continue;
}
errorCount ++;
result++;
continue ;
}
if (Objects.equal(recordLog.getCategoryLevelTwo(), "BYPASS") && Objects.equal(recordLog.getEquipVariableValue(), "True")) {
startTime = recordLog.getCreateDatetime();
endTime = recordLog.getCreateDatetime();
bypassFlag = true;
continue;
}
// 遇到bypass = false 则重置错误次数
if (bypassFlag && Objects.equal(recordLog.getCategoryLevelTwo(), "BYPASS") && Objects.equal(recordLog.getEquipVariableValue(), "False")) {
endTime = recordLog.getCreateDatetime();
errorCount = 0;
bypassFlag = false;
continue;
}
// 如果没有发送release 就出现了加工完成信号,则记录错误原因,且预错误,遇到有加工记录则取消
/**
* release :release
*
*
*/
if (!releaseFlag) {
if (finishList.contains(recordLog.getCategoryLevelTwo()) && Objects.equal(recordLog.getEquipVariableValue(), "True")) {
if (!StringUtils.isEmpty(preReason)) {
reason += preReason;
}
startTime = recordLog.getCreateDatetime();
errorCount ++;
preReason = String.format(releaseBypass, startTime, errorCount + "");
continue;
}
}
// BYPASS 逻辑结束 result = 1 代表一个成功新型号,遇到一个加工记录就会-1 变成0
if (result == 0) {
// 没有加工完成指令或者没有release指令但是有加工记录则也需要重置
if (recordLog.getType().equals("record")) {
releaseFlag = false;
bypassFlag = false;
preReason = "";
}
if (Objects.equal(recordLog.getCategoryLevelTwo(), "Work_Allow") && Objects.equal(recordLog.getEquipVariableValue(), "True")) {
releaseFlag = true;
continue;
}
if (!finishList.contains(recordLog.getCategoryLevelTwo()) || !Objects.equal(recordLog.getEquipVariableValue(), "True")) {
continue;
}
if (!releaseFlag) {
reason += preReason;
startTime = recordLog.getCreateDatetime();
preReason = String.format(releaseBypass, startTime, 1 + "");
result ++;
continue;
} if (!StringUtils.isEmpty(preReason)) {
reason += preReason;
}
result ++;
startTime = recordLog.getCreateDatetime();
} else {
if (finishList.contains(recordLog.getCategoryLevelTwo()) && Objects.equal(recordLog.getEquipVariableValue(), "True")) {
// 上一个加工记录信号还没走完这边又继续发一个加工记录且没有release 两个都要判定问题
if (!releaseFlag) {
startTime = recordLog.getCreateDatetime();
reason += String.format(releaseBypass, startTime, 1 + "");
} else {
if (Objects.equal(recordLog.getQuality(), "192")) {
reason += String.format(reasonOffline,startTime, 1 +"");
} else {
reason += String.format(reasonQuality,startTime, 1 +"");
}
}
}
if (recordLog.getType().equals("record")) {
releaseFlag = false;
bypassFlag = false;
offlineFlag = false;
result --;
preReason = "";
startTime = "";
errorCount = 0;
}
}
}
// 如果走到最后,还有预编译的错误,则直接加上
if (!StringUtils.isEmpty(preReason)) {
reason += preReason;
}
return reason;
}
private String handleHT(List<MesProductRecordLog> recordLogs) {
int result = 0;
String startTime = "";
String endTime = "";
String reason = "";
String offlineReason = "【%s】到【%s】,客户端下线,导致【%s】个完成信号丢失";
String reasonOffline = "因其他原因:系统,网络,发版等,导致【%s】的完成信号丢失;";
String reasonQuality = "【%s】设备信号质量为0导致完成信号丢失;";
boolean offlineFlag = false;
int errorCount = 0;
for (MesProductRecordLog recordLog : recordLogs) {
if (recordLog.getId() ==1284126441587343426l) {
int i = 1;
}
if (Objects.equal(recordLog.getType(), "monitor") && recordLog.getMessage().contains("客户端下线")) {
startTime = recordLog.getCreateDatetime();
offlineFlag = true;
continue;
}
if (Objects.equal(recordLog.getType(), "monitor") && recordLog.getMessage().contains("客户端上线") && offlineFlag) {
endTime = recordLog.getCreateDatetime();
offlineFlag = false;
if (errorCount > 0) {
reason += String.format(offlineReason, startTime, endTime, errorCount + "");
errorCount = 0;
}
continue;
}
if (offlineFlag && Objects.equal(recordLog.getCategoryLevelTwo(),"shot_counter") && recordLog.getEquipVariableValue().compareTo("0") > 0) {
errorCount ++;
continue ;
}
if (result == 0) {
if (!Objects.equal(recordLog.getCategoryLevelTwo(),"shot_counter") ) {
continue;
}
if (recordLog.getEquipVariableValue().compareTo("0") > 0) {
result ++;
}
} else {
if (Objects.equal(recordLog.getCategoryLevelTwo(),"shot_counter") && recordLog.getEquipVariableValue().compareTo("0") > 0) {
startTime = recordLog.getCreateDatetime();
endTime = recordLog.getCreateDatetime();
if (Objects.equal(recordLog.getQuality(), "192")) {
reason += String.format(reasonOffline,startTime, 1 +"");
} else {
reason += String.format(reasonQuality,startTime, 1 +"");
}
}
if (recordLog.getType().equals("record")) {
result --;
}
}
}
if (errorCount > 0 && offlineFlag) {
reason += String.format(offlineReason, startTime, "最后", errorCount + "");
}
return reason;
}
private List<MesProductAccountResModel> partition(List<MesProductAccountResModel> list, int pageSize, int pageNum) {
// 将 List 按照 PageSzie 拆分成多个List
List<List<MesProductAccountResModel>> partition = Lists.partition(list, pageSize);
// 总页数
int pages = partition.size();
pageNum = pageNum -1;
pageNum = pageNum <= 0 ? 0 : (pageNum <= (pages - 1) ? pageNum : (pages - 1));
return partition.get(pageNum);
}
}

@ -214,6 +214,7 @@ public class MesPullingOrderInfoService extends BaseMesService<MesPullingOrderIn
pullingOrder.setPartName(mesWorkOrder.getPartName());
pullingOrder.setCustPartNo(mesWorkOrder.getCustPartNo());
pullingOrder.setProduceSeq(StringUtil.isEmpty(mesWorkOrder.getProduceSeq()) ? 0 : mesWorkOrder.getProduceSeq());
pullingOrder.setOrderFlag(StringUtil.isEmpty(mesWorkOrder.getOrderFlag())?"":mesWorkOrder.getOrderFlag().substring(0,1));
ConvertBean.serviceModelInitialize(pullingOrder, userName);
mesPullingOrderInfoRepository.insert(pullingOrder);
@ -272,33 +273,27 @@ public class MesPullingOrderInfoService extends BaseMesService<MesPullingOrderIn
Map resultMap = new HashMap();
//查询拉动单状态为已扫描=20的 拉动单
DdlPackBean seriesPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(pullingGroupCode, "pullCode", seriesPackBean);
DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.PULL_ORDER_STATUS.SPS_PULL.getValue(), "pullOrderStatus", seriesPackBean);
DdlPreparedPack.getStringEqualPack(assemblyLine, "workCenterCode", seriesPackBean);
// DdlPreparedPack.getStringEqualPack(pullingGroupCode, "pullCode", seriesPackBean);
DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.PART_PULL_ORDER_TYPE.SPS_PULL.getValue(), "pullOrderType", seriesPackBean);
DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.PULL_ORDER_STATUS.JIS_PULL.getValue(), "pullOrderStatus", seriesPackBean);
// DdlPreparedPack.getStringEqualPack(assemblyLine, "workCenterCode", seriesPackBean);
seriesPackBean.setWhereAppend(seriesPackBean.getWhereAppend() + " order by modifyDatetime desc");
MesPullingOrderInfo mesPullingOrder = baseRDao.getByProperty(seriesPackBean);
if (StringUtil.isEmpty(mesPullingOrder)) {
resultMap.put("success", false);
String message = "产线" + assemblyLine + "拉动组" + pullingGroupCode + "数据为空,请检查数据";
String message = "SPS拉动数据已扫描数据为空请检查拉动单数据";
resultMap.put("message", message);
return resultMap;
}
DdlPackBean partPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(pullingGroupCode, "pullCode", partPackBean);
partPackBean.setWhereAppend(partPackBean.getWhereAppend() + " order by modifyDatetime desc");
//List<MesPullingOrderInfo> byHqlWhere = mesPullingOrderPartInfoRepository.findByHqlWhere(partPackBean);
resultMap.put("", mesPullingOrder);
resultMap.put("success", true);
String message = "更新SPS状态成功已发送SPS信息给设备! id:" + mesPullingOrder.getId() + "Code:" + mesPullingOrder.getPullingOrderNo() + "产线" + assemblyLine + "拉动组" + pullingGroupCode + "";
resultMap.put("message", message);
//更新主表状态 源系统为25配料完成 现在-【已发送设备-30】
mesPullingOrder.setPullOrderStatus(MesExtEnumUtil.PULL_ORDER_STATUS.SPS_PULL.getValue());
ConvertBean.serviceModelUpdate(mesPullingOrder, "WS.SPS");
baseRDao.update(mesPullingOrder);
String message = "更新SPS状态成功已发送SPS信息给设备! id:" + mesPullingOrder.getId() + "Code:" + mesPullingOrder.getPullingOrderNo() + "产线" + assemblyLine + "拉动组" + pullingGroupCode + "";
resultMap.put("success", true);
resultMap.put("message", message);
return resultMap;
}

@ -1,9 +1,7 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesConfigService;
import cn.estsh.i3plus.ext.mes.api.base.IMesPartSapService;
import cn.estsh.i3plus.ext.mes.api.base.IMesPartShippingGroupService;
import cn.estsh.i3plus.ext.mes.api.base.IMesShippingOrderManagementService;
import cn.estsh.i3plus.ext.mes.api.base.*;
import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException;
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
@ -12,6 +10,7 @@ import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.*;
import cn.estsh.i3plus.pojo.mes.bean.shipping.MesLoadingList;
import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingOrderManagement;
import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingOrderManagementDetail;
import cn.estsh.i3plus.pojo.mes.repository.*;
@ -26,10 +25,7 @@ import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.*;
import java.util.stream.Collectors;
@Service
@ -65,12 +61,16 @@ public class MesShippingOrderManagementService extends BaseMesService<MesShippin
@Autowired
private IMesPartShippingGroupService mesPartShippingGroupService;
@Autowired
private IMesLoadingListService mesLoadingListService;
protected void setPackQueryBean(MesShippingOrderManagement bean, DdlPackBean packBean) {
DdlPreparedPack.getStringEqualPack(bean.getShippingCode(), "shippingCode", packBean);
DdlPreparedPack.getStringEqualPack(bean.getOrderCode(), "orderCode", packBean);
DdlPreparedPack.getStringEqualPack(bean.getShippingGroupCode(), "shippingGroupCode", packBean);
DdlPreparedPack.getStringEqualPack(bean.getCustCode(), "custCode", packBean);
DdlPreparedPack.getStringEqualPack(bean.getCustOrganizeCode(), "custOrganizeCode", packBean);
DdlPreparedPack.getStringLikerPack(bean.getRemark(), "remark", packBean);
DdlPreparedPack.getNumEqualPack(bean.getStatus(), "status", packBean);
DdlPreparedPack.getInPackArray(bean.getStatusArray(), "status", packBean);
if (!StringUtils.isEmpty(bean.getReleaseTimeStart()) || !StringUtils.isEmpty(bean.getReleaseTimeEnd())) {
@ -291,11 +291,19 @@ public class MesShippingOrderManagementService extends BaseMesService<MesShippin
DdlPackBean detailPackBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode());
DdlPreparedPack.getNumEqualPack(originBean.getId(), "pid", detailPackBean);
List<MesShippingOrderManagementDetail> detailDeleteList = detailService.findAll(detailPackBean);
if(CollectionUtils.isEmpty(detailDeleteList)){
MesException.throwMesBusiException("发运单【%s】明细信息不存在",originBean.getShippingCode());
}
Map<String, List<MesShippingOrderManagementDetail>> detailMap = detailDeleteList.stream().collect(Collectors.groupingBy(MesShippingOrderManagementDetail::getPartNo));
Map<String, List<MesShippingOrderManagementDetail>> detailMap = detailDeleteList.stream().collect(Collectors.groupingBy(k -> k.getPartNo()));
//查询装车单
MesLoadingList loadingList = mesLoadingListService.getMesLoadingListByShippingCode(originBean.getOrganizeCode(), originBean.getShippingCode());
List<MesJisShipping> jisShippingList = new ArrayList<>();
MesPartShippingGroup mesPartShippingGroup = mesPartShippingGroupService.getMesPartShippingGroup(bean.getOrganizeCode(), originBean.getShippingGroupCode());
String erpWarerhouse = mesPartShippingGroup == null || StringUtils.isEmpty(mesPartShippingGroup.getSrcWarerhouse()) ? configService.getCfgValue(bean.getOrganizeCode(), "ERP_WARERHOUSE") : mesPartShippingGroup.getSrcWarerhouse();
String erpWarehous = configService.getCfgValue(bean.getOrganizeCode(), "ERP_WAREHOUS");
detailMap.forEach((k, v) -> {
MesPartSap part = partService.getMesPartSapByPartNo(v.get(0).getPartNo(), bean.getOrganizeCode());
@ -307,10 +315,10 @@ public class MesShippingOrderManagementService extends BaseMesService<MesShippin
jisShipping.setCusCode(originBean.getCustCode());
jisShipping.setShippingTime(TimeTool.getNowTime(true));
jisShipping.setDock(originBean.getSendDockCode());
jisShipping.setErpWarerhouse(mesPartShippingGroup == null || StringUtils.isEmpty(mesPartShippingGroup.getSrcWarerhouse()) ? configService.getCfgValue(bean.getOrganizeCode(), "ERP_WARERHOUSE") : mesPartShippingGroup.getSrcWarerhouse());
jisShipping.setErpWarehous(configService.getCfgValue(bean.getOrganizeCode(), "ERP_WAREHOUS"));
jisShipping.setErpWarerhouse(erpWarerhouse);
jisShipping.setErpWarehous(erpWarehous);
jisShipping.setCusDock(originBean.getCustDockCode());
jisShipping.setCustOrderNo(v.get(0).getCustOrderNo());
jisShipping.setCustOrderNo(Objects.isNull(loadingList) ? "" : loadingList.getOrderCode());
jisShipping.setSerialNumber(v.get(0).getBarcode());
jisShipping.setQuantityPerCar(v.size());
jisShipping.setShippingOrderCode(originBean.getShippingCode());

@ -10,6 +10,9 @@ import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.tool.MathOperation;
import cn.estsh.i3plus.platform.common.tool.TimeTool;
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.*;
@ -96,13 +99,16 @@ public class MesWorkOrderCutService extends BaseMesService<MesWorkOrderCut> impl
editionNumber = editionNumber == null ? 1 : editionNumber;
// 记录工单剩余未完成数量
Map<String, Double> workOrderUnCompleteMap = new HashMap<>();
// 记录当前裁片工单 每个工单的计划数量
Map<String, Double> workOrderQtyMap = new HashMap<>();
List<MesWorkOrderCutDetail> workOrderCutDetailtList = new ArrayList<>();
List<MesWorkOrderCut> workOrderCuttList = new ArrayList<>();
List<MesWorkOrderCutMaterial> workOrderCutMaterialList = new ArrayList<>();
// 校验工单未完成数量是否满足计划数量
checkQtyIsEnough(editionNumber, workOrderListMapByPartNo, cutScheme, cutSchemeFgList, workOrderUnCompleteMap);
checkQtyIsEnough(editionNumber, workOrderListMapByPartNo, cutScheme, cutSchemeFgList, workOrderUnCompleteMap, workOrderQtyMap);
// 预计生成裁片工单数量
for (Integer count = 0; count < editionNumber; count++) {
@ -135,17 +141,18 @@ public class MesWorkOrderCutService extends BaseMesService<MesWorkOrderCut> impl
for (MesCutSchemeFg cutSchemeFg : cutSchemeFgList) {
List<MesWorkOrder> workOrders = workOrderListMapByPartNo.get(cutSchemeFg.getPartNo());
MesWorkOrder workOrder = workOrders.get(0);
MesWorkOrderCutDetail detail = new MesWorkOrderCutDetail();
ConvertBean.serviceModelInitialize(detail, userName);
detail.setOrganizeCode(organizeCode);
detail.setCutWorkOrderNo(cutWorkOrderNo);
detail.setPartNo(workOrder.getPartNo());
detail.setPartName(workOrder.getPartName());
detail.setWorkOrderNo(workOrder.getWorkOrderNo());
detail.setRemark(cutSchemeFg.getRemark());
detail.setQty(cutSchemeFg.getQty());
workOrderCutDetailtList.add(detail);
for (MesWorkOrder workOrder : workOrders) {
MesWorkOrderCutDetail detail = new MesWorkOrderCutDetail();
ConvertBean.serviceModelInitialize(detail, userName);
detail.setOrganizeCode(organizeCode);
detail.setCutWorkOrderNo(cutWorkOrderNo);
detail.setPartNo(workOrder.getPartNo());
detail.setPartName(workOrder.getPartName());
detail.setWorkOrderNo(workOrder.getWorkOrderNo());
detail.setRemark(cutSchemeFg.getRemark());
detail.setQty(workOrderQtyMap.get(workOrder.getWorkOrderNo()));
workOrderCutDetailtList.add(detail);
}
}
}
@ -165,7 +172,18 @@ public class MesWorkOrderCutService extends BaseMesService<MesWorkOrderCut> impl
}
private static void checkQtyIsEnough(Integer editionNumber, Map<String, List<MesWorkOrder>> workOrderListMapByPartNo, MesCutScheme cutScheme, List<MesCutSchemeFg> cutSchemeFgList, Map<String, Double> workOrderUnCompleteMap) {
@Override
public ListPager<MesWorkOrderCutDetail> queryWorkOrderCutDetailByPager(MesWorkOrderCutDetail workOrderCutDetail, Pager pager) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(workOrderCutDetail.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(workOrderCutDetail.getCutWorkOrderNo(), MesExtConstWords.CUT_WORK_ORDER_NO, packBean);
pager = PagerHelper.getPager(pager, workOrderCutDetailRepository.findByHqlWhereCount(packBean));
List<MesWorkOrderCutDetail> list = workOrderCutDetailRepository.findByHqlWherePage(packBean, pager);
return new ListPager<>(list, pager);
}
private static void checkQtyIsEnough(Integer editionNumber, Map<String, List<MesWorkOrder>> workOrderListMapByPartNo,
MesCutScheme cutScheme, List<MesCutSchemeFg> cutSchemeFgList,
Map<String, Double> workOrderUnCompleteMap, Map<String, Double> workOrderQtyMap) {
for (MesCutSchemeFg cutSchemeFg : cutSchemeFgList) {
List<MesWorkOrder> workOrders = workOrderListMapByPartNo.get(cutSchemeFg.getPartNo());
@ -179,16 +197,19 @@ public class MesWorkOrderCutService extends BaseMesService<MesWorkOrderCut> impl
// 成品配置计划数量 * 版数 = 裁片工单该成品总消耗数量
Double totalQty = MathOperation.mul(cutSchemeFg.getQty(), editionNumber);
Double srcTotalQty = totalQty.doubleValue();
Double unCompleteQty = 0.0;
List<String> needWorkOrderNoList = new ArrayList<>();
for (MesWorkOrder order : workOrders) {
if (!order.getWorkCenterCode().equals(cutScheme.getWorkCenterCode()))
MesException.throwMesBusiException("工单【%s】关联产线【%】与裁片方案【%】关联产线不一致!", order.getWorkCenterCode(), cutScheme.getWorkCenterCode());
MesException.throwMesBusiException("工单【%s】关联产线【%】与裁片方案【%】关联产线不一致!",
order.getWorkCenterCode(), cutScheme.getWorkCenterCode());
if (unCompleteQty.compareTo(totalQty) > 0)
MesException.throwMesBusiException("零件号【%s】工单【%s】未完成数量汇总【%s】已满足产成总数【%s】!请取消勾选工单【%s】", order.getWorkCenterCode(), needWorkOrderNoList, cutScheme.getWorkCenterCode(), workOrders.subList(needWorkOrderNoList.size(), workOrders.size()));
if (unCompleteQty.compareTo(srcTotalQty) >= 0)
MesException.throwMesBusiException("零件号【%s】工单【%s】未完成数量汇总【%s】已满足产成总数【%s】!请取消勾选工单【%s】",
order.getWorkCenterCode(), needWorkOrderNoList, cutScheme.getWorkCenterCode(),
workOrders.subList(needWorkOrderNoList.size(), workOrders.size()));
unCompleteQty = MathOperation.add(unCompleteQty, order.getUnCompleteQty());
@ -196,8 +217,12 @@ public class MesWorkOrderCutService extends BaseMesService<MesWorkOrderCut> impl
if (order.getUnCompleteQty().compareTo(totalQty) >= 0) {
workOrderUnCompleteMap.put(order.getWorkOrderNo(), MathOperation.sub(order.getUnCompleteQty(), totalQty));
workOrderQtyMap.put(order.getWorkOrderNo(), totalQty);
totalQty = 0.0;
} else {
workOrderUnCompleteMap.put(order.getWorkOrderNo(), 0.0);
workOrderQtyMap.put(order.getWorkOrderNo(), order.getUnCompleteQty());
totalQty = MathOperation.sub(totalQty, order.getUnCompleteQty());
}
}

@ -245,7 +245,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
}
updateMesWorkOrder(result,MesExtEnumUtil.WORK_ORDER_LOG_TYPE.UPDATE,0);
if (isSavePrintQueue) insertPrintQueue(result, null);
if (isSavePrintQueue) insertPrintQueue(result);
return result;
}
@ -456,32 +456,22 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
}
// 创建工单打印队列
insertPrintQueue(item, mesPartProdGroup);
insertPrintQueue(item);
} else {
item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.CREATE.getValue());
}
}
private MesPrintQueue insertPrintQueue(MesWorkOrder workOrder, MesPartProdGroup mesPartProdGroup) {
private MesPrintQueue insertPrintQueue(MesWorkOrder workOrder) {
if (workOrder.getWorkOrderType() != MesExtEnumUtil.ORDER_TYPE.SORT.getValue()) return null;
if (workOrder.getWorkOrderStatus() != MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue()) return null;
if (mesPartProdGroup == null) {
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(workOrder.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(workOrder.getPartProdGroupCode(), "partProdGroupCode", ddlPackBean);
mesPartProdGroup = mesPartProdGroupRDao.getByProperty(ddlPackBean);
if(Objects.isNull(mesPartProdGroup)){
MesException.throwMesBusiException("生产线组【%s】信息不存在",workOrder.getPartProdGroupCode());
}
}
MesPrintQueue printQueue = new MesPrintQueue();
BeanUtils.copyProperties(workOrder, printQueue, MesExtConstWords.ID);
printQueue.setPrintQueueType(MesExtEnumUtil.PRINT_QUEUE_TYPE.WORK_ORDER_ASSEMBLY.getValue());
printQueue.setPartProdGroupCode(mesPartProdGroup.getPartProdGroupCode());
printQueue.setPrintStatus(MesExtEnumUtil.PRINT_STATUS.UNPRINT.getValue());
return printQueueRepository.save(printQueue);
}
@ -620,7 +610,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
mesWorkOrderLogList.add(workOrderLog);
// 如果工单为发布状态则新增打印队列
insertPrintQueue(copyMesWorkOrder, null);
insertPrintQueue(copyMesWorkOrder);
continue;
} else if (item.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.BTO.getValue()) {
@ -1193,7 +1183,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
return;
}
insertPrintQueue(workOrder, null);
insertPrintQueue(workOrder);
}
@ -1251,6 +1241,10 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
MesPartProdGroup mesPartProdGroup = partProdGroupMap.get(mesWorkOrder.getPartProdGroupCode());
if (mesPartProdGroup == null) {
MesException.throwMesBusiException("工单【%s】关联零件生产组【%s】不存在", mesWorkOrder.getWorkOrderNo(), mesWorkOrder.getPartProdGroupCode());
}
String printTemplate = mesPartProdGroup.getPrintTemplate();
if (StringUtils.isEmpty(printTemplate)) {
@ -1541,6 +1535,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
newMesProductOffLine.setSapWorkCenter(mesWorkOrder.getErpWorkCenter());
newMesProductOffLine.setOrganizeCode(mesWorkOrder.getOrganizeCode());
newMesProductOffLine.setDescription(nowTime);
newMesProductOffLine.setBomCode(mesBom.getBomCode());
ConvertBean.serviceModelInitialize(newMesProductOffLine, mesWorkOrder.getCreateUser());
return newMesProductOffLine;
@ -1572,6 +1567,15 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
return mesWorkOrderRDao.findByHqlWhere(packBean);
}
@Override
public MesWorkOrder getWorkOrder(String organizeCode, String workOrderNo) {
// statusList.add(MesExtEnumUtil.ORDER_STATUS.CLOSE.getValue());
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(workOrderNo, "workOrderNo", packBean);
return mesWorkOrderRDao.getByProperty(packBean);
}
private MesMove createMove(MesPartSap mesPart, String source, String target, String org, String workCenterCode, double qty, String sn, Integer moveType) {
MesMove move = new MesMove();
if (!Objects.isNull(mesPart)) {
@ -1870,7 +1874,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
}
MesBom next = mesBoms.iterator().next();
//如果存在多个bomCode取最新的一个
return mesBoms.stream().collect(Collectors.groupingBy(MesBom::getBomCode)).get(next.getBomCode());
return mesBoms.stream().collect(Collectors.groupingBy(t -> t.getBomCode() + t.getEffStartTime())).get(next.getBomCode() + next.getEffStartTime());
}

@ -330,7 +330,7 @@ public class MesSpotCheckOrderService extends BaseMesService<MesSpotCheckOrder>
.setErrorDetail("【%s】点检单状态为【%s】不允许修改请检查数据", bean.getSpotCheckId(), MesExtEnumUtil.SPOT_CHECK_ORDER_STATUS.valueOfDescription(bean.getStatus()))
.build();
}
bean.setSystemSyncStatus(CommonEnumUtil.FALSE);
bean.setIsDeleted(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue());
ConvertBean.serviceModelUpdate(bean, AuthUtil.getSessionUser().getUserName());
//获取点检方案明细

@ -78,9 +78,9 @@ public class AssemblyVisualListPrintStrategy implements IPrintTemplateStrategySe
// 为空时显示内容
String isNullViewContent = StringUtils.isEmpty(partProdGroup.getIsNullViewContent()) ? "" : partProdGroup.getIsNullViewContent();
for (Integer index = 0; index < totalCount; index++) {
String displayValue = workOrderAssemblyList.size() -1 < index ? isNullViewContent : workOrderAssemblyList.get(0).getDisplayValue();
String displayValue = workOrderAssemblyList.size() -1 < index ? isNullViewContent : workOrderAssemblyList.get(index).getDisplayValue();
resultMap.put(MesExtConstWords.ASSEMBLY_PARAM + (index+1), StringUtils.isEmpty(displayValue) ? "" : displayValue);
resultMap.put(MesExtConstWords.ASSEMBLY_PARAM + (index+1), StringUtils.isEmpty(displayValue) ? StringUtils.isEmpty(isNullViewContent) ? "" : null : displayValue);
}
printDataMapList.add(resultMap);

@ -17,6 +17,7 @@ import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.StringJoiner;
@Service
@ -30,10 +31,19 @@ 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);
DdlPreparedPack.getNumEqualPack(bean.getEquipVariableId(), MesExtConstWords.EQUIP_VARIABLE_ID, packBean);
// DdlPreparedPack.getStringEqualPack(bean.getEquipmentCode(), MesExtConstWords.EQUIPMENT_CODE, packBean);
DdlPreparedPack.getStringLikerPack(bean.getEquipVariableName(), MesExtConstWords.EQUIP_VARIABLE_NAME, packBean);
if (!StringUtils.isEmpty(bean.getEquipVariableName()) && bean.getEquipVariableName().split(",").length > 1) {
DdlPreparedPack.getInPackList(Arrays.asList(bean.getEquipVariableName().split(",")), MesExtConstWords.EQUIP_VARIABLE_NAME, packBean);
} else {
DdlPreparedPack.getStringLikerPack(bean.getEquipVariableName(), MesExtConstWords.EQUIP_VARIABLE_NAME, packBean);
}
DdlPreparedPack.timeBuilder(bean.getCreateDateTimeStart(), bean.getCreateDateTimeEnd(), MesExtConstWords.CREATE_DATE_TIME, packBean, true);
if (!StringUtils.isEmpty(bean.getEquipVariableIds())) {
// Long[] ids = Arrays.stream(bean.getEquipVariableIds().split(",")).map(Long::parseLong).toArray(Long[]::new);
List<String> stringList = Arrays.asList(bean.getEquipVariableIds().split(","));
packBean.setWhereAppend(packBean.getWhereAppend() + " and equipVariableId in (" + String.join(",", stringList) + ") ");
}
DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{MesExtConstWords.CREATE_DATE_TIME}, packBean);
}

@ -276,6 +276,7 @@ public class MesYfReportServiceImpl implements IMesYfReportService {
private DdlPackBean getMesProduceSnPackBean(MesProduceSn mesProduceSn) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesProduceSn.getOrganizeCode());
DdlPreparedPack.getStringLikerPack(mesProduceSn.getProductSn(), "productSn", packBean);
DdlPreparedPack.getStringLikerPack(mesProduceSn.getCustSn(), "custSn", packBean);
DdlPreparedPack.getStringLikerPack(mesProduceSn.getWorkOrderNo(), "workOrderNo", packBean);
DdlPreparedPack.getStringBiggerPack(mesProduceSn.getCreateDateTimeStart(), "createDatetime", packBean);
DdlPreparedPack.getStringSmallerPack(mesProduceSn.getCreateDateTimeEnd(), "createDatetime", packBean);

@ -2,6 +2,7 @@ package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.webservice;
import cn.estsh.i3plus.ext.mes.apiservice.model.SpsInfo;
import cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base.MesPullingOrderInfoService;
import cn.estsh.i3plus.pojo.base.util.StringUtil;
import cn.estsh.impp.framework.boot.util.SpringContextsUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -9,10 +10,11 @@ import org.slf4j.LoggerFactory;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import java.util.HashMap;
import java.util.Map;
/**
* @Description : WebServiceServerSPS
* @Description :soapUI http://10.193.30.22:8300/i3plus/mes-service-spsEqu?wsdl
* @Author :gsz
* @Date 2024/8/30 9:18
* @Modify
@ -28,7 +30,15 @@ public class WebServiceServerSPS {
LOGGER.info("syncSPSForEquipment主数据:{}", spsInfo);
MesPullingOrderInfoService bean = (MesPullingOrderInfoService) SpringContextsUtil.getBean("mesPullingOrderInfoService");
return bean.doSPSForEquipment(spsInfo.getAssemblyLine(),spsInfo.getPullingGroupCode(),spsInfo.getOrganizeCode());
if (StringUtil.isEmpty(spsInfo.getOrganizeCode())) {
Map resultMap = new HashMap();
resultMap.put("success", false);
String message = "SPS拉动数据已扫描数据为空请检查拉动单数据";
resultMap.put("message", message);
return resultMap;
}
return bean.doSPSForEquipment("","",spsInfo.getOrganizeCode());
// return bean.doSPSForEquipment(spsInfo.getAssemblyLine(),spsInfo.getPullingGroupCode(),spsInfo.getOrganizeCode());
}
}

@ -240,6 +240,17 @@ spring.shardingsphere.datasource.slave.max-lifetime=7000000
spring.shardingsphere.datasource.slave.connection-test-query=select 1
spring.shardingsphere.datasource.slave.keep-alive-time=3500000
impp.pisces1.datasource.isopen = false
#spring.shardingsphere.sharding.tables.mes_equipment_log_detail.actual-data-nodes=ds0.mes_equipment_log_detail_$->{[152,156,300]}
spring.shardingsphere.sharding.tables.mes_equipment_log_detail.actual-data-nodes=ds0.mes_equipment_log_detail_$->{['ck01_152','ck01_156','ck01_300']}
spring.shardingsphere.sharding.tables.mes_equipment_log_detail.table-strategy.inline.sharding-column=equip_id
spring.shardingsphere.sharding.tables.mes_equipment_log_detail.table-strategy.inline.algorithm-expression=mes_equipment_log_detail_$->{equip_id}
#\u7ED1\u5B9A\u8868
spring.shardingsphere.sharding.binding-tables[0]=mes_equipment_log,mes_equipment_log_detail
#impp.write.datasource.driver-class-name=com.mysql.jdbc.Driver
#impp.write.datasource.jdbc-url=jdbc:mysql://10.195.88.71:3316/impp_i3_mes?autoReconnect=true&useSSL=false&characterEncoding=utf-8&allowPublicKeyRetrieval=true
#impp.write.datasource.username=root

@ -0,0 +1,297 @@
#\u9879\u76EE\u7AEF\u53E3
server.port=8300
#\u672C\u673Aip
impp.server.ip=localhost
#\u94FE\u8DEF\u8FFD\u8E2Azipkin\u63A7\u5236\u53F0ip\u5730\u5740
impp.console.ip=http://10.195.88.71:8010
################ \u529F\u80FD\u914D\u7F6E1 ################
#mes webservice\u5F00\u5173
mes.webservice.open=true
#\u5DE5\u4F5C\u533AID,\u4E0D\u540C\u670D\u52A1\u5668\u4E0D\u540CID 0 - 31
impp.snowflake.work.id=19
#\u6570\u636E\u4ED3\u533AID 0 - 31 \u6709\u9ED8\u8BA4\u56FA\u5B9AID
impp.snowflake.database.id=11
#\u82E5\u65E0\u6CD5\u8FDE\u63A5\u6CE8\u518C\u4E2D\u5FC3\uFF0C\u662F\u5426\u9700\u8981\u4E00\u76F4\u68C0\u6D4B\u52A0\u5165
impp.cluster.fetch=false
#\u670D\u52A1\u6CE8\u518C\u4E2D\u5FC3
impp.cluster.regist.center=http://10.195.88.71:8000/eureka/
#\u65E5\u5FD7\u9ED8\u8BA4\u4F7F\u7528log4j2
logging.config=classpath:log4j2-spring.xml
########\u5E73\u53F0\u76F8\u5173\u53C2\u6570##########
#\u662F\u5426\u5F00\u542Fredis\u7F13\u5B58
impp.config.redis=true
#\u662F\u5426\u5F00\u542Fmongo
impp.config.mongo=true
#\u662F\u5426\u5F00\u542FrabbitMQ
impp.config.rabbitmq=false
#\u662F\u5426\u5F00\u542Fswagger
impp.config.swagger=true
#\u662F\u5426\u5F00\u542Fwebsocket
impp.config.websocket=true
#\u662F\u5426\u5F00\u542F\u6587\u4EF6\u670D\u52A1
impp.config.fileserver=fastdfs
#\u662F\u5426\u5BF9\u53D1\u5E03\u670D\u52A1\u8FDB\u884C\u8BE6\u7EC6\u65E5\u5FD7\u5206\u6790
impp.log.detail.controller=false
#\u662F\u5426\u5BF9\u8C03\u7528\u670D\u52A1\u8FDB\u884C\u8BE6\u7EC6\u65E5\u5FD7\u5206\u6790
impp.log.detail.service=false
################ \u961F\u5217\u5904\u7406 ################
#\u7AD9\u5185\u4FE1
impp.mq.queue.letter=true
#\u90AE\u4EF6
impp.mq.queue.mail=true
#\u5B9A\u65F6\u4EFB\u52A1
impp.mq.queue.schedule=true
#SWEB\u901A\u77E5\u5904\u7406\u961F\u5217
impp.mq.queue.sweb.notice=true
################################ \u5176\u4ED6\u529F\u80FD\u8BBE\u7F6E ################################
#elasticsearch ip \u591A\u4E2A\u7528\u9017\u53F7\u9694\u5F00
elasticsearch.ip=10.195.88.71:9200
################ FastDfs \u914D\u7F6E ################
#tracker\u670D\u52A1\u5668ip
fastdfs.tracker_servers=10.195.88.71:22122
# tracker\u7684http\u7AEF\u53E3
fastdfs.http_tracker_http_port=22122
# \u4F7F\u7528\u81EA\u5B9A\u4E49\u5DE5\u5177\u83B7\u53D6\u6587\u4EF6\u5C55\u793A\u5730\u5740
fastdfs.http.ui.host=http://dfs.estsh.com
#\u5BC6\u7801
#fastdfs.http.secret_key=
#\u8FDE\u63A5\u8D85\u65F6
fastdfs.connect_timeout_in_seconds=500000
#\u4F20\u8F93\u8D85\u65F6
fastdfs.network_timeout_in_seconds=60000000
fastdfs.charset=UTF-8
# token \u9632\u76D7\u94FE\u529F\u80FD
fastdfs.http_anti_steal_token=no
#redisIP
redis.hostName=10.195.88.71
#\u7AEF\u53E3\u53F7
redis.port=6379
#\u5982\u679C\u6709\u5BC6\u7801
redis.password=Admin123!
##\u5176\u4ED6redis\u914D\u7F6E\u9700\u8981\u8C03\u6574\u7684\u52A0\u5728\u6B64\u5904
################## rabbitMQ\u914D\u7F6E ####################
spring.rabbitmq.vhost=/
spring.rabbitmq.host=10.195.88.71
spring.rabbitmq.port=5672
spring.rabbitmq.username=estsh
spring.rabbitmq.password=estsh123
##\u5176\u4ED6rabbitMq\u914D\u7F6E\u9700\u8981\u8C03\u6574\u7684\u52A0\u5728\u6B64\u5904
################ \u529F\u80FD\u914D\u7F6E2 ################
#\u662F\u5426\u5F00\u542Fredis
mes.redis.open=true
#\u662F\u5426\u5141\u8BB8\u524D\u7AEF\u8DE8\u57DF\u63D0\u4EA4
impp.web.cross=true
################ \u6388\u6743\u8FC7\u6EE4\u914D\u7F6E ################
#\u7528\u6237\u6388\u6743\u8FC7\u6EE4\u8DEF\u5F84
filter.shiro.user.filteruri=/mes/operate/*
#\u7528\u6237\u6388\u6743\u8FC7\u6EE4\u8DEF\u5F84
filter.shiro.admin.filteruri=/mes/adoperate/*
#\u7528\u6237\u6388\u6743\u8FC7\u6EE4\u8DEF\u5F84
filter.shiro.saadmin.filteruri=/mes/saoperate/*
################ \u4E91\u914D\u7F6E \uFF08\u4EE5projectName\u4F5C\u4E3A\u5E94\u7528\u540D\uFF09 ################
#\u662F\u5426\u5F00\u542F\u5FAE\u670D
eureka.client.enabled=false
#\uFF08\u53C2\u6570\u914D\u7F6E\uFF09\u6CE8\u518C\u4E2D\u5FC3\u5730\u5740 -\u300B i3plus-ics\uFF0C\u591A\u4E2A\u7528\u9017\u53F7\u5206\u9694
eureka.client.service-url.defaultZone=${impp.cluster.regist.center}
#\u533A\u57DF\uFF08\u6E90\u7801\u4E2D\u5305\u542BdefaultZone\uFF0C\u6240\u4EE5\u9ED8\u8BA4\u4F7F\u7528defaultZone\uFF09
#eureka.client.region=estsh
#eureka.client.service-url.estsh:http://192.168.1.20:8000/eureka/,http://192.168.1.20:8001/eureka/
################ \u672C\u673A\u5FAE\u670D\u914D\u7F6E ################
#\u672C\u670D\u52A1\u4E3B\u673Aip\uFF08\u82E5\u591A\u4E2A\u7F51\u5361\uFF0C\u5219\u9700\u8981\u8BBE\u7F6E\u672C\u670D\u52A1ip\uFF09
eureka.instance.ip-address=${impp.server.ip}
#\u672C\u670D\u52A1\u5B9E\u4F8BID
eureka.instance.instance-id=${impp.server.ip}:${server.port}
#\u672C\u670D\u52A1\u4E3B\u673A\u540D
eureka.instance.hostname=${impp.server.ip}
#\u672C\u670D\u52A1\u72B6\u6001\u9875\u9762
eureka.instance.status-page-url=http://${impp.server.ip}:${server.port}/swagger-ui.html
#\u5C06\u81EA\u5DF1\u7684IP\u6CE8\u518C\u5230Eureka Server\u3002\u82E5\u4E0D\u914D\u7F6E\u6216\u8BBE\u7F6E\u4E3Afalse\uFF0C\u8868\u793A\u6CE8\u518C\u5FAE\u670D\u52A1\u6240\u5728\u64CD\u4F5C\u7CFB\u7EDF\u7684hostname\u5230Eureka Server
eureka.instance.prefer-ip-address=true
#\u662F\u5426\u8FDB\u884C\u5065\u5EB7\u68C0\u67E5
eureka.client.healthcheck.enabled=true
################ \u68C0\u6D4B\u673A\u5236 ################
#\u5FC3\u8DF3\u95F4\u9694\u5468\u671F\uFF0C\u5B95\u673A\u9650\u5236\uFF08\u79D2\uFF09\uFF0C30\u79D2\u6CA1\u53CD\u5E94\u89C6\u4E3A\u5B95\u673A
eureka.instance.lease-expiration-duration-in-seconds=30
#\u5FC3\u8DF3\u5468\u671F
eureka.instance.lease-renewal-interval-in-seconds=20
#client\u8FDE\u63A5Eureka\u670D\u52A1\u7AEF\u540E\u7684\u7A7A\u95F2\u7B49\u5F85\u65F6\u95F4\uFF0C\u9ED8\u8BA4\u4E3A30 \u79D2
eureka.client.eureka-connection-idle-timeout-seconds=1
#\u6700\u521D\u590D\u5236\u5B9E\u4F8B\u4FE1\u606F\u5230eureka\u670D\u52A1\u5668\u6240\u9700\u7684\u65F6\u95F4\uFF08s\uFF09\uFF0C\u9ED8\u8BA4\u4E3A40\u79D2
eureka.client.initial-instance-info-replication-interval-seconds=1
#\u95F4\u9694\u591A\u957F\u65F6\u95F4\u518D\u6B21\u590D\u5236\u5B9E\u4F8B\u4FE1\u606F\u5230eureka\u670D\u52A1\u5668\uFF0C\u9ED8\u8BA4\u4E3A30\u79D2
eureka.client.instance-info-replication-interval-seconds=1
#\u4ECEeureka\u670D\u52A1\u5668\u6CE8\u518C\u8868\u4E2D\u83B7\u53D6\u6CE8\u518C\u4FE1\u606F\u7684\u65F6\u95F4\u95F4\u9694\uFF08s\uFF09\uFF0C\u9ED8\u8BA4\u4E3A30\u79D2
eureka.client.registry-fetch-interval-seconds=1
################ \u6253\u5F00feign\u7684\u7194\u65AD ################
feign.hystrix.enabled=true
#\u8BFB\u53D6\u6570\u636E\u65F6\u957F
ribbon.ReadTimeout=100000
#\u8FDE\u63A5\u65F6\u957F
ribbon.ConnectTimeout=100000
#\u91CD\u8BD5
ribbon.maxAutoRetries=2
#\u54CD\u5E94\u8D85\u8FC7\u65F6\u957F\uFF0C\u8FDB\u884C\u7194\u65AD\uFF08\u7194\u65AD\u8D85\u65F6\u9700\u8981\u5927\u4E8E\u8BFB\u53D6\u65F6\u957F\u53CA\u8FDE\u63A5\u65F6\u957F\uFF09
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=150000
#\u96C6\u7FA4\u540D
eureka.instance.metadata-map.cluster=impp_cluster
################ \u94FE\u8DEF\u8FFD\u8E2A ################
#\u4F7F\u7528web\u65B9\u5F0F\u4F20\u8F93\u4FE1\u606F
spring.zipkin.sender.type=web
#\u94FE\u8DEF\u8FFD\u8E2A\u670D\u52A1\u7684\u5730\u5740
spring.zipkin.base-url=${impp.console.ip}
#\u8FFD\u8E2A\u6DF1\u5EA6\uFF0C\u767E\u5206\u6BD4\uFF0C1\u662F\u5168\u90E8
spring.sleuth.sampler.probability=1.0
################ \u65E5\u5FD7\u636E\u6E90 ################
spring.data.mongodb.database=mongoDBSource
spring.data.mongodb.uri=10.195.88.71:27017
spring.data.mongodb.username=sa
spring.data.mongodb.password=i3plus
spring.data.mongodb.port=27017
################ \u4E3B\u6570\u636E\u6E90 ################
##############\u5B9A\u65F6\u4EFB\u52A1\u6301\u4E45\u5316##############
impp.schedule.open=true
impp.schedule.datasource.driver-class-name=com.mysql.jdbc.Driver
impp.schedule.datasource.jdbc-url=jdbc:mysql://10.195.88.71:3306/impp_i3_schedule?autoReconnect=true&useSSL=false&characterEncoding=utf-8
impp.schedule.datasource.username=root
impp.schedule.datasource.password=@E#e7@saWE!293**((367
impp.schedule.datasource.max-connections=20
#\u5B9A\u65F6\u4EFB\u52A1\u5728\u670D\u52A1\u542F\u52A8\u540E\u591A\u5C11\u79D2\u6267\u884C
impp.schedule.start.after-second=20
#\u662F\u5426\u96C6\u7FA4\u90E8\u7F72
impp.schedule.datasource.is-clustered=true
#\u6267\u884C\u68C0\u6D4B\uFF08\u6BEB\u79D2\uFF09\uFF0C\u82E5\u5B95\u673A\u7531\u5176\u4ED6\u5B9A\u65F6\u5668\u6267\u884C
impp.schedule.datasource.cluster-checkin-interval=30000
#\u7EBF\u7A0B\u6570
impp.schedule.thread-count=10
#\u7EBF\u7A0B\u4F18\u5148\u7EA7\uFF081-10\uFF09\u9ED8\u8BA4\u4E3A5
impp.schedule.thread-priority=5
################ \u6570\u636E\u6C60\u8BBE\u7F6E ################
## \u8FDE\u63A5\u6C60\u6700\u5927\u8FDE\u63A5\u6570\uFF0C\u9ED8\u8BA4\u662F10
spring.datasource.hikari.maximum-pool-size=100
## \u6700\u5C0F\u7A7A\u95F2\u8FDE\u63A5\u6570\u91CF
spring.datasource.hikari.minimum-idle=10
## \u7A7A\u95F2\u8FDE\u63A5\u5B58\u6D3B\u6700\u5927\u65F6\u95F4\uFF0C\u9ED8\u8BA4600000\uFF0810\u5206\u949F\uFF09
spring.datasource.hikari.idle-timeout=600000
## \u6B64\u5C5E\u6027\u63A7\u5236\u6C60\u4E2D\u8FDE\u63A5\u7684\u6700\u957F\u751F\u547D\u5468\u671F\uFF0C\u503C0\u8868\u793A\u65E0\u9650\u751F\u547D\u5468\u671F\uFF0C\u9ED8\u8BA41800000\u537330\u5206\u949F
spring.datasource.hikari.max-lifetime=1800000
## \u6570\u636E\u5E93\u8FDE\u63A5\u8D85\u65F6\u65F6\u95F4,\u9ED8\u8BA430\u79D2\uFF0C\u537330000
spring.datasource.hikari.connection-timeout=30000
################ JPA\u8BBE\u7F6E\u8BBE\u7F6E ################
# mysql
spring.jpa.database=MYSQL
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
##Sql-server##
#spring.jpa.database=sql_server
#spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.SQLServerDialect
##oracle##
#spring.jpa.database=oracle
#spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.Oracle10gDialect
# mysql
spring.datasource.validationQuery=SELECT 1
##Sql-server##
# spring.datasource.validationQuery=SELECT 1
##oracle##
# spring.datasource.validationQuery=SELECT 1 FROM DUAL
#ImprovedNamingStrategy / physical_naming_strategy java\u5C5E\u6027\u6620\u5C04\u5230\u6570\u636E\u5E93\u5B57\u6BB5\u65F6\u547D\u540D\u89C4\u5219
# spring.jpa.properties.hibernate.physical_naming_strategy=org.hibernate.cfg.ImprovedNamingStrategy/org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
#\u8868\u5173\u7CFBcreate,create-drop,update,validate
spring.jpa.properties.hibernate.hbm2ddl.auto=none
#\u662F\u5426\u663E\u793Asql
spring.jpa.show-sql=true
################ \u6388\u6743\u914D\u7F6E ################
slm.api.password=4C9479EBEFA6FA6E232EF25EFA49C4D2
slm.app.id=20190513
###################\uFFFD\uFFFD\u013F\uFFFD\uFFFD\uFFFD\u077F\uFFFD\u02B5\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00B7\uFFFD\uFFFD##################################################
project.entity.path=cn.estsh.i3plus.pojo
############################????#######################################
###spring.shardingsphere.datasource.names=master,slave
spring.shardingsphere.datasource.names=master,slave
##??
spring.shardingsphere.datasource.master.type=com.zaxxer.hikari.HikariDataSource
spring.shardingsphere.datasource.master.driver-class-name= com.mysql.jdbc.Driver
spring.shardingsphere.datasource.master.JdbcUrl=jdbc:mysql://10.193.8.88:3306/impp_i3_mes?autoReconnect=true&useSSL=false&characterEncoding=utf-8
spring.shardingsphere.datasource.master.username=root
spring.shardingsphere.datasource.master.password=@E#e7@saWE!293**((367
spring.shardingsphere.datasource.master.maximum-pool-size=200
spring.shardingsphere.datasource.master.minimum-idle=200
spring.shardingsphere.datasource.master.idle-timeout=500000
spring.shardingsphere.datasource.master.connection-timeout=600000
spring.shardingsphere.datasource.master.max-lifetime=7000000
spring.shardingsphere.datasource.master.connection-test-query=select 1
spring.shardingsphere.datasource.master.keep-alive-time=3500000
##??
spring.shardingsphere.datasource.slave.type=com.zaxxer.hikari.HikariDataSource
spring.shardingsphere.datasource.slave.driver-class-name= com.mysql.jdbc.Driver
spring.shardingsphere.datasource.slave.JdbcUrl=jdbc:mysql://10.193.8.88:3306/impp_i3_mes?autoReconnect=true&useSSL=false&characterEncoding=utf-8
spring.shardingsphere.datasource.slave.username=root
spring.shardingsphere.datasource.slave.password=@E#e7@saWE!293**((367
spring.shardingsphere.datasource.slave.maximum-pool-size=200
spring.shardingsphere.datasource.slave.minimum-idle=200
spring.shardingsphere.datasource.slave.idle-timeout=500000
spring.shardingsphere.datasource.slave.connection-timeout=600000
spring.shardingsphere.datasource.slave.max-lifetime=7000000
spring.shardingsphere.datasource.slave.connection-test-query=select 1
spring.shardingsphere.datasource.slave.keep-alive-time=3500000
impp.pisces1.datasource.isopen = false
#spring.shardingsphere.sharding.tables.mes_equipment_log_detail.actual-data-nodes=ds0.mes_equipment_log_detail_$->{[152,156,300]}
spring.shardingsphere.sharding.tables.mes_equipment_log_detail.actual-data-nodes=ds0.mes_equipment_log_detail_$->{['ck01_152','ck01_156','ck01_300']}
spring.shardingsphere.sharding.tables.mes_equipment_log_detail.table-strategy.inline.sharding-column=equip_id
spring.shardingsphere.sharding.tables.mes_equipment_log_detail.table-strategy.inline.algorithm-expression=mes_equipment_log_detail_$->{equip_id}
#\u7ED1\u5B9A\u8868
spring.shardingsphere.sharding.binding-tables[0]=mes_equipment_log,mes_equipment_log_detail
#impp.write.datasource.driver-class-name=com.mysql.jdbc.Driver
#impp.write.datasource.jdbc-url=jdbc:mysql://10.195.88.71:3316/impp_i3_mes?autoReconnect=true&useSSL=false&characterEncoding=utf-8&allowPublicKeyRetrieval=true
#impp.write.datasource.username=root
#impp.write.datasource.password=estsh123
#impp.read.datasource.type=com.zaxxer.hikari.HikariDataSource
#impp.read.datasource.driver-class-name=com.mysql.jdbc.Driver
#impp.read.datasource.jdbc-url=jdbc:mysql://10.195.88.71:3336/impp_i3_mes?autoReconnect=true&useSSL=false&characterEncoding=utf-8&allowPublicKeyRetrieval=true
#impp.read.datasource.username=root
#impp.read.datasource.password=estsh123
##??????
spring.shardingsphere.sharding.master-slave-rules.ds0.master-data-source-name=master
spring.shardingsphere.sharding.master-slave-rules.ds0.slave-data-source-names=slave
#??datasource ????????????????
#??? gg
#spring.shardingsphere.sharding.default-data-source-name=ds0
#??????????sql??
spring.shardingsphere.props.sql.show = false
spring.shardingsphere.props.max.connections.size.per.query = 10
impp.schedule.scheduleType=xxljob
xxl.job.admin.addresses=http://10.195.88.71:10010/xxl-job-admin
### xxl-job, access token
xxl.job.accessToken=
### xxl-job executor appname
#xxl.job.executor.appname=${project.name}
xxl.job.executor.appname=i3mes-castle
### xxl-job executor registry-address: default use address to registry , otherwise use ip:port if address is null
xxl.job.executor.address=
### xxl-job executor server-info
xxl.job.executor.ip=172.24.96.1
#xxl.job.executor.ip=
#xxl.job.executor.port=9999
xxl.job.executor.port=8888
### xxl-job executor log-path
xxl.job.executor.logpath=
### xxl-job executor log-retention-days
xxl.job.executor.logretentiondays=10
xxl.job.basePackage=cn.estsh.i3plus.ext.mes.apiservice.schedulejob
impp.app.ext.base-packages=cn.estsh.i3plus.ext.mes.apiservice

@ -21,6 +21,8 @@ impp.yfas.datasource.jdbc-url=jdbc:mysql://10.195.88.71:3316/impp_i3_wms_sap_if?
impp.yfas.datasource.username=root
impp.yfas.datasource.password=estsh123
#\u6570\u636E\u6E90\u7684\u522B\u540D
#impp.wms.datasource.isopen=true
#impp.wms.datasource.alias=wmsDataSource
@ -45,6 +47,14 @@ impp.pisces.datasource.jdbc-url=jdbc:sqlserver://172.28.239.113:1433;SelectMetho
impp.pisces.datasource.username=sa
impp.pisces.datasource.password=sahasnopassword
#Pisces数据源
impp.pisces1.datasource.isopen=true
impp.pisces1.datasource.alias=piscesDataSource
impp.pisces1.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
impp.pisces1.datasource.jdbc-url=jdbc:sqlserver://172.28.239.113:1433;SelectMethod=cursor;DatabaseName=PiscesTest;applicationIntent=schemaOnly;selectedSchema=MES
impp.pisces1.datasource.username=sa
impp.pisces1.datasource.password=sahasnopassword
#Pisces中间表数据源
impp.pisces1.datasource.isopen=true
impp.pisces1.datasource.alias=pisces1DataSource

@ -0,0 +1,64 @@
#\u5B89\u9053\u62D3\u6570\u636E\u6E90
impp.yfas.datasource.isopen=true
#WMS\u6570\u636E\u6E90
impp.mes.datasource.isopen=true
#\u6570\u636E\u6E90\u7684\u522B\u540D
impp.mes.datasource.alias=mesDataSource
impp.mes.datasource.driver-class-name=com.mysql.jdbc.Driver
impp.mes.datasource.jdbc-url=jdbc:mysql://10.195.88.71:3306/impp_i3_mes?autoReconnect=true&useSSL=false&characterEncoding=utf-8&allowPublicKeyRetrieval=true
#impp.mes.datasource.jdbc-url=jdbc:sqlserver://139.224.200.147:20037;DatabaseName=impp_i3_mes;
impp.mes.datasource.username=root
#impp.mes.datasource.password=Test123!
impp.mes.datasource.password=estsh123
#Admin123!
#\u6570\u636E\u6E90\u7684\u522B\u540D
impp.yfas.datasource.alias=yfasDataSource
impp.yfas.datasource.driver-class-name=com.mysql.jdbc.Driver
impp.yfas.datasource.jdbc-url=jdbc:mysql://10.195.88.71:3316/impp_i3_wms_sap_if?autoReconnect=true&useSSL=false&characterEncoding=utf-8&allowPublicKeyRetrieval=true
#impp.yfas.datasource.jdbc-url=jdbc:sqlserver://139.224.200.147:20037;DatabaseName=impp_i3_mes;
impp.yfas.datasource.username=root
impp.yfas.datasource.password=estsh123
#\u6570\u636E\u6E90\u7684\u522B\u540D
#impp.wms.datasource.isopen=true
#impp.wms.datasource.alias=wmsDataSource
#impp.wms.datasource.driver-class-name=com.mysql.jdbc.Driver
#impp.wms.datasource.jdbc-url=jdbc:mysql://dbmaster:3306/impp_i3_wms?autoReconnect=true&useSSL=false&characterEncoding=utf-8
#impp.wms.datasource.username=root
#impp.wms.datasource.password=estsh123
#
##SWEB??????????
#impp.sweb.datasource.isopen=true
#impp.sweb.datasource.alias=swebDataSource
#impp.sweb.datasource.driver-class-name=com.mysql.jdbc.Driver
#impp.sweb.datasource.jdbc-url=jdbc:mysql://dbmaster:3306/impp_i3_wms?autoReconnect=true&useSSL=false&characterEncoding=utf-8
#impp.sweb.datasource.username=root
#impp.sweb.datasource.password=estsh123
#Pisces数据源
impp.pisces.datasource.isopen=true
impp.pisces.datasource.alias=piscesDataSource
impp.pisces.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
impp.pisces.datasource.jdbc-url=jdbc:sqlserver://172.28.239.113:1433;SelectMethod=cursor;DatabaseName=PiscesTest;applicationIntent=schemaOnly;selectedSchema=MES
impp.pisces.datasource.username=sa
impp.pisces.datasource.password=sahasnopassword
#Pisces数据源
impp.pisces1.datasource.isopen=true
impp.pisces1.datasource.alias=piscesDataSource
impp.pisces1.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
impp.pisces1.datasource.jdbc-url=jdbc:sqlserver://172.28.239.113:1433;SelectMethod=cursor;DatabaseName=PiscesTest;applicationIntent=schemaOnly;selectedSchema=MES
impp.pisces1.datasource.username=sa
impp.pisces1.datasource.password=sahasnopassword
#Pisces中间表数据源
impp.pisces1.datasource.isopen=true
impp.pisces1.datasource.alias=pisces1DataSource
impp.pisces1.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
impp.pisces1.datasource.jdbc-url=jdbc:sqlserver://172.28.16.73:1433;SelectMethod=cursor;DatabaseName=YFMES_DATACENTER;applicationIntent=schemaOnly;selectedSchema=MES
impp.pisces1.datasource.username=sa
impp.pisces1.datasource.password=sahasnopassword

@ -1,7 +1,7 @@
#\u9879\u76EE\u540D\u79F0
spring.application.name=i3mes
#\u4F7F\u7528\u914D\u7F6E
spring.profiles.active=docker,cus-docker
spring.profiles.active=88,cus-88
######### \u81EA\u5B9A\u4E49\u53C2\u6570 #########
#\u9879\u76EE\u63CF\u8FF0\u4FE1\u606F\uFF08swagger\u4E2D\u663E\u5F0F\uFF09\uFF0C\u4E2D\u6587\u4F7F\u7528uncode\u8F6C
desc.application.name=\u751F\u4EA7\u6267\u884C\u7CFB\u7EDF

Loading…
Cancel
Save