79 changed files with 1497 additions and 561 deletions
@ -1,9 +1,24 @@ |
|||
package org.nl.wms.ext.mes.service; |
|||
|
|||
import org.nl.wms.ext.mes.service.dto.MesMudConsumptionDto; |
|||
|
|||
/** |
|||
* @Author: lyd |
|||
* @Description: wms请求acs |
|||
* @Date: 2023/8/3 |
|||
*/ |
|||
public interface WmsToMesService { |
|||
/** |
|||
* wms上报mes泥料消耗记录 |
|||
*/ |
|||
void reportMudConsumption(MesMudConsumptionDto mesMudConsumptionDto); |
|||
|
|||
/** |
|||
* 同步物料数据 |
|||
*/ |
|||
void synchronizeMaterialInfo(); |
|||
/** |
|||
* 同步工单数据 |
|||
*/ |
|||
void synchronizeWorkOrderInfo(); |
|||
} |
|||
|
@ -0,0 +1,30 @@ |
|||
package org.nl.wms.ext.mes.service.dao.mapper; |
|||
|
|||
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.MesWorkOrderDto; |
|||
import org.nl.wms.ext.mes.service.dto.MesMudConsumptionDto; |
|||
|
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @Author: lyd |
|||
* @Description: mes |
|||
* @Date: 2023/9/6 |
|||
*/ |
|||
public interface MesRequestMapper { |
|||
MesMudConsumptionDto getMudConsumption(String mudId); |
|||
|
|||
@DS("oracle") |
|||
List<MdBaseMaterial> getMesMaterialInfos(@Param("time") String time); |
|||
@DS("oracle") |
|||
List<JSONObject> getMesMaterialInfos2(); |
|||
@DS("oracle") |
|||
List<MesWorkOrderDto> getMesWorkOrderInfos(); |
|||
@DS("oracle") |
|||
void updateWorkOrderRead(@Param("list") List<String> list); |
|||
@DS("oracle") |
|||
void insertMudConsumptionInfo(MesMudConsumptionDto mudObject); |
|||
} |
@ -0,0 +1,73 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
|||
<mapper namespace="org.nl.wms.ext.mes.service.dao.mapper.MesRequestMapper"> |
|||
<insert id="insertMudConsumptionInfo" parameterType="org.nl.wms.ext.mes.service.dto.MesMudConsumptionDto"> |
|||
INSERT INTO "LMSTELCOM"."RECEIVE_MUDMATERIEL_OUT"(MSGID, PWORKSCHE_ID, OUT_FINNUM, PRESSUNIT, FBAGCODE, LOGT, SENDTIM |
|||
, CREATE_TM, OP_FLAG) VALUES (#{MSGID}, #{PWORKSCHE_ID}, #{OUT_FINNUM}, #{PRESSUNIT}, #{FBAGCODE}, #{LOGT} |
|||
, #{SENDTIM}, #{CREATE_TM}, #{OP_FLAG}) |
|||
</insert> |
|||
<update id="updateWorkOrderRead" parameterType="java.util.List"> |
|||
UPDATE "LMSTELCOM"."SEND_POP_SCHEDULE_PRESS" |
|||
SET OP_FLAG = '1' |
|||
WHERE PWORKSCHE_ID IN |
|||
<foreach item="item" collection="list" open="(" separator="," close=")"> |
|||
#{item} |
|||
</foreach> |
|||
</update> |
|||
|
|||
<select id="getMudConsumption" resultType="org.nl.wms.ext.mes.service.dto.MesMudConsumptionDto"> |
|||
SELECT |
|||
`mud`.`record_id` AS `MSGID`, |
|||
`mud`.`workorder_code` AS `PWORKSCHE_ID`, |
|||
`mud`.`weight` AS `OUT_FINNUM`, |
|||
`w`.`point_code` AS `PRESSUNIT`, |
|||
`mud`.`record_time` AS `SENDTIM`, |
|||
`mud`.`record_time` AS `CREATE_TM`, |
|||
`mud`.is_read AS OP_FLAG |
|||
FROM |
|||
`pdm_bd_mud_consumption` `mud` |
|||
LEFT JOIN `pdm_bd_workorder` `w` ON ( |
|||
`w`.`workorder_code` = `mud`.`workorder_code` |
|||
) |
|||
WHERE mud.record_id = #{mudId} AND mud.is_read = '0' |
|||
</select> |
|||
<select id="getMesMaterialInfos" resultType="org.nl.wms.database.material.service.dao.MdBaseMaterial"> |
|||
SELECT |
|||
MATNR AS material_id, |
|||
MATNR AS material_code, |
|||
MATNR AS ext_id, |
|||
MAKTX AS material_name, |
|||
MATSPEC AS material_spec, |
|||
MATMODEL AS material_model, |
|||
MATCONVERTRATE AS single_weight, |
|||
MATLENGTH AS a_long_side, |
|||
MATWIDTH AS b_short_side, |
|||
MATTHICKNESS AS h_height, |
|||
MATDIAMETER AS w_thickness, |
|||
MATINNERCODE AS half_material_code, |
|||
FORMULA AS raw_material_code, |
|||
REC_TIM AS ext_time, |
|||
sysdate AS create_time, |
|||
'3' AS create_id, |
|||
'MES系统' AS create_name |
|||
FROM |
|||
"RTMG"."VIEW_MATERIAL_LMS" |
|||
WHERE |
|||
REC_TIM >= #{time} |
|||
ORDER BY |
|||
REC_TIM ASC |
|||
</select> |
|||
<select id="getMesMaterialInfos2" resultType="com.alibaba.fastjson.JSONObject"> |
|||
SELECT |
|||
* |
|||
FROM |
|||
rtmg.view_material_lms |
|||
</select> |
|||
<select id="getMesWorkOrderInfos" resultType="org.nl.wms.ext.mes.service.dto.MesWorkOrderDto"> |
|||
SELECT |
|||
* |
|||
FROM |
|||
"LMSTELCOM"."SEND_POP_SCHEDULE_PRESS" |
|||
WHERE OP_FLAG = '0' |
|||
</select> |
|||
</mapper> |
@ -0,0 +1,34 @@ |
|||
package org.nl.wms.ext.mes.service.dto; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.io.Serializable; |
|||
|
|||
/** |
|||
* @Author: lyd |
|||
* @Description: 泥料消耗记录 |
|||
* @Date: 2023/9/11 |
|||
*/ |
|||
@Data |
|||
public class MesMudConsumptionDto implements Serializable { |
|||
// 唯一标识
|
|||
private String MSGID; |
|||
/** 压机作业计划号 */ |
|||
private String PWORKSCHE_ID; |
|||
/** */ |
|||
private String FWORKSCHE_ID; |
|||
private String FPROBATCH; |
|||
private String FBAGCODE; |
|||
/** 泥料仓库编号 */ |
|||
private String LOGT; |
|||
private String OUT_NUMBER; |
|||
private String OUT_FINNUM; |
|||
private String OUT_THEONUM; |
|||
private String PRESSUNIT; |
|||
private String SENDTIM; |
|||
private String SENDER; |
|||
private String CREATE_TM; |
|||
private String OP_FLAG; |
|||
private String OP_TM; |
|||
|
|||
} |
@ -0,0 +1,62 @@ |
|||
package org.nl.wms.ext.mes.service.dto; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.math.BigDecimal; |
|||
|
|||
/** |
|||
* @Author: lyd |
|||
* @Description: mes工单实体 |
|||
* @Date: 2023/9/9 |
|||
*/ |
|||
@Data |
|||
public class MesWorkOrderDto { |
|||
/** 唯一标识 */ |
|||
private String MSGID; |
|||
/** 压机计划号 */ |
|||
private String PWORKSCHE_ID; |
|||
/** 日计划号 */ |
|||
private String FSCHEDULE_ID; |
|||
/** 生产订单号 */ |
|||
private String FORDER_NO; |
|||
/** 生产日期 */ |
|||
private String FPRODUCT_DATE; |
|||
/** 批次号 */ |
|||
private String BATCHNO; |
|||
/** 压机号 */ |
|||
private String PRESSUNIT; |
|||
/** 配料批次号 */ |
|||
private String FPROBATCH; |
|||
/** 物料编码 */ |
|||
private String FPRODUCT_MATERIAL_ID; |
|||
/** 物料名称 */ |
|||
private String FPRODUCT_MATERIAL_NAME; |
|||
/** 规格 */ |
|||
private String FMATSPEC; |
|||
/** 型号 */ |
|||
private String FMATMODEL; |
|||
/** 辅数量 */ |
|||
private BigDecimal FPRODUCT_SUBNUM; |
|||
/** 辅单位 */ |
|||
private String FPRODUCT_SUBUNIT; |
|||
/** 数量 */ |
|||
private String FPRODUCT_NUM; |
|||
/** 单位 */ |
|||
private String FPRODUCT_UNIT; |
|||
/** 重量 */ |
|||
private String FCONVERTRATE; |
|||
/** 班组 */ |
|||
private String FTEAM; |
|||
/** 开始时间 */ |
|||
private String BEGINTIME; |
|||
/** 结束时间 */ |
|||
private String ENDTIME; |
|||
/** 写入时间 */ |
|||
private String CREATE_TM; |
|||
/** 读取标志 */ |
|||
private String OP_FLAG; |
|||
/** 结果 */ |
|||
private String OP_REPLAY; |
|||
/** 读取时间 */ |
|||
private String OP_TM; |
|||
} |
@ -0,0 +1,29 @@ |
|||
package org.nl.wms.ext.mes.service.dto; |
|||
|
|||
import cn.hutool.http.HttpStatus; |
|||
import com.sun.org.apache.regexp.internal.RE; |
|||
import lombok.Data; |
|||
|
|||
/** |
|||
* @Author: lyd |
|||
* @Description: mes反馈实体 |
|||
* @Date: 2023/9/6 |
|||
*/ |
|||
@Data |
|||
public class ResultForMes { |
|||
private int status; |
|||
private String message; |
|||
public static ResultForMes requestRefuse(String message) { |
|||
ResultForMes result = new ResultForMes(); |
|||
result.setStatus(HttpStatus.HTTP_BAD_REQUEST); |
|||
result.setMessage(message); |
|||
return result; |
|||
} |
|||
|
|||
public static ResultForMes requestSuccess() { |
|||
ResultForMes result = new ResultForMes(); |
|||
result.setStatus(HttpStatus.HTTP_OK); |
|||
result.setMessage("请求成功"); |
|||
return result; |
|||
} |
|||
} |
@ -0,0 +1,12 @@ |
|||
package org.nl.wms.ext.mms.service; |
|||
|
|||
import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder; |
|||
|
|||
/** |
|||
* @Author: lyd |
|||
* @Description: wms与混碾系统 |
|||
* @Date: 2023/9/7 |
|||
*/ |
|||
public interface WmsToMmsService { |
|||
void addRequestMaterial(PdmBdWorkorder workorder); |
|||
} |
@ -0,0 +1,26 @@ |
|||
package org.nl.wms.ext.mms.service.dao.dto; |
|||
|
|||
import com.baomidou.mybatisplus.annotation.IdType; |
|||
import com.baomidou.mybatisplus.annotation.TableId; |
|||
import com.baomidou.mybatisplus.annotation.TableName; |
|||
import lombok.Data; |
|||
|
|||
import java.io.Serializable; |
|||
import java.util.Date; |
|||
|
|||
/** |
|||
* @Author: lyd |
|||
* @Description: 请求要料dto |
|||
* @Date: 2023/9/8 |
|||
*/ |
|||
@Data |
|||
@TableName("压机要料表") |
|||
public class RequestMaterialDto implements Serializable { |
|||
@TableId(value = "id", type = IdType.AUTO) |
|||
public int id; |
|||
public String device_code; |
|||
public String material_code; |
|||
public String production_order; |
|||
public Date request_date; |
|||
public boolean is_used; |
|||
} |
@ -0,0 +1,14 @@ |
|||
package org.nl.wms.ext.mms.service.dao.mapper; |
|||
|
|||
import com.baomidou.dynamic.datasource.annotation.DS; |
|||
import org.nl.wms.ext.mms.service.dao.dto.RequestMaterialDto; |
|||
|
|||
/** |
|||
* @Author: lyd |
|||
* @Description: |
|||
* @Date: 2023/9/7 |
|||
*/ |
|||
public interface MmsRequestMapper { |
|||
@DS("sqlserver") |
|||
void addRequestMaterial(RequestMaterialDto requestMaterialDto); |
|||
} |
@ -0,0 +1,9 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
|||
<mapper namespace="org.nl.wms.ext.mms.service.dao.mapper.MmsRequestMapper"> |
|||
|
|||
<insert id="addRequestMaterial" parameterType="org.nl.wms.ext.mms.service.dao.dto.RequestMaterialDto"> |
|||
INSERT INTO 压机要料表(日期, 配方号, 压机号, 生产订单号, 已配料) VALUES (#{request_date}, #{material_code} |
|||
, #{device_code}, #{production_order}, #{is_used}) |
|||
</insert> |
|||
</mapper> |
@ -0,0 +1,41 @@ |
|||
package org.nl.wms.ext.mms.service.impl; |
|||
|
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.nl.wms.ext.mms.service.WmsToMmsService; |
|||
import org.nl.wms.ext.mms.service.dao.dto.RequestMaterialDto; |
|||
import org.nl.wms.ext.mms.service.dao.mapper.MmsRequestMapper; |
|||
import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
import java.util.Date; |
|||
|
|||
/** |
|||
* @Author: lyd |
|||
* @Description: |
|||
* @Date: 2023/9/7 |
|||
*/ |
|||
@Slf4j |
|||
@Service |
|||
public class WmsToMmsServiceImpl implements WmsToMmsService { |
|||
@Autowired |
|||
public MmsRequestMapper mmsRequestMapper; |
|||
@Override |
|||
public void addRequestMaterial(PdmBdWorkorder workorder) { |
|||
// 插入:压机、原材料、生产订单号、插入时间
|
|||
// 组合参数
|
|||
RequestMaterialDto requestMaterialDto = toRequestMaterialMapper(workorder); |
|||
log.info("插入混碾系统:{}", requestMaterialDto); |
|||
mmsRequestMapper.addRequestMaterial(requestMaterialDto); |
|||
} |
|||
|
|||
public RequestMaterialDto toRequestMaterialMapper(PdmBdWorkorder workorder) { |
|||
RequestMaterialDto requestMaterialDto = new RequestMaterialDto(); |
|||
requestMaterialDto.setDevice_code(workorder.getPoint_code().charAt(workorder.getPoint_code().length() - 1) + ""); |
|||
requestMaterialDto.setMaterial_code(workorder.getRaw_material_code()); |
|||
requestMaterialDto.setRequest_date(new Date()); |
|||
requestMaterialDto.setProduction_order(workorder.getProduction_order()); |
|||
requestMaterialDto.set_used(false); |
|||
return requestMaterialDto; |
|||
} |
|||
} |
@ -1,166 +1,166 @@ |
|||
package org.nl.wms.sch.task_manage.task.tasks.hn; |
|||
|
|||
import cn.hutool.core.date.DateUtil; |
|||
import cn.hutool.core.util.ObjectUtil; |
|||
import com.alibaba.fastjson.JSONObject; |
|||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|||
import org.nl.common.exception.BadRequestException; |
|||
import org.nl.wms.pdm.workorder.service.IPdmBdWorkorderService; |
|||
import org.nl.wms.sch.point.service.ISchBasePointService; |
|||
import org.nl.wms.sch.point.service.dao.SchBasePoint; |
|||
import org.nl.wms.sch.task.service.ISchBaseTaskService; |
|||
import org.nl.wms.sch.task.service.ISchBaseTaskconfigService; |
|||
import org.nl.wms.sch.task.service.dao.SchBaseTask; |
|||
import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig; |
|||
import org.nl.wms.sch.task_manage.AbstractTask; |
|||
import org.nl.wms.sch.task_manage.GeneralDefinition; |
|||
import org.nl.wms.sch.task_manage.enums.PointStatusEnum; |
|||
import org.nl.wms.sch.task_manage.task.TaskType; |
|||
import org.nl.wms.sch.task_manage.task.core.TaskStatus; |
|||
import org.nl.wms.util.PointUtils; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.stereotype.Component; |
|||
import org.springframework.transaction.annotation.Transactional; |
|||
|
|||
import java.util.Arrays; |
|||
import java.util.List; |
|||
import java.util.stream.Collectors; |
|||
|
|||
/** |
|||
* @Author: lyd |
|||
* @Description: 混料缺空:呼叫空载具 |
|||
* @Date: 2023/5/19 |
|||
*/ |
|||
@Deprecated |
|||
@Component |
|||
@TaskType("--") |
|||
public class HNQKTask extends AbstractTask { |
|||
private static String TASK_CONFIG_CODE = "--"; |
|||
private static String EMPTY_ZHONG = "1"; |
|||
|
|||
@Autowired |
|||
private ISchBasePointService pointService; |
|||
@Autowired |
|||
private ISchBaseTaskService taskService; |
|||
@Autowired |
|||
private ISchBaseTaskconfigService taskConfigService; |
|||
@Autowired |
|||
private IPdmBdWorkorderService workorderService; |
|||
|
|||
/** |
|||
* 具体业务 |
|||
*/ |
|||
@Override |
|||
@Transactional(rollbackFor = Exception.class) |
|||
protected void create() { |
|||
// 获取任务
|
|||
List<SchBaseTask> tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY); |
|||
// 配置信息
|
|||
SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper<SchBaseTaskconfig>() |
|||
.eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); |
|||
for (SchBaseTask task : tasks) { |
|||
List<String> startRegionStr = Arrays.stream(taskConfig.getStart_region_str().split(",")).collect(Collectors.toList()); |
|||
// 找起点
|
|||
String extGroupData = task.getExt_group_data(); |
|||
JSONObject jsonObject = JSONObject.parseObject(extGroupData); |
|||
SchBasePoint point = findStartPoint(startRegionStr, jsonObject); |
|||
if (ObjectUtil.isEmpty(point)) { |
|||
task.setRemark("未找到所需点位!"); |
|||
taskService.update(task); |
|||
// 消息通知
|
|||
continue; |
|||
} |
|||
// 设置终点并修改创建成功状态
|
|||
task.setPoint_code1(point.getPoint_code()); |
|||
task.setRemark(""); |
|||
task.setTask_status(TaskStatus.CREATED.getCode()); |
|||
taskService.update(task); |
|||
|
|||
point.setIng_task_code(task.getTask_code()); |
|||
pointService.update(point); |
|||
|
|||
//下发
|
|||
// this.renotifyAcs(task);
|
|||
} |
|||
} |
|||
|
|||
/** |
|||
* 找起点, 通过料盅睏料线区域的空盅位置找到空盅 |
|||
* |
|||
* @param startRegionStr |
|||
* @param extGroupData |
|||
* @return |
|||
*/ |
|||
private SchBasePoint findStartPoint(List<String> startRegionStr, JSONObject extGroupData) { |
|||
LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>(); |
|||
lam.in(SchBasePoint::getRegion_code, startRegionStr) |
|||
.eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_VEHICLE.getCode()) |
|||
.eq(SchBasePoint::getPoint_type, EMPTY_ZHONG) |
|||
.and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL,有数据表示锁住
|
|||
.or() |
|||
.eq(SchBasePoint::getIng_task_code, "")) |
|||
.orderByAsc(SchBasePoint::getIn_order_seq) |
|||
.orderByAsc(SchBasePoint::getPoint_code); |
|||
List<SchBasePoint> schBasePoints = pointService.list(lam); |
|||
return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null; |
|||
} |
|||
|
|||
@Override |
|||
@Transactional(rollbackFor = Exception.class) |
|||
protected void updateStatus(String task_code, TaskStatus status) { |
|||
// 校验任务
|
|||
SchBaseTask taskObj = taskService.getByCode(task_code); |
|||
if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { |
|||
throw new BadRequestException("该任务已完成!"); |
|||
} |
|||
if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) { |
|||
throw new BadRequestException("该任务已取消!"); |
|||
} |
|||
// 获取参数
|
|||
String startPoint = taskObj.getPoint_code1(); // 获取起点
|
|||
String endPoint = taskObj.getPoint_code2(); // 获取起点
|
|||
SchBasePoint startPointObj = pointService.getById(startPoint); |
|||
SchBasePoint endPointObj = pointService.getById(endPoint); |
|||
// 根据传来的类型去对任务进行操作
|
|||
if (status.equals(TaskStatus.EXECUTING)) { // 执行中
|
|||
taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); |
|||
taskObj.setRemark("执行中"); |
|||
} |
|||
if (status.equals(TaskStatus.FINISHED)) { // 完成
|
|||
// 起点清空
|
|||
if (ObjectUtil.isNotEmpty(startPointObj)) { |
|||
PointUtils.clearPoint(startPointObj); |
|||
taskObj.setVehicle_code(startPointObj.getVehicle_code()); |
|||
endPointObj.setPoint_status(PointStatusEnum.EMPTY_VEHICLE.getCode()); |
|||
endPointObj.setVehicle_type("1"); |
|||
endPointObj.setVehicle_code(startPointObj.getVehicle_code()); |
|||
endPointObj.setVehicle_qty(1); |
|||
endPointObj.setUpdate_time(DateUtil.now()); |
|||
pointService.updateById(endPointObj); |
|||
} |
|||
// 任务完成
|
|||
taskObj.setTask_status(TaskStatus.FINISHED.getCode()); |
|||
taskObj.setRemark(GeneralDefinition.TASK_FINISH); |
|||
} |
|||
if (status.equals(TaskStatus.CANCELED)) { // 取消
|
|||
// 起点解锁
|
|||
if (ObjectUtil.isNotEmpty(startPointObj)) { |
|||
startPointObj.setIng_task_code(""); |
|||
pointService.update(startPointObj); |
|||
} |
|||
taskObj.setTask_status(TaskStatus.CANCELED.getCode()); |
|||
} |
|||
taskService.update(taskObj); |
|||
} |
|||
|
|||
@Override |
|||
public void forceFinish(String task_code) { |
|||
this.updateStatus(task_code, TaskStatus.FINISHED); |
|||
} |
|||
|
|||
@Override |
|||
public void cancel(String task_code) { |
|||
this.updateStatus(task_code, TaskStatus.CANCELED); |
|||
} |
|||
} |
|||
|
|||
//package org.nl.wms.sch.task_manage.task.tasks.hn;
|
|||
//
|
|||
//import cn.hutool.core.date.DateUtil;
|
|||
//import cn.hutool.core.util.ObjectUtil;
|
|||
//import com.alibaba.fastjson.JSONObject;
|
|||
//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|||
//import org.nl.common.exception.BadRequestException;
|
|||
//import org.nl.wms.pdm.workorder.service.IPdmBdWorkorderService;
|
|||
//import org.nl.wms.sch.point.service.ISchBasePointService;
|
|||
//import org.nl.wms.sch.point.service.dao.SchBasePoint;
|
|||
//import org.nl.wms.sch.task.service.ISchBaseTaskService;
|
|||
//import org.nl.wms.sch.task.service.ISchBaseTaskconfigService;
|
|||
//import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
|||
//import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig;
|
|||
//import org.nl.wms.sch.task_manage.AbstractTask;
|
|||
//import org.nl.wms.sch.task_manage.GeneralDefinition;
|
|||
//import org.nl.wms.sch.task_manage.enums.PointStatusEnum;
|
|||
//import org.nl.wms.sch.task_manage.task.TaskType;
|
|||
//import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
|||
//import org.nl.wms.util.PointUtils;
|
|||
//import org.springframework.beans.factory.annotation.Autowired;
|
|||
//import org.springframework.stereotype.Component;
|
|||
//import org.springframework.transaction.annotation.Transactional;
|
|||
//
|
|||
//import java.util.Arrays;
|
|||
//import java.util.List;
|
|||
//import java.util.stream.Collectors;
|
|||
//
|
|||
///**
|
|||
// * @Author: lyd
|
|||
// * @Description: 混料缺空:呼叫空载具
|
|||
// * @Date: 2023/5/19
|
|||
// */
|
|||
//@Deprecated
|
|||
//@Component
|
|||
//@TaskType("--")
|
|||
//public class HNQKTask extends AbstractTask {
|
|||
// private static String TASK_CONFIG_CODE = "--";
|
|||
// private static String EMPTY_ZHONG = "1";
|
|||
//
|
|||
// @Autowired
|
|||
// private ISchBasePointService pointService;
|
|||
// @Autowired
|
|||
// private ISchBaseTaskService taskService;
|
|||
// @Autowired
|
|||
// private ISchBaseTaskconfigService taskConfigService;
|
|||
// @Autowired
|
|||
// private IPdmBdWorkorderService workorderService;
|
|||
//
|
|||
// /**
|
|||
// * 具体业务
|
|||
// */
|
|||
// @Override
|
|||
// @Transactional(rollbackFor = Exception.class)
|
|||
// protected void create() {
|
|||
// // 获取任务
|
|||
// List<SchBaseTask> tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY);
|
|||
// // 配置信息
|
|||
// SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper<SchBaseTaskconfig>()
|
|||
// .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE));
|
|||
// for (SchBaseTask task : tasks) {
|
|||
// List<String> startRegionStr = Arrays.stream(taskConfig.getStart_region_str().split(",")).collect(Collectors.toList());
|
|||
// // 找起点
|
|||
// String extGroupData = task.getExt_group_data();
|
|||
// JSONObject jsonObject = JSONObject.parseObject(extGroupData);
|
|||
// SchBasePoint point = findStartPoint(startRegionStr, jsonObject);
|
|||
// if (ObjectUtil.isEmpty(point)) {
|
|||
// task.setRemark("未找到所需点位!");
|
|||
// taskService.update(task);
|
|||
// // 消息通知
|
|||
// continue;
|
|||
// }
|
|||
// // 设置终点并修改创建成功状态
|
|||
// task.setPoint_code1(point.getPoint_code());
|
|||
// task.setRemark("");
|
|||
// task.setTask_status(TaskStatus.CREATED.getCode());
|
|||
// taskService.update(task);
|
|||
//
|
|||
// point.setIng_task_code(task.getTask_code());
|
|||
// pointService.update(point);
|
|||
//
|
|||
// //下发
|
|||
//// this.renotifyAcs(task);
|
|||
// }
|
|||
// }
|
|||
//
|
|||
// /**
|
|||
// * 找起点, 通过料盅睏料线区域的空盅位置找到空盅
|
|||
// *
|
|||
// * @param startRegionStr
|
|||
// * @param extGroupData
|
|||
// * @return
|
|||
// */
|
|||
// private SchBasePoint findStartPoint(List<String> startRegionStr, JSONObject extGroupData) {
|
|||
// LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
|
|||
// lam.in(SchBasePoint::getRegion_code, startRegionStr)
|
|||
// .eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_VEHICLE.getCode())
|
|||
// .eq(SchBasePoint::getPoint_type, EMPTY_ZHONG)
|
|||
// .and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL,有数据表示锁住
|
|||
// .or()
|
|||
// .eq(SchBasePoint::getIng_task_code, ""))
|
|||
// .orderByAsc(SchBasePoint::getIn_order_seq)
|
|||
// .orderByAsc(SchBasePoint::getPoint_code);
|
|||
// List<SchBasePoint> schBasePoints = pointService.list(lam);
|
|||
// return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null;
|
|||
// }
|
|||
//
|
|||
// @Override
|
|||
// @Transactional(rollbackFor = Exception.class)
|
|||
// protected void updateStatus(String task_code, TaskStatus status) {
|
|||
// // 校验任务
|
|||
// SchBaseTask taskObj = taskService.getByCode(task_code);
|
|||
// if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) {
|
|||
// throw new BadRequestException("该任务已完成!");
|
|||
// }
|
|||
// if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) {
|
|||
// throw new BadRequestException("该任务已取消!");
|
|||
// }
|
|||
// // 获取参数
|
|||
// String startPoint = taskObj.getPoint_code1(); // 获取起点
|
|||
// String endPoint = taskObj.getPoint_code2(); // 获取起点
|
|||
// SchBasePoint startPointObj = pointService.getById(startPoint);
|
|||
// SchBasePoint endPointObj = pointService.getById(endPoint);
|
|||
// // 根据传来的类型去对任务进行操作
|
|||
// if (status.equals(TaskStatus.EXECUTING)) { // 执行中
|
|||
// taskObj.setTask_status(TaskStatus.EXECUTING.getCode());
|
|||
// taskObj.setRemark("执行中");
|
|||
// }
|
|||
// if (status.equals(TaskStatus.FINISHED)) { // 完成
|
|||
// // 起点清空
|
|||
// if (ObjectUtil.isNotEmpty(startPointObj)) {
|
|||
// PointUtils.clearPoint(startPointObj);
|
|||
// taskObj.setVehicle_code(startPointObj.getVehicle_code());
|
|||
// endPointObj.setPoint_status(PointStatusEnum.EMPTY_VEHICLE.getCode());
|
|||
// endPointObj.setVehicle_type("1");
|
|||
// endPointObj.setVehicle_code(startPointObj.getVehicle_code());
|
|||
// endPointObj.setVehicle_qty(1);
|
|||
// endPointObj.setUpdate_time(DateUtil.now());
|
|||
// pointService.updateById(endPointObj);
|
|||
// }
|
|||
// // 任务完成
|
|||
// taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
|||
// taskObj.setRemark(GeneralDefinition.TASK_FINISH);
|
|||
// }
|
|||
// if (status.equals(TaskStatus.CANCELED)) { // 取消
|
|||
// // 起点解锁
|
|||
// if (ObjectUtil.isNotEmpty(startPointObj)) {
|
|||
// startPointObj.setIng_task_code("");
|
|||
// pointService.update(startPointObj);
|
|||
// }
|
|||
// taskObj.setTask_status(TaskStatus.CANCELED.getCode());
|
|||
// }
|
|||
// taskService.update(taskObj);
|
|||
// }
|
|||
//
|
|||
// @Override
|
|||
// public void forceFinish(String task_code) {
|
|||
// this.updateStatus(task_code, TaskStatus.FINISHED);
|
|||
// }
|
|||
//
|
|||
// @Override
|
|||
// public void cancel(String task_code) {
|
|||
// this.updateStatus(task_code, TaskStatus.CANCELED);
|
|||
// }
|
|||
//}
|
|||
//
|
|||
|
@ -1,171 +1,171 @@ |
|||
package org.nl.wms.sch.task_manage.task.tasks.yz; |
|||
|
|||
import cn.hutool.core.lang.Assert; |
|||
import cn.hutool.core.util.ObjectUtil; |
|||
import com.alibaba.fastjson.JSONObject; |
|||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.nl.common.exception.BadRequestException; |
|||
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.service.ISchBaseTaskService; |
|||
import org.nl.wms.sch.task.service.ISchBaseTaskconfigService; |
|||
import org.nl.wms.sch.task.service.dao.SchBaseTask; |
|||
import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig; |
|||
import org.nl.wms.sch.task_manage.AbstractTask; |
|||
import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum; |
|||
import org.nl.wms.sch.task_manage.task.TaskType; |
|||
import org.nl.wms.sch.task_manage.task.core.TaskStatus; |
|||
import org.nl.wms.sch.task_manage.task.tasks.yz.mapper.YZMapper; |
|||
import org.nl.wms.util.PointUtils; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
import java.util.Arrays; |
|||
import java.util.List; |
|||
import java.util.stream.Collectors; |
|||
|
|||
/** |
|||
* @Author: lyd |
|||
* @Description: 压制缺料任务 |
|||
* @Date: 2023/5/25 |
|||
*/ |
|||
@Slf4j |
|||
@Deprecated |
|||
@Component |
|||
@TaskType("-") |
|||
public class YZQLTask extends AbstractTask { |
|||
private static String TASK_CONFIG_CODE = "-"; |
|||
|
|||
@Autowired |
|||
private ISchBasePointService pointService; |
|||
@Autowired |
|||
private ISchBaseTaskService taskService; |
|||
@Autowired |
|||
private ISchBaseTaskconfigService taskConfigService; |
|||
@Autowired |
|||
private ISchBaseVehiclematerialgroupService vehiclematerialgroupService; |
|||
@Autowired |
|||
private IPdmBdWorkorderService workorderService; |
|||
@Autowired |
|||
private YZMapper yzMapper; |
|||
|
|||
@Override |
|||
protected void create() throws BadRequestException { |
|||
// 获取任务
|
|||
List<SchBaseTask> tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY); |
|||
// 配置信息
|
|||
SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper<SchBaseTaskconfig>() |
|||
.eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); |
|||
for (SchBaseTask task : tasks) { |
|||
List<String> startRegionStr = Arrays.stream(taskConfig.getStart_region_str().split(",")).collect(Collectors.toList()); |
|||
// 找起点
|
|||
String extGroupData = task.getExt_group_data(); |
|||
JSONObject jsonObject = JSONObject.parseObject(extGroupData); |
|||
jsonObject.put("vehicle_type", task.getVehicle_type()); |
|||
SchBasePoint point = findStartPoint(startRegionStr, jsonObject); |
|||
if (ObjectUtil.isEmpty(point)) { |
|||
task.setRemark("未找到所需点位!"); |
|||
taskService.update(task); |
|||
// 消息通知
|
|||
continue; |
|||
} |
|||
// 设置起点并修改创建成功状态
|
|||
task.setPoint_code1(point.getPoint_code()); |
|||
task.setTask_status(TaskStatus.CREATED.getCode()); |
|||
task.setVehicle_code(point.getVehicle_code()); |
|||
taskService.update(task); |
|||
|
|||
point.setIng_task_code(task.getTask_code()); |
|||
pointService.update(point); |
|||
|
|||
//下发
|
|||
// this.renotifyAcs(task);
|
|||
} |
|||
} |
|||
|
|||
/** |
|||
* 找起点业务:混碾机工单的物料标识相同的位置 |
|||
* |
|||
* @param startRegionStr : 区域列表 |
|||
* @param extGroupData : 外部参数,包含条件所需的信息 |
|||
* @return |
|||
* @description : JSONObject获取不到就是null |
|||
*/ |
|||
private SchBasePoint findStartPoint(List<String> startRegionStr, JSONObject extGroupData) { |
|||
// 获取当前工单
|
|||
String workorderCode = extGroupData.getString("workorder_code"); |
|||
PdmBdWorkorder workOrder = ObjectUtil.isNotEmpty(workorderCode) |
|||
? workorderService.getOne(new LambdaQueryWrapper<PdmBdWorkorder>() |
|||
.eq(PdmBdWorkorder::getWorkorder_code, workorderCode)) |
|||
: null; |
|||
Assert.notNull(workOrder, "工单不能为空!"); |
|||
// 查找混碾机工单的物料相同的位置
|
|||
List<SchBasePoint> points = yzMapper.findPointForYZQL(startRegionStr, workOrder.getMaterial_id()); |
|||
return ObjectUtil.isNotEmpty(points) ? points.get(0) : null; |
|||
} |
|||
|
|||
|
|||
@Override |
|||
protected void updateStatus(String task_code, TaskStatus status) { |
|||
// 校验任务
|
|||
SchBaseTask taskObj = taskService.getByCode(task_code); |
|||
if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { |
|||
throw new BadRequestException("该任务已完成!"); |
|||
} |
|||
if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) { |
|||
throw new BadRequestException("该任务已取消!"); |
|||
} |
|||
// 获取参数
|
|||
String startPoint = taskObj.getPoint_code1(); // 起点
|
|||
JSONObject extGroupData = ObjectUtil.isNotEmpty(taskObj.getExt_group_data()) |
|||
? JSONObject.parseObject(taskObj.getExt_group_data()) |
|||
: null; |
|||
SchBasePoint startPointObj = pointService.getById(startPoint); |
|||
// 根据传来的类型去对任务进行操作
|
|||
if (status.equals(TaskStatus.EXECUTING)) { // 执行中
|
|||
taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); |
|||
taskObj.setRemark("执行中"); |
|||
} |
|||
if (status.equals(TaskStatus.FINISHED)) { // 完成
|
|||
// 任务上有载具编码 -> 获取当前载具编码的组盘信息
|
|||
SchBaseVehiclematerialgroup one = vehiclematerialgroupService.getOne(new LambdaQueryWrapper<SchBaseVehiclematerialgroup>() |
|||
.eq(SchBaseVehiclematerialgroup::getVehicle_code, taskObj.getVehicle_code()) |
|||
.eq(SchBaseVehiclematerialgroup::getVehicle_type, taskObj.getVehicle_type()) |
|||
.eq(SchBaseVehiclematerialgroup::getGroup_bind_material_status, GroupBindMaterialStatusEnum.BOUND.getValue())); |
|||
// 将载具设置为已解绑
|
|||
one.setGroup_bind_material_status(GroupBindMaterialStatusEnum.UNBOUND.getValue()); |
|||
vehiclematerialgroupService.update(one); |
|||
// 释放点位,将点位设置为空位,清空数据
|
|||
if (ObjectUtil.isNotEmpty(startPointObj)) { |
|||
PointUtils.clearPoint(startPointObj); |
|||
// todo: 终点暂时无设置
|
|||
} |
|||
// 任务修改成完成
|
|||
taskObj.setTask_status(TaskStatus.FINISHED.getCode()); |
|||
} |
|||
if (status.equals(TaskStatus.CANCELED)) { // 取消
|
|||
taskObj.setTask_status(TaskStatus.CANCELED.getCode()); |
|||
// 释放点位,起点正在执行的任务清空
|
|||
if (ObjectUtil.isNotEmpty(startPointObj)) { |
|||
startPointObj.setIng_task_code(""); |
|||
pointService.update(startPointObj); |
|||
} |
|||
} |
|||
taskService.update(taskObj); |
|||
} |
|||
|
|||
@Override |
|||
public void forceFinish(String task_code) { |
|||
this.updateStatus(task_code, TaskStatus.FINISHED); |
|||
} |
|||
|
|||
@Override |
|||
public void cancel(String task_code) { |
|||
this.updateStatus(task_code, TaskStatus.CANCELED); |
|||
} |
|||
} |
|||
//package org.nl.wms.sch.task_manage.task.tasks.yz;
|
|||
//
|
|||
//import cn.hutool.core.lang.Assert;
|
|||
//import cn.hutool.core.util.ObjectUtil;
|
|||
//import com.alibaba.fastjson.JSONObject;
|
|||
//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|||
//import lombok.extern.slf4j.Slf4j;
|
|||
//import org.nl.common.exception.BadRequestException;
|
|||
//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.service.ISchBaseTaskService;
|
|||
//import org.nl.wms.sch.task.service.ISchBaseTaskconfigService;
|
|||
//import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
|||
//import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig;
|
|||
//import org.nl.wms.sch.task_manage.AbstractTask;
|
|||
//import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum;
|
|||
//import org.nl.wms.sch.task_manage.task.TaskType;
|
|||
//import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
|||
//import org.nl.wms.sch.task_manage.task.tasks.yz.mapper.YZMapper;
|
|||
//import org.nl.wms.util.PointUtils;
|
|||
//import org.springframework.beans.factory.annotation.Autowired;
|
|||
//import org.springframework.stereotype.Component;
|
|||
//
|
|||
//import java.util.Arrays;
|
|||
//import java.util.List;
|
|||
//import java.util.stream.Collectors;
|
|||
//
|
|||
///**
|
|||
// * @Author: lyd
|
|||
// * @Description: 压制缺料任务
|
|||
// * @Date: 2023/5/25
|
|||
// */
|
|||
//@Slf4j
|
|||
//@Deprecated
|
|||
//@Component
|
|||
//@TaskType("-")
|
|||
//public class YZQLTask extends AbstractTask {
|
|||
// private static String TASK_CONFIG_CODE = "-";
|
|||
//
|
|||
// @Autowired
|
|||
// private ISchBasePointService pointService;
|
|||
// @Autowired
|
|||
// private ISchBaseTaskService taskService;
|
|||
// @Autowired
|
|||
// private ISchBaseTaskconfigService taskConfigService;
|
|||
// @Autowired
|
|||
// private ISchBaseVehiclematerialgroupService vehiclematerialgroupService;
|
|||
// @Autowired
|
|||
// private IPdmBdWorkorderService workorderService;
|
|||
// @Autowired
|
|||
// private YZMapper yzMapper;
|
|||
//
|
|||
// @Override
|
|||
// protected void create() throws BadRequestException {
|
|||
// // 获取任务
|
|||
// List<SchBaseTask> tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY);
|
|||
// // 配置信息
|
|||
// SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper<SchBaseTaskconfig>()
|
|||
// .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE));
|
|||
// for (SchBaseTask task : tasks) {
|
|||
// List<String> startRegionStr = Arrays.stream(taskConfig.getStart_region_str().split(",")).collect(Collectors.toList());
|
|||
// // 找起点
|
|||
// String extGroupData = task.getExt_group_data();
|
|||
// JSONObject jsonObject = JSONObject.parseObject(extGroupData);
|
|||
// jsonObject.put("vehicle_type", task.getVehicle_type());
|
|||
// SchBasePoint point = findStartPoint(startRegionStr, jsonObject);
|
|||
// if (ObjectUtil.isEmpty(point)) {
|
|||
// task.setRemark("未找到所需点位!");
|
|||
// taskService.update(task);
|
|||
// // 消息通知
|
|||
// continue;
|
|||
// }
|
|||
// // 设置起点并修改创建成功状态
|
|||
// task.setPoint_code1(point.getPoint_code());
|
|||
// task.setTask_status(TaskStatus.CREATED.getCode());
|
|||
// task.setVehicle_code(point.getVehicle_code());
|
|||
// taskService.update(task);
|
|||
//
|
|||
// point.setIng_task_code(task.getTask_code());
|
|||
// pointService.update(point);
|
|||
//
|
|||
// //下发
|
|||
//// this.renotifyAcs(task);
|
|||
// }
|
|||
// }
|
|||
//
|
|||
// /**
|
|||
// * 找起点业务:混碾机工单的物料标识相同的位置
|
|||
// *
|
|||
// * @param startRegionStr : 区域列表
|
|||
// * @param extGroupData : 外部参数,包含条件所需的信息
|
|||
// * @return
|
|||
// * @description : JSONObject获取不到就是null
|
|||
// */
|
|||
// private SchBasePoint findStartPoint(List<String> startRegionStr, JSONObject extGroupData) {
|
|||
// // 获取当前工单
|
|||
// String workorderCode = extGroupData.getString("workorder_code");
|
|||
// PdmBdWorkorder workOrder = ObjectUtil.isNotEmpty(workorderCode)
|
|||
// ? workorderService.getOne(new LambdaQueryWrapper<PdmBdWorkorder>()
|
|||
// .eq(PdmBdWorkorder::getWorkorder_code, workorderCode))
|
|||
// : null;
|
|||
// Assert.notNull(workOrder, "工单不能为空!");
|
|||
// // 查找混碾机工单的物料相同的位置
|
|||
// List<SchBasePoint> points = yzMapper.findPointForYZQL(startRegionStr, workOrder.getMaterial_id());
|
|||
// return ObjectUtil.isNotEmpty(points) ? points.get(0) : null;
|
|||
// }
|
|||
//
|
|||
//
|
|||
// @Override
|
|||
// protected void updateStatus(String task_code, TaskStatus status) {
|
|||
// // 校验任务
|
|||
// SchBaseTask taskObj = taskService.getByCode(task_code);
|
|||
// if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) {
|
|||
// throw new BadRequestException("该任务已完成!");
|
|||
// }
|
|||
// if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) {
|
|||
// throw new BadRequestException("该任务已取消!");
|
|||
// }
|
|||
// // 获取参数
|
|||
// String startPoint = taskObj.getPoint_code1(); // 起点
|
|||
// JSONObject extGroupData = ObjectUtil.isNotEmpty(taskObj.getExt_group_data())
|
|||
// ? JSONObject.parseObject(taskObj.getExt_group_data())
|
|||
// : null;
|
|||
// SchBasePoint startPointObj = pointService.getById(startPoint);
|
|||
// // 根据传来的类型去对任务进行操作
|
|||
// if (status.equals(TaskStatus.EXECUTING)) { // 执行中
|
|||
// taskObj.setTask_status(TaskStatus.EXECUTING.getCode());
|
|||
// taskObj.setRemark("执行中");
|
|||
// }
|
|||
// if (status.equals(TaskStatus.FINISHED)) { // 完成
|
|||
// // 任务上有载具编码 -> 获取当前载具编码的组盘信息
|
|||
// SchBaseVehiclematerialgroup one = vehiclematerialgroupService.getOne(new LambdaQueryWrapper<SchBaseVehiclematerialgroup>()
|
|||
// .eq(SchBaseVehiclematerialgroup::getVehicle_code, taskObj.getVehicle_code())
|
|||
// .eq(SchBaseVehiclematerialgroup::getVehicle_type, taskObj.getVehicle_type())
|
|||
// .eq(SchBaseVehiclematerialgroup::getGroup_bind_material_status, GroupBindMaterialStatusEnum.BOUND.getValue()));
|
|||
// // 将载具设置为已解绑
|
|||
// one.setGroup_bind_material_status(GroupBindMaterialStatusEnum.UNBOUND.getValue());
|
|||
// vehiclematerialgroupService.update(one);
|
|||
// // 释放点位,将点位设置为空位,清空数据
|
|||
// if (ObjectUtil.isNotEmpty(startPointObj)) {
|
|||
// PointUtils.clearPoint(startPointObj);
|
|||
// // todo: 终点暂时无设置
|
|||
// }
|
|||
// // 任务修改成完成
|
|||
// taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
|||
// }
|
|||
// if (status.equals(TaskStatus.CANCELED)) { // 取消
|
|||
// taskObj.setTask_status(TaskStatus.CANCELED.getCode());
|
|||
// // 释放点位,起点正在执行的任务清空
|
|||
// if (ObjectUtil.isNotEmpty(startPointObj)) {
|
|||
// startPointObj.setIng_task_code("");
|
|||
// pointService.update(startPointObj);
|
|||
// }
|
|||
// }
|
|||
// taskService.update(taskObj);
|
|||
// }
|
|||
//
|
|||
// @Override
|
|||
// public void forceFinish(String task_code) {
|
|||
// this.updateStatus(task_code, TaskStatus.FINISHED);
|
|||
// }
|
|||
//
|
|||
// @Override
|
|||
// public void cancel(String task_code) {
|
|||
// this.updateStatus(task_code, TaskStatus.CANCELED);
|
|||
// }
|
|||
//}
|
|||
|
@ -0,0 +1,70 @@ |
|||
package org.nl.wms.util; |
|||
|
|||
import cn.hutool.core.util.ObjectUtil; |
|||
import cn.hutool.core.util.StrUtil; |
|||
import cn.hutool.http.HttpRequest; |
|||
import com.alibaba.fastjson.JSON; |
|||
import com.alibaba.fastjson.JSONObject; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.nl.config.SpringContextHolder; |
|||
import org.nl.system.service.notice.impl.SysNoticeServiceImpl; |
|||
import org.nl.system.service.param.dao.Param; |
|||
import org.nl.system.service.param.impl.SysParamServiceImpl; |
|||
import org.nl.wms.ext.mes.service.dto.ResultForMes; |
|||
import org.nl.wms.sch.task_manage.GeneralDefinition; |
|||
import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum; |
|||
|
|||
/** |
|||
* @Author: lyd |
|||
* @Description: 与MES对接的接口请求 |
|||
* @Date: 2023/9/6 |
|||
*/ |
|||
@Slf4j |
|||
public class MesUtils { |
|||
/** |
|||
* 一次发单条数据 |
|||
* @param api |
|||
* @param object |
|||
* @return |
|||
* @param <T> |
|||
*/ |
|||
public static <T> ResultForMes notifyMes(String api, T object) { |
|||
SysParamServiceImpl sysParamService = SpringContextHolder.getBean(SysParamServiceImpl.class); |
|||
SysNoticeServiceImpl sysNoticeService = SpringContextHolder.getBean(SysNoticeServiceImpl.class); |
|||
//判断是否连接MES系统
|
|||
Param isConnectAcs = sysParamService.findByCode(GeneralDefinition.IS_CONNECT_MES); |
|||
if (ObjectUtil.isEmpty(isConnectAcs)) { |
|||
return ResultForMes.requestRefuse("参数表中:" + GeneralDefinition.IS_CONNECT_MES + "不存在"); |
|||
} |
|||
String isConnect = isConnectAcs.getValue(); |
|||
//MES地址:127.0.0.1:8010
|
|||
Param acsUrlObj = sysParamService.findByCode(GeneralDefinition.MES_URL); |
|||
if (ObjectUtil.isEmpty(acsUrlObj)) { |
|||
return ResultForMes.requestRefuse("参数表中:" + GeneralDefinition.MES_URL + "不存在"); |
|||
} |
|||
String acsUrl = acsUrlObj.getValue(); |
|||
JSONObject result; |
|||
if (StrUtil.equals(GeneralDefinition.NO, isConnect)) { |
|||
return ResultForMes.requestRefuse("未连接MES!"); |
|||
} |
|||
String url = acsUrl + api; |
|||
log.info("下发mes的参数为:{}", object.toString()); |
|||
ResultForMes resultForMes = ResultForMes.requestSuccess(); |
|||
try { |
|||
String resultMsg = HttpRequest.post(url) |
|||
.body(JSON.toJSONString(object)) |
|||
.execute().body(); |
|||
result = JSONObject.parseObject(resultMsg); |
|||
resultForMes = JSONObject.toJavaObject(result, ResultForMes.class); |
|||
} catch (Exception e) { |
|||
String msg = e.getMessage(); |
|||
//网络不通
|
|||
log.error("连接失败:{}", msg); |
|||
// 发送通知
|
|||
sysNoticeService.createNotice("接口请求失败: " + resultForMes.getMessage(), api, NoticeTypeEnum.EXCEPTION.getCode()); |
|||
return ResultForMes.requestRefuse("网络不通,操作失败!"); |
|||
} |
|||
return resultForMes; |
|||
} |
|||
|
|||
} |
@ -0,0 +1,55 @@ |
|||
package org.nl.wms.util; |
|||
|
|||
import java.sql.Connection; |
|||
import java.sql.DriverManager; |
|||
import java.sql.ResultSet; |
|||
import java.sql.Statement; |
|||
|
|||
public class OracleJDBCExample { |
|||
|
|||
public static void main(String[] args) { |
|||
String jdbcUrl = "jdbc:oracle:thin:@172.27.37.66:1521:RTMES"; // 根据您的数据库配置修改连接字符串
|
|||
String username = "LMSTELCOM"; // 您的数据库用户名
|
|||
String password = "LMSTELCOM_6463"; // 您的数据库密码
|
|||
|
|||
Connection connection = null; |
|||
Statement statement = null; |
|||
ResultSet resultSet = null; |
|||
|
|||
try { |
|||
// 1. 加载 Oracle JDBC 驱动程序
|
|||
Class.forName("oracle.jdbc.OracleDriver"); |
|||
|
|||
// 2. 创建数据库连接
|
|||
connection = DriverManager.getConnection(jdbcUrl, username, password); |
|||
|
|||
// 3. 创建 SQL 语句执行器
|
|||
statement = connection.createStatement(); |
|||
|
|||
// 4. 执行 SQL 查询
|
|||
String sqlQuery = "SELECT * FROM RTMG.VIEW_MATERIAL_LMS"; // 根据您的查询修改表名
|
|||
resultSet = statement.executeQuery(sqlQuery); |
|||
|
|||
// 5. 处理查询结果
|
|||
while (resultSet.next()) { |
|||
// 从结果集中获取数据
|
|||
String id = resultSet.getString("MATNR"); // 根据表的列名修改
|
|||
|
|||
// 打印查询结果
|
|||
System.out.println("ID: " + id); |
|||
} |
|||
} catch (Exception e) { |
|||
e.printStackTrace(); |
|||
} finally { |
|||
// 6. 关闭资源
|
|||
try { |
|||
if (resultSet != null) resultSet.close(); |
|||
if (statement != null) statement.close(); |
|||
if (connection != null) connection.close(); |
|||
} catch (Exception e) { |
|||
e.printStackTrace(); |
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
@ -0,0 +1,24 @@ |
|||
package org.nl.ext; |
|||
|
|||
import org.junit.jupiter.api.Test; |
|||
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; |
|||
import org.springframework.boot.test.context.SpringBootTest; |
|||
|
|||
/** |
|||
* @Author: lyd |
|||
* @Description: |
|||
* @Date: 2023/9/8 |
|||
*/ |
|||
|
|||
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) |
|||
public class TestDemo { |
|||
@Autowired |
|||
private MesRequestMapper mesRequestMapper; |
|||
@Test |
|||
public void test01() { |
|||
MesMudConsumptionDto mudObject = mesRequestMapper.getMudConsumption("1699671959522119680"); |
|||
System.out.println(mudObject); |
|||
} |
|||
} |
Loading…
Reference in new issue