diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device/service/impl/DeviceServiceImpl.java b/acs/nladmin-system/src/main/java/org/nl/acs/device/service/impl/DeviceServiceImpl.java index 3eea3af..c51ff77 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device/service/impl/DeviceServiceImpl.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device/service/impl/DeviceServiceImpl.java @@ -89,6 +89,9 @@ public class DeviceServiceImpl implements DeviceService, ApplicationAutoInitial if (whereJson.get("device_type") != null) { param.put("device_type", whereJson.get("device_type")); } + if (whereJson.get("is_config") != null) { + param.put("is_config", whereJson.get("is_config")); + } JSONObject json = WQL.getWO("Qdevice_query_002").addParamMap(param).pageQuery(WqlUtil.getHttpContext(page), "is_config asc,seq_num desc,update_time desc"); return json; diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device/wql/Qdevice_query_002.wql b/acs/nladmin-system/src/main/java/org/nl/acs/device/wql/Qdevice_query_002.wql index 57817df..2f4f6eb 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device/wql/Qdevice_query_002.wql +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device/wql/Qdevice_query_002.wql @@ -24,6 +24,7 @@ 输入.methods_id TYPEAS s_string 输入.blurry TYPEAS s_string 输入.region TYPEAS s_string + 输入.is_config TYPEAS s_string [临时表] --这边列出来的临时表就会在运行期动态创建 @@ -49,13 +50,16 @@ PAGEQUERY SELECT d.*, dict.label AS device_type_name, - dict2.label AS region_name + dict2.label AS region_name, + dict3.label AS config FROM ACS_DEVICE d LEFT JOIN sys_dict_detail dict ON dict.value = d.device_type AND dict.`name` = 'device_type' LEFT JOIN sys_dict_detail dict2 ON dict2.value = d.region AND dict2.`name` = 'region_type' + LEFT JOIN sys_dict_detail dict3 ON dict3.value = d.is_config + AND dict3.`name` = 'is_config' WHERE is_delete = '0' OPTION 输入.blurry <> "" @@ -67,6 +71,9 @@ OPTION 输入.device_type <> "" d.device_type = 输入.device_type ENDOPTION + OPTION 输入.is_config <> "" + d.is_config = 输入.is_config + ENDOPTION ENDSELECT ENDPAGEQUERY ENDIF diff --git a/acs/nladmin-ui/src/views/acs/device/index.vue b/acs/nladmin-ui/src/views/acs/device/index.vue index 24fb48d..4917edd 100644 --- a/acs/nladmin-ui/src/views/acs/device/index.vue +++ b/acs/nladmin-ui/src/views/acs/device/index.vue @@ -38,17 +38,29 @@ > + + + 导出模型 + slot="right" + class="filter-item" + size="mini" + type="warning" + icon="el-icon-download" + @click="crud.doExport" + >导出模型 + + + + + @@ -194,8 +216,8 @@ import udOperation from '@crud/UD.operation' import pagination from '@crud/Pagination' import { get } from '@/api/system/dictDetail' import UploadDialog from '@/views/acs/device/UploadDialog' -import {download} from '@/api/data' -import {downloadFile} from '@/utils' +import { download } from '@/api/data' +import { downloadFile } from '@/utils' const defaultForm = { manufacturer: null, @@ -239,8 +261,9 @@ export default { }, device_types: [], regions: [], + is_configs: [], uploadShow: false, - + regions: [], rules: { device_code: [ @@ -268,6 +291,10 @@ export default { get('region').then(data => { this.regions = data.content }) + //获取是否配置 + get('is_config').then(data => { + this.is_configs = data.content + }) }) }, methods: { diff --git a/lms/nladmin-system/doc/wms.xls b/lms/nladmin-system/doc/wms.xls index 99dc07d..a27399d 100644 Binary files a/lms/nladmin-system/doc/wms.xls and b/lms/nladmin-system/doc/wms.xls differ diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/exception/handler/GlobalExceptionHandler.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/exception/handler/GlobalExceptionHandler.java index 9e3bbc5..e1a0029 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/exception/handler/GlobalExceptionHandler.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/exception/handler/GlobalExceptionHandler.java @@ -21,6 +21,9 @@ import org.nl.common.exception.BadRequestException; import org.nl.common.exception.EntityExistException; import org.nl.common.exception.EntityNotFoundException; import org.nl.common.utils.ThrowableUtil; +import org.nl.system.service.notice.ISysNoticeService; +import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.MethodArgumentNotValidException; @@ -39,6 +42,17 @@ import static org.springframework.http.HttpStatus.NOT_FOUND; @RestControllerAdvice public class GlobalExceptionHandler { + @Autowired + private ISysNoticeService noticeService; + + @ExceptionHandler(NullPointerException.class) + public ResponseEntity handleNullPointerException(NullPointerException ex) { + // 在这里处理空指针异常 + noticeService.createNotice("异常信息:" + ex.getMessage(), "空指针异常发", + NoticeTypeEnum.EXCEPTION.getCode()); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("空指针异常发生了"); + } + /** * 处理所有不可知的异常 */ diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/WmsToAcsService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/WmsToAcsService.java index dab2890..29a2b3a 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/WmsToAcsService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/WmsToAcsService.java @@ -1,9 +1,31 @@ package org.nl.wms.ext.acs.service; +import com.alibaba.fastjson.JSONArray; +import org.nl.wms.ext.acs.service.dto.ResultForAcs; +import org.nl.wms.ext.acs.service.dto.to.acs.PutActionRequest; +import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder; + +import java.util.List; +import java.util.Map; + /** * @Author: lyd * @Description: Wms请求Acs * @Date: 2023/6/30 */ public interface WmsToAcsService { + + /** + * 下发工单 + * @param workorder + * @return + */ + ResultForAcs order(PdmBdWorkorder workorder); + + /** + * 下发信号 - 覆膜机释放托盘 + * @param list + * @return + */ + ResultForAcs getVehicleForLaminatingMachine(List list); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/ResultForAcs.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/ResultForAcs.java new file mode 100644 index 0000000..a578c53 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/ResultForAcs.java @@ -0,0 +1,44 @@ +package org.nl.wms.ext.acs.service.dto; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.http.HttpStatus; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * @Author: lyd + * @Description: 统一接口返回 - 请求ACS返回的数据类型 + * @Date: 2023/7/28 + */ +@Data +public class ResultForAcs { + private int status; + private String message; + private String timestamp; + private JSONObject data; + + public static ResultForAcs requestRefuse(String message) { + ResultForAcs result = new ResultForAcs(); + result.setStatus(HttpStatus.HTTP_BAD_REQUEST); + result.setMessage(message); + result.setTimestamp(DateUtil.now()); + return result; + } + + public static ResultForAcs requestOk() { + ResultForAcs result = new ResultForAcs(); + result.setStatus(HttpStatus.HTTP_OK); + result.setMessage("请求成功"); + result.setTimestamp(DateUtil.now()); + return result; + } + + public static ResultForAcs requestOk(String message, JSONObject data) { + ResultForAcs result = new ResultForAcs(); + result.setStatus(HttpStatus.HTTP_OK); + result.setMessage(message); + result.setTimestamp(DateUtil.now()); + result.setData(data); + return result; + } +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/to/acs/PutActionRequest.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/to/acs/PutActionRequest.java index c5cc3ce..1fa8b43 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/to/acs/PutActionRequest.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/to/acs/PutActionRequest.java @@ -18,6 +18,7 @@ public class PutActionRequest extends BaseRequest { * 设备号 */ private String device_code; + private String vehicle_type; /** * 信号数据 diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/to/wms/FeedBackSplitPalletStationRequest.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/to/wms/FeedBackSplitPalletStationRequest.java new file mode 100644 index 0000000..0be5f70 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/to/wms/FeedBackSplitPalletStationRequest.java @@ -0,0 +1,48 @@ +package org.nl.wms.ext.acs.service.dto.to.wms; + +import lombok.Data; +import org.nl.wms.ext.acs.service.dto.to.BaseRequest; + +/** + * @Author: lyd + * @Description: 分拣反馈记录木托盘与钢托盘的绑定 + * @Date: 2023/7/31 + */ +@Data +public class FeedBackSplitPalletStationRequest extends BaseRequest { + + /** + * 取货点位 + */ + private String get_station; + + /** + * 放货点位 + */ + private String put_station; + + + /** + * 取货点位载具号 + */ + private String get_station_vehicle_code; + + + /** + * 放货点位载具号 + */ + private String put_station_vehicle_code; + + /** + * 取货点当前数量 + */ + private String get_station_qty; + + /** + * 放货点当前数量 + */ + private String put_station_qty; + + +} + 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 41d0937..dbdf01a 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 @@ -18,6 +18,7 @@ import org.nl.wms.database.material.service.dao.MdBaseMaterial; import org.nl.wms.ext.acs.service.dto.*; import org.nl.wms.ext.acs.service.dto.to.acs.PutActionRequest; import org.nl.wms.ext.acs.service.dto.to.wms.ApplyTaskRequest; +import org.nl.wms.ext.acs.service.dto.to.wms.FeedBackSplitPalletStationRequest; import org.nl.wms.ext.acs.service.dto.to.wms.FeedBackTaskStatusRequest; import org.nl.wms.ext.acs.service.dto.to.wms.GetPalletizeRequest; import org.nl.wms.ext.acs.service.dto.to.BaseResponse; @@ -30,6 +31,8 @@ import org.nl.wms.pdm.record.service.dao.PdmBdRequestMaterialRecord; import org.nl.wms.pdm.residue.service.IPdmBdMaterialResidueService; import org.nl.wms.pdm.track.service.IPdmBdProductionProcessTrackingService; import org.nl.wms.pdm.track.service.dao.PdmBdProductionProcessTracking; +import org.nl.wms.pdm.vehiclebiding.service.IPdmBdVehicleBindingService; +import org.nl.wms.pdm.vehiclebiding.service.dao.PdmBdVehicleBinding; 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; @@ -96,6 +99,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { private RedissonClient redissonClient; @Autowired private IPdmBdMaterialResidueService materialResidueService; + @Autowired + private IPdmBdVehicleBindingService vehicleBindingService; @Override public BaseResponse acsApply(JSONObject param) { @@ -311,6 +316,38 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { return requestNo; } + /** 分拣 - 记录钢托与木托的绑定 */ + public BaseResponse recordVehicleBiding(JSONObject param) { + FeedBackSplitPalletStationRequest request = param.toJavaObject(FeedBackSplitPalletStationRequest.class); + String getStation = request.getGet_station(); // 取货点 + String putStation = request.getPut_station(); // 放货点 + // 查找当前点位中的信息,如果acs没有提供,就获取点位上的数据,如果点位没有,则数据失效 + SchBasePoint pickupPoint = pointService.getById(getStation); + SchBasePoint putPoint = pointService.getById(putStation); + if (request.getGet_station_vehicle_code() == null) { + request.setGet_station_vehicle_code(pickupPoint.getVehicle_code()); + } + if (request.getPut_station_vehicle_code() == null) { + request.setPut_station_vehicle_code(putPoint.getVehicle_code()); + } + // 获取工单 + PdmBdWorkorder productionTask = workorderService.getDeviceProductionTask(pickupPoint.getParent_point_code()); + // 插入数据 + PdmBdVehicleBinding vehicleBinding = new PdmBdVehicleBinding(); + vehicleBinding.setOrigin_vehicle_code(request.getGet_station_vehicle_code()); + vehicleBinding.setOrigin_vehicle_type(pickupPoint.getVehicle_type()); + vehicleBinding.setOrigin_qty(request.getGet_station_qty()); + vehicleBinding.setTarget_vehicle_code(request.getPut_station_vehicle_code()); + vehicleBinding.setTarget_vehicle_type(putPoint.getVehicle_type()); + vehicleBinding.setTarget_qty(request.getPut_station_qty()); + if (productionTask != null) { + vehicleBinding.setOrder_code(productionTask.getWorkorder_code()); + } + vehicleBindingService.create(vehicleBinding); + return BaseResponse.responseOk(request.getRequestNo()); + + } + /** 反馈压机残留重量*/ public BaseResponse applyFeedbackWeight(JSONObject param) { ApplyTaskRequest applyTaskRequest = param.toJavaObject(ApplyTaskRequest.class); @@ -351,34 +388,36 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { /** 人工排产确认 */ public BaseResponse orderVerify(JSONObject param) { // 执行中 String requestNo = param.getString("requestNo"); - String workorderId = param.getString("workorder_id"); - if (workorderId == null) { + String workorderCode = param.getString("order_code"); + if (workorderCode == null) { return BaseResponse.responseError(requestNo, "工单标识不能为空!"); } - PdmBdWorkorder bdWorkorder = workorderService.getById(workorderId); + PdmBdWorkorder bdWorkorder = workorderService.getByCode(workorderCode); if (bdWorkorder == null) { return BaseResponse.responseError(requestNo, "物料信息为空!"); } bdWorkorder.setWorkorder_status(WorkOrderStatusEnum.PRODUCING.getCode()); bdWorkorder.setRealproducestart_date(DateUtil.now()); - workorderService.update(bdWorkorder); + TaskUtils.setWorkOrderUpdateByAcs(bdWorkorder); + workorderService.updateById(bdWorkorder); return BaseResponse.responseOk(requestNo); } /** 工单完成 */ public BaseResponse orderFinish(JSONObject param) { // 完成 String requestNo = param.getString("requestNo"); - String workorderId = param.getString("workorder_id"); - if (workorderId == null) { + String workorderCode = param.getString("order_code"); + if (workorderCode == null) { return BaseResponse.responseError(requestNo, "工单标识不能为空!"); } - PdmBdWorkorder bdWorkorder = workorderService.getById(workorderId); + PdmBdWorkorder bdWorkorder = workorderService.getByCode(workorderCode); if (bdWorkorder == null) { return BaseResponse.responseError(requestNo, "物料信息为空!"); } bdWorkorder.setWorkorder_status(WorkOrderStatusEnum.COMPLETE.getCode()); bdWorkorder.setRealproduceend_date(DateUtil.now()); - workorderService.update(bdWorkorder); + TaskUtils.setWorkOrderUpdateByAcs(bdWorkorder); + workorderService.updateById(bdWorkorder); return BaseResponse.responseOk(requestNo); } @@ -554,7 +593,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { try { abstractTask.updateTaskStatus(taskCode, status); } catch (Exception e) { - log.error("任务状态更新失败:{}", message); + log.error("任务状态更新失败: {}", message); return BaseResponse.responseError(requestNo, "任务:[" + taskCode + "]状态更新失败," + message); } return BaseResponse.responseOk(requestNo, "任务状态反馈成功!"); @@ -587,7 +626,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { String requestNo = actionRequest.getRequestNo(); String deviceCode = actionRequest.getDevice_code(); List list = actionRequest.getList(); -// String vehicleType = actionRequest.getVehicle_type(); + String vehicleType = actionRequest.getVehicle_type(); if (deviceCode == null) { return BaseResponse.responseError(requestNo, "设备编码不能为空"); } @@ -610,9 +649,9 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { && move.equals(PointStatusEnum.EMPTY_VEHICLE.getCode())) || (pointStatus.equals(move))) { // 不做操作 return BaseResponse.responseOk(requestNo); } -// if (vehicleType != null) { -// schBasePoint.setVehicle_type(vehicleType); -// } + if (vehicleType != null) { + schBasePoint.setVehicle_type(vehicleType); + } schBasePoint.setPoint_status(move); PointUtils.setUpdateByAcs(schBasePoint); pointService.updateById(schBasePoint); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java index 87d87cb..0db6851 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java @@ -1,15 +1,64 @@ package org.nl.wms.ext.acs.service.impl; +import cn.hutool.core.date.DateUtil; +import cn.hutool.http.HttpStatus; import lombok.extern.slf4j.Slf4j; import org.nl.wms.ext.acs.service.WmsToAcsService; +import org.nl.wms.ext.acs.service.dto.ResultForAcs; +import org.nl.wms.ext.acs.service.dto.to.acs.PutActionRequest; +import org.nl.wms.ext.record.service.ISysInteractRecordService; +import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder; +import org.nl.wms.sch.task_manage.GeneralDefinition; +import org.nl.wms.sch.task_manage.task.AcsUtil; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.List; + /** * @Author: lyd - * @Description: + * @Description: WMS请求ACS - 业务开发 * @Date: 2023/6/30 */ @Slf4j @Service public class WmsToAcsServiceImpl implements WmsToAcsService { + @Autowired + private ISysInteractRecordService interactRecordService; + @Override + public ResultForAcs order(PdmBdWorkorder workorder) { + String api = "api/wms/order"; + List list = new ArrayList<>(); + list.add(workorder); + ResultForAcs resultForAcs = ResultForAcs.requestOk(); + try { + resultForAcs = AcsUtil.notifyAcs(api, list); + } catch (Exception e) { + log.error(api + ": {}", e.getMessage()); + resultForAcs.setTimestamp(DateUtil.now()); + resultForAcs.setStatus(HttpStatus.HTTP_BAD_REQUEST); + resultForAcs.setMessage(e.getMessage()); + } + // 记录日志 + interactRecordService.saveRecord(workorder, resultForAcs, GeneralDefinition.LMS_ACS); + return resultForAcs; + } + + @Override + public ResultForAcs getVehicleForLaminatingMachine(List list) { + String api = "api/wms/order"; // todo: ??? + ResultForAcs resultForAcs = ResultForAcs.requestOk(); + try { + resultForAcs = AcsUtil.notifyAcs(api, list); + } catch (Exception e) { + log.error(api + ": {}", e.getMessage()); + resultForAcs.setTimestamp(DateUtil.now()); + resultForAcs.setStatus(HttpStatus.HTTP_BAD_REQUEST); + resultForAcs.setMessage(e.getMessage()); + } + // 记录日志 +// interactRecordService.saveRecord(workorder, resultForAcs, GeneralDefinition.LMS_ACS); + return resultForAcs; + } } 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 bfdfc1d..fe92fdf 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,8 +4,10 @@ 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.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; +import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder; import java.util.Map; import java.util.Set; @@ -47,4 +49,6 @@ public interface ISysInteractRecordService extends IService { * 创建记录 */ void saveRecord(Object request, BaseResponse response, String direction); + + void saveRecord(PdmBdWorkorder workorder, ResultForAcs resultForAcs, String lmsAcs); } 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 8882582..3ced7c8 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 @@ -11,10 +11,12 @@ 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.wms.ext.acs.service.dto.ResultForAcs; import org.nl.wms.ext.acs.service.dto.to.BaseResponse; import org.nl.wms.ext.record.service.ISysInteractRecordService; import org.nl.wms.ext.record.service.dao.mapper.SysInteractRecordMapper; import org.nl.wms.ext.record.service.dao.SysInteractRecord; +import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -77,4 +79,19 @@ public class SysInteractRecordServiceImpl extends ServiceImpl query(@RequestParam Map whereJson, PageQuery page){ + return new ResponseEntity<>(TableDataInfo.build(pdmBdVehicleBindingService.queryAll(whereJson,page)),HttpStatus.OK); + } + + @PostMapping + @Log("新增分拣载具关联记录") + @ApiOperation("新增分拣载具关联记录") + //@SaCheckPermission("@el.check('pdmBdVehicleBinding:add')") + public ResponseEntity create(@Validated @RequestBody PdmBdVehicleBinding entity){ + pdmBdVehicleBindingService.create(entity); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @PutMapping + @Log("修改分拣载具关联记录") + @ApiOperation("修改分拣载具关联记录") + //@SaCheckPermission("@el.check('pdmBdVehicleBinding:edit')") + public ResponseEntity update(@Validated @RequestBody PdmBdVehicleBinding entity){ + pdmBdVehicleBindingService.update(entity); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @Log("删除分拣载具关联记录") + @ApiOperation("删除分拣载具关联记录") + //@SaCheckPermission("@el.check('pdmBdVehicleBinding:del')") + @DeleteMapping + public ResponseEntity delete(@RequestBody Set ids) { + pdmBdVehicleBindingService.deleteAll(ids); + return new ResponseEntity<>(HttpStatus.OK); + } +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/vehiclebiding/service/IPdmBdVehicleBindingService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/vehiclebiding/service/IPdmBdVehicleBindingService.java new file mode 100644 index 0000000..5b93bf1 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/vehiclebiding/service/IPdmBdVehicleBindingService.java @@ -0,0 +1,43 @@ +package org.nl.wms.pdm.vehiclebiding.service; + +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.pdm.vehiclebiding.service.dao.PdmBdVehicleBinding; + +import java.util.Map; +import java.util.Set; + +/** +* @description 服务接口 +* @author lyd +* @date 2023-07-31 +**/ +public interface IPdmBdVehicleBindingService extends IService { + + /** + * 查询数据分页 + * @param whereJson 条件 + * @param pageable 分页参数 + * @return IPage + */ + IPage queryAll(Map whereJson, PageQuery pageable); + + /** + * 创建 + * @param entity / + */ + void create(PdmBdVehicleBinding entity); + + /** + * 编辑 + * @param entity / + */ + void update(PdmBdVehicleBinding entity); + + /** + * 多选删除 + * @param ids / + */ + void deleteAll(Set ids); +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/vehiclebiding/service/dao/PdmBdVehicleBinding.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/vehiclebiding/service/dao/PdmBdVehicleBinding.java new file mode 100644 index 0000000..d95462d --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/vehiclebiding/service/dao/PdmBdVehicleBinding.java @@ -0,0 +1,58 @@ +package org.nl.wms.pdm.vehiclebiding.service.dao; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; + +/** +* @description / +* @author lyd +* @date 2023-07-31 +**/ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("pdm_bd_vehicle_binding") +public class PdmBdVehicleBinding implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "associate_id", type = IdType.NONE) + @ApiModelProperty(value = "对应标识") + private String associate_id; + + @ApiModelProperty(value = "源载具编码") + private String origin_vehicle_code; + + @ApiModelProperty(value = "源载具类型") + private String origin_vehicle_type; + + @ApiModelProperty(value = "目标载具编码") + private String target_vehicle_code; + + @ApiModelProperty(value = "目标载具类型") + private String target_vehicle_type; + + @ApiModelProperty(value = "源当前物料数量") + private String origin_qty; + + @ApiModelProperty(value = "目标当前物料数量") + private String target_qty; + + @ApiModelProperty(value = "取货点") + private String get_station; + + @ApiModelProperty(value = "放货点") + private String put_station; + + @ApiModelProperty(value = "工单号") + private String order_code; + + @ApiModelProperty(value = "记录时间") + private String record_time; + +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/vehiclebiding/service/dao/mapper/PdmBdVehicleBindingMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/vehiclebiding/service/dao/mapper/PdmBdVehicleBindingMapper.java new file mode 100644 index 0000000..b3d37a9 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/vehiclebiding/service/dao/mapper/PdmBdVehicleBindingMapper.java @@ -0,0 +1,12 @@ +package org.nl.wms.pdm.vehiclebiding.service.dao.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.nl.wms.pdm.vehiclebiding.service.dao.PdmBdVehicleBinding; + +/** +* @author lyd +* @date 2023-07-31 +**/ +public interface PdmBdVehicleBindingMapper extends BaseMapper { + +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/vehiclebiding/service/dao/mapper/PdmBdVehicleBindingMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/vehiclebiding/service/dao/mapper/PdmBdVehicleBindingMapper.xml new file mode 100644 index 0000000..bc73a08 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/vehiclebiding/service/dao/mapper/PdmBdVehicleBindingMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/vehiclebiding/service/dto/PdmBdVehicleBindingDto.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/vehiclebiding/service/dto/PdmBdVehicleBindingDto.java new file mode 100644 index 0000000..a0808ab --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/vehiclebiding/service/dto/PdmBdVehicleBindingDto.java @@ -0,0 +1,46 @@ +package org.nl.wms.pdm.vehiclebiding.service.dto; + +import lombok.Data; +import java.io.Serializable; + +/** +* @description / +* @author lyd +* @date 2023-07-31 +**/ +@Data +public class PdmBdVehicleBindingDto implements Serializable { + + /** 对应标识 */ + private String associate_id; + + /** 源载具编码 */ + private String origin_vehicle_code; + + /** 源载具类型 */ + private String origin_vehicle_type; + + /** 目标载具编码 */ + private String target_vehicle_code; + + /** 目标载具类型 */ + private String target_vehicle_type; + + /** 源当前物料数量 */ + private String origin_qty; + + /** 目标当前物料数量 */ + private String target_qty; + + /** 取货点 */ + private String get_station; + + /** 放货点 */ + private String put_station; + + /** 工单号 */ + private String order_code; + + /** 记录时间 */ + private String record_time; +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/vehiclebiding/service/dto/PdmBdVehicleBindingQuery.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/vehiclebiding/service/dto/PdmBdVehicleBindingQuery.java new file mode 100644 index 0000000..e2b5584 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/vehiclebiding/service/dto/PdmBdVehicleBindingQuery.java @@ -0,0 +1,12 @@ +package org.nl.wms.pdm.vehiclebiding.service.dto; + +import org.nl.common.domain.query.BaseQuery; +import org.nl.wms.pdm.vehiclebiding.service.dao.PdmBdVehicleBinding; + +/** +* @author lyd +* @date 2023-07-31 +**/ +public class PdmBdVehicleBindingQuery extends BaseQuery { + +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/vehiclebiding/service/impl/PdmBdVehicleBindingServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/vehiclebiding/service/impl/PdmBdVehicleBindingServiceImpl.java new file mode 100644 index 0000000..a615e5f --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/vehiclebiding/service/impl/PdmBdVehicleBindingServiceImpl.java @@ -0,0 +1,67 @@ +package org.nl.wms.pdm.vehiclebiding.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.exception.BadRequestException; +import org.nl.common.utils.SecurityUtils; +import org.nl.wms.pdm.vehiclebiding.service.IPdmBdVehicleBindingService; +import org.nl.wms.pdm.vehiclebiding.service.dao.mapper.PdmBdVehicleBindingMapper; +import org.nl.wms.pdm.vehiclebiding.service.dao.PdmBdVehicleBinding; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Map; +import java.util.Set; + +/** +* @description 服务实现 +* @author lyd +* @date 2023-07-31 +**/ +@Slf4j +@Service +public class PdmBdVehicleBindingServiceImpl extends ServiceImpl implements IPdmBdVehicleBindingService { + + @Autowired + private PdmBdVehicleBindingMapper pdmBdVehicleBindingMapper; + + @Override + public IPage queryAll(Map whereJson, PageQuery page){ + LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); + IPage pages = new Page<>(page.getPage() + 1, page.getSize()); + pdmBdVehicleBindingMapper.selectPage(pages, lam); + return pages; + } + + @Override + public void create(PdmBdVehicleBinding entity) { + String now = DateUtil.now(); + entity.setAssociate_id(IdUtil.getSnowflake(1, 1).nextIdStr()); + entity.setRecord_time(now); + pdmBdVehicleBindingMapper.insert(entity); + } + + @Override + public void update(PdmBdVehicleBinding entity) { + PdmBdVehicleBinding dto = pdmBdVehicleBindingMapper.selectById(entity.getAssociate_id()); + if (dto == null) throw new BadRequestException("被删除或无权限,操作失败!"); + String now = DateUtil.now(); + entity.setRecord_time(now); + + pdmBdVehicleBindingMapper.updateById(entity); + } + + @Override + public void deleteAll(Set ids) { + // 真删除 + pdmBdVehicleBindingMapper.deleteBatchIds(ids); + } + +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/controller/PdmBdWorkorderController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/controller/PdmBdWorkorderController.java index f3155b2..c722080 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/controller/PdmBdWorkorderController.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/controller/PdmBdWorkorderController.java @@ -1,5 +1,6 @@ package org.nl.wms.pdm.workorder.controller; +import com.alibaba.fastjson.JSONObject; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -63,4 +64,12 @@ public class PdmBdWorkorderController { pdmBdWorkorderService.deleteAll(ids); return new ResponseEntity<>(HttpStatus.OK); } + + @PostMapping("/submits") + @Log("工单下发") + @ApiOperation("工单下发") + public ResponseEntity submits(@RequestBody PdmBdWorkorder entity){ + pdmBdWorkorderService.submits(entity); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/IPdmBdWorkorderService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/IPdmBdWorkorderService.java index b4d71f6..fed29d7 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/IPdmBdWorkorderService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/IPdmBdWorkorderService.java @@ -49,4 +49,10 @@ public interface IPdmBdWorkorderService extends IService { PdmBdWorkorder getDeviceProductionTask(String deviceCode); PdmBdWorkorder getByCode(String orderCode); + + /** + * 工单下发 + * @param entity + */ + void submits(PdmBdWorkorder entity); } 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 3d1bbff..9161ccc 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 @@ -2,6 +2,8 @@ package org.nl.wms.pdm.workorder.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.http.HttpStatus; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -12,15 +14,21 @@ import org.nl.common.domain.query.PageQuery; import org.nl.common.exception.BadRequestException; import org.nl.common.utils.CodeUtil; import org.nl.common.utils.SecurityUtils; +import org.nl.system.service.notice.ISysNoticeService; +import org.nl.wms.ext.acs.service.WmsToAcsService; +import org.nl.wms.ext.acs.service.dto.ResultForAcs; import org.nl.wms.pdm.workorder.service.IPdmBdWorkorderService; 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.dto.PdmBdWorkorderQuery; 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; +import org.nl.wms.util.TaskUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.Map; import java.util.Set; /** @@ -35,6 +43,11 @@ public class PdmBdWorkorderServiceImpl extends ServiceImpl queryAll(PdmBdWorkorderQuery query, PageQuery page){ IPage pages = new Page<>(page.getPage() + 1, page.getSize()); @@ -96,4 +109,48 @@ public class PdmBdWorkorderServiceImpl extends ServiceImpl lam = new QueryWrapper().lambda(); + lam.eq(PdmBdWorkorder::getPoint_code, entity.getPoint_code()) + .eq(PdmBdWorkorder::getWorkorder_status, WorkOrderStatusEnum.PRODUCING.getCode()) + .eq(PdmBdWorkorder::getIs_delete, false); + PdmBdWorkorder bdWorkorder = pdmBdWorkorderMapper.selectOne(lam); + if (ObjectUtil.isNotEmpty(bdWorkorder)) { + throw new BadRequestException("该设备已有生产工单,不能重复下发"); + } + ResultForAcs resultForAcs = null; + try { + resultForAcs = wmsToAcsService.order(pdmBdWorkorder); + } catch (Exception e) { + log.error("工单下发异常:" + e.getMessage()); + // 通知 + noticeService.createNotice("工单下发失败: " + e.getMessage(), "工单下发失败: " + + pdmBdWorkorder.getWorkorder_code(), NoticeTypeEnum.EXCEPTION.getCode()); + throw new BadRequestException("工单下发失败"); + } + if (resultForAcs.getStatus() != HttpStatus.HTTP_OK) { + // 不成功 + noticeService.createNotice(resultForAcs.getMessage(), "工单下发失败: " + pdmBdWorkorder.getWorkorder_code(), + NoticeTypeEnum.EXCEPTION.getCode()); + throw new BadRequestException("工单下发失败"); + } + // 修改工单数据 + pdmBdWorkorder.setWorkorder_status(WorkOrderStatusEnum.ISSUED.getCode()); + TaskUtils.setWorkOrderUpdateByAcs(pdmBdWorkorder); + pdmBdWorkorderMapper.updateById(pdmBdWorkorder); + } + } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/report/controller/ReportController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/report/controller/ReportController.java index 4fd8098..64f993f 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/report/controller/ReportController.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/report/controller/ReportController.java @@ -36,4 +36,12 @@ public class ReportController { // return new ResponseEntity<>(TableDataInfo.build(reportService.mudTransfer(json,page)), HttpStatus.OK); return null; } + + @PostMapping("/inventoryAlert") + @Log("库存物料提示记录表") + @ApiOperation("库存物料提示记录表") + public ResponseEntity inventoryAlert(JSONObject json, PageQuery page){ +// return new ResponseEntity<>(TableDataInfo.build(reportService.inventoryAlert(json,page)), HttpStatus.OK); + return null; + } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/impl/SchBaseTaskServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/impl/SchBaseTaskServiceImpl.java index e86f792..b11ed3c 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/impl/SchBaseTaskServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/impl/SchBaseTaskServiceImpl.java @@ -210,7 +210,7 @@ public class SchBaseTaskServiceImpl extends ServiceImpl= Integer.parseInt(TaskStatus.FINISHED.getCode())) { throw new BadRequestException("任务已完成或已取消!"); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AbstractTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AbstractTask.java index b275391..e1dd81c 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AbstractTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AbstractTask.java @@ -7,6 +7,7 @@ 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.ext.acs.service.dto.ResultForAcs; import org.nl.wms.pdm.workorder.service.IPdmBdWorkorderService; import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder; import org.nl.wms.sch.point.service.ISchBasePointService; @@ -57,7 +58,7 @@ public abstract class AbstractTask { * @author ldjun * @created 2020年6月12日 下午5:52:28 */ - protected JSONObject renotifyAcs(SchBaseTask task) { + protected ResultForAcs renotifyAcs(SchBaseTask task) { Assert.notNull(task); List taskList = new ArrayList<>(); taskList.add(task); @@ -70,7 +71,7 @@ public abstract class AbstractTask { * @author ldjun * @created 2020年6月12日 下午5:52:28 */ - protected JSONObject renotifyAcs(List taskList) { + protected ResultForAcs renotifyAcs(List taskList) { //1、获取任务 //2、根据任务配置补全任务 //3、下发 diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/GeneralDefinition.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/GeneralDefinition.java index 21fa657..2fd17fe 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/GeneralDefinition.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/GeneralDefinition.java @@ -62,4 +62,9 @@ public class GeneralDefinition { public static final String UPPER_CONVEYOR_LINE = "3"; /** 下输送线 */ public static final String LOWER_CONVEYOR_LINE = "4"; + // 参数名称 + /** 是否连接 */ + public static final String IS_CONNECT_ACS = "is_connect_acs"; + /** ACS路径 */ + public static final String ACS_URL = "acs_url"; } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/AcsUtil.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/AcsUtil.java index fd5c9a6..c472d52 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/AcsUtil.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/AcsUtil.java @@ -1,105 +1,67 @@ - package org.nl.wms.sch.task_manage.task; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpRequest; -import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; import org.nl.common.exception.BadRequestException; import org.nl.config.SpringContextHolder; import org.nl.system.service.param.dao.Param; import org.nl.system.service.param.impl.SysParamServiceImpl; -import org.nl.wms.ext.record.service.ISysInteractRecordService; -import org.nl.wms.ext.record.service.impl.SysInteractRecordServiceImpl; -import org.nl.wms.sch.task_manage.AcsTaskDto; +import org.nl.wms.ext.acs.service.dto.ResultForAcs; import org.nl.wms.sch.task_manage.GeneralDefinition; -import org.springframework.http.HttpStatus; import java.util.List; /** - * ACS连接工具类: + * ACS连接工具类: 不允许直接操作结果,将其封装到ResultForAcs,由实现类操作 */ @Slf4j public class AcsUtil { /** - * 统一多数据入口 + * 统一多数据入口: 默认执行的参数都是jsonArray * @param api * @param list * @return * @param */ - public static JSONObject notifyAcs(String api, List list) { + public static ResultForAcs notifyAcs(String api, List list) { SysParamServiceImpl sysParamService = SpringContextHolder.getBean(SysParamServiceImpl.class); + // list转JSONArray + String s = JSON.toJSONString(list); //判断是否连接ACS系统 - Param isConnectAcs = sysParamService.findByCode("IS_CONNECT_ACS"); + Param isConnectAcs = sysParamService.findByCode(GeneralDefinition.IS_CONNECT_ACS); if (ObjectUtil.isEmpty(isConnectAcs)) { - throw new BadRequestException("参数表中:IS_CONNECT_ACS不存在"); + throw new BadRequestException("参数表中:" + GeneralDefinition.IS_CONNECT_ACS + "不存在"); } String isConnect = isConnectAcs.getValue(); - JSONObject result = new JSONObject(); - if (StrUtil.equals(GeneralDefinition.NO, isConnect)) { - result.put("status", HttpStatus.BAD_REQUEST.value()); - result.put("message", "未连接ACS!"); - result.put("data", new JSONObject()); - return result; - } //ACS地址:127.0.0.1:8010 - Param acsUrlObj = sysParamService.findByCode("ACS_URL"); + Param acsUrlObj = sysParamService.findByCode(GeneralDefinition.ACS_URL); if (ObjectUtil.isEmpty(acsUrlObj)) { - throw new BadRequestException("参数表中:ACS_URL不存在"); + throw new BadRequestException("参数表中:" + GeneralDefinition.ACS_URL + "不存在"); } String acsUrl = acsUrlObj.getValue(); - String url = acsUrl + api; - log.info("下发acs任务的参数为:{}", list.toString()); - try { - String resultMsg = HttpRequest.post(url) - .body(String.valueOf(list)) - .execute().body(); - result = JSONObject.parseObject(resultMsg); - } catch (Exception e) { - String msg = e.getMessage(); - //ConnectException: Connection refused: connect - //网络不通 - log.error("连接失败:{}", msg); - result.put("status", HttpStatus.BAD_REQUEST); - result.put("message", "网络不通,操作失败!"); - result.put("data", new JSONObject()); - } - return result; - } - public static JSONObject notifyAcs(String api, T object) { - //判断是否连接ACS系统 - String isConnect = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("IS_CONNECT_ACS").getValue(); - JSONObject result = new JSONObject(); + JSONObject result; if (StrUtil.equals(GeneralDefinition.NO, isConnect)) { - result.put("status", HttpStatus.BAD_REQUEST.value()); - result.put("message", "未连接ACS!"); - result.put("data", new JSONObject()); - return result; + return ResultForAcs.requestRefuse("未连接ACS!"); } - //ACS地址:127.0.0.1:8010 - String acsUrl = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("ACS_URL").getValue(); - String url = acsUrl + api; - log.info("下发acs任务的参数为:{}", object.toString()); + log.info("下发acs任务的参数为:{}", list.toString()); + ResultForAcs resultForAcs; try { String resultMsg = HttpRequest.post(url) - .body(String.valueOf(object)) + .body(s) .execute().body(); result = JSONObject.parseObject(resultMsg); + resultForAcs = JSONObject.toJavaObject(result, ResultForAcs.class); } catch (Exception e) { String msg = e.getMessage(); - //ConnectException: Connection refused: connect //网络不通 log.error("连接失败:{}", msg); - result.put("status", HttpStatus.BAD_REQUEST); - result.put("message", "网络不通,操作失败!"); - result.put("data", new JSONObject()); + return ResultForAcs.requestRefuse("网络不通,操作失败!"); } - // 记录交互表 - return result; + return resultForAcs; } } 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 3986fc3..42c22ce 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 @@ -7,7 +7,9 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.nl.common.exception.BadRequestException; import org.nl.common.utils.CodeUtil; +import org.nl.config.MapOf; import org.nl.system.service.notice.ISysNoticeService; +import org.nl.wms.ext.acs.service.WmsToAcsService; 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; @@ -24,6 +26,7 @@ import org.nl.wms.sch.task_manage.enums.*; 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.fj.mapper.FJMapper; +import org.nl.wms.util.CommonUtils; import org.nl.wms.util.PointUtils; import org.nl.wms.util.TaskUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -57,6 +60,8 @@ public class FJMKTask extends AbstractTask { private FJMapper fjMapper; @Autowired private ISchBaseVehiclematerialgroupService vehiclematerialgroupService; + @Autowired + private WmsToAcsService wmsToAcsService; @Override protected void create() throws BadRequestException { // 获取任务 @@ -73,6 +78,7 @@ public class FJMKTask extends AbstractTask { String requestParam = task.getRequest_param();// 任务的其他数据 JSONObject jsonObject = JSONObject.parseObject(requestParam); // 找终点 + /** 包装位 */ SchBasePoint packagePoint = findNextPoint(nextRegionStr, jsonObject); if (ObjectUtil.isEmpty(packagePoint)) { task.setRemark("包装线不可用!"); @@ -87,6 +93,7 @@ public class FJMKTask extends AbstractTask { // 1 获取点位相应数量 // 2 获取库存数量 // 3 木托盘需要多少块 + /** 覆膜机木托盘位 */ SchBasePoint LaminatePoint = findStartPoint(startRegionStr, jsonObject); if (ObjectUtil.isEmpty(LaminatePoint)) { task.setRemark("覆膜区不可用!"); @@ -101,7 +108,7 @@ public class FJMKTask extends AbstractTask { // 设置终点并修改创建成功状态 task.setPoint_code3(LaminatePoint.getParent_point_code()); task.setPoint_code4(task.getPoint_code1()); - task.setVehicle_code2(vehicleCode); + task.setVehicle_code2(vehicleCode); // 覆膜机下的木托盘编码 task.setTask_status(TaskStatus.CREATED.getCode()); task.setRemark(""); taskService.updateById(task); @@ -109,6 +116,7 @@ public class FJMKTask extends AbstractTask { packagePoint.setIng_task_code(task.getTask_code()); PointUtils.setUpdateByAcs(packagePoint); pointService.updateById(packagePoint); + // 覆膜机对接位 SchBasePoint basePoint = pointService.getById(LaminatePoint.getParent_point_code()); basePoint.setIng_task_code(task.getTask_code()); basePoint.setVehicle_code(vehicleCode); @@ -202,7 +210,10 @@ public class FJMKTask extends AbstractTask { // 向ACS请求所需木托盘在那个栈拆盘机?已经实时更新,故只需要自己查询即可 SchBasePoint endPointObj = fjMapper.findPointForFJQK(startRegionStr, new JSONObject() .fluentPut("vehicleType", vehicleType).fluentPut("pointType", GeneralDefinition.DEVICE_POINT)); - // todo: 请求ACS释放一个木托盘 + // 请求ACS释放一个木托盘 + List list = CommonUtils.requestAcsReleaseVehicle(MapOf.of("to_command", "1"), + endPointObj.getDevice_code()); + wmsToAcsService.getVehicleForLaminatingMachine(list); // 这个点的父点位为起点 return ObjectUtil.isNotEmpty(endPointObj) ? endPointObj : null; } @@ -283,15 +294,23 @@ public class FJMKTask extends AbstractTask { SchBasePoint fjcPointObj = pointService.getById(fjcPoint); if (ObjectUtil.isNotEmpty(bzxPointObj)) { // 包装位: 解锁 + PointUtils.setUpdateByType(bzxPointObj, taskFinishedType); PointUtils.clearPoint(bzxPointObj); // 覆膜位: 解锁 . 清空 + PointUtils.setUpdateByType(fmPointObj, taskFinishedType); PointUtils.clearPoint(fmPointObj); - // 机械手对接位: 赋值 - fjcPointObj.setPoint_status(PointStatusEnum.EMPTY_VEHICLE.getCode()); - fjcPointObj.setVehicle_qty(1); - fjcPointObj.setVehicle_type(taskObj.getVehicle_type()); + // 分拣机械手: 清空 PointUtils.setUpdateByType(fjcPointObj, taskFinishedType); - pointService.updateById(fjcPointObj); + PointUtils.clearPoint(fjcPointObj); + if (ObjectUtil.isNotEmpty(fmPointObj)) { + // 机械手对接位: 赋值 + fjcPointObj.setPoint_status(PointStatusEnum.EMPTY_VEHICLE.getCode()); + fjcPointObj.setVehicle_qty(1); + fjcPointObj.setVehicle_type(taskObj.getVehicle_type()); + fjcPointObj.setVehicle_code(taskObj.getVehicle_code2()); // 拿过来的载具编码 + PointUtils.setUpdateByType(fjcPointObj, taskFinishedType); + pointService.updateById(fjcPointObj); + } // 组盘设置已经解绑 SchBaseVehiclematerialgroup vehicleMaterialGroupObj = vehiclematerialgroupService.getById(taskObj.getGroup_id()); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJQKTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJQKTask.java index 22e724e..6aa55c4 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJQKTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJQKTask.java @@ -5,7 +5,9 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.nl.common.exception.BadRequestException; import org.nl.common.utils.CodeUtil; +import org.nl.config.MapOf; import org.nl.system.service.notice.ISysNoticeService; +import org.nl.wms.ext.acs.service.WmsToAcsService; import org.nl.wms.ext.acs.service.dto.SignalData; import org.nl.wms.ext.acs.service.dto.to.BaseRequest; import org.nl.wms.ext.acs.service.dto.to.acs.PutActionRequest; @@ -26,6 +28,7 @@ import org.nl.wms.sch.task_manage.task.AcsUtil; 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.fj.mapper.FJMapper; +import org.nl.wms.util.CommonUtils; import org.nl.wms.util.PointUtils; import org.nl.wms.util.TaskUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -53,10 +56,11 @@ public class FJQKTask extends AbstractTask { private ISchBaseTaskconfigService taskConfigService; @Autowired private IPdmBdWorkorderService workorderService; - @Autowired private ISysNoticeService noticeService; @Autowired + private WmsToAcsService wmsToAcsService; + @Autowired private FJMapper fjMapper; @Override protected void create() throws BadRequestException { @@ -86,6 +90,7 @@ public class FJQKTask extends AbstractTask { task.setTask_status(TaskStatus.CREATED.getCode()); // 生产木托盘编码 String vehicleCode = CodeUtil.getNewCode("VEHICLE_CODE"); + // todo: 未确认是否放在1还是2,目前规定四点任务空盘的载具编码是2 task.setVehicle_code(vehicleCode); task.setRemark(""); task.setGroup_id(point.getGroup_id()); @@ -123,14 +128,18 @@ public class FJQKTask extends AbstractTask { // 向ACS请求所需木托盘在那个栈拆盘机?已经实时更新,故只需要自己查询即可 SchBasePoint endPointObj = fjMapper.findPointForFJQK(startRegionStr, new JSONObject() .fluentPut("vehicleType", vehicleType).fluentPut("pointType", GeneralDefinition.DEVICE_POINT)); - // todo: 请求ACS释放一个木托盘 + // 请求ACS释放一个木托盘 + List list = CommonUtils.requestAcsReleaseVehicle(MapOf.of("to_command", "1"), + endPointObj.getDevice_code()); // SignalData signalData = SignalData.buildSignalData("to_command", "1"); // List signalList = new ArrayList<>(); // signalList.add(signalData); // PutActionRequest putActionRequest = (PutActionRequest) BaseRequest.createRequest(); // putActionRequest.setDevice_code(endPointObj.getDevice_code()); // putActionRequest.setList(signalList); -// AcsUtil.notifyAcs("", putActionRequest); +// List list = new ArrayList<>(); +// list.add(putActionRequest); + wmsToAcsService.getVehicleForLaminatingMachine(list); // 这个点的父点位为起点 return ObjectUtil.isNotEmpty(endPointObj) ? endPointObj : null; } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJQLTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJQLTask.java index a9c1404..4497489 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJQLTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJQLTask.java @@ -21,6 +21,7 @@ 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.NoticeTypeEnum; +import org.nl.wms.sch.task_manage.enums.PointStatusEnum; import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum; import org.nl.wms.sch.task_manage.task.TaskType; import org.nl.wms.sch.task_manage.task.core.TaskStatus; @@ -191,6 +192,12 @@ public class FJQLTask extends AbstractTask { processTracking.setProcess_location(endPoint); processTracking.setRecord_time(DateUtil.now()); processTrackingService.create(processTracking); + // 终点设置对应的参数 + endPointObj.setVehicle_code(startPointObj.getVehicle_code()); + endPointObj.setVehicle_type(startPointObj.getVehicle_type()); + endPointObj.setPoint_status(PointStatusEnum.FULL_POINT.getCode()); + PointUtils.setUpdateByType(endPointObj, taskFinishedType); + pointService.updateById(endPointObj); } // 任务完成 taskObj.setTask_status(TaskStatus.FINISHED.getCode()); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/HNMLTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/HNMLTask.java index 4d34732..52aa2f7 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/HNMLTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/HNMLTask.java @@ -124,7 +124,7 @@ public class HNMLTask extends AbstractTask { task.setRemark(""); task.setVehicle_type(GeneralDefinition.MATERIAL_CUP); // 告知acs去左边右边 - String deviceCode = point.getDevice_code(); + String deviceCode = point.getDevice_code(); // 获取设备编码 int number = Integer.parseInt(deviceCode.replaceAll("[^0-9]", "")); // 1左边2右边 number = (number % 2) == 0 ? 2 : (number % 2); @@ -152,15 +152,13 @@ public class HNMLTask extends AbstractTask { // *: 混碾无工单 String materialCode = requestParam.getString("material_code"); // 混碾编码 Assert.notNull(materialCode, "物料编码不能为空!"); - MdBaseMaterial baseMaterialObj = materialService.findByCode(materialCode); - Assert.notNull(baseMaterialObj, "物料: " + materialCode + "未找到!"); // 根据工单物料标识寻找点位 - List points = hnMapper.findPointForHNMLAndWorkOrder(nextRegionStr, baseMaterialObj.getMaterial_id()); + List points = hnMapper.findPointForHNMLAndWorkOrder(nextRegionStr, materialCode); return ObjectUtil.isNotEmpty(points) ? points.get(0) : null; } @Override - public void forceFinish(String task_code) { + public void forceFinish(String task_code) { // 人工完成任务 SchBaseTask taskObj = taskService.getByCode(task_code); if (ObjectUtil.isEmpty(taskObj)) { throw new BadRequestException("该任务不存在"); @@ -169,12 +167,13 @@ public class HNMLTask extends AbstractTask { } @Override - public void cancel(String task_code) { + public void cancel(String task_code) { // 人工取消任务 SchBaseTask taskObj = taskService.getByCode(task_code); if (ObjectUtil.isEmpty(taskObj)) { throw new BadRequestException("该任务不存在"); } this.cancelTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); + // todo: 通知acs取消任务 } public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { @@ -211,6 +210,10 @@ public class HNMLTask extends AbstractTask { // 找到父点位 SchBasePoint serviceOne = pointService.getOne(new LambdaQueryWrapper() .eq(SchBasePoint::getPoint_code, parentPointCode)); + // 父点位(设备)需要切换成非空状态 + PointUtils.setUpdateByType(serviceOne, taskFinishedType); + serviceOne.setPoint_status(PointStatusEnum.FULL_POINT.getCode()); + pointService.updateById(serviceOne); // 找压机工单 PdmBdWorkorder one = workorderService.getOne(new LambdaQueryWrapper() .eq(serviceOne != null, PdmBdWorkorder::getPoint_code, serviceOne.getPoint_code()) @@ -231,11 +234,11 @@ public class HNMLTask extends AbstractTask { } } // 更新组盘数据 - groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue()); + groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.UNBOUND.getValue()); TaskUtils.setGroupUpdateByType(groupEntity, taskFinishedType); vehiclematerialgroupService.updateById(groupEntity); - // 起点清空 - PointUtils.clearPoint(startPointObj); + // 起点清空 - 由ACS请求修改 +// PointUtils.clearPoint(startPointObj); taskObj.setRemark("任务完成"); taskObj.setTask_status(TaskStatus.FINISHED.getCode()); taskObj.setFinished_type(taskFinishedType.getCode()); @@ -270,7 +273,7 @@ public class HNMLTask extends AbstractTask { String vehicleType = param.getString("vehicle_type"); // 泥料物料对应不出物料标识 String materialCode = param.getString("material_code"); // 泥料编码 - String mixTimes = param.getString("bag_number"); // 碾次 + String mixTimes = param.getString("grinding_number"); // 碾次 // 载具类型默认料盅 if (vehicleType == null) { vehicleType = GeneralDefinition.MATERIAL_CUP; @@ -285,13 +288,14 @@ public class HNMLTask extends AbstractTask { } // 找到相同组盘信息就直接返回id,避免任务取消组盘信息还存在,重复插入 SchBaseVehiclematerialgroup groupObject = vehiclematerialgroupService.getGroupInfo(vehicleCode, vehicleType, - GroupBindMaterialStatusEnum.WAIT_BIND.getValue()); + GroupBindMaterialStatusEnum.BOUND.getValue()); if (groupObject != null) { return groupObject.getGroup_id(); } // 要把数据存到组盘表 SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup(); groupEntity.setGroup_id(IdUtil.getSnowflake(1, 1).nextIdStr()); + groupEntity.setMaterial_id("-"); groupEntity.setRedundance_material_code(materialCode); groupEntity.setCreate_id(GeneralDefinition.ACS_ID); groupEntity.setCreate_name(GeneralDefinition.ACS_NAME); @@ -307,7 +311,7 @@ public class HNMLTask extends AbstractTask { groupEntity.setMaterial_weight(ObjectUtil.isNotEmpty(weight)// 重量 ? weight : BigDecimal.valueOf(0)); - groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.WAIT_BIND.getValue()); // 待绑定 + groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue()); // 待绑定 groupEntity.setGroup_status(GroupStatusEnum.IN_STORAGE.getType()); // 暂时不维护。 groupEntity.setIs_delete(false); vehiclematerialgroupService.save(groupEntity); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/mapper/HNMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/mapper/HNMapper.java index 149d8b3..d0e4f78 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/mapper/HNMapper.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/mapper/HNMapper.java @@ -13,5 +13,5 @@ import java.util.List; */ public interface HNMapper extends BaseMapper { List findPointForHNML(List regionCode, String materialId); - List findPointForHNMLAndWorkOrder(List regionCode, String materialId); + List findPointForHNMLAndWorkOrder(List regionCode, String materialCode); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/mapper/HNMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/mapper/HNMapper.xml index 3376f3e..04536bf 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/mapper/HNMapper.xml +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/mapper/HNMapper.xml @@ -23,23 +23,31 @@ diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZQKTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZQKTask.java index d85a7d7..c20e0c0 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZQKTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZQKTask.java @@ -159,10 +159,10 @@ public class YZQKTask extends AbstractTask { PointUtils.setUpdateByType(startPointObj, taskFinishedType); PointUtils.clearPoint(startPointObj); endPointObj.setPoint_status(PointStatusEnum.EMPTY_VEHICLE.getCode()); - endPointObj.setVehicle_type("2"); + endPointObj.setVehicle_type(GeneralDefinition.STEEL_TRAY); endPointObj.setVehicle_qty(1); PointUtils.setUpdateByType(endPointObj, taskFinishedType); - pointService.update(endPointObj); + pointService.updateById(endPointObj); } // 任务完成 taskObj.setTask_status(TaskStatus.FINISHED.getCode()); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZSKTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZSKTask.java index a789a25..c75fdf9 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZSKTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZSKTask.java @@ -33,7 +33,7 @@ import java.util.stream.Collectors; /** * @Author: lyd - * @Description: 压制送空载具任务 x + * @Description: 压制送空盅任务 * @Date: 2023/5/25 */ @Component diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/CommonUtils.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/CommonUtils.java index 2939914..3eaadb8 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/CommonUtils.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/CommonUtils.java @@ -2,10 +2,18 @@ package org.nl.wms.util; import com.alibaba.fastjson.JSONObject; import org.nl.wms.ext.acs.service.dto.PalletizeDto; +import org.nl.wms.ext.acs.service.dto.SignalData; +import org.nl.wms.ext.acs.service.dto.to.BaseRequest; +import org.nl.wms.ext.acs.service.dto.to.acs.PutActionRequest; import java.time.Duration; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.CopyOnWriteArrayList; /** * @Author: lyd @@ -33,4 +41,18 @@ public class CommonUtils { return jsonObject.toJavaObject(clazz); } + // 请求ACS释放一个木托盘 + public static List requestAcsReleaseVehicle(HashMap map, String deviceCode) { + List list = new CopyOnWriteArrayList<>(); + PutActionRequest putActionRequest = (PutActionRequest) BaseRequest.createRequest(); + putActionRequest.setDevice_code(deviceCode); + List signalList = new CopyOnWriteArrayList<>(); + for (Map.Entry entry : map.entrySet()) { + SignalData signalData = SignalData.buildSignalData(entry.getKey(), entry.getValue()); + signalList.add(signalData); + } + putActionRequest.setList(signalList); + list.add(putActionRequest); + return list; + } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/PointUtils.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/PointUtils.java index 239b725..0d52fa1 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/PointUtils.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/PointUtils.java @@ -1,6 +1,7 @@ package org.nl.wms.util; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import org.nl.common.utils.SecurityUtils; import org.nl.config.SpringContextHolder; @@ -39,6 +40,9 @@ public class PointUtils { * @param point */ public static void clearPoint(SchBasePoint point) { + if (ObjectUtil.isEmpty(point)) { + return; // 空直接退出 + } SchBasePointServiceImpl pointService = SpringContextHolder.getBean(SchBasePointServiceImpl.class); point.setPoint_status(PointStatusEnum.EMPTY_POINT.getCode()); point.setVehicle_type(""); diff --git a/lms/nladmin-system/nlsso-server/src/test/java/org/nl/point/PointCreate.java b/lms/nladmin-system/nlsso-server/src/test/java/org/nl/point/PointCreate.java index 41c98c7..363ac9f 100644 --- a/lms/nladmin-system/nlsso-server/src/test/java/org/nl/point/PointCreate.java +++ b/lms/nladmin-system/nlsso-server/src/test/java/org/nl/point/PointCreate.java @@ -208,4 +208,28 @@ public class PointCreate { } pointService.saveBatch(pointList); } + @Test + void test07() { // 码垛机械手 + // 创建YJ01JLW01 + List pointList = new ArrayList<>(); + for (int i = 1; i <= 8; i++) { + String pointName = "压制不合格位0"; + String pointCode = "YZBHGW0"; + String papointCode = "YJ0"; + pointName = pointName + i; + pointCode = pointCode + i; + papointCode = papointCode + i; + SchBasePoint point = new SchBasePoint(); + point.setPoint_code(pointCode); + point.setPoint_name(pointName); + point.setRegion_code("YZ"); + point.setRegion_name("压制区域"); + point.setPoint_type("3"); + point.setParent_point_code(papointCode); + point.setIs_has_workder(false); + point.setIs_auto(false); + pointList.add(point); + } + pointService.saveBatch(pointList); + } } diff --git a/lms/nladmin-ui/src/views/wms/pdm/vehiclebiding/index.vue b/lms/nladmin-ui/src/views/wms/pdm/vehiclebiding/index.vue new file mode 100644 index 0000000..7cf04f9 --- /dev/null +++ b/lms/nladmin-ui/src/views/wms/pdm/vehiclebiding/index.vue @@ -0,0 +1,126 @@ + + + + + diff --git a/lms/nladmin-ui/src/views/wms/pdm/vehiclebiding/pdmBdVehicleBinding.js b/lms/nladmin-ui/src/views/wms/pdm/vehiclebiding/pdmBdVehicleBinding.js new file mode 100644 index 0000000..2bff8e8 --- /dev/null +++ b/lms/nladmin-ui/src/views/wms/pdm/vehiclebiding/pdmBdVehicleBinding.js @@ -0,0 +1,27 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/pdmBdVehicleBinding', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/pdmBdVehicleBinding/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/pdmBdVehicleBinding', + method: 'put', + data + }) +} + +export default { add, edit, del } diff --git a/lms/nladmin-ui/src/views/wms/pdm/workerorder/index.vue b/lms/nladmin-ui/src/views/wms/pdm/workerorder/index.vue index f282fc2..8c14f22 100644 --- a/lms/nladmin-ui/src/views/wms/pdm/workerorder/index.vue +++ b/lms/nladmin-ui/src/views/wms/pdm/workerorder/index.vue @@ -60,7 +60,19 @@ - + + + 开工 + + { + this.crud.notify('下发成功', CRUD.NOTIFICATION_TYPE.SUCCESS) + this.crud.toQuery() + }) + }, } } diff --git a/lms/nladmin-ui/src/views/wms/pdm/workerorder/pdmBdWorkorder.js b/lms/nladmin-ui/src/views/wms/pdm/workerorder/pdmBdWorkorder.js index a47b51b..c32297c 100644 --- a/lms/nladmin-ui/src/views/wms/pdm/workerorder/pdmBdWorkorder.js +++ b/lms/nladmin-ui/src/views/wms/pdm/workerorder/pdmBdWorkorder.js @@ -24,4 +24,12 @@ export function edit(data) { }) } -export default { add, edit, del } +export function submits(param) { + return request({ + url: 'api/pdmBdWorkorder/submits', + method: 'post', + data: param + }) +} + +export default { add, edit, del, submits }