Browse Source

feat: 修改对接记录存储、打印唛头、码垛剩余反馈

master
李永德 1 year ago
parent
commit
5d3bb72266
  1. 2
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/LogMessageConstant.java
  2. 6
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/AutoClearInteractionData.java
  3. 15
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/to/acs/ApplyTaskResponse.java
  4. 47
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java
  5. 8
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/ISysInteractRecordService.java
  6. 2
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/dao/mapper/SysInteractRecordMapper.java
  7. 3
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/dao/mapper/SysInteractRecordMapper.xml
  8. 6
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/impl/SysInteractRecordServiceImpl.java
  9. 7
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/IPdmBdWorkorderService.java
  10. 18
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/impl/PdmBdWorkorderServiceImpl.java
  11. 20
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJMKTask.java

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

@ -42,6 +42,6 @@ public class LogMessageConstant {
public final static String BACKGROUND_YELLOW = "\u001B[43m"; public final static String BACKGROUND_YELLOW = "\u001B[43m";
/** 索引路径 */ /** 索引路径 */
public final static String INDEX_DIR = "D:\\lucene\\index"; public final static String INDEX_DIR = "E:\\lucene\\index";
} }

6
lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/AutoClearInteractionData.java

@ -20,8 +20,10 @@ public class AutoClearInteractionData {
@Autowired @Autowired
private ISysParamService paramService; private ISysParamService paramService;
public void run(){ public void run(){
Param interactionDay = paramService.findByCode("interaction_day"); Param max_rows_to_keep = paramService.findByCode("max_rows_to_keep");
recordService.deleteByDay(interactionDay.getValue()); Param max_rows_to_delete = paramService.findByCode("max_rows_to_delete");
// recordService.deleteByDay(interactionDay.getValue());
recordService.deleteByRows(max_rows_to_keep, max_rows_to_delete);
log.info("run 执行成功"); log.info("run 执行成功");
} }
} }

15
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/to/acs/ApplyTaskResponse.java

@ -19,6 +19,8 @@ public class ApplyTaskResponse extends BaseResponse {
private String mix_number; private String mix_number;
private String weight; private String weight;
private String label_message; private String label_message;
// 特殊业务-无具体含义:目前是是否满足码满规定托盘数
private int is_satisfy;
public static ApplyTaskResponse responseOk(String requestNo) { public static ApplyTaskResponse responseOk(String requestNo) {
ApplyTaskResponse response = new ApplyTaskResponse(); ApplyTaskResponse response = new ApplyTaskResponse();
@ -26,6 +28,7 @@ public class ApplyTaskResponse extends BaseResponse {
response.setMessage("任务申请成功"); response.setMessage("任务申请成功");
response.setResponseDate(DateUtil.now()); response.setResponseDate(DateUtil.now());
response.setCode(HttpStatus.HTTP_OK); response.setCode(HttpStatus.HTTP_OK);
response.setIs_satisfy(0);
return response; return response;
} }
@ -36,6 +39,17 @@ public class ApplyTaskResponse extends BaseResponse {
response.setResponseDate(DateUtil.now()); response.setResponseDate(DateUtil.now());
response.setCode(HttpStatus.HTTP_OK); response.setCode(HttpStatus.HTTP_OK);
response.setLabel_message(message); response.setLabel_message(message);
response.setIs_satisfy(0);
return response;
}
public static ApplyTaskResponse responseOk(String requestNo, String message, int is_satisfy) {
ApplyTaskResponse response = new ApplyTaskResponse();
response.setRequestNo(requestNo);
response.setMessage(message);
response.setResponseDate(DateUtil.now());
response.setCode(HttpStatus.HTTP_OK);
response.setLabel_message(message);
response.setIs_satisfy(is_satisfy);
return response; return response;
} }
public static ApplyTaskResponse responseError(String requestNo, String message) { public static ApplyTaskResponse responseError(String requestNo, String message) {
@ -44,6 +58,7 @@ public class ApplyTaskResponse extends BaseResponse {
response.setCode(HttpStatus.HTTP_BAD_REQUEST); response.setCode(HttpStatus.HTTP_BAD_REQUEST);
response.setMessage(message); response.setMessage(message);
response.setResponseDate(DateUtil.now()); response.setResponseDate(DateUtil.now());
response.setIs_satisfy(0);
return response; return response;
} }

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

@ -5,6 +5,7 @@ import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpStatus; import cn.hutool.http.HttpStatus;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.SneakyThrows; import lombok.SneakyThrows;
@ -50,6 +51,7 @@ import org.nl.wms.sch.task_manage.enums.PointStatusEnum;
import org.nl.wms.sch.task_manage.enums.WorkOrderStatusEnum; import org.nl.wms.sch.task_manage.enums.WorkOrderStatusEnum;
import org.nl.wms.sch.task_manage.task.TaskFactory; import org.nl.wms.sch.task_manage.task.TaskFactory;
import org.nl.wms.sch.task_manage.task.core.TaskStatus; import org.nl.wms.sch.task_manage.task.core.TaskStatus;
import org.nl.wms.sch.task_manage.task.tasks.fj.mapper.FJMapper;
import org.nl.wms.util.CommonUtils; import org.nl.wms.util.CommonUtils;
import org.nl.wms.util.PointUtils; import org.nl.wms.util.PointUtils;
import org.nl.wms.util.TaskUtils; import org.nl.wms.util.TaskUtils;
@ -63,6 +65,7 @@ import javax.annotation.PostConstruct;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@ -115,6 +118,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
private WmsToMesService wmsToMesService; private WmsToMesService wmsToMesService;
@Autowired @Autowired
private WmsToMmsService wmsToMmsService; private WmsToMmsService wmsToMmsService;
@Autowired
private FJMapper fjMapper;
// 初始化反射方法 // 初始化反射方法
@PostConstruct @PostConstruct
@ -169,7 +174,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
String deviceCode = param.getString("device_code"); String deviceCode = param.getString("device_code");
String requestNo = param.getString("requestNo"); String requestNo = param.getString("requestNo");
RLock lock = redissonClient.getLock(deviceCode); RLock lock = redissonClient.getLock(deviceCode);
boolean tryLock = lock.tryLock(5, TimeUnit.SECONDS); boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
try { try {
if (tryLock) { if (tryLock) {
SchBasePoint basePoint = pointService.getById(deviceCode); SchBasePoint basePoint = pointService.getById(deviceCode);
@ -203,7 +208,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
String deviceCode = param.getString("device_code"); String deviceCode = param.getString("device_code");
String requestNo = param.getString("requestNo"); String requestNo = param.getString("requestNo");
RLock lock = redissonClient.getLock(deviceCode); RLock lock = redissonClient.getLock(deviceCode);
boolean tryLock = lock.tryLock(5, TimeUnit.SECONDS); boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
try { try {
if (tryLock) { if (tryLock) {
SchBasePoint basePoint = pointService.getById(deviceCode); SchBasePoint basePoint = pointService.getById(deviceCode);
@ -237,7 +242,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
String deviceCode = param.getString("device_code"); String deviceCode = param.getString("device_code");
String requestNo = param.getString("requestNo"); String requestNo = param.getString("requestNo");
RLock lock = redissonClient.getLock(deviceCode); RLock lock = redissonClient.getLock(deviceCode);
boolean tryLock = lock.tryLock(5, TimeUnit.SECONDS); boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
try { try {
if (tryLock) { if (tryLock) {
SchBasePoint basePoint = pointService.getById(deviceCode); SchBasePoint basePoint = pointService.getById(deviceCode);
@ -271,7 +276,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
String deviceCode = param.getString("device_code"); String deviceCode = param.getString("device_code");
String requestNo = param.getString("requestNo"); String requestNo = param.getString("requestNo");
RLock lock = redissonClient.getLock(deviceCode); RLock lock = redissonClient.getLock(deviceCode);
boolean tryLock = lock.tryLock(5, TimeUnit.SECONDS); int handling = 0; // 无业务:0
boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
try { try {
if (tryLock) { if (tryLock) {
SchBasePoint basePoint = pointService.getById(deviceCode); SchBasePoint basePoint = pointService.getById(deviceCode);
@ -281,7 +287,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
String configCode = basePoint.getRegion_code() + "MLTask"; String configCode = basePoint.getRegion_code() + "MLTask";
// 组织参数 // 组织参数
param.put("config_code", configCode); param.put("config_code", configCode);
param.put("special_param", specialHandling(basePoint.getRegion_code())); handling = specialHandling(basePoint.getRegion_code(), param);
param.put("special_param", handling);
taskService.apply(param); taskService.apply(param);
} }
} finally { } finally {
@ -289,15 +296,37 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
lock.unlock(); lock.unlock();
} }
} }
return ApplyTaskResponse.responseOk(requestNo); return ApplyTaskResponse.responseOk(requestNo, "任务创建成功", handling);
} }
// todo: 特殊处理 // todo: 特殊处理
protected String specialHandling(String regionCode) { protected int specialHandling(String regionCode, JSONObject param) {
if (regionCode.equals("FJ")) { int torus = 0; // 无业务:0, 分拣剩余1托:1,分拣剩余0托:2
if (regionCode.equals("FJ")) { // 判断是否够码满
// 分拣需要在这设置特殊值 // 分拣需要在这设置特殊值
// 校验是否够码满一托
List<ApplyDeviceDto> list = JSONArray.parseArray(param.getString("list"), ApplyDeviceDto.class);
PdmBdWorkorder workorder = workorderService.getDeviceDockingProductionTask(param.getString("device_code"));
// 1 获取点位相应数量
int sum = 0;
for (ApplyDeviceDto applyDeviceDto : list) {
sum += Integer.parseInt(applyDeviceDto.getQty());
}
// 2 获取库存量 surplusNumber
int surplusNumber = fjMapper.getInventoryQuantity(workorder.getMaterial_id());
// 3 现有总数 total
int total = sum + surplusNumber;
// 4 获取木托盘需要多少块 needFullNumber
String needFullNumberStr = fjMapper.getNeedFullNumber(workorder.getMaterial_id());
int needFullNumber = TaskUtils.convertMultiply(needFullNumberStr);
int surplus = total / needFullNumber;
if (surplus == 1) {
return 1;
} else if (surplus == 0) {
return 2;
}
} }
return null; return torus;
} }
/** /**

8
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/ISysInteractRecordService.java

@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import org.nl.common.domain.query.PageQuery; import org.nl.common.domain.query.PageQuery;
import org.nl.system.service.param.dao.Param;
import org.nl.wms.ext.acs.service.dto.ResultForAcs; import org.nl.wms.ext.acs.service.dto.ResultForAcs;
import org.nl.wms.ext.acs.service.dto.to.BaseResponse; import org.nl.wms.ext.acs.service.dto.to.BaseResponse;
import org.nl.wms.ext.record.service.dao.SysInteractRecord; import org.nl.wms.ext.record.service.dao.SysInteractRecord;
@ -69,4 +70,11 @@ public interface ISysInteractRecordService extends IService<SysInteractRecord> {
<K, V> void saveRecord(String name, K request, V response, String direction); <K, V> void saveRecord(String name, K request, V response, String direction);
void deleteByDay(String day); void deleteByDay(String day);
/**
* 删除记录
* @param maxRowsToKeep 最大保存容量
* @param maxRowsToDelete 最大删除数
*/
void deleteByRows(Param maxRowsToKeep, Param maxRowsToDelete);
} }

2
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/dao/mapper/SysInteractRecordMapper.java

@ -10,4 +10,6 @@ import org.nl.wms.ext.record.service.dao.SysInteractRecord;
public interface SysInteractRecordMapper extends BaseMapper<SysInteractRecord> { public interface SysInteractRecordMapper extends BaseMapper<SysInteractRecord> {
void deleteByDay(String day); void deleteByDay(String day);
void deleteByRows(String maxRowsToKeep, String maxRowsToDelete);
} }

3
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/dao/mapper/SysInteractRecordMapper.xml

@ -6,4 +6,7 @@
DELETE FROM sys_interact_record DELETE FROM sys_interact_record
WHERE record_time <![CDATA[<=]]> DATE_SUB(NOW(), INTERVAL #{day} DAY); WHERE record_time <![CDATA[<=]]> DATE_SUB(NOW(), INTERVAL #{day} DAY);
</delete> </delete>
<delete id="deleteByRows">
CALL DeleteRowsIfNeeded(#{maxRowsToKeep}, #{maxRowsToDelete});
</delete>
</mapper> </mapper>

6
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/impl/SysInteractRecordServiceImpl.java

@ -12,6 +12,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.nl.common.domain.query.PageQuery; import org.nl.common.domain.query.PageQuery;
import org.nl.common.exception.BadRequestException; import org.nl.common.exception.BadRequestException;
import org.nl.system.service.param.dao.Param;
import org.nl.wms.ext.acs.service.dto.ResultForAcs; import org.nl.wms.ext.acs.service.dto.ResultForAcs;
import org.nl.wms.ext.acs.service.dto.to.BaseResponse; import org.nl.wms.ext.acs.service.dto.to.BaseResponse;
import org.nl.wms.ext.acs.service.dto.to.wms.AcsResponse; import org.nl.wms.ext.acs.service.dto.to.wms.AcsResponse;
@ -149,4 +150,9 @@ public class SysInteractRecordServiceImpl extends ServiceImpl<SysInteractRecordM
sysInteractRecordMapper.deleteByDay(day); sysInteractRecordMapper.deleteByDay(day);
} }
@Override
public void deleteByRows(Param maxRowsToKeep, Param maxRowsToDelete) {
sysInteractRecordMapper.deleteByRows(maxRowsToKeep.getValue(), maxRowsToDelete.getValue());
}
} }

7
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/IPdmBdWorkorderService.java

@ -56,4 +56,11 @@ public interface IPdmBdWorkorderService extends IService<PdmBdWorkorder> {
* @param entity * @param entity
*/ */
void submits(PdmBdWorkorder entity); void submits(PdmBdWorkorder entity);
/**
* 根据对接位获取工单
* @param deviceCode
* @return
*/
PdmBdWorkorder getDeviceDockingProductionTask(String deviceCode);
} }

18
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/impl/PdmBdWorkorderServiceImpl.java

@ -23,6 +23,8 @@ import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder;
import org.nl.wms.pdm.workorder.service.dao.mapper.PdmBdWorkorderMapper; import org.nl.wms.pdm.workorder.service.dao.mapper.PdmBdWorkorderMapper;
import org.nl.wms.pdm.workorder.service.dao.vo.AcsWorkOrderVo; import org.nl.wms.pdm.workorder.service.dao.vo.AcsWorkOrderVo;
import org.nl.wms.pdm.workorder.service.dto.PdmBdWorkorderQuery; import org.nl.wms.pdm.workorder.service.dto.PdmBdWorkorderQuery;
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; import org.nl.wms.sch.task_manage.GeneralDefinition;
import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum; import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum;
import org.nl.wms.sch.task_manage.enums.WorkOrderStatusEnum; import org.nl.wms.sch.task_manage.enums.WorkOrderStatusEnum;
@ -51,6 +53,8 @@ public class PdmBdWorkorderServiceImpl extends ServiceImpl<PdmBdWorkorderMapper,
private WmsToAcsService wmsToAcsService; private WmsToAcsService wmsToAcsService;
@Autowired @Autowired
private ISysNoticeService noticeService; private ISysNoticeService noticeService;
@Autowired
private ISchBasePointService pointService;
@Override @Override
public IPage<PdmBdWorkorder> queryAll(PdmBdWorkorderQuery query, PageQuery page){ public IPage<PdmBdWorkorder> queryAll(PdmBdWorkorderQuery query, PageQuery page){
@ -164,4 +168,18 @@ public class PdmBdWorkorderServiceImpl extends ServiceImpl<PdmBdWorkorderMapper,
TaskUtils.setWorkOrderUpdateByAcs(pdmBdWorkorder); TaskUtils.setWorkOrderUpdateByAcs(pdmBdWorkorder);
pdmBdWorkorderMapper.updateById(pdmBdWorkorder); pdmBdWorkorderMapper.updateById(pdmBdWorkorder);
} }
@Override
public PdmBdWorkorder getDeviceDockingProductionTask(String deviceCode) {
if (ObjectUtil.isEmpty(deviceCode)) {
throw new BadRequestException("根据设备查询工单,设备编码不能为空");
}
// 查找父类设备
SchBasePoint basePoint = pointService.getById(deviceCode);
// 只能有一个生产中
LambdaQueryWrapper<PdmBdWorkorder> lam = new QueryWrapper<PdmBdWorkorder>().lambda();
lam.eq(PdmBdWorkorder::getPoint_code, basePoint.getParent_point_code())
.eq(PdmBdWorkorder::getWorkorder_status, WorkOrderStatusEnum.PRODUCING.getCode());
return pdmBdWorkorderMapper.selectOne(lam);
}
} }

20
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJMKTask.java

@ -165,8 +165,6 @@ public class FJMKTask extends AbstractTask {
.collect(Collectors.toList()); .collect(Collectors.toList());
String requestParam = task.getRequest_param();// 任务的其他数据 String requestParam = task.getRequest_param();// 任务的其他数据
JSONObject jsonObject = JSONObject.parseObject(requestParam); JSONObject jsonObject = JSONObject.parseObject(requestParam);
String workOrderCode = jsonObject.getString("workorder_code"); // 工单
PdmBdWorkorder workorder = workorderService.getByCode(workOrderCode);
String startPoint = task.getPoint_code1(); String startPoint = task.getPoint_code1();
// 获取起点 回写载具编码 // 获取起点 回写载具编码
SchBasePoint startPointObj = pointService.getById(startPoint); SchBasePoint startPointObj = pointService.getById(startPoint);
@ -181,24 +179,8 @@ public class FJMKTask extends AbstractTask {
throw new BadRequestException("包装线不可用!"); throw new BadRequestException("包装线不可用!");
} }
task.setPoint_code2(packagePoint.getPoint_code()); // 包装线 task.setPoint_code2(packagePoint.getPoint_code()); // 包装线
// 校验是否够码满一托
List<ApplyDeviceDto> list = JSONArray.parseArray(jsonObject.getString("list"), ApplyDeviceDto.class);
// 1 获取点位相应数量
int sum = 0;
for (ApplyDeviceDto applyDeviceDto : list) {
sum += Integer.parseInt(applyDeviceDto.getQty());
}
// 2 获取库存量 surplusNumber
int surplusNumber = fjMapper.getInventoryQuantity(workorder.getMaterial_id());
// 3 现有总数 total
int total = sum + surplusNumber;
// 4 获取木托盘需要多少块 needFullNumber
String needFullNumberStr = fjMapper.getNeedFullNumber(workorder.getMaterial_id());
int needFullNumber = TaskUtils.convertMultiply(needFullNumberStr);
// todo: 大于两托正常,大于1托给1,小于1托给2
// 5 校验是否够码满一托/两托
// 大于等于2就可以码 // 大于等于2就可以码
if (total/needFullNumber >= 2) { if (jsonObject.getInteger("special_param") == 0) {
/** 覆膜机木托盘位 */ /** 覆膜机木托盘位 */
SchBasePoint LaminatePoint = findStartPoint(startRegionStr, jsonObject); SchBasePoint LaminatePoint = findStartPoint(startRegionStr, jsonObject);
if (ObjectUtil.isEmpty(LaminatePoint)) { if (ObjectUtil.isEmpty(LaminatePoint)) {

Loading…
Cancel
Save