diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/LogMessageConstant.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/LogMessageConstant.java index 68ca638..e1a03e7 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/LogMessageConstant.java +++ b/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 INDEX_DIR = "D:\\lucene\\index"; + public final static String INDEX_DIR = "E:\\lucene\\index"; } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/AutoClearInteractionData.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/AutoClearInteractionData.java index 8fd4731..6d8b526 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/AutoClearInteractionData.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/AutoClearInteractionData.java @@ -20,8 +20,10 @@ public class AutoClearInteractionData { @Autowired private ISysParamService paramService; public void run(){ - Param interactionDay = paramService.findByCode("interaction_day"); - recordService.deleteByDay(interactionDay.getValue()); + Param max_rows_to_keep = paramService.findByCode("max_rows_to_keep"); + 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 执行成功"); } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/to/acs/ApplyTaskResponse.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/to/acs/ApplyTaskResponse.java index 2cf5063..eca6842 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/to/acs/ApplyTaskResponse.java +++ b/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 weight; private String label_message; + // 特殊业务-无具体含义:目前是是否满足码满规定托盘数 + private int is_satisfy; public static ApplyTaskResponse responseOk(String requestNo) { ApplyTaskResponse response = new ApplyTaskResponse(); @@ -26,6 +28,7 @@ public class ApplyTaskResponse extends BaseResponse { response.setMessage("任务申请成功"); response.setResponseDate(DateUtil.now()); response.setCode(HttpStatus.HTTP_OK); + response.setIs_satisfy(0); return response; } @@ -36,6 +39,17 @@ public class ApplyTaskResponse extends BaseResponse { response.setResponseDate(DateUtil.now()); response.setCode(HttpStatus.HTTP_OK); 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; } public static ApplyTaskResponse responseError(String requestNo, String message) { @@ -44,6 +58,7 @@ public class ApplyTaskResponse extends BaseResponse { response.setCode(HttpStatus.HTTP_BAD_REQUEST); response.setMessage(message); response.setResponseDate(DateUtil.now()); + response.setIs_satisfy(0); return response; } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java index 7eb4b2d..05efd09 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java +++ b/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.StrUtil; import cn.hutool.http.HttpStatus; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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.task.TaskFactory; 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.PointUtils; import org.nl.wms.util.TaskUtils; @@ -63,6 +65,7 @@ import javax.annotation.PostConstruct; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.math.BigDecimal; +import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.TimeUnit; @@ -115,6 +118,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { private WmsToMesService wmsToMesService; @Autowired private WmsToMmsService wmsToMmsService; + @Autowired + private FJMapper fjMapper; // 初始化反射方法 @PostConstruct @@ -169,7 +174,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { String deviceCode = param.getString("device_code"); String requestNo = param.getString("requestNo"); RLock lock = redissonClient.getLock(deviceCode); - boolean tryLock = lock.tryLock(5, TimeUnit.SECONDS); + boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS); try { if (tryLock) { SchBasePoint basePoint = pointService.getById(deviceCode); @@ -203,7 +208,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { String deviceCode = param.getString("device_code"); String requestNo = param.getString("requestNo"); RLock lock = redissonClient.getLock(deviceCode); - boolean tryLock = lock.tryLock(5, TimeUnit.SECONDS); + boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS); try { if (tryLock) { SchBasePoint basePoint = pointService.getById(deviceCode); @@ -237,7 +242,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { String deviceCode = param.getString("device_code"); String requestNo = param.getString("requestNo"); RLock lock = redissonClient.getLock(deviceCode); - boolean tryLock = lock.tryLock(5, TimeUnit.SECONDS); + boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS); try { if (tryLock) { SchBasePoint basePoint = pointService.getById(deviceCode); @@ -271,7 +276,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { String deviceCode = param.getString("device_code"); String requestNo = param.getString("requestNo"); RLock lock = redissonClient.getLock(deviceCode); - boolean tryLock = lock.tryLock(5, TimeUnit.SECONDS); + int handling = 0; // 无业务:0 + boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS); try { if (tryLock) { SchBasePoint basePoint = pointService.getById(deviceCode); @@ -281,7 +287,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { String configCode = basePoint.getRegion_code() + "MLTask"; // 组织参数 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); } } finally { @@ -289,15 +296,37 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { lock.unlock(); } } - return ApplyTaskResponse.responseOk(requestNo); + return ApplyTaskResponse.responseOk(requestNo, "任务创建成功", handling); } // todo: 特殊处理 - protected String specialHandling(String regionCode) { - if (regionCode.equals("FJ")) { + protected int specialHandling(String regionCode, JSONObject param) { + int torus = 0; // 无业务:0, 分拣剩余1托:1,分拣剩余0托:2 + if (regionCode.equals("FJ")) { // 判断是否够码满 // 分拣需要在这设置特殊值 + // 校验是否够码满一托 + List 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; } /** diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/ISysInteractRecordService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/ISysInteractRecordService.java index cb383e6..d29a92a 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/ISysInteractRecordService.java +++ b/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.extension.service.IService; 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.to.BaseResponse; import org.nl.wms.ext.record.service.dao.SysInteractRecord; @@ -69,4 +70,11 @@ public interface ISysInteractRecordService extends IService { void saveRecord(String name, K request, V response, String direction); void deleteByDay(String day); + + /** + * 删除记录 + * @param maxRowsToKeep 最大保存容量 + * @param maxRowsToDelete 最大删除数 + */ + void deleteByRows(Param maxRowsToKeep, Param maxRowsToDelete); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/dao/mapper/SysInteractRecordMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/dao/mapper/SysInteractRecordMapper.java index 944417b..a2655a4 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/dao/mapper/SysInteractRecordMapper.java +++ b/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 { void deleteByDay(String day); + + void deleteByRows(String maxRowsToKeep, String maxRowsToDelete); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/dao/mapper/SysInteractRecordMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/dao/mapper/SysInteractRecordMapper.xml index 2b30e1b..f9f5d80 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/dao/mapper/SysInteractRecordMapper.xml +++ b/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 WHERE record_time DATE_SUB(NOW(), INTERVAL #{day} DAY); + + CALL DeleteRowsIfNeeded(#{maxRowsToKeep}, #{maxRowsToDelete}); + diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/impl/SysInteractRecordServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/impl/SysInteractRecordServiceImpl.java index e6006c6..5a527c2 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/impl/SysInteractRecordServiceImpl.java +++ b/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 org.nl.common.domain.query.PageQuery; 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.to.BaseResponse; import org.nl.wms.ext.acs.service.dto.to.wms.AcsResponse; @@ -149,4 +150,9 @@ public class SysInteractRecordServiceImpl extends ServiceImpl { * @param entity */ void submits(PdmBdWorkorder entity); + + /** + * 根据对接位获取工单 + * @param deviceCode + * @return + */ + PdmBdWorkorder getDeviceDockingProductionTask(String deviceCode); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/impl/PdmBdWorkorderServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/impl/PdmBdWorkorderServiceImpl.java index 8f2d418..ce810a2 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/impl/PdmBdWorkorderServiceImpl.java +++ b/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.vo.AcsWorkOrderVo; 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.enums.NoticeTypeEnum; import org.nl.wms.sch.task_manage.enums.WorkOrderStatusEnum; @@ -51,6 +53,8 @@ public class PdmBdWorkorderServiceImpl extends ServiceImpl queryAll(PdmBdWorkorderQuery query, PageQuery page){ @@ -164,4 +168,18 @@ public class PdmBdWorkorderServiceImpl extends ServiceImpl lam = new QueryWrapper().lambda(); + lam.eq(PdmBdWorkorder::getPoint_code, basePoint.getParent_point_code()) + .eq(PdmBdWorkorder::getWorkorder_status, WorkOrderStatusEnum.PRODUCING.getCode()); + return pdmBdWorkorderMapper.selectOne(lam); + } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJMKTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJMKTask.java index 5dcad63..41ea2a1 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJMKTask.java +++ b/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()); String requestParam = task.getRequest_param();// 任务的其他数据 JSONObject jsonObject = JSONObject.parseObject(requestParam); - String workOrderCode = jsonObject.getString("workorder_code"); // 工单 - PdmBdWorkorder workorder = workorderService.getByCode(workOrderCode); String startPoint = task.getPoint_code1(); // 获取起点 回写载具编码 SchBasePoint startPointObj = pointService.getById(startPoint); @@ -181,24 +179,8 @@ public class FJMKTask extends AbstractTask { throw new BadRequestException("包装线不可用!"); } task.setPoint_code2(packagePoint.getPoint_code()); // 包装线 - // 校验是否够码满一托 - List 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就可以码 - if (total/needFullNumber >= 2) { + if (jsonObject.getInteger("special_param") == 0) { /** 覆膜机木托盘位 */ SchBasePoint LaminatePoint = findStartPoint(startRegionStr, jsonObject); if (ObjectUtil.isEmpty(LaminatePoint)) {