Browse Source

fix: 问题修复,添加打印,托盘显示等功能

master
yanps 6 months ago
parent
commit
7d9bbd9b4c
  1. 24
      acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/route/service/impl/RouteLineServiceImpl.java
  2. 127
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java
  3. 5
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/connector/service/dto/ConnectorDto.java
  4. 14
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/fab/controller/FabController.java
  5. 7
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/handheld/controller/HandheldController.java
  6. 7
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/handheld/service/HandheldService.java
  7. 27
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/handheld/service/impl/HandheldServiceImpl.java
  8. 20
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/sorting/service/impl/SortingServiceImpl.java
  9. 2
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/ISchBaseVehiclematerialgroupService.java
  10. 3
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/SchBaseVehiclematerialgroup.java
  11. 2
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/mapper/SchBaseVehiclematerialgroupMapper.java
  12. 38
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/mapper/SchBaseVehiclematerialgroupMapper.xml
  13. 16
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/impl/SchBaseVehiclematerialgroupServiceImpl.java
  14. 1
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/mapper/SchBasePointMapper.xml
  15. 11
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/impl/SchBasePointServiceImpl.java
  16. 1
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/impl/SchBaseTaskServiceImpl.java
  17. 5
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/GeneralDefinition.java
  18. 2
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/AcsUtil.java
  19. 2
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/ConnectorUtil.java
  20. 68
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/sorting/SortingSMTTask.java
  21. 10
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/vehicle/controller/BmVehicleInfoController.java
  22. 6
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/vehicle/service/IBmVehicleInfoService.java
  23. 5
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/vehicle/service/impl/BmVehicleInfoServiceImpl.java
  24. 102
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/PrintUtil.java
  25. 1
      lms/nladmin-ui/src/views/wms/produceScreen/index.vue
  26. 126
      lms/nladmin-ui/src/views/wms/sch/group/index.vue

24
acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/route/service/impl/RouteLineServiceImpl.java

@ -373,10 +373,8 @@ public class RouteLineServiceImpl extends CommonServiceImpl<RouteLineMapper, Rou
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void deleteAll(String[] ids) throws SQLException { public void deleteAll(String[] ids) throws SQLException {
for (String line_uuid : ids) { routeLineMapper.deleteBatchIds(Arrays.asList(ids));
this.removeById(line_uuid); //reload();
}
reload();
} }
@Override @Override
@ -427,14 +425,14 @@ public class RouteLineServiceImpl extends CommonServiceImpl<RouteLineMapper, Rou
List<RouteLine> routeLineList= new LambdaQueryChainWrapper<>(routeLineMapper) List<RouteLine> routeLineList= new LambdaQueryChainWrapper<>(routeLineMapper)
.eq(RouteLine::getRoute_plan_id,route_plan_id) .eq(RouteLine::getRoute_plan_id,route_plan_id)
.list(); .list();
JSONArray route = JSONArray.parseArray(JSON.toJSONString(routeLineList));
Map n[][] = new HashMap[size][size]; Map n[][] = new HashMap[size][size];
//建二维数组 //建二维数组
for (int i = 0; i < route.size(); i++) { for (int i = 0; i < routeLineList.size(); i++) {
JSONObject jo = (JSONObject) route.get(i); RouteLine routeLine = routeLineList.get(i);
String start = jo.getString("device_code"); String start = routeLine.getDevice_code();
String end = jo.getString("next_device_code"); String end = routeLine.getNext_device_code();
if (ObjectUtil.isEmpty(map.get(start)) || ObjectUtil.isEmpty(map.get(end))) {//如果路由中的设备号在设备列表中找不到就跳过 if (ObjectUtil.isEmpty(map.get(start)) || ObjectUtil.isEmpty(map.get(end))) {
//如果路由中的设备号在设备列表中找不到就跳过
continue; continue;
} }
Integer s = Integer.valueOf(map.get(start)); Integer s = Integer.valueOf(map.get(start));
@ -442,10 +440,10 @@ public class RouteLineServiceImpl extends CommonServiceImpl<RouteLineMapper, Rou
HashMap<String, String> smap = new HashMap<>(); HashMap<String, String> smap = new HashMap<>();
smap.put("device_code", start); smap.put("device_code", start);
smap.put("next_device_code", end); smap.put("next_device_code", end);
smap.put("type", jo.getString("type")); smap.put("type", routeLine.getType());
smap.put("path", start + "->" + end); smap.put("path", start + "->" + end);
smap.put("weights", jo.getString("weights")); smap.put("weights", routeLine.getWeights());
smap.put("route_plan_id", jo.getString("route_plan_id")); smap.put("route_plan_id", routeLine.getRoute_plan_id());
n[s][e] = smap; n[s][e] = smap;
} }
//对数组使用Floyd(弗洛伊德)算法,求出任意两个设备之间的最短距离,不通则为null //对数组使用Floyd(弗洛伊德)算法,求出任意两个设备之间的最短距离,不通则为null

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

@ -108,6 +108,10 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
@Autowired @Autowired
private ISysParamService sysParamService; private ISysParamService sysParamService;
private long lastTime;
private long milliseconds = 3000;
/** /**
* 初始化反射方法 * 初始化反射方法
*/ */
@ -504,75 +508,74 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
*/ */
private void requestPickup(SchBaseTask schBaseTask, String status, String is_connector) { private void requestPickup(SchBaseTask schBaseTask, String status, String is_connector) {
if ("1".equals(is_connector)) { if ("1".equals(is_connector)) {
//反馈connector申请取货 long time = System.currentTimeMillis();
JSONObject json = new JSONObject(); if (time - lastTime > milliseconds) {
json.put("vehicle_code", schBaseTask.getVehicle_code()); lastTime = System.currentTimeMillis();
json.put("status", status); //反馈connector申请取货
json.put("device_code", schBaseTask.getPoint_code1()); JSONObject json = new JSONObject();
json.put("task_code", schBaseTask.getTask_code()); json.put("vehicle_code", schBaseTask.getVehicle_code());
if (schBaseTask.getPoint_code1().endsWith("1")) { json.put("status", status);
String replace = schBaseTask.getPoint_code1().replace("1", "2"); json.put("device_code", schBaseTask.getPoint_code1());
SchBaseTask schBaseTask1 = taskService.getOne(Wrappers.lambdaQuery(SchBaseTask.class) json.put("task_code", schBaseTask.getTask_code());
.eq(SchBaseTask::getPoint_code1, replace) if (schBaseTask.getPoint_code1().endsWith("1")) {
.eq(SchBaseTask::getTask_status, TaskStatus.TIMEOUT.getCode())); String replace = schBaseTask.getPoint_code1().replace("1", "2");
if (ObjectUtil.isNotEmpty(schBaseTask1)) { SchBaseTask schBaseTask1 = taskService.getOne(Wrappers.lambdaQuery(SchBaseTask.class)
schBaseTask1.setTask_status(TaskStatus.CREATED.getCode()); .eq(SchBaseTask::getPoint_code1, replace)
taskService.update(schBaseTask1); .eq(SchBaseTask::getTask_status, TaskStatus.TIMEOUT.getCode()));
} if (ObjectUtil.isNotEmpty(schBaseTask1)) {
} else if (schBaseTask.getPoint_code1().endsWith("3")) { schBaseTask1.setTask_status(TaskStatus.CREATED.getCode());
String replace = schBaseTask.getPoint_code1().replace("3", "4"); taskService.update(schBaseTask1);
SchBaseTask schBaseTask2 = taskService.getOne(Wrappers.lambdaQuery(SchBaseTask.class)
.eq(SchBaseTask::getPoint_code1, replace)
.eq(SchBaseTask::getTask_status, TaskStatus.TIMEOUT.getCode()));
if (ObjectUtil.isNotEmpty(schBaseTask2)) {
schBaseTask2.setTask_status(TaskStatus.CREATED.getCode());
taskService.update(schBaseTask2);
}
} else if (schBaseTask.getPoint_code1().endsWith("5")) {
String replace = schBaseTask.getPoint_code1().replace("5", "6");
SchBaseTask schBaseTask2 = taskService.getOne(Wrappers.lambdaQuery(SchBaseTask.class)
.eq(SchBaseTask::getPoint_code1, replace)
.eq(SchBaseTask::getTask_status, TaskStatus.TIMEOUT.getCode()));
if (ObjectUtil.isNotEmpty(schBaseTask2)) {
schBaseTask2.setTask_status(TaskStatus.CREATED.getCode());
taskService.update(schBaseTask2);
}
}
boolean flag = true;
String jobName = null;
iSchBaseVehiclematerialgroupService.remove(Wrappers.lambdaQuery(SchBaseVehiclematerialgroup.class)
.eq(SchBaseVehiclematerialgroup::getVehicle_code, schBaseTask.getVehicle_code()));
AcsResponse acsResponse = connectorService.feedAgvTaskStatus(json);
if (acsResponse.getStatus() == 200 && StrUtil.isNotEmpty(acsResponse.getData())) {
JSONArray objects = JSONObject.parseArray(acsResponse.getData());
List<ConnectorDto> connectorDtos = BeanUtil.copyToList(objects, ConnectorDto.class);
for (ConnectorDto connectorDto : connectorDtos) {
if (schBaseTask.getVehicle_code().equals(connectorDto.getVehicle_code())) {
//TODO:载具号不同
} }
MdBaseMaterial mdBaseMaterial = iMdBaseMaterialService.getOne(Wrappers.lambdaQuery(MdBaseMaterial.class) } else if (schBaseTask.getPoint_code1().endsWith("3")) {
.eq(MdBaseMaterial::getMaterial_code, connectorDto.getProductID())); String replace = schBaseTask.getPoint_code1().replace("3", "4");
if (ObjectUtil.isEmpty(mdBaseMaterial)) { SchBaseTask schBaseTask2 = taskService.getOne(Wrappers.lambdaQuery(SchBaseTask.class)
//TODO:物料不存在 .eq(SchBaseTask::getPoint_code1, replace)
.eq(SchBaseTask::getTask_status, TaskStatus.TIMEOUT.getCode()));
if (ObjectUtil.isNotEmpty(schBaseTask2)) {
schBaseTask2.setTask_status(TaskStatus.CREATED.getCode());
taskService.update(schBaseTask2);
} }
connectorDto.setCreate_name("Connector"); } else if (schBaseTask.getPoint_code1().endsWith("5")) {
SchBaseVehiclematerialgroup schBaseVehiclematerialgroup = ConnectorUtil.createObject(connectorDto); String replace = schBaseTask.getPoint_code1().replace("5", "6");
iSchBaseVehiclematerialgroupService.create(schBaseVehiclematerialgroup); SchBaseTask schBaseTask2 = taskService.getOne(Wrappers.lambdaQuery(SchBaseTask.class)
if ("Y".equals(connectorDto.getFinished())) { .eq(SchBaseTask::getPoint_code1, replace)
jobName = connectorDto.getJobname(); .eq(SchBaseTask::getTask_status, TaskStatus.TIMEOUT.getCode()));
if (ObjectUtil.isNotEmpty(schBaseTask2)) {
schBaseTask2.setTask_status(TaskStatus.CREATED.getCode());
taskService.update(schBaseTask2);
} }
} }
if (StrUtil.isNotEmpty(jobName)) { boolean flag = true;
JSONObject jsonObject = new JSONObject(); String jobName = null;
jsonObject.put("cJobName", jobName); iSchBaseVehiclematerialgroupService.remove(Wrappers.lambdaQuery(SchBaseVehiclematerialgroup.class)
try { .eq(SchBaseVehiclematerialgroup::getVehicle_code, schBaseTask.getVehicle_code()));
sortingService.applyFinishJobName(jsonObject); AcsResponse acsResponse = connectorService.feedAgvTaskStatus(json);
} catch (Exception e) { if (acsResponse.getStatus() == 200 && StrUtil.isNotEmpty(acsResponse.getData())) {
log.info("wms反馈sorting->JobName完成,失败{}", e.getMessage()); JSONArray objects = JSONObject.parseArray(acsResponse.getData());
List<ConnectorDto> connectorDtos = BeanUtil.copyToList(objects, ConnectorDto.class);
for (ConnectorDto connectorDto : connectorDtos) {
connectorDto.setCreate_name("Connector");
SchBaseVehiclematerialgroup schBaseVehiclematerialgroup = ConnectorUtil.createObject(connectorDto);
iSchBaseVehiclematerialgroupService.create(schBaseVehiclematerialgroup);
if ("Y".equals(connectorDto.getFinished())) {
jobName = connectorDto.getJobname();
}
}
if (StrUtil.isNotEmpty(jobName)) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("cJobName", jobName);
try {
sortingService.applyFinishJobName(jsonObject);
} catch (Exception e) {
log.info("wms反馈sorting->JobName完成,失败{}", e.getMessage());
}
} }
} else {
throw new BadRequestException("LMS向Connector请求取货");
} }
} else { } else {
throw new BadRequestException("LMS向Connector请求取货"); log.info("请求connector取货间隔小于3秒,忽略");
throw new BadRequestException("请求connector取货间隔小于3秒,忽略");
} }
} }
if ("2".equals(is_connector)) { if ("2".equals(is_connector)) {

5
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/connector/service/dto/ConnectorDto.java

@ -103,4 +103,9 @@ public class ConnectorDto {
private String priority; private String priority;
private String create_name; private String create_name;
/**
* 托盘物料图片
*/
private String png_palletpath;
} }

14
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/fab/controller/FabController.java

@ -303,7 +303,7 @@ public class FabController {
if (CollUtil.isEmpty(deviceCodes) && StrUtil.isEmpty(sendVehicleVo.getVehicle_code())) { if (CollUtil.isEmpty(deviceCodes) && StrUtil.isEmpty(sendVehicleVo.getVehicle_code())) {
throw new BadRequestException("请输入设备号或载具号!"); throw new BadRequestException("请输入设备号或载具号!");
} }
List<String> list = null; List<Map> list = null;
if (StrUtil.isNotEmpty(sendVehicleVo.getVehicle_code())) { if (StrUtil.isNotEmpty(sendVehicleVo.getVehicle_code())) {
deviceCodes = new ArrayList<>(); deviceCodes = new ArrayList<>();
deviceCodes.add(sendVehicleVo.getVehicle_code()); deviceCodes.add(sendVehicleVo.getVehicle_code());
@ -318,17 +318,21 @@ public class FabController {
); );
list = iSchBaseVehiclematerialgroupService.selectOrdersByVehicleCode(vehicleCodes); list = iSchBaseVehiclematerialgroupService.selectOrdersByVehicleCode(vehicleCodes);
} }
HashSet<String> keys = new HashSet<>(); HashSet<Map> keys = new HashSet<>();
list.stream().forEach(item -> { list.stream().forEach(item -> {
keys.add(item); keys.add(MapOf.of("order_code", item.get("order_code"), "material_id", item.get("material_id")));
}); });
List<JSONObject> jsonObjectList = new ArrayList<>(); List<JSONObject> jsonObjectList = new ArrayList<>();
keys.stream().forEach(item -> { keys.stream().forEach(item -> {
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
jsonObject.put("order_code", item); jsonObject.put("order_code", item.get("order_code"));
jsonObject.put("material_id", item.get("material_id"));
jsonObjectList.add(jsonObject); jsonObjectList.add(jsonObject);
}); });
return new ResponseEntity(jsonObjectList, HttpStatus.OK); JSONObject jsonObject = new JSONObject();
jsonObject.put("material", jsonObjectList);
jsonObject.put("path", CollUtil.isNotEmpty(list) ? list.get(0).get("vehicle_path") : "");
return new ResponseEntity(jsonObject, HttpStatus.OK);
} }
/** /**

7
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/handheld/controller/HandheldController.java

@ -144,8 +144,13 @@ public class HandheldController {
@GetMapping("/createPointInPointTask") @GetMapping("/createPointInPointTask")
@Log("创建点对点任务") @Log("创建点对点任务")
public ResponseEntity<Object> createPointTask(String regionCode) { public ResponseEntity<Object> createPointTask(String regionCode) {
return new ResponseEntity<>(handheldService.selectPointByRegion(regionCode),HttpStatus.OK); return new ResponseEntity<>(handheldService.selectPointByRegion(regionCode), HttpStatus.OK);
} }
@GetMapping("/selectMaterialAndJpg")
@Log("查询托盘物料信息")
public ResponseEntity<Object> selectMaterialAndJpg(String pointCode) {
return new ResponseEntity<>(handheldService.selectMaterialAndJpg(pointCode), HttpStatus.OK);
}
} }

7
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/handheld/service/HandheldService.java

@ -113,4 +113,11 @@ public interface HandheldService {
* @return * @return
*/ */
List<JSONObject> selectPointByRegion(String regionCode); List<JSONObject> selectPointByRegion(String regionCode);
/**
* 根据当前点位的托盘号查询物料信息
* @param pointCode
* @return
*/
JSONObject selectMaterialAndJpg(String pointCode);
} }

27
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/handheld/service/impl/HandheldServiceImpl.java

@ -14,6 +14,7 @@ import org.nl.common.enums.region.RegionEnum;
import org.nl.common.exception.BadRequestException; import org.nl.common.exception.BadRequestException;
import org.nl.common.utils.RedisUtils; import org.nl.common.utils.RedisUtils;
import org.nl.common.utils.SecurityUtils; import org.nl.common.utils.SecurityUtils;
import org.nl.config.MapOf;
import org.nl.config.SpringContextHolder; import org.nl.config.SpringContextHolder;
import org.nl.system.service.param.dao.Param; import org.nl.system.service.param.dao.Param;
import org.nl.system.service.param.impl.SysParamServiceImpl; import org.nl.system.service.param.impl.SysParamServiceImpl;
@ -334,7 +335,7 @@ public class HandheldServiceImpl implements HandheldService {
jo.put("create_mode", GeneralDefinition.AUTO_CREATION); jo.put("create_mode", GeneralDefinition.AUTO_CREATION);
jo.put("vehicle_code", vehicle_code); jo.put("vehicle_code", vehicle_code);
param.put("region_code", region_code); param.put("region_code", region_code);
param.put("materials",materials); param.put("materials", materials);
jo.put("ext_data", param); jo.put("ext_data", param);
iSchBasePointService.update(Wrappers.lambdaUpdate(SchBasePoint.class) iSchBasePointService.update(Wrappers.lambdaUpdate(SchBasePoint.class)
.eq(SchBasePoint::getPoint_code, device_code) .eq(SchBasePoint::getPoint_code, device_code)
@ -639,5 +640,29 @@ public class HandheldServiceImpl implements HandheldService {
return iSchBasePointService.selectPointByRegion(regionCode); return iSchBasePointService.selectPointByRegion(regionCode);
} }
@Override
public JSONObject selectMaterialAndJpg(String pointCode) {
if (StrUtil.isEmpty(pointCode)) {
throw new BadRequestException("当前点位不能为空!");
}
SchBasePoint schBasePoint = iSchBasePointService.selectByPointCode(pointCode);
if (ObjectUtil.isEmpty(schBasePoint)) {
throw new BadRequestException("当前点位不存在!");
}
if (StrUtil.isNotEmpty(schBasePoint.getVehicle_code())) {
List<String> list = new ArrayList<>();
list.add(schBasePoint.getVehicle_code());
List<Map> maps = iSchBaseVehiclematerialgroupService.selectOrdersByVehicleCode(list);
HashSet<Map> keys = new HashSet<>();
maps.stream().forEach(item -> {
keys.add(MapOf.of("material_id", item.get("material_id"),"material_path", item.get("material_path")));
});
JSONObject json = new JSONObject();
json.put("vehiclePath",maps.get(0).get("vehicle_path"));
json.put("materialList",keys);
return json;
}
return null;
}
} }

20
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/sorting/service/impl/SortingServiceImpl.java

@ -17,6 +17,9 @@ import org.nl.common.enums.region.RegionEnum;
import org.nl.common.exception.BadRequestException; import org.nl.common.exception.BadRequestException;
import org.nl.config.IdUtil; import org.nl.config.IdUtil;
import org.nl.config.MapOf; import org.nl.config.MapOf;
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.connector.service.dto.ConnectorDto; import org.nl.wms.ext.connector.service.dto.ConnectorDto;
import org.nl.wms.ext.sorting.enums.SortingEnum; import org.nl.wms.ext.sorting.enums.SortingEnum;
import org.nl.wms.ext.sorting.service.SortingService; import org.nl.wms.ext.sorting.service.SortingService;
@ -26,12 +29,14 @@ import org.nl.wms.sch.point.service.ISchBasePointService;
import org.nl.wms.sch.point.service.dao.SchBasePoint; import org.nl.wms.sch.point.service.dao.SchBasePoint;
import org.nl.wms.sch.point.service.dto.PointMaterialInfo; import org.nl.wms.sch.point.service.dto.PointMaterialInfo;
import org.nl.wms.sch.task_manage.AbstractTask; import org.nl.wms.sch.task_manage.AbstractTask;
import org.nl.wms.sch.task_manage.GeneralDefinition;
import org.nl.wms.sch.task_manage.task.ConnectorUtil; import org.nl.wms.sch.task_manage.task.ConnectorUtil;
import org.nl.wms.sch.task_manage.task.TaskFactory; import org.nl.wms.sch.task_manage.task.TaskFactory;
import org.nl.wms.sch.task_manage.task.tasks.sorting.SortingCMTTask; import org.nl.wms.sch.task_manage.task.tasks.sorting.SortingCMTTask;
import org.nl.wms.sch.task_manage.task.tasks.sorting.SortingCNTTask; import org.nl.wms.sch.task_manage.task.tasks.sorting.SortingCNTTask;
import org.nl.wms.sch.task_manage.task.tasks.sorting.SortingSMTTask; import org.nl.wms.sch.task_manage.task.tasks.sorting.SortingSMTTask;
import org.nl.wms.sch.task_manage.task.tasks.sorting.SortingSNTTask; import org.nl.wms.sch.task_manage.task.tasks.sorting.SortingSNTTask;
import org.nl.wms.util.PrintUtil;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -57,8 +62,9 @@ public class SortingServiceImpl implements SortingService {
private ISchBasePointService iSchBasePointService; private ISchBasePointService iSchBasePointService;
@Autowired @Autowired
private ISchBaseVehiclematerialgroupService iSchBaseVehiclematerialgroupService; private ISchBaseVehiclematerialgroupService iSchBaseVehiclematerialgroupService;
private static final DateTimeFormatter ISO_8601_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSX"); private static final DateTimeFormatter ISO_8601_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSX");
@Autowired
private SysParamServiceImpl sysParamService;
@Override @Override
@ -69,9 +75,10 @@ public class SortingServiceImpl implements SortingService {
Assert.noNullElements(new Object[]{jsonObject, jsonObject.getString("pointCode"), jsonObject.getString("vehicle_code") Assert.noNullElements(new Object[]{jsonObject, jsonObject.getString("pointCode"), jsonObject.getString("vehicle_code")
, jsonObject.getString("task_type"), jsonObject.getString("is_empty")}, "请求参数不能为空"); , jsonObject.getString("task_type"), jsonObject.getString("is_empty")}, "请求参数不能为空");
JSONArray jsonArray = JSONUtil.parseArray(jsonObject.get("pallet_detail")); JSONArray jsonArray = JSONUtil.parseArray(jsonObject.get("pallet_detail"));
String png_palletpath = jsonObject.getString("png_palletpath");
if (StrUtil.isNotEmpty(jsonObject.getString("is_rawdata")) && "1".equals(jsonObject.getString("is_rawdata"))) { if (StrUtil.isNotEmpty(jsonObject.getString("is_rawdata")) && "1".equals(jsonObject.getString("is_rawdata"))) {
List<ConnectorDto> connectorDtos = BeanUtil.copyToList(jsonArray, ConnectorDto.class); List<ConnectorDto> connectorDtos = BeanUtil.copyToList(jsonArray, ConnectorDto.class);
createMaterial(connectorDtos, jsonObject.getString("vehicle_code")); createMaterial(connectorDtos, jsonObject.getString("vehicle_code"), png_palletpath);
} else { } else {
//任务号 //任务号
String task_code = jsonObject.getString("task_code"); String task_code = jsonObject.getString("task_code");
@ -206,13 +213,20 @@ public class SortingServiceImpl implements SortingService {
} }
} }
private void createMaterial(List<ConnectorDto> connectorDtos, String vehicleCode) { private void createMaterial(List<ConnectorDto> connectorDtos, String vehicleCode, String png_palletpath) {
iSchBaseVehiclematerialgroupService.remove(Wrappers.lambdaQuery(SchBaseVehiclematerialgroup.class) iSchBaseVehiclematerialgroupService.remove(Wrappers.lambdaQuery(SchBaseVehiclematerialgroup.class)
.eq(SchBaseVehiclematerialgroup::getVehicle_code, vehicleCode)); .eq(SchBaseVehiclematerialgroup::getVehicle_code, vehicleCode));
Param sortingFilePath = sysParamService.findByCode(GeneralDefinition.SORTING_FILE_PATH);
connectorDtos.forEach(connectorDto -> { connectorDtos.forEach(connectorDto -> {
connectorDto.setID(null); connectorDto.setID(null);
String dueDate = connectorDto.getDueDate();
if (StrUtil.isNotEmpty(dueDate) && isValidISO8601(dueDate)) {
dueDate = parseDate(dueDate);
}
connectorDto.setDue_date(dueDate);
connectorDto.setCreate_name("Sorting"); connectorDto.setCreate_name("Sorting");
SchBaseVehiclematerialgroup schBaseVehiclematerialgroup = ConnectorUtil.createObject(connectorDto); SchBaseVehiclematerialgroup schBaseVehiclematerialgroup = ConnectorUtil.createObject(connectorDto);
schBaseVehiclematerialgroup.setVehicle_path(PrintUtil.imageToByteAndWriteToFile(png_palletpath, sortingFilePath.getValue()));
iSchBaseVehiclematerialgroupService.create(schBaseVehiclematerialgroup); iSchBaseVehiclematerialgroupService.create(schBaseVehiclematerialgroup);
}); });
} }

2
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/ISchBaseVehiclematerialgroupService.java

@ -73,7 +73,7 @@ public interface ISchBaseVehiclematerialgroupService extends IService<SchBaseVeh
* 根据载具号查找订单号 * 根据载具号查找订单号
* @param vehicle_code * @param vehicle_code
*/ */
List<String> selectOrdersByVehicleCode(List<String> vehicle_code); List<Map> selectOrdersByVehicleCode(List<String> vehicle_code);
/** /**
* 根据载具号查找物料信息 * 根据载具号查找物料信息

3
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/SchBaseVehiclematerialgroup.java

@ -162,6 +162,9 @@ public class SchBaseVehiclematerialgroup implements Serializable {
@ApiModelProperty(value = "物料图片路径") @ApiModelProperty(value = "物料图片路径")
private String material_path; private String material_path;
@ApiModelProperty(value = "托盘图片路径")
private String vehicle_path;
@TableField(exist = false) @TableField(exist = false)
private String materialFile; private String materialFile;

2
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/mapper/SchBaseVehiclematerialgroupMapper.java

@ -23,7 +23,7 @@ public interface SchBaseVehiclematerialgroupMapper extends BaseMapper<SchBaseVeh
SchBaseVehiclematerialgroup getGroup(JSONObject entity); SchBaseVehiclematerialgroup getGroup(JSONObject entity);
List<String> selectOrders(@Param("list") List<String> vehicleCodes); List<Map> selectOrders(@Param("list") List<String> vehicleCodes);
List<Map> selectMaterialByVehicleCode(String vehicle_code); List<Map> selectMaterialByVehicleCode(String vehicle_code);

38
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/mapper/SchBaseVehiclematerialgroupMapper.xml

@ -50,14 +50,7 @@
</if> </if>
AND vg.group_bind_material_status = '2' AND vg.group_bind_material_status = '2'
</select> </select>
<select id="selectOrders" resultType="java.lang.String" parameterType="java.util.List">
SELECT sbv.order_code
FROM sch_base_vehiclematerialgroup sbv
WHERE sbv.vehicle_code IN
<foreach item="code" collection="list" open="(" separator="," close=")">
#{code}
</foreach>
</select>
<select id="selectMaterialByVehicleCode" resultType="java.util.Map" parameterType="java.lang.String"> <select id="selectMaterialByVehicleCode" resultType="java.util.Map" parameterType="java.lang.String">
SELECT SELECT
sbv.order_code, sbv.order_code,
@ -88,11 +81,15 @@
<if test="query.job_name != null"> <if test="query.job_name != null">
AND vg.job_name like CONCAT('%', #{query.job_name}, '%') AND vg.job_name like CONCAT('%', #{query.job_name}, '%')
</if> </if>
<if test="query.region_code != null and query.region_code != 1"> <if test="query.region_code != null">
AND vg.region_code = #{query.region_code} <choose>
</if> <when test="query.region_code.equals('111-100')">
<if test="query.region_code == 1"> AND vg.region_code is null
AND vg.region_code is null </when>
<otherwise>
AND vg.region_code = #{query.region_code}
</otherwise>
</choose>
</if> </if>
<if test="query.order_code != null"> <if test="query.order_code != null">
AND vg.order_code like CONCAT('%', #{query.order_code}, '%') AND vg.order_code like CONCAT('%', #{query.order_code}, '%')
@ -115,7 +112,20 @@
<select id="selectDueDateByVehicleCode" resultType="java.lang.String"> <select id="selectDueDateByVehicleCode" resultType="java.lang.String">
SELECT sbv.due_date SELECT sbv.due_date
FROM sch_base_vehiclematerialgroup sbv FROM sch_base_vehiclematerialgroup sbv
WHERE sbv.material_id = #{sendVehicle.material_code} AND sbv.order_code = #{sendVehicle.order_code} limit 1 WHERE sbv.material_id = #{sendVehicle.material_code}
AND sbv.order_code = #{sendVehicle.order_code} limit 1
</select>
<select id="selectOrders" resultType="java.util.Map">
SELECT
sbv.order_code,
sbv.material_id,
sbv.vehicle_path,
sbv.material_path
FROM sch_base_vehiclematerialgroup sbv
WHERE sbv.vehicle_code IN
<foreach item="code" collection="list" open="(" separator="," close=")">
#{code}
</foreach>
</select> </select>
</mapper> </mapper>

16
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/impl/SchBaseVehiclematerialgroupServiceImpl.java

@ -25,6 +25,8 @@ import org.nl.common.exception.BadRequestException;
import org.nl.common.utils.SecurityUtils; import org.nl.common.utils.SecurityUtils;
import org.nl.wms.database.material.service.IMdBaseMaterialService; import org.nl.wms.database.material.service.IMdBaseMaterialService;
import org.nl.wms.database.material.service.dao.MdBaseMaterial; import org.nl.wms.database.material.service.dao.MdBaseMaterial;
import org.nl.wms.database.vehicle.service.IMdBaseVehicleService;
import org.nl.wms.database.vehicle.service.dao.MdBaseVehicle;
import org.nl.wms.ext.fab.service.dto.CallMaterVo; import org.nl.wms.ext.fab.service.dto.CallMaterVo;
import org.nl.wms.ext.fab.service.dto.SendVehicleVo; import org.nl.wms.ext.fab.service.dto.SendVehicleVo;
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService; import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
@ -74,6 +76,8 @@ public class SchBaseVehiclematerialgroupServiceImpl extends ServiceImpl<SchBaseV
private PcOperationCMTask pcOperationCMTask; private PcOperationCMTask pcOperationCMTask;
@Autowired @Autowired
private ISchBasePointService iSchBasePointService; private ISchBasePointService iSchBasePointService;
@Autowired
private IMdBaseVehicleService iMdBaseVehicleService;
@Override @Override
public IPage<SchBaseVehiclematerialgroup> queryAll(SchBaseVehiclematerialgroupQuery whereJson, PageQuery page) { public IPage<SchBaseVehiclematerialgroup> queryAll(SchBaseVehiclematerialgroupQuery whereJson, PageQuery page) {
@ -127,6 +131,13 @@ public class SchBaseVehiclematerialgroupServiceImpl extends ServiceImpl<SchBaseV
@Override @Override
public void update(SchBaseVehiclematerialgroup entity) { public void update(SchBaseVehiclematerialgroup entity) {
if (StrUtil.isNotEmpty(entity.getVehicle_code())) {
MdBaseVehicle mdBaseVehicle = iMdBaseVehicleService.getOne(Wrappers.lambdaQuery(MdBaseVehicle.class)
.eq(MdBaseVehicle::getVehicle_code, entity.getVehicle_code()));
if (ObjectUtil.isEmpty(mdBaseVehicle)) {
throw new BadRequestException("托盘号不存在");
}
}
String currentUserId = SecurityUtils.getCurrentUserId(); String currentUserId = SecurityUtils.getCurrentUserId();
String nickName = SecurityUtils.getCurrentNickName(); String nickName = SecurityUtils.getCurrentNickName();
String now = DateUtil.now(); String now = DateUtil.now();
@ -170,7 +181,7 @@ public class SchBaseVehiclematerialgroupServiceImpl extends ServiceImpl<SchBaseV
} }
@Override @Override
public List<String> selectOrdersByVehicleCode(List<String> vehicle_code) { public List<Map> selectOrdersByVehicleCode(List<String> vehicle_code) {
return vehiclematerialgroupMapper.selectOrders(vehicle_code); return vehiclematerialgroupMapper.selectOrders(vehicle_code);
} }
@ -186,6 +197,7 @@ public class SchBaseVehiclematerialgroupServiceImpl extends ServiceImpl<SchBaseV
orderList.put("due_date", order_code.get(0).getDue_date()); orderList.put("due_date", order_code.get(0).getDue_date());
orderList.put("priority", order_code.get(0).getPriority()); orderList.put("priority", order_code.get(0).getPriority());
orderList.put("material_code", order_code.get(0).getMaterial_id()); orderList.put("material_code", order_code.get(0).getMaterial_id());
orderList.put("vehicle_path", order_code.get(0).getVehicle_path());
} }
}); });
maps = maps.stream().sorted(Comparator.comparingLong(order -> { maps = maps.stream().sorted(Comparator.comparingLong(order -> {
@ -253,7 +265,7 @@ public class SchBaseVehiclematerialgroupServiceImpl extends ServiceImpl<SchBaseV
e.printStackTrace(); e.printStackTrace();
} }
String url = localhost.getHostAddress() + ":" + 8083 + "/api/file/selectFile"; String url = localhost.getHostAddress() + ":" + 8083 + "/api/file/selectFile";
log.info("查询物料路径:{}",url); log.info("查询物料路径:{}", url);
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
jsonObject.put("path", one.getMaterial_path()); jsonObject.put("path", one.getMaterial_path());
return HttpRequest.post(url) return HttpRequest.post(url)

1
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/mapper/SchBasePointMapper.xml

@ -77,7 +77,6 @@
select point_code, point_name, point_status select point_code, point_name, point_status
from sch_base_point from sch_base_point
where region_code = #{regionCode} where region_code = #{regionCode}
and point_type is null
</select> </select>
</mapper> </mapper>

11
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/impl/SchBasePointServiceImpl.java

@ -41,6 +41,7 @@ import org.nl.wms.sch.task.service.ISchBaseTaskService;
import org.nl.wms.sch.task.service.dao.SchBaseTask; import org.nl.wms.sch.task.service.dao.SchBaseTask;
import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum; import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum;
import org.nl.wms.sch.task_manage.enums.PointStatusEnum; import org.nl.wms.sch.task_manage.enums.PointStatusEnum;
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
import org.nl.wms.util.PointUtils; import org.nl.wms.util.PointUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -567,12 +568,20 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
List<JSONObject> jsonObjectList = pointMapper.selectPointByRegion(regionCode); List<JSONObject> jsonObjectList = pointMapper.selectPointByRegion(regionCode);
jsonObjectList.stream().forEach(jsonObject -> { jsonObjectList.stream().forEach(jsonObject -> {
if (ObjectUtil.isNotEmpty(jsonObject.get("point_status"))) { if (ObjectUtil.isNotEmpty(jsonObject.get("point_status"))) {
if (jsonObject.get("point_status").equals(GoodsEnum.EMPTY_PALLETS.getValue()) || jsonObject.get("point_status").equals(GoodsEnum.IN_STOCK.getValue())) { if (jsonObject.get("point_status").equals(GoodsEnum.IN_STOCK.getValue())) {
jsonObject.put("point_status", "1"); jsonObject.put("point_status", "1");
} }
} else { } else {
jsonObject.put("point_status", "0"); jsonObject.put("point_status", "0");
} }
if (ObjectUtil.isNotEmpty(jsonObject.get("point_code"))) {
SchBaseTask point_code = taskService.getOne(Wrappers.lambdaQuery(SchBaseTask.class)
.eq(SchBaseTask::getPoint_code2, jsonObject.get("point_code"))
.lt(SchBaseTask::getTask_status, TaskStatus.FINISHED.getCode()));
if (ObjectUtil.isNotEmpty(point_code)) {
jsonObject.put("point_status", "2");
}
}
}); });
return jsonObjectList; return jsonObjectList;
} }

1
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/impl/SchBaseTaskServiceImpl.java

@ -18,6 +18,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mysql.cj.util.TimeUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.csv.CSVFormat; import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVPrinter; import org.apache.commons.csv.CSVPrinter;

5
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/GeneralDefinition.java

@ -145,6 +145,10 @@ public class GeneralDefinition {
* Sorting路径 * Sorting路径
*/ */
public static final String SORTING_URL = "sorting_url"; public static final String SORTING_URL = "sorting_url";
/**
* Sorting文件存放路径
*/
public static final String SORTING_FILE_PATH = "sorting_file_path";
/** /**
* wms路径 * wms路径
*/ */
@ -157,6 +161,7 @@ public class GeneralDefinition {
* MES路径 * MES路径
*/ */
public static final String MES_URL = "mes_url"; public static final String MES_URL = "mes_url";
public static final String LOCALHOST_POST = "localhost_post";
// 完成/取消 // 完成/取消
/** /**
* 任务完成 * 任务完成

2
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/AcsUtil.java

@ -51,7 +51,7 @@ public class AcsUtil {
String msg = e.getMessage(); String msg = e.getMessage();
//ConnectException: Connection refused: connect //ConnectException: Connection refused: connect
//网络不通 //网络不通
log.error("连接失败:{}", msg); log.error(" :{}", msg);
result.put("status", HttpStatus.BAD_REQUEST); result.put("status", HttpStatus.BAD_REQUEST);
result.put("message", "网络不通,操作失败!"); result.put("message", "网络不通,操作失败!");
result.put("data", new JSONObject()); result.put("data", new JSONObject());

2
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/ConnectorUtil.java

@ -172,7 +172,7 @@ public class ConnectorUtil {
schBaseVehiclematerialgroup.setRegion_code(connectorDto.getNextOperation()); schBaseVehiclematerialgroup.setRegion_code(connectorDto.getNextOperation());
schBaseVehiclematerialgroup.setExtend(JSON.toJSONString(connectorDto)); schBaseVehiclematerialgroup.setExtend(JSON.toJSONString(connectorDto));
schBaseVehiclematerialgroup.setOrder_code(connectorDto.getProductionOrder()); schBaseVehiclematerialgroup.setOrder_code(connectorDto.getProductionOrder());
schBaseVehiclematerialgroup.setDue_date(connectorDto.getDue_date()); schBaseVehiclematerialgroup.setDue_date(connectorDto.getDueDate());
schBaseVehiclematerialgroup.setPriority(connectorDto.getPriority()); schBaseVehiclematerialgroup.setPriority(connectorDto.getPriority());
schBaseVehiclematerialgroup.setCreate_name(connectorDto.getCreate_name()); schBaseVehiclematerialgroup.setCreate_name(connectorDto.getCreate_name());
return schBaseVehiclematerialgroup; return schBaseVehiclematerialgroup;

68
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/sorting/SortingSMTTask.java

@ -15,6 +15,8 @@ import org.nl.common.enums.GoodsEnum;
import org.nl.common.enums.region.RegionEnum; import org.nl.common.enums.region.RegionEnum;
import org.nl.common.exception.BadRequestException; import org.nl.common.exception.BadRequestException;
import org.nl.system.service.notice.ISysNoticeService; import org.nl.system.service.notice.ISysNoticeService;
import org.nl.system.service.param.dao.Param;
import org.nl.system.service.param.impl.SysParamServiceImpl;
import org.nl.wms.ext.acs.service.dto.to.BaseResponse; import org.nl.wms.ext.acs.service.dto.to.BaseResponse;
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService; import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup; import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup;
@ -30,6 +32,7 @@ import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum;
import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum; import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum;
import org.nl.wms.sch.task_manage.task.core.TaskStatus; import org.nl.wms.sch.task_manage.task.core.TaskStatus;
import org.nl.wms.util.PointUtils; import org.nl.wms.util.PointUtils;
import org.nl.wms.util.PrintUtil;
import org.nl.wms.util.TaskUtils; import org.nl.wms.util.TaskUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@ -66,6 +69,8 @@ public class SortingSMTTask extends AbstractTask {
private ISchBasePointService schBasePointService; private ISchBasePointService schBasePointService;
@Autowired @Autowired
private ISchBaseVehiclematerialgroupService schBaseVehiclematerialgroupService; private ISchBaseVehiclematerialgroupService schBaseVehiclematerialgroupService;
@Autowired
private SysParamServiceImpl sysParamService;
@Override @Override
protected void create() throws BadRequestException { protected void create() throws BadRequestException {
@ -97,32 +102,7 @@ public class SortingSMTTask extends AbstractTask {
continue; continue;
} }
jsonObject.put("vehicle_type", schBasePoint.getCan_vehicle_type()); jsonObject.put("vehicle_type", schBasePoint.getCan_vehicle_type());
schBaseVehiclematerialgroupService.remove(Wrappers.lambdaQuery(SchBaseVehiclematerialgroup.class)
.eq(SchBaseVehiclematerialgroup::getVehicle_code, task.getVehicle_code()));
for (Object o : pallet_detail) {
JSONObject jO = (JSONObject) JSONObject.toJSON(o);
String workorder = jO.getString("ProductionOrder");
String ProductID = jO.getString("ProductID");
Integer qty = jO.getInteger("Currentqty");
String Jobname = jO.getString("Jobname");
String dueDate = jO.getString("DueDate");
String region_code = jO.getString("NextOperation");
SchBaseVehiclematerialgroup schBaseVehiclematerialgroup = new SchBaseVehiclematerialgroup();
schBaseVehiclematerialgroup.setVehicle_code(task.getVehicle_code());
schBaseVehiclematerialgroup.setPoint_code(schBasePoint.getPoint_code());
schBaseVehiclematerialgroup.setMaterial_id(ProductID);
schBaseVehiclematerialgroup.setMaterial_qty(qty);
schBaseVehiclematerialgroup.setRegion_code(region_code);
schBaseVehiclematerialgroup.setOrder_code(workorder);
schBaseVehiclematerialgroup.setJob_name(Jobname);
if (StrUtil.isNotEmpty(dueDate) && isValidISO8601(dueDate)) {
dueDate = parseDate(dueDate);
}
schBaseVehiclematerialgroup.setDue_date(dueDate);
schBaseVehiclematerialgroup.setCreate_name("Sorting");
schBaseVehiclematerialgroup.setExtend(JSON.toJSONString(jO));
schBaseVehiclematerialgroupService.create(schBaseVehiclematerialgroup);
}
// 设置终点并修改创建成功状态 // 设置终点并修改创建成功状态
task.setPoint_code2(schBasePoint.getPoint_code()); task.setPoint_code2(schBasePoint.getPoint_code());
@ -133,6 +113,37 @@ public class SortingSMTTask extends AbstractTask {
} }
} }
private void createVehicle(SchBaseTask task, JSONArray pallet_detail, SchBasePoint schBasePoint, String png_palletpath) {
schBaseVehiclematerialgroupService.remove(Wrappers.lambdaQuery(SchBaseVehiclematerialgroup.class)
.eq(SchBaseVehiclematerialgroup::getVehicle_code, task.getVehicle_code()));
Param sortingFilePath = sysParamService.findByCode(GeneralDefinition.SORTING_FILE_PATH);
for (Object o : pallet_detail) {
JSONObject jO = (JSONObject) JSONObject.toJSON(o);
String workorder = jO.getString("ProductionOrder");
String ProductID = jO.getString("ProductID");
Integer qty = jO.getInteger("Currentqty");
String Jobname = jO.getString("Jobname");
String dueDate = jO.getString("DueDate");
String region_code = jO.getString("NextOperation");
SchBaseVehiclematerialgroup schBaseVehiclematerialgroup = new SchBaseVehiclematerialgroup();
schBaseVehiclematerialgroup.setVehicle_code(task.getVehicle_code());
schBaseVehiclematerialgroup.setPoint_code(schBasePoint.getPoint_code());
schBaseVehiclematerialgroup.setMaterial_id(ProductID);
schBaseVehiclematerialgroup.setMaterial_qty(qty);
schBaseVehiclematerialgroup.setRegion_code(region_code);
schBaseVehiclematerialgroup.setOrder_code(workorder);
schBaseVehiclematerialgroup.setJob_name(Jobname);
schBaseVehiclematerialgroup.setVehicle_path(PrintUtil.imageToByteAndWriteToFile(png_palletpath, sortingFilePath.getValue()));
if (StrUtil.isNotEmpty(dueDate) && isValidISO8601(dueDate)) {
dueDate = parseDate(dueDate);
}
schBaseVehiclematerialgroup.setDue_date(dueDate);
schBaseVehiclematerialgroup.setCreate_name("Sorting");
schBaseVehiclematerialgroup.setExtend(JSON.toJSONString(jO));
schBaseVehiclematerialgroupService.create(schBaseVehiclematerialgroup);
}
}
public static boolean isValidISO8601(String dateString) { public static boolean isValidISO8601(String dateString) {
try { try {
ZonedDateTime.parse(dateString, ISO_8601_FORMATTER); ZonedDateTime.parse(dateString, ISO_8601_FORMATTER);
@ -206,6 +217,11 @@ public class SortingSMTTask extends AbstractTask {
.set(SchBasePoint::getPoint_status, GoodsEnum.IN_STOCK.getValue()) .set(SchBasePoint::getPoint_status, GoodsEnum.IN_STOCK.getValue())
); );
} }
String requestParam = taskObj.getRequest_param();
JSONObject jsonObject = JSONObject.parseObject(requestParam);
JSONArray pallet_detail = jsonObject.getJSONArray("pallet_detail");
String png_palletpath = jsonObject.getString("png_palletpath");
createVehicle(taskObj, pallet_detail, schBasePoint, png_palletpath);
// 任务完成 // 任务完成
taskObj.setTask_status(TaskStatus.FINISHED.getCode()); taskObj.setTask_status(TaskStatus.FINISHED.getCode());
taskObj.setRemark(GeneralDefinition.TASK_FINISH); taskObj.setRemark(GeneralDefinition.TASK_FINISH);

10
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/vehicle/controller/BmVehicleInfoController.java

@ -19,6 +19,7 @@ import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.util.List;
/** /**
* <p> * <p>
@ -97,5 +98,14 @@ public class BmVehicleInfoController {
vehicleInfoService.excelImport(file, request); vehicleInfoService.excelImport(file, request);
return new ResponseEntity<>(HttpStatus.OK); return new ResponseEntity<>(HttpStatus.OK);
} }
@GetMapping("/getVehicle")
@Log("获取载具号列表")
public ResponseEntity<Object> getVehicles() {
List<BmVehicleInfo> json = vehicleInfoService.getVehicles();
return new ResponseEntity<>(json, HttpStatus.OK);
}
} }

6
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/vehicle/service/IBmVehicleInfoService.java

@ -92,4 +92,10 @@ public interface IBmVehicleInfoService extends IService<BmVehicleInfo> {
JSONObject getVehicle(String code); JSONObject getVehicle(String code);
void excelImport(MultipartFile file, HttpServletRequest request); void excelImport(MultipartFile file, HttpServletRequest request);
/**
* 获取在列表中的载具信息
* @return
*/
List<BmVehicleInfo> getVehicles();
} }

5
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/vehicle/service/impl/BmVehicleInfoServiceImpl.java

@ -209,4 +209,9 @@ public class BmVehicleInfoServiceImpl extends ServiceImpl<BmVehicleInfoMapper, B
this.save(entity); this.save(entity);
} }
} }
@Override
public List<BmVehicleInfo> getVehicles() {
return baseMapper.selectList(Wrappers.lambdaQuery(BmVehicleInfo.class));
}
} }

102
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/PrintUtil.java

@ -3,6 +3,8 @@ package org.nl.wms.util;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.deepoove.poi.XWPFTemplate; import com.deepoove.poi.XWPFTemplate;
@ -12,12 +14,18 @@ import com.deepoove.poi.policy.HackLoopTableRenderPolicy;
import com.spire.doc.Document; import com.spire.doc.Document;
import com.spire.ms.Printing.PrinterSettings; import com.spire.ms.Printing.PrinterSettings;
import lombok.extern.slf4j.Slf4j; 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.system.service.param.impl.SysParamServiceImpl;
import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup; import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup;
import org.nl.wms.sch.task_manage.GeneralDefinition;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.io.*; import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.Arrays; import java.util.Arrays;
@ -73,73 +81,41 @@ public class PrintUtil {
} }
} }
public static void main(String[] args) throws IOException {
//加载Word文档
Document document = new Document();
// document.loadFromFile("D:\\znxj\\downloadPath\\中.docx");
document.loadFromFile("C:\\Users\\LENOVO\\Desktop\\1.docx");
//创建PrinterSettings对象
PrinterSettings printerSettings = new PrinterSettings();
//指定物理打印机名称
printerSettings.setPrinterName("NPI269576");
//设置打印份数
printerSettings.setCopies((short) 1);
//设置打印范围
printerSettings.setFromPage(2);
printerSettings.setToPage(4);
// 设置打印的起始页和结束页为文档的第一页和最后一页
printerSettings.setFromPage(1);
printerSettings.setToPage(document.getPageCount());
//应用打印设置
document.getPrintDocument().setPrinterSettings(printerSettings);
//执行打印
document.getPrintDocument().print();
/*XWPFTemplate template = null; public static String imageToByteAndWriteToFile(String imageUrl, String outputFilePath) {
ByteArrayOutputStream wordOut = new ByteArrayOutputStream(1024); if (StrUtil.isEmpty(imageUrl)) {
return null;
}
File file = new File(outputFilePath);
if (!file.exists()){
return null;
}
String fileName = imageUrl.replaceAll(".*/", "");
try { try {
File file = new File("C:\\Users\\LENOVO\\Desktop\\2.docx"); URL url = new URL(imageUrl);
FileInputStream fileInputStream = new FileInputStream(file); HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
//设置占位符: httpURLConnection.setRequestMethod("GET");
Configure config = Configure.builder()
.buildGramer("${", "}") //设置模板中的占位符${}, 默认是{{}} try (InputStream inputStream = httpURLConnection.getInputStream();
.setValidErrorHandler(new Configure.AbortHandler()) //若模板中占位符与填充属性不对应,则报错; FileOutputStream fileOutputStream = new FileOutputStream(outputFilePath + "/" + fileName)) {
.bind("list", new HackLoopTableRenderPolicy()) //设置模板中表格的参数属性
.build(); byte[] buffer = new byte[1024];
JSONObject jsonObject = new JSONObject(); int bytesRead;
jsonObject.put("vehicleCode","G001"); while ((bytesRead = inputStream.read(buffer)) != -1) {
List<JSONObject> jsonObjectList = new ArrayList<>(); fileOutputStream.write(buffer, 0, bytesRead);
JSONObject jsonObject1 = new JSONObject();
jsonObject1.put("orderCode","23451y4967");
jsonObject1.put("number","328458732");
jsonObject1.put("qty","22");
jsonObject1.put("next","111-11");
jsonObject1.put("dueDate","2023-12-12 04:00:00");
jsonObject1.put("index","1");
JSONObject jsonObject2 = new JSONObject();
jsonObject2.put("orderCode","23451y496");
jsonObject2.put("number","32845873");
jsonObject2.put("qty","23");
jsonObject2.put("next","111-12");
jsonObject2.put("dueDate","2023-12-12 05:00:00");
jsonObject2.put("index","2");
jsonObjectList.add(jsonObject1);
jsonObjectList.add(jsonObject2);
jsonObject.put("list",jsonObjectList);
//填充文本域:
template = XWPFTemplate.compile(fileInputStream, config).render(jsonObject);
// template.write(wordOut);
template.writeToFile("C:\\Users\\LENOVO\\Desktop\\1.docx");
}catch (RenderException | IOException ex){
throw ex;
} finally {
try {
if (template != null){
template.close();
} }
} catch (IOException ex) { } finally {
httpURLConnection.disconnect();
} }
}*/ } catch (IOException e) {
e.printStackTrace();
}
SysParamServiceImpl sysParamService = SpringContextHolder.getBean(SysParamServiceImpl.class);
Param localHostPost = sysParamService.findByCode(GeneralDefinition.LOCALHOST_POST);
if(ObjectUtil.isEmpty(localHostPost)){
throw new BadRequestException("图片ip端口号未填写");
}
return localHostPost.getValue() + "/" + fileName;
} }

1
lms/nladmin-ui/src/views/wms/produceScreen/index.vue

@ -380,6 +380,7 @@ export default {
}) })
} else if (type === 'PALLET') { } else if (type === 'PALLET') {
crudProduceScreen.selectMaterialAndJpg(this.popData.device_code).then(res => { crudProduceScreen.selectMaterialAndJpg(this.popData.device_code).then(res => {
this.imgSrc = res.vehiclePath
this.popList = [...res.materialList] this.popList = [...res.materialList]
}) })
this.show = true this.show = true

126
lms/nladmin-ui/src/views/wms/sch/group/index.vue

@ -49,23 +49,6 @@
@keyup.enter.native="crud.toQuery" @keyup.enter.native="crud.toQuery"
/> />
</el-form-item> </el-form-item>
<!-- <el-form-item label="绑定状态">
<el-select
v-model="query.group_bind_material_status"
clearable
size="mini"
placeholder="绑定状态"
class="filter-item"
@change="hand"
>
<el-option
v-for="item in dict.group_bind_material_status"
:key="item.label"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item> -->
<el-form-item label="jobName"> <el-form-item label="jobName">
<el-input <el-input
v-model="query.job_name" v-model="query.job_name"
@ -104,12 +87,6 @@
<el-form-item label="载具编码"> <el-form-item label="载具编码">
<el-input v-model="form.vehicle_code" style="width: 240px;" /> <el-input v-model="form.vehicle_code" style="width: 240px;" />
</el-form-item> </el-form-item>
<!--<el-form-item label="子载具编码">
<el-input v-model="form.child_vehicle_code" style="width: 240px;" />
</el-form-item>-->
<!-- <el-form-item v-if="false" label="来源载具">
<el-input v-model="form.source_vehicle_code" style="width: 240px;" />
</el-form-item> -->
<el-form-item label="入库时间"> <el-form-item label="入库时间">
<el-date-picker <el-date-picker
v-model="form.create_time" v-model="form.create_time"
@ -119,47 +96,6 @@
placeholder="选择日期时间" placeholder="选择日期时间"
/> />
</el-form-item> </el-form-item>
<el-form-item label="点位编码">
<el-select
v-model="form.theLocation"
clearable
filterable
placeholder="请选择"
style="width: 240px;"
@change="setPointName"
>
<el-option
v-for="item in pointList"
:key="item.point_code"
:label="item.point_code"
:value="item.point_code"
>
<span style="float: left">{{ item.point_name }}</span>
<span style="float: right; color: #8492a6; font-size: 13px">{{ item.point_code }}</span>
</el-option>
</el-select>
<!-- <el-input v-model="form.point_code" style="width: 240px;" />-->
</el-form-item>
<!-- <el-form-item label="点位名称">
<el-input v-model="form.point_name" style="width: 240px;" disabled />
</el-form-item> -->
<!-- <el-form-item label="是否满托">
<el-radio-group v-model="form.is_full" style="width: 240px">
<el-radio :label="true"></el-radio>
<el-radio :label="false"></el-radio>
</el-radio-group>
</el-form-item> -->
<!-- <el-form-item label="批次">
<el-input v-model="form.pcsn" style="width: 240px;" />
</el-form-item>
<el-form-item label="静置时间(分钟)">
<el-input-number
v-model.number="form.standing_time"
:min="1"
:max="999"
style="width: 240px;"
/>
</el-form-item> -->
<el-form-item label="物料数量"> <el-form-item label="物料数量">
<el-input-number <el-input-number
v-model.number="form.material_qty" v-model.number="form.material_qty"
@ -167,65 +103,13 @@
style="width: 240px;" style="width: 240px;"
/> />
</el-form-item> </el-form-item>
<!-- <el-form-item label="物料重量">
<el-input-number
v-model.number="form.material_weight"
:min="0"
style="width: 240px;"
/>
</el-form-item> -->
<el-form-item label="订单编码"> <el-form-item label="订单编码">
<el-input v-model="form.order_code" style="width: 240px;" /> <el-input v-model="form.order_code" style="width: 240px;" />
</el-form-item> </el-form-item>
<!-- <el-form-item label="物料来源">
<el-radio-group v-model="choose" size="mini" style="width: 240px;">
<el-radio-button label="物料" />
<el-radio-button label="工单" />
</el-radio-group>
</el-form-item> -->
<el-form-item label="物料编码"> <el-form-item label="物料编码">
<el-input v-model="form.material_id" clearable style="width: 240px;" /> <el-input v-model="form.material_id" clearable style="width: 240px;" />
</el-form-item> </el-form-item>
<!-- <el-form-item label="物料名称">
<el-input v-model="form.material_name" clearable style="width: 240px;" @clear="clearMaterial" @focus="getMaterial" />
</el-form-item>
<el-form-item label="物料编码">
<el-input v-model="form.material_code" disabled style="width: 240px;" />
</el-form-item>
<el-form-item label="物料规格">
<el-input v-model="form.material_spec" disabled style="width: 240px;" />
</el-form-item>
<el-form-item label="组盘次数">
<el-input v-model="form.group_number" style="width: 240px;" />
</el-form-item> -->
<!-- <el-form-item label="任务编码">
<el-input v-model="form.task_code" style="width: 240px;" />
</el-form-item> -->
<!--<el-form-item label="车间编码">
<el-input v-model="form.workshop_code" style="width: 240px;" />
</el-form-item>-->
<!-- <el-form-item label="组盘状态">
<el-select
v-model="form.group_status"
size="mini"
placeholder="点位状态"
class="filter-item"
style="width: 240px;"
clearable
>
<el-option
v-for="item in dict.group_status"
:key="item.label"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item> -->
<!--<el-form-item label="是否首个流程任务">
<el-input v-model="form.is_first_flow_task" style="width: 240px;" />
</el-form-item>-->
<el-form-item label="工艺编码"> <el-form-item label="工艺编码">
<!-- <el-input v-model="form.region_code" style="width: 240px;" /> -->
<el-select <el-select
v-model="form.region_code" v-model="form.region_code"
clearable clearable
@ -251,12 +135,6 @@
placeholder="选择日期时间" placeholder="选择日期时间"
/> />
</el-form-item> </el-form-item>
<!-- <el-form-item label="上一任务">
<el-input v-model="form.before_task_code" style="width: 240px;" />
</el-form-item>
<el-form-item label="下一任务">
<el-input v-model="form.next_task_code" style="width: 240px;" />
</el-form-item> -->
<el-form-item label="备注" prop="remark"> <el-form-item label="备注" prop="remark">
<label slot="label">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:</label> <label slot="label">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:</label>
<el-input v-model.trim="form.remark" style="width: 480px;" rows="2" type="textarea" :disabled="crud.status.view > 0" /> <el-input v-model.trim="form.remark" style="width: 480px;" rows="2" type="textarea" :disabled="crud.status.view > 0" />
@ -438,7 +316,7 @@ export default {
idField: 'group_id', idField: 'group_id',
sort: 'vehicle_code,desc', sort: 'vehicle_code,desc',
optShow: { optShow: {
add: false, add: true,
edit: true, edit: true,
del: true, del: true,
download: false, download: false,
@ -487,7 +365,7 @@ export default {
this.dialogVisible1 = true this.dialogVisible1 = true
crudSchBaseVehiclematerialgroup.selectMaterialFile(groupId).then(res => { crudSchBaseVehiclematerialgroup.selectMaterialFile(groupId).then(res => {
console.log(res.data) console.log(res.data)
this.materialFile = res this.materialFile = 'http://localhost:8081/1.jpg'
}) })
// //
}, },

Loading…
Cancel
Save