Browse Source

add: mes对接压机产出数据、lucene日志查询时间排序

master
李永德 1 year ago
parent
commit
725e32bff3
  1. 2
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/LogMessageConstant.java
  2. 5
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/LuceneAppender.java
  3. 2
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/Searcher.java
  4. 1
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java
  5. 6
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/WmsToMesService.java
  6. 3
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dao/mapper/MesRequestMapper.java
  7. 7
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dao/mapper/MesRequestMapper.xml
  8. 42
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesProductDataDto.java
  9. 44
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/impl/WmsToMesServiceImpl.java
  10. 5
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/HNMLTask.java
  11. 6
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZSLTask.java
  12. 10
      lms/nladmin-system/nlsso-server/src/main/resources/config/application-prod.yml
  13. 4
      lms/nladmin-system/nlsso-server/src/main/resources/logback-spring.xml
  14. 6
      lms/nladmin-system/nlsso-server/src/test/java/org/nl/ext/TestDemo.java

2
lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/LogMessageConstant.java

@ -6,6 +6,8 @@ package org.nl.config.lucene;
* @Date: 2023/8/25
*/
public class LogMessageConstant {
/** */
public final static String SORT_NAME = "time";
/** 级别 */
public final static String FIELD_LEVEL = "level";
/** 时间 */

5
lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/LuceneAppender.java

@ -53,7 +53,10 @@ public class LuceneAppender extends AppenderBase<ILoggingEvent> {
String message = event.getFormattedMessage();
Map<String, String> mdcPropertyMap = event.getMDCPropertyMap();
Document doc = new Document();
String formattedDateTime = DateUtil.format(new java.util.Date(event.getTimeStamp()), "yyyy-MM-dd HH:mm:ss.SSS");
long timeStamp = event.getTimeStamp();
String formattedDateTime = DateUtil.format(new java.util.Date(timeStamp), "yyyy-MM-dd HH:mm:ss.SSS");
doc.add(new LongPoint(LogMessageConstant.SORT_NAME, timeStamp));
doc.add(new NumericDocValuesField(LogMessageConstant.SORT_NAME, timeStamp));
doc.add(new StringField(LogMessageConstant.FIELD_LEVEL, event.getLevel().toString(), Field.Store.YES));
doc.add(new StringField(LogMessageConstant.FIELD_TIMESTAMP, formattedDateTime,Field.Store.YES));
doc.add(new StoredField(LogMessageConstant.FIELD_CLASS_NAME, event.getLoggerName()));

2
lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/Searcher.java

@ -46,7 +46,7 @@ public class Searcher {
int start = pageNum * pageSize;// 当前页的起始条数
int end = start + pageSize;// 当前页的结束条数(不能包含)
// 创建排序对象,需要排序字段SortField,参数:字段的名称、字段的类型、是否反转如果是false,升序。true降序
Sort sort = new Sort(new SortField(LogMessageConstant.FIELD_TIMESTAMP, SortField.Type.DOC,true));
Sort sort = new Sort(new SortField(LogMessageConstant.SORT_NAME, SortField.Type.LONG,true));
TopDocs docs = null;
BooleanQuery.Builder booleanQueryBuilder = new BooleanQuery.Builder();

1
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java

@ -492,6 +492,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
if (bdWorkorder == null) {
return BaseResponse.responseError(requestNo, "未找到工单号[" + workorderCode + "]的记录!");
}
// todo: 统计当前设备的不合格位置的数量作为不合格数,并标记是否组盘为true
bdWorkorder.setWorkorder_status(WorkOrderStatusEnum.COMPLETE.getCode());
bdWorkorder.setRealproduceend_date(DateUtil.now());
TaskUtils.setWorkOrderUpdateByAcs(bdWorkorder);

6
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/WmsToMesService.java

@ -21,4 +21,10 @@ public interface WmsToMesService {
* 同步工单数据
*/
void synchronizeWorkOrderInfo();
/**
* wms上报产出数据给mes
* @param groupId
*/
void reportProductData(String groupId);
}

3
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dao/mapper/MesRequestMapper.java

@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.dynamic.datasource.annotation.DS;
import org.apache.ibatis.annotations.Param;
import org.nl.wms.database.material.service.dao.MdBaseMaterial;
import org.nl.wms.ext.mes.service.dto.MesProductDataDto;
import org.nl.wms.ext.mes.service.dto.MesWorkOrderDto;
import org.nl.wms.ext.mes.service.dto.MesMudConsumptionDto;
@ -27,4 +28,6 @@ public interface MesRequestMapper {
void updateWorkOrderRead(@Param("list") List<String> list);
@DS("oracle")
void insertMudConsumptionInfo(MesMudConsumptionDto mudObject);
@DS("oracle")
void insertProductData(MesProductDataDto mesProductDataDto);
}

7
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dao/mapper/MesRequestMapper.xml

@ -6,6 +6,13 @@
, CREATE_TM, OP_FLAG) VALUES (#{MSGID}, #{PWORKSCHE_ID}, #{OUT_FINNUM}, #{PRESSUNIT}, #{FBAGCODE}, #{LOGT}
, #{SENDTIM}, #{CREATE_TM}, #{OP_FLAG})
</insert>
<insert id="insertProductData" parameterType="org.nl.wms.ext.mes.service.dto.MesProductDataDto">
INSERT INTO "LMSTELCOM"."RECEIVE_R_SEMIPRODUCT"(MSGID, FORDER_NO, PWORKSCHE_ID, FPRODUCT_MATERIAL_ID
, FPRODUCT_MATERIAL_NAME, FMATSPEC, FMATMODEL, BATCHNO, PRESSUNIT, FTEAM, TRAY_NO, PRO_SUBNUM
, PRO_SUBUNIT, CHECKERIN_TIM, PRODATE, CREATE_TM, OP_FLAG) VALUES (#{MSGID}, #{FORDER_NO}, #{PWORKSCHE_ID}
, #{FPRODUCT_MATERIAL_ID}, #{FPRODUCT_MATERIAL_NAME}, #{FMATSPEC}, #{FMATMODEL}, #{BATCHNO}, #{PRESSUNIT}
, #{FTEAM}, #{TRAY_NO}, #{PRO_SUBNUM}, #{PRO_SUBUNIT}, #{CHECKERIN_TIM}, #{PRODATE}, #{CREATE_TM}, #{OP_FLAG})
</insert>
<update id="updateWorkOrderRead" parameterType="java.util.List">
UPDATE "LMSTELCOM"."SEND_POP_SCHEDULE_PRESS"
SET OP_FLAG = '1'

42
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesProductDataDto.java

@ -0,0 +1,42 @@
package org.nl.wms.ext.mes.service.dto;
import lombok.Data;
import java.io.Serializable;
/**
* @Author: lyd
* @Description: 压机产出数据
* @Date: 2023/9/12
*/
@Data
public class MesProductDataDto implements Serializable {
private String MSGID;
private String FORDER_NO;
private String PWORKSCHE_ID;
private String FSCHEDULE_ID;
private String FPRODUCT_MATERIAL_ID;
private String FPRODUCT_MATERIAL_NAME;
private String FMATSPEC;
private String FMATMODEL;
private String BATCHNO;
private String PRESSUNIT;
private String FTEAM;
private String TRAY_NO;
private String PRO_NUM;
private String PRO_UNIT;
private String PRO_SUBNUM;
private String PRO_SUBUNIT;
private String FP_SUBUNIT;
private String FP_REASON;
private String FP_JJFLAG;
private String FP_JJMATERIAL_ID;
private String LDLNUM;
private String CHECKERIN;
private String CHECKERIN_TIM;
private String PRODATE;
private String CREATE_TM;
private String OP_FLAG;
private String OP_TM;
}

44
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/impl/WmsToMesServiceImpl.java

@ -11,6 +11,7 @@ import org.nl.wms.database.material.service.IMdBaseMaterialService;
import org.nl.wms.database.material.service.dao.MdBaseMaterial;
import org.nl.wms.ext.mes.service.WmsToMesService;
import org.nl.wms.ext.mes.service.dao.mapper.MesRequestMapper;
import org.nl.wms.ext.mes.service.dto.MesProductDataDto;
import org.nl.wms.ext.mes.service.dto.MesWorkOrderDto;
import org.nl.wms.ext.mes.service.dto.MesMudConsumptionDto;
import org.nl.wms.ext.record.service.ISysInteractRecordService;
@ -18,6 +19,8 @@ import org.nl.wms.pdm.consumption.service.dao.PdmBdMudConsumption;
import org.nl.wms.pdm.consumption.service.dao.mapper.PdmBdMudConsumptionMapper;
import org.nl.wms.pdm.workorder.service.IPdmBdWorkorderService;
import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder;
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup;
import org.nl.wms.sch.point.service.ISchBasePointService;
import org.nl.wms.sch.point.service.dao.SchBasePoint;
import org.nl.wms.sch.task_manage.GeneralDefinition;
@ -49,6 +52,8 @@ public class WmsToMesServiceImpl implements WmsToMesService {
private ISchBasePointService pointService;
@Autowired
private IPdmBdWorkorderService pdmBdWorkorderService;
@Autowired
private ISchBaseVehiclematerialgroupService vehiclematerialgroupService;
@Override
public void reportMudConsumption(MesMudConsumptionDto mudObject) {
log.info("上报mes消耗泥料记录的信息: {}", mudObject);
@ -100,6 +105,45 @@ public class WmsToMesServiceImpl implements WmsToMesService {
mesRequestMapper.updateWorkOrderRead(collect);
}
@Override
public void reportProductData(String groupId) {
log.info("压机产出数据记录");
// 获取组盘信息
SchBaseVehiclematerialgroup vehiclematerialgroup = vehiclematerialgroupService.getById(groupId);
String workorderCode = vehiclematerialgroup.getWorkorder_code();
// 获取工单
PdmBdWorkorder workorder = pdmBdWorkorderService.getByCode(workorderCode);
String extData = workorder.getExt_data();
MesWorkOrderDto mesWorkOrderDto = JSON.parseObject(extData, MesWorkOrderDto.class);
log.info("获取mes给的工单数据:{}", mesWorkOrderDto);
SchBasePoint basePoint = pointService.getById(workorder.getPoint_code());
MesProductDataDto mesProductDataDto = new MesProductDataDto();
mesProductDataDto.setMSGID(IdUtil.simpleUUID());
mesProductDataDto.setFORDER_NO(mesWorkOrderDto.getFORDER_NO());
mesProductDataDto.setPWORKSCHE_ID(mesWorkOrderDto.getPWORKSCHE_ID());
mesProductDataDto.setFPRODUCT_MATERIAL_ID(mesWorkOrderDto.getFPRODUCT_MATERIAL_ID());
mesProductDataDto.setFPRODUCT_MATERIAL_NAME(mesWorkOrderDto.getFPRODUCT_MATERIAL_NAME());
mesProductDataDto.setFMATSPEC(mesProductDataDto.getFMATSPEC());
mesProductDataDto.setFMATMODEL(mesProductDataDto.getFMATMODEL());
mesProductDataDto.setBATCHNO(workorder.getBatch_no());
mesProductDataDto.setPRESSUNIT(basePoint.getExt_point_code());
mesProductDataDto.setFTEAM(workorder.getTeam());
mesProductDataDto.setTRAY_NO(vehiclematerialgroup.getVehicle_code());
mesProductDataDto.setPRO_SUBNUM(String.valueOf(vehiclematerialgroup.getMaterial_qty()));// 数量
mesProductDataDto.setPRO_SUBUNIT("块");
mesProductDataDto.setCHECKERIN_TIM(DateUtil.now());
mesProductDataDto.setPRODATE(workorder.getProduce_date());
mesProductDataDto.setCREATE_TM(DateUtil.now());
mesProductDataDto.setOP_FLAG("0");
log.info("返给MES的数据:{}", mesProductDataDto);
// 插入mes数据库
try {
mesRequestMapper.insertProductData(mesProductDataDto);
} catch (Exception e) {
log.error("反馈压机产出插入mes数据库失败: {}", e.getMessage());
}
}
public List<PdmBdWorkorder> toWorkOrderList(List<MesWorkOrderDto> mesWorkOrderInfos) {
List<PdmBdWorkorder> list = new CopyOnWriteArrayList<>();
mesWorkOrderInfos.forEach(mesWorkOrderDto -> {

5
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/HNMLTask.java

@ -274,8 +274,8 @@ public class HNMLTask extends AbstractTask {
String vehicleCode = TaskUtils.defaultVehicleCode(param.getString("vehicle_code"));
String vehicleType = param.getString("vehicle_type");
// 泥料物料对应不出物料标识
String materialCode = param.getString("material_code"); // 泥料编码: 吨袋号,泥料前
// String substring = materialCode.substring(0, 12);
String packNo = param.getString("material_code"); // 泥料编码: 吨袋号,泥料前
String materialCode = packNo.substring(0, 12);
// String mixTimes = param.getString("mix_number"); // 碾次
// 载具类型默认料盅
if (vehicleType == null || vehicleType.equals(GeneralDefinition.NO)) {
@ -320,6 +320,7 @@ public class HNMLTask extends AbstractTask {
groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue()); // 待绑定
groupEntity.setGroup_status(GroupStatusEnum.IN_STORAGE.getType()); // 暂时不维护。
groupEntity.setIs_delete(false);
groupEntity.setExt_data(packNo);// todo: 对于混碾的组盘 暂时存吨袋号
vehiclematerialgroupService.saveOrUpdate(groupEntity);
return groupEntity.getGroup_id();
}

6
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZSLTask.java

@ -11,6 +11,7 @@ import lombok.extern.slf4j.Slf4j;
import org.nl.common.exception.BadRequestException;
import org.nl.system.service.notice.ISysNoticeService;
import org.nl.wms.database.brick.service.IMdBaseBrickInfoService;
import org.nl.wms.ext.mes.service.WmsToMesService;
import org.nl.wms.pdm.track.service.IPdmBdProductionProcessTrackingService;
import org.nl.wms.pdm.track.service.dao.PdmBdProductionProcessTracking;
import org.nl.wms.pdm.workorder.service.IPdmBdWorkorderService;
@ -69,7 +70,8 @@ public class YZSLTask extends AbstractTask {
private IMdBaseBrickInfoService baseBrickInfoService;
@Autowired
private IPdmBdProductionProcessTrackingService processTrackingService;
@Autowired
private WmsToMesService wmsToMesService;
@Override
@Transactional(rollbackFor = Exception.class)
protected void create() throws BadRequestException {
@ -181,6 +183,8 @@ public class YZSLTask extends AbstractTask {
taskObj.setRemark("执行中");
TaskUtils.setUpdateByAcs(taskObj);
taskService.updateById(taskObj);
// todo:暂时现在执行中的时候将满托上给mes
wmsToMesService.reportProductData(taskObj.getGroup_id());
}
if (status.equals(TaskStatus.FINISHED)) { // 完成
this.finishTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS);

10
lms/nladmin-system/nlsso-server/src/main/resources/config/application-prod.yml

@ -10,12 +10,12 @@ spring:
datasource:
mysql:
driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
url: jdbc:log4jdbc:mysql://${DB_HOST:10.93.41.198}:${DB_PORT:3306}/${DB_NAME:rl_mg_lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
username: ${DB_USER:root}
password: ${DB_PWD:123456}
# url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:rtmg_lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
# url: jdbc:log4jdbc:mysql://${DB_HOST:10.93.41.198}:${DB_PORT:3306}/${DB_NAME:rl_mg_lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
# username: ${DB_USER:root}
# password: ${DB_PWD:12356}
# password: ${DB_PWD:123456}
url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:rtmg_lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
username: ${DB_USER:root}
password: ${DB_PWD:12356}
type: com.alibaba.druid.pool.DruidDataSource
oracle:
driver-class-name: oracle.jdbc.OracleDriver

4
lms/nladmin-system/nlsso-server/src/main/resources/logback-spring.xml

@ -50,7 +50,7 @@ https://juejin.cn/post/6844903775631572999
<appender name="luceneAppender" class="org.nl.config.lucene.LuceneAppender" />
<appender name="asyncLuceneAppender" class="ch.qos.logback.classic.AsyncAppender">
<appender-ref ref="luceneAppender" />
<!-- 设置队列大小,根据您的需求调整 -->
<!-- 设置队列大小 -->
<queueSize>512</queueSize>
</appender>
@ -62,7 +62,7 @@ https://juejin.cn/post/6844903775631572999
</appender>
<!--开发环境:打印控制台-->
<springProfile name="dev">
<root level="INFO">
<root level="DEBUG">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="asyncLuceneAppender"/>
</root>

6
lms/nladmin-system/nlsso-server/src/test/java/org/nl/ext/TestDemo.java

@ -1,6 +1,7 @@
package org.nl.ext;
import org.junit.jupiter.api.Test;
import org.nl.wms.ext.mes.service.WmsToMesService;
import org.nl.wms.ext.mes.service.dao.mapper.MesRequestMapper;
import org.nl.wms.ext.mes.service.dto.MesMudConsumptionDto;
import org.springframework.beans.factory.annotation.Autowired;
@ -16,9 +17,10 @@ import org.springframework.boot.test.context.SpringBootTest;
public class TestDemo {
@Autowired
private MesRequestMapper mesRequestMapper;
@Autowired
private WmsToMesService wmsToMesService;
@Test
public void test01() {
MesMudConsumptionDto mudObject = mesRequestMapper.getMudConsumption("1699671959522119680");
System.out.println(mudObject);
wmsToMesService.reportProductData("1701105828406366210");
}
}

Loading…
Cancel
Save