diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/dao/ProductTaskVo.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/dao/ProductTaskVo.java index b1977ea..596f1f3 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/dao/ProductTaskVo.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/dao/ProductTaskVo.java @@ -9,6 +9,7 @@ import lombok.Data; */ @Data public class ProductTaskVo { + private String pointCode; private String device; private String workorderCode; private String team; diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/dao/WorkOrderVo.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/dao/WorkOrderVo.java index a5c7350..0de3c5e 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/dao/WorkOrderVo.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/dao/WorkOrderVo.java @@ -7,18 +7,16 @@ import java.util.Date; /** * @author Administrator + * 当前工单所需物料信息 */ @Data public class WorkOrderVo { - private String workorderCode; - private String materialName; + private String pointCode; + private String pointName; + private String materialCode; + private String materialModel; private String materialSpec; - private String planQty; - private String planWeight; - private String produceOrder; - private String customer; - private String vehicleType; - //todo 是否有半托 - @JsonFormat(pattern ="MM-dd HH:mm:ss", timezone = "GMT+8") - private Date createTime; + private String materialQty; + private String vehicleCode; + private String createTime; } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/impl/CockpitServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/impl/CockpitServiceImpl.java index 7a0a9be..442ab49 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/impl/CockpitServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/impl/CockpitServiceImpl.java @@ -58,17 +58,22 @@ public class CockpitServiceImpl implements CockpitService { return null; } for (ShiftProductionVo productionVo : shiftProductionList) { - ShiftProductionVo res = cockPitMapper.selectQtByVo(productionVo); + ShiftProductionVo res = cockPitMapper.selectQtByWorkOrder(productionVo.getWorkOrderCode(), productionVo.getPointCode()); productionVo.setQualifiedQty(res.getQualifiedQty()); productionVo.setUnqualifiedQty(res.getUnqualifiedQty()); int plan = Integer.parseInt(productionVo.getPlanQty()); int unqualified = Integer.parseInt(productionVo.getUnqualifiedQty()); int qualified = Integer.parseInt(productionVo.getQualifiedQty()); + int all = unqualified + qualified; int lastQty = plan - unqualified - qualified; productionVo.setLastQty(String.valueOf(Math.max(lastQty, 0))); - BigDecimal planBig = new BigDecimal(plan); + BigDecimal allBig = new BigDecimal(all); BigDecimal quaBig = new BigDecimal(qualified); - productionVo.setQualifyRate(String.valueOf(quaBig.divide(planBig, 2, RoundingMode.HALF_UP))); + if (all == 0) { + productionVo.setQualifyRate("0.00"); + } else { + productionVo.setQualifyRate(String.valueOf(quaBig.multiply(new BigDecimal(100)).divide(allBig, 2, RoundingMode.HALF_UP))); + } } return shiftProductionList; }, pool); @@ -91,7 +96,27 @@ public class CockpitServiceImpl implements CockpitService { }); // 4、生产任务 CompletableFuture> listProductionTaskFuture = CompletableFuture.supplyAsync( - () -> cockPitMapper.getProductionTaskList(), pool); + () -> { + List productionTaskList = cockPitMapper.getProductionTaskList(); + if (productionTaskList.isEmpty()) { + return null; + } + for (ProductTaskVo productionVo : productionTaskList) { + ShiftProductionVo res = cockPitMapper.selectQtByWorkOrder(productionVo.getWorkorderCode(), productionVo.getPointCode()); + productionVo.setUnqualifiedQty(res.getUnqualifiedQty()); + int qualified = Integer.parseInt(res.getQualifiedQty()); + int unQualified = Integer.parseInt(res.getUnqualifiedQty()); + int all = unQualified + qualified; + BigDecimal allBig = new BigDecimal(all); + BigDecimal quaBig = new BigDecimal(qualified); + if (all == 0) { + productionVo.setQualifiedRate("0.00"); + } else { + productionVo.setQualifiedRate(String.valueOf(quaBig.multiply(new BigDecimal(100)).divide(allBig, 2, RoundingMode.HALF_UP))); + } + } + return productionTaskList; + }, pool); listProductionTaskFuture.thenAccept(result -> { map.put("ProductionTask", result); }).exceptionally((e) -> { @@ -160,7 +185,7 @@ public class CockpitServiceImpl implements CockpitService { resultMap.put("stackingList", null); return null; }); - //查询剩余工单列表 + //当前工单货架物料信息 CompletableFuture> lastWorkOrderCompletableFuture = CompletableFuture.supplyAsync( () -> cockPitMapper.getLastWorkOrderList(), pool); lastWorkOrderCompletableFuture.thenAccept(res -> { @@ -685,7 +710,13 @@ public class CockpitServiceImpl implements CockpitService { } public static void main(String[] args) { - String substring = "FJ01CDW01".substring(0, 4); - System.out.println(substring); + BigDecimal bigDecimal = new BigDecimal(600); + BigDecimal bigDecimal1 = new BigDecimal(77); + BigDecimal add = bigDecimal.add(bigDecimal1); + BigDecimal divide = bigDecimal.divide(add, 2, BigDecimal.ROUND_HALF_UP); + System.out.println(bigDecimal); + System.out.println(bigDecimal1); + System.out.println(add); + System.out.println(divide); } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/mapper/CockPitMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/mapper/CockPitMapper.java index baf6e09..b481f9d 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/mapper/CockPitMapper.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/mapper/CockPitMapper.java @@ -1,6 +1,7 @@ package org.nl.wms.cockpit.service.mapper; import com.alibaba.fastjson.JSONArray; +import org.apache.ibatis.annotations.Param; import org.nl.wms.cockpit.service.dao.*; import java.util.List; @@ -16,9 +17,11 @@ public interface CockPitMapper { List getShiftProductionList(); List getPressOrderVoList(); + List getProductionTaskList(); List getSortingLine(); + List getRgSortingLineVo(); List getUnstackingList(); @@ -42,6 +45,7 @@ public interface CockPitMapper { InOutKilnVo selectOutKilnInfo(); KilnVo selectKilnInfo(); + List selectKilnMaterialInfo(); @@ -69,7 +73,7 @@ public interface CockPitMapper { FjPintInfoVo selectFJJXSMaterialInfo(String pointCode); - ShiftProductionVo selectQtByVo(ShiftProductionVo productionVo); + ShiftProductionVo selectQtByWorkOrder(@Param("workOrderCode") String workOrderCode, @Param("pointCode") String pointCode); List selectInKilnBoard(); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/mapper/CockPitMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/mapper/CockPitMapper.xml index a214061..6fa7577 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/mapper/CockPitMapper.xml +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/mapper/CockPitMapper.xml @@ -45,7 +45,8 @@ GROUP BY m.order_number - SELECT COUNT(CASE WHEN is_qualified = '1' THEN 1 END) AS qualifiedQty, COUNT(CASE WHEN is_qualified = '0' THEN 1 END) AS unqualifiedQty FROM md_base_brick_info 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 c286dbd..d0c913f 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 @@ -204,7 +204,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { if (ObjectUtil.isEmpty(workOrder)) { throw new BadRequestException("工单不能为空!"); } - if ("FJ".equals(basePoint.getRegion_code())){ + if ("FJ".equals(basePoint.getRegion_code())) { // 从所选区域中,选择满料位、无锁、可用的点位 List regin = new ArrayList<>(); regin.add("HCHJ"); @@ -219,7 +219,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { return response; } } - if ("YZ".equals(basePoint.getRegion_code())){ + if ("YZ".equals(basePoint.getRegion_code())) { List regin = new ArrayList<>(); regin.add("KL"); MdBaseMaterial material = materialService.getById(workOrder.getMaterial_id()); @@ -236,6 +236,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { // 组织参数 param.put("config_code", configCode); taskService.apply(param); + } else { + throw new BadRequestException("其他设备占用锁,等待结束!"); } } finally { if (tryLock) { @@ -352,8 +354,9 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { /** * mark: 特殊处理 + * * @param regionCode 区域 - * @param param 参数 + * @param param 参数 * @return 数字 * 在申请任务后引用 * handling = specialHandling(basePoint.getRegion_code(), param); @@ -612,13 +615,13 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { return this.isStandingFinish(baseRequest); // 如果是入窑口就是记录数据 case GeneralDefinition.GZY: - return this.recordKilnTime(baseRequest,GeneralDefinition.GZY); + return this.recordKilnTime(baseRequest, GeneralDefinition.GZY); // 入窑缓存线 case GeneralDefinition.RYHCX: - return this.recordKilnTime(baseRequest,GeneralDefinition.RYHCX); + return this.recordKilnTime(baseRequest, GeneralDefinition.RYHCX); // 出窑缓存线 case GeneralDefinition.CYHCX: - return this.recordKilnTime(baseRequest,GeneralDefinition.CYHCX); + return this.recordKilnTime(baseRequest, GeneralDefinition.CYHCX); default: taskResponse.setMessage("参数错误!"); taskResponse.setCode(HttpStatus.HTTP_BAD_REQUEST); @@ -718,7 +721,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { * 扫码成功申请 - 入窑记录时间 */ @Override - public ApplyTaskResponse recordKilnTime(ApplyTaskRequest baseRequest,String type) { + public ApplyTaskResponse recordKilnTime(ApplyTaskRequest baseRequest, String type) { log.info("扫码成功申请 - 出入窑记录时间的参数: {}", baseRequest); if (ObjectUtil.isEmpty(baseRequest.getVehicle_code())) { throw new BadRequestException("载具编码不能为空"); @@ -739,7 +742,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { // 如果已经记录就跳过 return ApplyTaskResponse.responseOk(baseRequest.getRequestNo()); } - recordInOrOutKilnTime(groupInfo, basePoint,type); + recordInOrOutKilnTime(groupInfo, basePoint, type); if (ObjectUtil.isNotEmpty(basePoint)) { // 记录当前位置 groupInfo.setPoint_code(basePoint.getPoint_code()); // 当前位置 @@ -759,8 +762,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { } - - private void recordInOrOutKilnTime(SchBaseVehiclematerialgroup groupInfo, SchBasePoint basePoint,String type) { + private void recordInOrOutKilnTime(SchBaseVehiclematerialgroup groupInfo, SchBasePoint basePoint, String type) { if (GeneralDefinition.RYHCX.equals(type)) { groupInfo.setInto_kiln_time(DateUtil.now()); } @@ -998,7 +1000,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { // 载具编码从点位中获取 // 组盘,返回组盘标识,设置待绑定,搬运结束就设置已绑定 String vehicle_code = param.getString("vehicle_code"); - if (StringUtils.isEmpty(vehicle_code)){ + if (StringUtils.isEmpty(vehicle_code)) { return BaseResponse.responseError(requestNo, "载具号为空!"); } String vehicleCode = TaskUtils.defaultVehicleCode(vehicle_code); @@ -1008,7 +1010,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { } // 砖块数量 Integer qty = param.getInteger("qty"); - if (ObjectUtil.isEmpty(qty)){ + if (ObjectUtil.isEmpty(qty)) { return BaseResponse.responseError(requestNo, "砖块数量为空!"); } String vehicleType = workOrder.getVehicle_type(); @@ -1052,9 +1054,9 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { @Override public JSONObject errorDeviceRecord(JSONObject param) { DasDeviceErrorRecord dasDeviceErrorRecord = new DasDeviceErrorRecord(); - dasDeviceErrorRecord.setDevice_code( param.getString("device_code")); + dasDeviceErrorRecord.setDevice_code(param.getString("device_code")); dasDeviceErrorRecord.setError(param.getString("error")); - dasDeviceErrorRecordService.create(dasDeviceErrorRecord); + dasDeviceErrorRecordService.create(dasDeviceErrorRecord); JSONObject result = new JSONObject(); result.put("status", org.springframework.http.HttpStatus.OK.value()); result.put("message", "故障上报完成!");