fix: MES对接
This commit is contained in:
@@ -24,7 +24,6 @@ public class LuceneController {
|
||||
private final LuceneService luceneService;
|
||||
|
||||
@PostMapping("/getAll")
|
||||
@Log("日志检索")
|
||||
@ApiOperation("日志检索")
|
||||
//@PreAuthorize("@el.check('task:list')")
|
||||
public ResponseEntity<Object> get(@RequestBody JSONObject whereJson) {
|
||||
|
||||
@@ -3,6 +3,7 @@ package org.nl.wms.ext.acs.autotask;
|
||||
import cn.hutool.http.HttpStatus;
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.config.SpringContextHolder;
|
||||
import org.nl.system.service.notice.ISysNoticeService;
|
||||
import org.nl.wms.ext.acs.service.WmsToAcsService;
|
||||
import org.nl.wms.ext.acs.service.dto.to.wms.AcsResponse;
|
||||
@@ -41,7 +42,8 @@ public class AutoIssueWorkOrder {
|
||||
List<PdmBdWorkorder> workorderList = workorderService.getNotIssueOrder();
|
||||
// 查找该设备未生产的工单去下发
|
||||
// mark: 使得执行一个工单完成后就提交
|
||||
workorderList.forEach(this::toIssueWorkOrder);
|
||||
AutoIssueWorkOrder bean = SpringContextHolder.getBean(this.getClass());
|
||||
workorderList.forEach(bean::toIssueWorkOrder);
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
|
||||
@@ -25,6 +25,7 @@ import org.nl.wms.ext.acs.service.dto.to.wms.*;
|
||||
import org.nl.wms.ext.mes.service.WmsToMesService;
|
||||
import org.nl.wms.ext.mes.service.dto.CusterDo;
|
||||
import org.nl.wms.ext.mes.service.dto.MesMudConsumptionDto;
|
||||
import org.nl.wms.ext.mes.service.dto.MesPackDto;
|
||||
import org.nl.wms.ext.mes.service.dto.SpreaderDto;
|
||||
import org.nl.wms.ext.mms.service.WmsToMmsService;
|
||||
import org.nl.wms.ext.record.service.ISysInteractRecordService;
|
||||
@@ -511,6 +512,27 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
.append(baseMaterial.getMaterial_name()).append("##")
|
||||
.append(custer.getCuster_name()).append("**");
|
||||
log.info("打印的唛头信息:{}", sb);
|
||||
MesPackDto mesPackDto = new MesPackDto();
|
||||
mesPackDto.setMSGID(IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||
mesPackDto.setBATCHNO(ObjectUtil.isNotEmpty(groupInfo.getPcsn()) ? groupInfo.getPcsn()
|
||||
: DateUtil.format(DateUtil.date(), "yyyyMMdd"));
|
||||
mesPackDto.setTRAY_NO(groupInfo.getVehicle_code());
|
||||
mesPackDto.setPRO_NUM(BigDecimal.valueOf(groupInfo.getMaterial_qty()));
|
||||
mesPackDto.setPRO_UNIT("块");
|
||||
mesPackDto.setPRO_SUBNUM(multiply);
|
||||
mesPackDto.setPRO_SUBUNIT("吨");
|
||||
mesPackDto.setMATERIAL_ID(groupInfo.getMaterial_id());
|
||||
mesPackDto.setMATERIAL_NAME(baseMaterial.getMaterial_name());
|
||||
mesPackDto.setPROSPEC(baseMaterial.getMaterial_spec());
|
||||
mesPackDto.setPROMODEL(baseMaterial.getMaterial_model());
|
||||
mesPackDto.setCHECKERIN_TIM(DateUtil.now());
|
||||
mesPackDto.setORDER_NO(orderNo);
|
||||
try {
|
||||
wmsToMesService.reportPackInfo(mesPackDto);
|
||||
} catch (Exception e) {
|
||||
log.error("上报MES包装数据错误:{}", e.getMessage());
|
||||
log.error("上报MES数据:{}", mesPackDto);
|
||||
}
|
||||
return ApplyTaskResponse.responseOk(requestNo, sb.toString());
|
||||
}
|
||||
|
||||
@@ -724,8 +746,10 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
SchBaseVehiclematerialgroup groupInfo = vehiclematerialgroupService.getGroupInfo(baseRequest.getVehicle_code(),
|
||||
baseRequest.getVehicle_type(), GroupBindMaterialStatusEnum.BOUND.getValue());
|
||||
if (ObjectUtil.isEmpty(groupInfo)) {
|
||||
throw new BadRequestException("入窑失败:载具["+baseRequest.getVehicle_code()+"]组盘信息不存在!");
|
||||
throw new BadRequestException("入窑失败:载具[" + baseRequest.getVehicle_code() + "]组盘信息不存在!");
|
||||
}
|
||||
// 记录入窑数据给MES
|
||||
wmsToMesService.reportGdyMaterialInfoIn(groupInfo.getGroup_id());
|
||||
groupInfo.setInto_kiln_time(DateUtil.now());
|
||||
if (ObjectUtil.isNotEmpty(basePoint)) {
|
||||
// 记录当前位置
|
||||
@@ -974,6 +998,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
spreaderDto.setFPROBATCH(actionRequest.getSlip());
|
||||
spreaderDto.setCREATE_TM(DateUtil.now());
|
||||
spreaderDto.setOP_FLAG(GeneralDefinition.NO);
|
||||
log.info("布料机记录信息:{}", spreaderDto);
|
||||
wmsToMesService.reportSpreaderInfoToMes(spreaderDto);
|
||||
return BaseResponse.responseOk(actionRequest.getRequestNo());
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description: 定时插入滚筒线内的数据到mes数据库
|
||||
* @Description: 定时插入半成品实时库存
|
||||
* @Date: 2023/9/19
|
||||
*/
|
||||
@Slf4j
|
||||
@@ -32,7 +32,7 @@ public class AutoSaveProductionInfo {
|
||||
private ISysNoticeService noticeService;
|
||||
@SneakyThrows
|
||||
public void run() {
|
||||
// 1、获取所有滚筒线内数据
|
||||
// 1、获取所有半成品实时库存
|
||||
List<MesSemiProductionInfo> list = wmsToMesService.getAllMesSemiProductionInfos();
|
||||
AtomicInteger successNum = new AtomicInteger();
|
||||
long startTime = System.currentTimeMillis();
|
||||
@@ -40,7 +40,7 @@ public class AutoSaveProductionInfo {
|
||||
list.forEach(mi -> {
|
||||
mi.setMSGID(IdUtil.getSnowflake(1,1).nextIdStr());
|
||||
mi.setSEND_TM(DateUtil.now());
|
||||
mi.setSTOCK_SUBUNIT("块");
|
||||
mi.setSTOCK_UNIT("块");
|
||||
mi.setCREATE_TM(DateUtil.now());
|
||||
mi.setOP_FLAG(GeneralDefinition.NO);
|
||||
if (ObjectUtil.isEmpty(mi.getBATCHNO())) {
|
||||
@@ -54,13 +54,13 @@ public class AutoSaveProductionInfo {
|
||||
wmsToMesService.saveSemiProductionBatchToMes(mi);
|
||||
successNum.getAndIncrement();
|
||||
} catch (Exception e) {
|
||||
log.error("插入滚筒线内失败的数据: {}", mi);
|
||||
log.error("插入滚筒线内失败的信息:{}", e.getMessage());
|
||||
log.error("定时插入半成品实时库存失败的数据: {}", mi);
|
||||
log.error("定时插入半成品实时库存失败的信息:{}", e.getMessage());
|
||||
// notice通知
|
||||
noticeService.createNotice(e.getMessage(), "滚筒线内数据同步失败" + mi.getMSGID(), NoticeTypeEnum.NOTIFICATION.getCode());
|
||||
noticeService.createNotice(e.getMessage(), "定时插入半成品实时库存失败" + mi.getMSGID(), NoticeTypeEnum.NOTIFICATION.getCode());
|
||||
}
|
||||
});
|
||||
long endTime = System.currentTimeMillis();
|
||||
log.info("滚筒线数据有" + list.size() + "条,成功" + successNum.get() + "条, 消耗时长:" + (endTime - startTime) + "ms");
|
||||
log.info("半成品实时库存数据有" + list.size() + "条,成功" + successNum.get() + "条, 消耗时长:" + (endTime - startTime) + "ms");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,6 +39,7 @@ public class AutoSaveWaitGdyInfo {
|
||||
List<MesGdyInfoWaitDto> list = wmsToMesService.getAllWaitIntoGdyInfos();
|
||||
AtomicInteger successNum = new AtomicInteger();
|
||||
long startTime = System.currentTimeMillis();
|
||||
log.info("获取滚筒线内数据:{}", list);
|
||||
// 存入表中
|
||||
list.forEach(mesGdyInfoWaitDto -> {
|
||||
mesGdyInfoWaitDto.setMSGID(IdUtil.getSnowflake(1,1).nextIdStr());
|
||||
|
||||
@@ -57,7 +57,7 @@ public interface WmsToMesService {
|
||||
void reportGdyMaterialInfoOut(String groupId);
|
||||
|
||||
/**
|
||||
* 获取所有滚筒线内数据
|
||||
* 获取所有半成品实时库存
|
||||
* @return
|
||||
*/
|
||||
List<MesSemiProductionInfo> getAllMesSemiProductionInfos();
|
||||
@@ -140,4 +140,10 @@ public interface WmsToMesService {
|
||||
* @param spreaderDto
|
||||
*/
|
||||
void reportSpreaderInfoToMes(SpreaderDto spreaderDto);
|
||||
|
||||
/**
|
||||
* 上报包装数据
|
||||
* @param mesPackDto
|
||||
*/
|
||||
void reportPackInfo(MesPackDto mesPackDto);
|
||||
}
|
||||
|
||||
@@ -77,4 +77,6 @@ public interface MesRequestMapper {
|
||||
CusterDo getCusterByName(String custerName);
|
||||
@DS("oracle")
|
||||
void reportSpreaderInfoToMes(SpreaderDto spreaderDto);
|
||||
@DS("oracle")
|
||||
void reportPackInfo(MesPackDto mesPackDto);
|
||||
}
|
||||
|
||||
@@ -23,31 +23,31 @@
|
||||
</insert>
|
||||
<insert id="insertSemiProductOutInfo" parameterType="org.nl.wms.ext.mes.service.dto.MesSemiProductionInfoOutDto">
|
||||
INSERT INTO "LMSTELCOM"."RECEIVE_CS_SEMIPROINFO_OUT"(MSGID, SEMIPRODUCT_BATCHNO, PRODUCT_BATCHNO, FPRODUCT_MATERIAL_ID
|
||||
, FPRODUCT_MATERIAL_NAME, FMATSPEC, FMATMODEL, PRO_SUBNUM, PRO_SUBUNIT, STOCK, STOCK_NAME, CHECKEROUT_TIM, OUTTYPE
|
||||
, FPRODUCT_MATERIAL_NAME, FMATSPEC, FMATMODEL, PRO_NUM, PRO_UNIT, STOCK, STOCK_NAME, CHECKEROUT_TIM, OUTTYPE
|
||||
, CREATE_TM, OP_FLAG) VALUES (#{MSGID}, #{SEMIPRODUCT_BATCHNO}, #{PRODUCT_BATCHNO}, #{FPRODUCT_MATERIAL_ID}
|
||||
, #{FPRODUCT_MATERIAL_NAME}, #{FMATSPEC}, #{FMATMODEL}, #{PRO_SUBNUM}, #{PRO_SUBUNIT}, #{STOCK}, #{STOCK_NAME}
|
||||
, #{FPRODUCT_MATERIAL_NAME}, #{FMATSPEC}, #{FMATMODEL}, #{PRO_NUM}, #{PRO_UNIT}, #{STOCK}, #{STOCK_NAME}
|
||||
, #{CHECKEROUT_TIM}, #{OUTTYPE}, #{CREATE_TM}, #{OP_FLAG})
|
||||
</insert>
|
||||
<insert id="insertGdyMaterialIn" parameterType="org.nl.wms.ext.mes.service.dto.MesGdyMaterialInDto">
|
||||
INSERT INTO "LMSTELCOM"."RECEIVE_GDY_MATIN"(MSGID, TRAY_NO, FPRODUCT_MATERIAL_ID, FPRODUCT_MATERIAL_NAME
|
||||
, FMATSPEC, FMATMODEL, BATCHNO, PRESSUNIT, PRO_SUBNUM, PRO_SUBUNIT, FCONVERTRATE, STOCK, DEVICE, IN_DATE
|
||||
, FMATSPEC, FMATMODEL, BATCHNO, PRESSUNIT, PRO_NUM, PRO_UNIT, FCONVERTRATE, STOCK, DEVICE, IN_DATE
|
||||
, CREATE_TM, OP_FLAG) VALUES (#{MSGID}, #{TRAY_NO}, #{FPRODUCT_MATERIAL_ID}, #{FPRODUCT_MATERIAL_NAME}
|
||||
, #{FMATSPEC}, #{FMATMODEL}, #{BATCHNO}, #{PRESSUNIT}, #{PRO_SUBNUM}, #{PRO_SUBUNIT}, #{FCONVERTRATE}
|
||||
, #{FMATSPEC}, #{FMATMODEL}, #{BATCHNO}, #{PRESSUNIT}, #{PRO_NUM}, #{PRO_UNIT}, #{FCONVERTRATE}
|
||||
, #{STOCK}, #{DEVICE}, #{IN_DATE}, #{CREATE_TM}, #{OP_FLAG})
|
||||
</insert>
|
||||
<insert id="insertGdyMaterialOut" parameterType="org.nl.wms.ext.mes.service.dto.MesGdyMaterialOutDto">
|
||||
INSERT INTO "LMSTELCOM"."RECEIVE_GDY_MATOUT"(MSGID, TRAY_NO, FPRODUCT_MATERIAL_ID, FPRODUCT_MATERIAL_NAME
|
||||
, FMATSPEC, FMATMODEL, BATCHNO, PRESSUNIT, PRO_SUBNUM, PRO_SUBUNIT, FCONVERTRATE, STOCK, DEVICE, OUT_DATE
|
||||
, FMATSPEC, FMATMODEL, BATCHNO, PRESSUNIT, PRO_NUM, PRO_UNIT, FCONVERTRATE, STOCK, DEVICE, OUT_DATE
|
||||
, CREATE_TM, OP_FLAG) VALUES (#{MSGID}, #{TRAY_NO}, #{FPRODUCT_MATERIAL_ID}, #{FPRODUCT_MATERIAL_NAME}
|
||||
, #{FMATSPEC}, #{FMATMODEL}, #{BATCHNO}, #{PRESSUNIT}, #{PRO_SUBNUM}, #{PRO_SUBUNIT}, #{FCONVERTRATE}
|
||||
, #{FMATSPEC}, #{FMATMODEL}, #{BATCHNO}, #{PRESSUNIT}, #{PRO_NUM}, #{PRO_UNIT}, #{FCONVERTRATE}
|
||||
, #{STOCK}, #{DEVICE}, #{OUT_DATE}, #{CREATE_TM}, #{OP_FLAG})
|
||||
</insert>
|
||||
<insert id="saveSemiProductionBatchToMes" parameterType="org.nl.wms.ext.mes.service.dto.MesSemiProductionInfo">
|
||||
INSERT INTO "LMSTELCOM"."RECEIVE_CS_SEMIPRODUCTIONINFO"(MSGID, SEND_TM, BATCHNO, ORDER_NO, STOCK_SUBNUM
|
||||
, STOCK_SUBUNIT, MATERIAL_ID, MATERIAL_NAME, PROSPEC, PROMODEL, PRODATE, PRESSUNIT, CREATE_TM, OP_FLAG)
|
||||
INSERT INTO "LMSTELCOM"."RECEIVE_CS_SEMIPRODUCTIONINFO"(MSGID, SEND_TM, BATCHNO, ORDER_NO, STOCK_NUM
|
||||
, STOCK_UNIT, MATERIAL_ID, MATERIAL_NAME, PROSPEC, PROMODEL, PRODATE, PRESSUNIT, CREATE_TM, OP_FLAG)
|
||||
VALUES
|
||||
(#{MSGID}, #{SEND_TM}, #{BATCHNO}, #{ORDER_NO}, #{STOCK_SUBNUM}
|
||||
, #{STOCK_SUBUNIT}, #{MATERIAL_ID}, #{MATERIAL_NAME}, #{PROSPEC}, #{PROMODEL}
|
||||
(#{MSGID}, #{SEND_TM}, #{BATCHNO}, #{ORDER_NO}, #{STOCK_NUM}
|
||||
, #{STOCK_UNIT}, #{MATERIAL_ID}, #{MATERIAL_NAME}, #{PROSPEC}, #{PROMODEL}
|
||||
, #{PRODATE}, #{PRESSUNIT}, #{CREATE_TM}, #{OP_FLAG})
|
||||
</insert>
|
||||
<insert id="insertGdyMaterial" parameterType="org.nl.wms.ext.mes.service.dto.MesGdyInfoDto">
|
||||
@@ -95,7 +95,13 @@
|
||||
INSERT INTO "LMSTELCOM"."RECEIVE_MUDLAYOUT_RECORD"(MSGID, TIM, ACT_WEIGHT, THEO_WEIGHT, MATERIAL_ID, MATERIAL_NAME
|
||||
, MATERIAL_SPEC, MATERIAL_MODEL, FPROBATCH, CREATE_TM, OP_FLAG)
|
||||
VALUES (#{MSGID}, #{TIM}, #{ACT_WEIGHT}, #{THEO_WEIGHT}, #{MATERIAL_ID}, #{MATERIAL_NAME}, #{MATERIAL_SPEC}
|
||||
, #{MATERIAL_MODEL}, #{FPROBATCH}, #{CREATE_TM}, #{OP_FLAG})
|
||||
, #{MATERIAL_MODEL}, #{FPROBATCH,jdbcType=VARCHAR,typeHandler=org.nl.wms.util.StringHandler}, #{CREATE_TM}, #{OP_FLAG})
|
||||
</insert>
|
||||
<insert id="reportPackInfo" parameterType="org.nl.wms.ext.mes.service.dto.MesPackDto">
|
||||
INSERT INTO "LMSTELCOM"."RECEIVE_R_PRODUCT_PACK"(MSGID, BATCHNO, TRAY_NO, PRO_NUM, PRO_UNIT, PRO_SUBNUM, PRO_SUBUNIT
|
||||
, MATERIAL_ID, MATERIAL_NAME, PROSPEC, PROMODEL, CHECKERIN_TIM, ORDER_NO)
|
||||
VALUES (#{MSGID}, #{BATCHNO}, #{TRAY_NO}, #{PRO_NUM}, #{PRO_UNIT}, #{PRO_SUBNUM}, #{PRO_SUBUNIT}, #{MATERIAL_ID}
|
||||
, #{MATERIAL_NAME}, #{PROSPEC}, #{PROMODEL}, #{CHECKERIN_TIM}, #{ORDER_NO})
|
||||
</insert>
|
||||
<update id="updateWorkOrderRead" parameterType="java.util.List">
|
||||
UPDATE "LMSTELCOM"."SEND_POP_SCHEDULE_PRESS"
|
||||
@@ -190,7 +196,7 @@
|
||||
pw.batch_no AS BATCHNO,
|
||||
pw.produce_order AS ORDER_NO,
|
||||
pw.produce_date AS PRODATE,
|
||||
vg.material_qty AS STOCK_SUBNUM,
|
||||
vg.material_qty AS STOCK_NUM,
|
||||
mm.material_code AS MATERIAL_ID,
|
||||
mm.material_name AS MATERIAL_NAME,
|
||||
mm.material_spec AS PROSPEC,
|
||||
@@ -203,7 +209,7 @@
|
||||
LEFT JOIN sch_base_point p ON p.point_code = vg.source_vehicle_code
|
||||
LEFT JOIN sch_base_point p2 ON p.parent_point_code = p2.point_code
|
||||
WHERE
|
||||
vg.point_code IN ('HCSSX01','HCSSX63') AND pw.workorder_code IS NOT NULL
|
||||
vg.vehicle_type = 'GTP' AND pw.workorder_code IS NOT NULL
|
||||
AND vg.group_bind_material_status = '2'
|
||||
</select>
|
||||
<select id="getAllMesGdyInfos" resultType="org.nl.wms.ext.mes.service.dto.MesGdyInfoDto">
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
package org.nl.wms.ext.mes.service.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description: 上传mes的包装数据
|
||||
* @Date: 2023/11/28
|
||||
* 唯一标识
|
||||
* 成品批次号
|
||||
* 木托盘编号
|
||||
* 数量
|
||||
* 单位
|
||||
* 辅数量
|
||||
* 辅单位
|
||||
* 物料号
|
||||
* 物料名称
|
||||
* 成品规格
|
||||
* 成品型号
|
||||
* 入库人
|
||||
* 入库时间
|
||||
* 仓库编码
|
||||
* 仓库名称
|
||||
* 订单号
|
||||
* 写入时间
|
||||
* 读取标志,0未读取,1已读取
|
||||
* 读取时间
|
||||
*/
|
||||
@Data
|
||||
public class MesPackDto {
|
||||
private String MSGID;
|
||||
private String BATCHNO;
|
||||
private String TRAY_NO;
|
||||
private BigDecimal PRO_NUM;
|
||||
private String PRO_UNIT;
|
||||
private BigDecimal PRO_SUBNUM;
|
||||
private String PRO_SUBUNIT;
|
||||
private String MATERIAL_ID;
|
||||
private String MATERIAL_NAME;
|
||||
private String PROSPEC;
|
||||
private String PROMODEL;
|
||||
private String CHECKERIN;
|
||||
private String CHECKERIN_TIM;
|
||||
private String STOCK;
|
||||
private String STOCK_NAME;
|
||||
private String ORDER_NO;
|
||||
private String CREATE_TM;
|
||||
private String OP_FLAG;
|
||||
private String OP_TM;
|
||||
}
|
||||
@@ -254,7 +254,6 @@ public class WmsToMesServiceImpl implements WmsToMesService {
|
||||
PdmBdWorkorder workorder = pdmBdWorkorderService.getByCode(workorderCode);
|
||||
String extData = workorder.getExt_data();
|
||||
MesWorkOrderDto mesWorkOrderDto = JSON.parseObject(extData, MesWorkOrderDto.class);
|
||||
|
||||
MesGdyMaterialInDto gdyMaterialInDto = new MesGdyMaterialInDto();
|
||||
gdyMaterialInDto.setMSGID(IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||
gdyMaterialInDto.setTRAY_NO(vehiclematerialgroup.getVehicle_code());
|
||||
@@ -272,6 +271,7 @@ public class WmsToMesServiceImpl implements WmsToMesService {
|
||||
gdyMaterialInDto.setIN_DATE(vehiclematerialgroup.getInto_kiln_time());
|
||||
gdyMaterialInDto.setCREATE_TM(DateUtil.now());
|
||||
gdyMaterialInDto.setOP_FLAG(GeneralDefinition.NO);
|
||||
log.info("入窑数据:{}", gdyMaterialInDto);
|
||||
|
||||
// 插入mes数据库
|
||||
try {
|
||||
@@ -305,8 +305,8 @@ public class WmsToMesServiceImpl implements WmsToMesService {
|
||||
gdyMaterialOutDto.setFMATMODEL(mesWorkOrderDto.getFMATMODEL()); // 型号,mes给的工单都有
|
||||
gdyMaterialOutDto.setBATCHNO(mesWorkOrderDto.getBATCHNO());
|
||||
gdyMaterialOutDto.setPRESSUNIT(mesWorkOrderDto.getPRESSUNIT());
|
||||
gdyMaterialOutDto.setPRO_SUBNUM(String.valueOf(vehiclematerialgroup.getMaterial_qty()));
|
||||
gdyMaterialOutDto.setPRO_SUBUNIT("块");
|
||||
gdyMaterialOutDto.setPRO_NUM(String.valueOf(vehiclematerialgroup.getMaterial_qty()));
|
||||
gdyMaterialOutDto.setPRO_UNIT("块");
|
||||
gdyMaterialOutDto.setFCONVERTRATE(mesWorkOrderDto.getFCONVERTRATE());
|
||||
gdyMaterialOutDto.setSTOCK("未知");
|
||||
gdyMaterialOutDto.setDEVICE("1");
|
||||
@@ -351,6 +351,7 @@ public class WmsToMesServiceImpl implements WmsToMesService {
|
||||
int number = mesRequestMapper.countFPNumber(orderObj.getWorkorder_code(), orderObj.getPoint_code());
|
||||
String extData = orderObj.getExt_data();
|
||||
MesWorkOrderDto mesWorkOrderDto = JSON.parseObject(extData, MesWorkOrderDto.class);
|
||||
log.info("转换数据:{} -> {}", extData, mesWorkOrderDto);
|
||||
// 设置字段值
|
||||
MesUnusedDto mesUnusedDto = new MesUnusedDto();
|
||||
mesUnusedDto.setMSGID(IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||
@@ -443,6 +444,11 @@ public class WmsToMesServiceImpl implements WmsToMesService {
|
||||
mesRequestMapper.reportSpreaderInfoToMes(spreaderDto);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reportPackInfo(MesPackDto mesPackDto) {
|
||||
mesRequestMapper.reportPackInfo(mesPackDto);
|
||||
}
|
||||
|
||||
/**
|
||||
* 转换
|
||||
*
|
||||
@@ -455,6 +461,7 @@ public class WmsToMesServiceImpl implements WmsToMesService {
|
||||
// 获取工单
|
||||
PdmBdWorkorder workorder = pdmBdWorkorderService.getByCode(brickInfo.getWorkorder_code());
|
||||
if (ObjectUtil.isEmpty(workorder)) {
|
||||
log.error("错误工单数据: {}", brickInfo.getWorkorder_code());
|
||||
throw new BadRequestException("工单不存在,上报MES失败");
|
||||
}
|
||||
MdBaseMaterial material = mdBaseMaterialService.getById(workorder.getMaterial_id());
|
||||
|
||||
@@ -10,6 +10,7 @@ import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.common.logging.annotation.Log;
|
||||
import org.nl.wms.sch.point.service.ISchBasePointService;
|
||||
import org.nl.wms.sch.point.service.dao.SchBasePoint;
|
||||
import org.nl.wms.sch.point.service.dto.SchBasePointQuery;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
@@ -36,7 +37,7 @@ public class SchBasePointController {
|
||||
@Log("查询点位管理")
|
||||
@ApiOperation("查询点位管理")
|
||||
//@SaCheckPermission("@el.check('schBasePoint:list')")
|
||||
public ResponseEntity<Object> query(@RequestParam Map whereJson, PageQuery page){
|
||||
public ResponseEntity<Object> query(SchBasePointQuery whereJson, PageQuery page){
|
||||
return new ResponseEntity<>(TableDataInfo.build(schBasePointService.queryAll(whereJson,page)),HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.nl.wms.sch.point.service.dao.SchBasePoint;
|
||||
import org.nl.wms.sch.point.service.dto.SchBasePointQuery;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -23,7 +24,7 @@ public interface ISchBasePointService extends IService<SchBasePoint> {
|
||||
* @param pageable 分页参数
|
||||
* @return IPage<SchBasePoint>
|
||||
*/
|
||||
IPage<SchBasePoint> queryAll(Map whereJson, PageQuery pageable);
|
||||
IPage<SchBasePoint> queryAll(SchBasePointQuery whereJson, PageQuery pageable);
|
||||
|
||||
/**
|
||||
* 创建
|
||||
|
||||
@@ -146,5 +146,15 @@ public class SchBasePoint implements Serializable {
|
||||
|
||||
@TableField(exist = false)
|
||||
private String device_code;
|
||||
@TableField(exist = false)
|
||||
private String material_qty;
|
||||
@TableField(exist = false)
|
||||
private String material_code;
|
||||
@TableField(exist = false)
|
||||
private String material_name;
|
||||
@TableField(exist = false)
|
||||
private String material_spec;
|
||||
@TableField(exist = false)
|
||||
private String material_model;
|
||||
|
||||
}
|
||||
|
||||
@@ -1,9 +1,13 @@
|
||||
package org.nl.wms.sch.point.service.dao.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.nl.wms.sch.point.service.dao.SchBasePoint;
|
||||
import org.nl.wms.sch.point.service.dto.SchBasePointQuery;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author lyd
|
||||
@@ -26,4 +30,13 @@ public interface SchBasePointMapper extends BaseMapper<SchBasePoint> {
|
||||
* @return
|
||||
*/
|
||||
SchBasePoint selectByIdLock(String id);
|
||||
|
||||
|
||||
/**
|
||||
* 点位left join查询
|
||||
* @param pages
|
||||
* @param lam
|
||||
* @return
|
||||
*/
|
||||
IPage<SchBasePoint> selectPageLeftJoin(IPage<SchBasePoint> pages, SchBasePointQuery whereJson);
|
||||
}
|
||||
|
||||
@@ -28,4 +28,49 @@
|
||||
WHERE p.point_code = #{id}
|
||||
FOR UPDATE
|
||||
</select>
|
||||
<select id="selectPageLeftJoin" resultType="org.nl.wms.sch.point.service.dao.SchBasePoint" parameterType="org.nl.wms.sch.point.service.dto.SchBasePointQuery">
|
||||
SELECT
|
||||
p.*,
|
||||
IF(LENGTH(vg.material_qty)>0,vg.material_qty,0) AS material_qty,
|
||||
IF(LENGTH(mm.material_code)>0,mm.material_code,'-') AS material_code,
|
||||
IF(LENGTH(mm.material_name)>0,mm.material_name,'-') AS material_name,
|
||||
IF(LENGTH(mm.material_spec)>0,mm.material_spec,'-') AS material_spec,
|
||||
IF(LENGTH(mm.material_model)>0,mm.material_model,'-') AS material_model
|
||||
FROM
|
||||
`sch_base_point` p
|
||||
LEFT JOIN sch_base_vehiclematerialgroup vg ON vg.vehicle_code = p.vehicle_code
|
||||
AND vg.vehicle_type = p.vehicle_type AND vg.group_bind_material_status = '2'
|
||||
LEFT JOIN md_base_material mm ON mm.material_id = vg.material_id
|
||||
<where>
|
||||
<if test="whereJson.workshop_code != null and workshop_code != ''">
|
||||
p.workshop_code = #{whereJson.workshop_code}
|
||||
</if>
|
||||
<if test="whereJson.blurry != null">
|
||||
AND (p.point_code LIKE '%${whereJson.blurry}%' OR p.point_name LIKE '%${whereJson.blurry}%')
|
||||
</if>
|
||||
<if test="whereJson.region_code != null">
|
||||
AND p.region_code = #{whereJson.region_code}
|
||||
</if>
|
||||
<if test="whereJson.point_type != null">
|
||||
AND p.point_type = #{whereJson.point_type}
|
||||
</if>
|
||||
<if test="whereJson.point_status != null">
|
||||
AND p.point_status = #{whereJson.point_status}
|
||||
</if>
|
||||
<if test="whereJson.is_used != null">
|
||||
AND p.is_used = #{whereJson.is_used}
|
||||
</if>
|
||||
<choose>
|
||||
<!-- Case: whereJson.lock_type is true -->
|
||||
<when test="whereJson.lock_type">
|
||||
AND (p.ing_task_code IS NOT NULL AND p.ing_task_code <![CDATA[<>]]> '')
|
||||
</when>
|
||||
<!-- Case: whereJson.lock_type is false -->
|
||||
<otherwise>
|
||||
AND (p.ing_task_code IS NULL OR p.ing_task_code = '')
|
||||
</otherwise>
|
||||
</choose>
|
||||
</where>
|
||||
ORDER BY p.region_code, p.point_code, p.point_type
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
@@ -1,12 +1,23 @@
|
||||
package org.nl.wms.sch.point.service.dto;
|
||||
|
||||
import lombok.Data;
|
||||
import org.nl.common.domain.query.BaseQuery;
|
||||
import org.nl.wms.sch.point.service.dao.SchBasePoint;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author lyd
|
||||
* @date 2023-05-15
|
||||
**/
|
||||
public class SchBasePointQuery extends BaseQuery<SchBasePoint> {
|
||||
|
||||
@Data
|
||||
public class SchBasePointQuery implements Serializable {
|
||||
private String blurry;
|
||||
private String workshop_code;
|
||||
private String region_code;
|
||||
private String point_type;
|
||||
private String point_status;
|
||||
private Boolean is_used;
|
||||
private Boolean lock_type;
|
||||
private Boolean parent_point;
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@ import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.wms.sch.point.service.ISchBasePointService;
|
||||
import org.nl.wms.sch.point.service.dao.SchBasePoint;
|
||||
import org.nl.wms.sch.point.service.dao.mapper.SchBasePointMapper;
|
||||
import org.nl.wms.sch.point.service.dto.SchBasePointQuery;
|
||||
import org.nl.wms.sch.region.service.dao.SchBaseRegion;
|
||||
import org.nl.wms.sch.region.service.dao.mapper.SchBaseRegionMapper;
|
||||
import org.nl.wms.sch.task_manage.enums.PointStatusEnum;
|
||||
@@ -46,41 +47,9 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
|
||||
private SchBaseRegionMapper regionMapper;
|
||||
|
||||
@Override
|
||||
public IPage<SchBasePoint> queryAll(Map whereJson, PageQuery page) {
|
||||
String blurry = ObjectUtil.isNotEmpty(whereJson.get("blurry"))
|
||||
? whereJson.get("blurry").toString() : null;
|
||||
String workshop_code = ObjectUtil.isNotEmpty(whereJson.get("workshop_code"))
|
||||
? whereJson.get("workshop_code").toString() : null;
|
||||
String region_code = ObjectUtil.isNotEmpty(whereJson.get("region_code"))
|
||||
? whereJson.get("region_code").toString() : null;
|
||||
String point_type = ObjectUtil.isNotEmpty(whereJson.get("point_type"))
|
||||
? whereJson.get("point_type").toString() : null;
|
||||
String point_status = ObjectUtil.isNotEmpty(whereJson.get("point_status"))
|
||||
? whereJson.get("point_status").toString() : null;
|
||||
Boolean is_used = ObjectUtil.isNotEmpty(whereJson.get("is_used"))
|
||||
? Boolean.valueOf(whereJson.get("is_used").toString()) : null;
|
||||
Boolean lock_type = ObjectUtil.isNotEmpty(whereJson.get("lock_type"))
|
||||
? Boolean.valueOf(whereJson.get("lock_type").toString()) : false;
|
||||
Boolean parent_point = ObjectUtil.isNotEmpty(whereJson.get("parent_point"))
|
||||
? Boolean.valueOf(whereJson.get("parent_point").toString()) : false;
|
||||
LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
|
||||
lam.eq(ObjectUtil.isNotEmpty(workshop_code), SchBasePoint::getWorkshop_code, workshop_code)
|
||||
.and(ObjectUtil.isNotEmpty(blurry), la -> la.like(SchBasePoint::getPoint_code, blurry)
|
||||
.or().like(SchBasePoint::getPoint_name, blurry))
|
||||
.eq(ObjectUtil.isNotEmpty(region_code), SchBasePoint::getRegion_code, region_code)
|
||||
.eq(ObjectUtil.isNotEmpty(point_type), SchBasePoint::getPoint_type, point_type)
|
||||
.eq(ObjectUtil.isNotEmpty(point_status), SchBasePoint::getPoint_status, point_status)
|
||||
.eq(ObjectUtil.isNotEmpty(is_used), SchBasePoint::getIs_used, is_used)
|
||||
.and(!lock_type, slam -> slam.isNull(SchBasePoint::getIng_task_code).or()
|
||||
.eq(SchBasePoint::getIng_task_code, ""))
|
||||
.and(lock_type, slam -> slam.isNotNull(SchBasePoint::getIng_task_code)
|
||||
.ne(SchBasePoint::getIng_task_code, ""))
|
||||
.orderByAsc(SchBasePoint::getRegion_code)
|
||||
.orderByAsc(SchBasePoint::getPoint_code)
|
||||
.orderByAsc(SchBasePoint::getPoint_type)
|
||||
.apply(parent_point, "point_code = parent_point_code");
|
||||
public IPage<SchBasePoint> queryAll(SchBasePointQuery whereJson, PageQuery page) {
|
||||
IPage<SchBasePoint> pages = new Page<>(page.getPage() + 1, page.getSize());
|
||||
pointMapper.selectPage(pages, lam);
|
||||
pages = pointMapper.selectPageLeftJoin(pages, whereJson);
|
||||
// 可以存放的载具类型
|
||||
pages.getRecords().forEach(point -> {
|
||||
if (ObjectUtil.isNotEmpty(point.getCan_vehicle_type())) {
|
||||
|
||||
@@ -4,6 +4,7 @@ import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.esotericsoftware.minlog.Log;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.system.service.notice.ISysNoticeService;
|
||||
import org.nl.wms.ext.mes.service.WmsToMesService;
|
||||
@@ -39,6 +40,7 @@ import java.util.stream.Collectors;
|
||||
* @Description: 分拣送空托 -> 叠托位
|
||||
* @Date: 2023/6/20
|
||||
*/
|
||||
@Slf4j
|
||||
@Component(value = "FJSKTask")
|
||||
@TaskType("FJSKTask")
|
||||
public class FJSKTask extends AbstractTask {
|
||||
@@ -215,7 +217,7 @@ public class FJSKTask extends AbstractTask {
|
||||
try {
|
||||
wmsToMesService.reportSemiProductionInfoOut(taskObj.getGroup_id());
|
||||
} catch (Exception e) {
|
||||
Log.error("上报MES物料出库失败, {}", e.getMessage());
|
||||
log.error("上报MES物料出库失败, {}", e.getMessage());
|
||||
}
|
||||
}
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
|
||||
@@ -231,8 +231,7 @@ public class CYZCTask extends AbstractTask {
|
||||
.eq(SchBaseVehiclematerialgroup::getVehicle_code, vehicle_code)
|
||||
.eq(SchBaseVehiclematerialgroup::getVehicle_type, vehicleType)
|
||||
.eq(SchBaseVehiclematerialgroup::getGroup_bind_material_status,
|
||||
GroupBindMaterialStatusEnum.BOUND.getValue())
|
||||
.eq(SchBaseVehiclematerialgroup::getIs_firing, false));
|
||||
GroupBindMaterialStatusEnum.BOUND.getValue()));
|
||||
if (ObjectUtil.isEmpty(one)) {
|
||||
throw new BadRequestException(vehicle_code + " => " + vehicleType + "的组盘信息未找到");
|
||||
}
|
||||
|
||||
@@ -173,8 +173,6 @@ public class GZYQLTask extends AbstractTask {
|
||||
}
|
||||
if (status.equals(TaskStatus.FINISHED)) { // 完成
|
||||
this.finishTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS);
|
||||
// todo 记录入窑数据
|
||||
wmsToMesService.reportGdyMaterialInfoIn(taskObj.getGroup_id());
|
||||
}
|
||||
if (status.equals(TaskStatus.CANCELED)) { // 取消
|
||||
this.cancelTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS);
|
||||
|
||||
@@ -297,6 +297,11 @@
|
||||
{{scope.row.ing_task_code?'是':'否'}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="material_code" label="物料编码" :min-width="flexWidth('material_code',crud.data,'载具数量')" />
|
||||
<el-table-column prop="material_name" label="物料名称" :min-width="flexWidth('material_name',crud.data,'载具数量')" />
|
||||
<el-table-column prop="material_spec" label="物料规格" :min-width="flexWidth('material_spec',crud.data,'载具数量')" />
|
||||
<el-table-column prop="material_model" label="物料型号" :min-width="flexWidth('material_model',crud.data,'载具数量')" />
|
||||
<el-table-column prop="material_qty" label="物料数量" :min-width="flexWidth('material_qty',crud.data,'载具数量')" />
|
||||
<el-table-column prop="parent_point_code" label="父点位编码" :min-width="flexWidth('parent_point_code',crud.data,'父点位编码')"/>
|
||||
<el-table-column prop="ing_task_code" label="在执行的任务标识" :min-width="flexWidth('ing_task_code',crud.data,'在执行的任务标识')" />
|
||||
<el-table-column prop="is_has_workder" label="是否有工单" :min-width="flexWidth('is_has_workder',crud.data,'是否有工单')">
|
||||
|
||||
Reference in New Issue
Block a user