Browse Source

fix: mes接口修改

master
李永德 2 years ago
parent
commit
2a7b36edaa
  1. 2
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/LogMessageConstant.java
  2. 37
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/controller/CockPitController.java
  3. 16
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/CockpitService.java
  4. 14
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/dao/PersonnelMonthlyProductionVo.java
  5. 16
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/dao/PressProductHeaderVo.java
  6. 25
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/dao/ProductTaskVo.java
  7. 16
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/dao/ShiftProductionVo.java
  8. 90
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/impl/CockpitServiceImpl.java
  9. 23
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/mapper/CockPitMapper.java
  10. 65
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/mapper/CockPitMapper.xml
  11. 14
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/brick/service/IMdBaseBrickInfoService.java
  12. 8
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/brick/service/dao/mapper/MdBaseBrickInfoMapper.java
  13. 14
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/brick/service/dao/mapper/MdBaseBrickInfoMapper.xml
  14. 10
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/brick/service/impl/MdBaseBrickInfoServiceImpl.java
  15. 119
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java
  16. 63
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/autotask/AutoSaveWaitGdyInfo.java
  17. 8
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/WmsToMesService.java
  18. 5
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dao/mapper/MesRequestMapper.java
  19. 26
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dao/mapper/MesRequestMapper.xml
  20. 47
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesGdyInfoWaitDto.java
  21. 22
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/impl/WmsToMesServiceImpl.java
  22. 49
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/controller/PdaController.java
  23. 18
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/PdaService.java
  24. 18
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/dto/BlendingMoveDto.java
  25. 14
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/dto/ForcedRestingDto.java
  26. 2
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/dto/ManualGroupDto.java
  27. 19
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/mapper/PdaMapper.java
  28. 34
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/mapper/PdaMapper.xml
  29. 19
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/vo/StandTimeShowVo.java
  30. 120
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/impl/PdaServiceImpl.java
  31. 6
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/PdmBdWorkorder.java
  32. 5
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/impl/PdmBdWorkorderServiceImpl.java
  33. 2
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/ISchBaseVehiclematerialgroupService.java
  34. 34
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/impl/SchBaseVehiclematerialgroupServiceImpl.java
  35. 11
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJSKTask.java
  36. 10
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/HNMLTask.java
  37. 2
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/mapper/HNMapper.xml
  38. 2
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yao/GZYQLTask.java
  39. 3
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZSKTask.java
  40. 28
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/CommonUtils.java
  41. 57
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/DatabaseBackup.java
  42. 2
      lms/nladmin-system/nlsso-server/src/main/resources/config/application.yml
  43. 6
      lms/nladmin-system/nlsso-server/src/test/java/org/nl/point/test.java

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

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

37
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/controller/CockPitController.java

@ -0,0 +1,37 @@
package org.nl.wms.cockpit.controller;
import cn.dev33.satoken.annotation.SaIgnore;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.logging.annotation.Log;
import org.nl.wms.cockpit.service.CockpitService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Author: lyd
* @Description: 看板
* @Date: 2023/9/25
*/
@Slf4j
@RestController
@Api(tags = "看板接口")
@RequestMapping("/api/cockpit")
@SaIgnore
public class CockPitController {
@Autowired
private CockpitService cockpitService;
@PostMapping("/press")
@Log("压制看板")
@ApiOperation("压制看板")
public ResponseEntity<Object> PressedMonitor(){
return new ResponseEntity<>(cockpitService.PressedMonitor(), HttpStatus.OK);
}
}

16
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/CockpitService.java

@ -0,0 +1,16 @@
package org.nl.wms.cockpit.service;
import java.util.concurrent.ConcurrentHashMap;
/**
* @Author: lyd
* @Description: 看板
* @Date: 2023/9/25
*/
public interface CockpitService {
/**
* 压制看板
* @return
*/
ConcurrentHashMap<String,Object> PressedMonitor();
}

14
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/dao/PersonnelMonthlyProductionVo.java

@ -0,0 +1,14 @@
package org.nl.wms.cockpit.service.dao;
import lombok.Data;
/**
* @Author: lyd
* @Description: 月生产总值
* @Date: 2023/9/25
*/
@Data
public class PersonnelMonthlyProductionVo {
private String operator;
private String real_qty;
}

16
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/dao/PressProductHeaderVo.java

@ -0,0 +1,16 @@
package org.nl.wms.cockpit.service.dao;
import lombok.Data;
/**
* @Author: lyd
* @Description: 当前班次计划生产已生产不合格产品数
* @Date: 2023/9/25
*/
@Data
public class PressProductHeaderVo {
private String plan_qty;
private String real_qty;
private String unqualified_qty;
private String qualified_qty;
}

25
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/dao/ProductTaskVo.java

@ -0,0 +1,25 @@
package org.nl.wms.cockpit.service.dao;
import lombok.Data;
/**
* @Author: lyd
* @Description: 生产任务
* @Date: 2023/9/25
*/
@Data
public class ProductTaskVo {
private String device;
private String workorder_code;
private String team;
private String material_name;
private String planproducestart_date;
private String plan_qty;
private String real_qty;
private String unqualified_qty;
private String qualified_rate;
private String workorder_status;
private String operator;
private String realproducestart_date;
private String realproduceend_date;
}

16
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/dao/ShiftProductionVo.java

@ -0,0 +1,16 @@
package org.nl.wms.cockpit.service.dao;
import lombok.Data;
/**
* @Author: lyd
* @Description: 当班生产VO
* @Date: 2023/9/25
*/
@Data
public class ShiftProductionVo {
private String column_name;
private String qualified_qty;
private String unqualified_qty;
private String total_difference;
}

90
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/impl/CockpitServiceImpl.java

@ -0,0 +1,90 @@
package org.nl.wms.cockpit.service.impl;
import lombok.extern.slf4j.Slf4j;
import org.nl.config.thread.ThreadPoolExecutorUtil;
import org.nl.wms.cockpit.service.CockpitService;
import org.nl.wms.cockpit.service.dao.PersonnelMonthlyProductionVo;
import org.nl.wms.cockpit.service.dao.PressProductHeaderVo;
import org.nl.wms.cockpit.service.dao.ProductTaskVo;
import org.nl.wms.cockpit.service.dao.ShiftProductionVo;
import org.nl.wms.cockpit.service.mapper.CockPitMapper;
import org.nl.wms.util.CommonUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ThreadPoolExecutor;
/**
* @Author: lyd
* @Description:
* @Date: 2023/9/25
*/
@Slf4j
@Service
public class CockpitServiceImpl implements CockpitService {
@Autowired
private CockPitMapper cockPitMapper;
@Override
public ConcurrentHashMap<String, Object> PressedMonitor() {
ThreadPoolExecutor pool = ThreadPoolExecutorUtil.getPoll();
ConcurrentHashMap<String, Object> map = new ConcurrentHashMap<>();
// 1、当前班次、计划生产、已生产、不合格产品数
String dayShift = CommonUtils.getDayShift(); // 白班、晚班
map.put("DayShift", dayShift);
CompletableFuture<List<PressProductHeaderVo>> listCompletableFuture = CompletableFuture.supplyAsync(
() -> cockPitMapper.getPressProductHeaderList(dayShift), pool);
listCompletableFuture.thenAccept(result -> {
map.put("DayShiftList", result);
}).exceptionally((e) -> {
log.error("获取当班信息: {}", e.getMessage(), e);
map.put("DayShiftList", null);
return null;
});
// 2、当班生产
CompletableFuture<List<ShiftProductionVo>> listShiftProductionFuture = CompletableFuture.supplyAsync(
() -> cockPitMapper.getShiftProductionList(dayShift), pool);
listShiftProductionFuture.thenAccept(result -> {
map.put("ShiftProductionList", result);
}).exceptionally((e) -> {
log.error("当班生产: {}", e.getMessage(), e);
map.put("ShiftProductionList", null);
return null;
});
// 3、人员月生产
CompletableFuture<List<PersonnelMonthlyProductionVo>> listPersonnelMonthlyProductionFuture = CompletableFuture.supplyAsync(
() -> cockPitMapper.getPersonnelMonthlyProductionList(dayShift), pool);
listPersonnelMonthlyProductionFuture.thenAccept(result -> {
map.put("PersonnelMonthlyProduction", result);
}).exceptionally((e) -> {
log.error("人员月生产: {}", e.getMessage(), e);
map.put("PersonnelMonthlyProduction", null);
return null;
});
// 4、生产任务
CompletableFuture<List<ProductTaskVo>> listProductionTaskFuture = CompletableFuture.supplyAsync(
() -> cockPitMapper.getProductionTaskList(), pool);
listProductionTaskFuture.thenAccept(result -> {
map.put("ProductionTask", result);
}).exceptionally((e) -> {
log.error("生产任务: {}", e.getMessage(), e);
map.put("ProductionTask", null);
return null;
});
// 提交
CompletableFuture<Void> allQuery = CompletableFuture.allOf(
listCompletableFuture,
listShiftProductionFuture,
listPersonnelMonthlyProductionFuture,
listProductionTaskFuture);
CompletableFuture<ConcurrentHashMap<String, Object>> future
= allQuery.thenApply((result) -> map).exceptionally((e) -> {
log.error(e.getMessage(), e);
return null;
});
future.join();
return map;
}
}

23
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/mapper/CockPitMapper.java

@ -0,0 +1,23 @@
package org.nl.wms.cockpit.service.mapper;
import org.nl.wms.cockpit.service.dao.PersonnelMonthlyProductionVo;
import org.nl.wms.cockpit.service.dao.PressProductHeaderVo;
import org.nl.wms.cockpit.service.dao.ProductTaskVo;
import org.nl.wms.cockpit.service.dao.ShiftProductionVo;
import java.util.List;
/**
* @Author: lyd
* @Description:
* @Date: 2023/9/25
*/
public interface CockPitMapper {
List<PressProductHeaderVo> getPressProductHeaderList(String dayShift);
List<ShiftProductionVo> getShiftProductionList(String dayShift);
List<PersonnelMonthlyProductionVo> getPersonnelMonthlyProductionList(String dayShift);
List<ProductTaskVo> getProductionTaskList();
}

65
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/mapper/CockPitMapper.xml

@ -0,0 +1,65 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.nl.wms.cockpit.service.mapper.CockPitMapper">
<select id="getPressProductHeaderList" resultType="org.nl.wms.cockpit.service.dao.PressProductHeaderVo">
SELECT
SUM(w.plan_qty) AS plan_qty,
SUM(w.real_qty) AS real_qty,
SUM(w.qualified_qty) AS qualified_qty,
SUM(w.unqualified_qty) AS unqualified_qty
FROM
pdm_bd_workorder w
WHERE
DATE( w.produce_date ) = CURDATE() AND w.team = #{dayShift};
</select>
<select id="getShiftProductionList" resultType="org.nl.wms.cockpit.service.dao.ShiftProductionVo">
SELECT
w.point_name AS column_name,
SUM(w.qualified_qty) AS qualified_qty,
SUM(w.unqualified_qty) AS unqualified_qty,
SUM(w.plan_qty - w.qualified_qty - w.unqualified_qty) AS total_difference
FROM
`pdm_bd_workorder` w
WHERE
DATE( w.produce_date ) = CURDATE()
AND w.team = #{dayShift}
GROUP BY w.point_name
</select>
<select id="getPersonnelMonthlyProductionList"
resultType="org.nl.wms.cockpit.service.dao.PersonnelMonthlyProductionVo">
SELECT
w.operator,
SUM(w.real_qty) AS real_qty
FROM
`pdm_bd_workorder` w
WHERE DATE_FORMAT(w.produce_date, '%Y-%m') = DATE_FORMAT(CURDATE(), '%Y-%m') AND w.team = '白班'
GROUP BY w.operator
</select>
<select id="getProductionTaskList" resultType="org.nl.wms.cockpit.service.dao.ProductTaskVo">
SELECT
w.point_name AS device,
w.workorder_code,
w.team,
m.material_name,
w.planproducestart_date,
w.plan_qty,
w.real_qty,
w.unqualified_qty,
((w.qualified_qty / w.plan_qty) * 100) AS qualified_rate,
CASE w.workorder_status
WHEN '1' THEN '未生产'
WHEN '2' THEN '已下发'
WHEN '3' THEN '生产中'
WHEN '4' THEN '暂停'
WHEN '5' THEN '完成'
ELSE ''
END AS workorder_status,
w.operator,
IF(LENGTH(w.realproducestart_date)>0,w.realproducestart_date,'-') AS realproducestart_date,
IF(LENGTH(w.realproduceend_date)>0,w.realproduceend_date,'-') AS realproduceend_date
FROM
`pdm_bd_workorder` w
LEFT JOIN md_base_material m ON m.material_id = w.material_id
ORDER BY w.team DESC, w.workorder_status
</select>
</mapper>

14
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/brick/service/IMdBaseBrickInfoService.java

@ -53,4 +53,18 @@ public interface IMdBaseBrickInfoService extends IService<MdBaseBrickInfo> {
* @param deviceCode : 放砖位置-压制对接位 * @param deviceCode : 放砖位置-压制对接位
*/ */
void setGroupByCurrentAllBrick(String deviceCode, String groupId); void setGroupByCurrentAllBrick(String deviceCode, String groupId);
/**
* 工单合格数量
* @param workorderCode
* @return
*/
int getCountQualifiedQty(String workorderCode);
/**
* 工单不合格数量
* @param workorderCode
* @return
*/
int getCountUnqualifiedQty(String workorderCode);
} }

8
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/brick/service/dao/mapper/MdBaseBrickInfoMapper.java

@ -9,4 +9,12 @@ import org.nl.wms.database.brick.service.dao.MdBaseBrickInfo;
**/ **/
public interface MdBaseBrickInfoMapper extends BaseMapper<MdBaseBrickInfo> { public interface MdBaseBrickInfoMapper extends BaseMapper<MdBaseBrickInfo> {
/**
* 合格数
* @param workorderCode
* @return
*/
int getCountQualifiedQty(String workorderCode);
int getCountUnqualifiedQty(String workorderCode);
} }

14
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/brick/service/dao/mapper/MdBaseBrickInfoMapper.xml

@ -2,4 +2,18 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.nl.wms.database.brick.service.dao.mapper.MdBaseBrickInfoMapper"> <mapper namespace="org.nl.wms.database.brick.service.dao.mapper.MdBaseBrickInfoMapper">
<select id="getCountQualifiedQty" resultType="java.lang.Integer">
SELECT
COUNT(*)
FROM
`md_base_brick_info` mi
WHERE mi.workorder_code = #{workorderCode} AND mi.put_station LIKE CONCAT(mi.get_station, '%')
</select>
<select id="getCountUnqualifiedQty" resultType="java.lang.Integer">
SELECT
COUNT(*)
FROM
`md_base_brick_info` mi
WHERE mi.workorder_code = #{workorderCode} AND mi.put_station LIKE 'YZBHGW%'
</select>
</mapper> </mapper>

10
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/brick/service/impl/MdBaseBrickInfoServiceImpl.java

@ -78,6 +78,16 @@ public class MdBaseBrickInfoServiceImpl extends ServiceImpl<MdBaseBrickInfoMappe
.eq(MdBaseBrickInfo::getIs_group, false)); .eq(MdBaseBrickInfo::getIs_group, false));
} }
@Override
public int getCountQualifiedQty(String workorderCode) {
return mdBaseBrickInfoMapper.getCountQualifiedQty(workorderCode);
}
@Override
public int getCountUnqualifiedQty(String workorderCode) {
return mdBaseBrickInfoMapper.getCountUnqualifiedQty(workorderCode);
}
private MdBaseBrickInfo toBrickInfoMapper(BrickInfoDto dto) { private MdBaseBrickInfo toBrickInfoMapper(BrickInfoDto dto) {
// 获取压机工单 // 获取压机工单
PdmBdWorkorder productionTask = workorderService.getDeviceProductionTask(dto.getGet_station()); PdmBdWorkorder productionTask = workorderService.getDeviceProductionTask(dto.getGet_station());

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

@ -495,6 +495,11 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
bdWorkorder.setWorkorder_status(WorkOrderStatusEnum.COMPLETE.getCode()); bdWorkorder.setWorkorder_status(WorkOrderStatusEnum.COMPLETE.getCode());
bdWorkorder.setRealproduceend_date(DateUtil.now()); bdWorkorder.setRealproduceend_date(DateUtil.now());
TaskUtils.setWorkOrderUpdateByAcs(bdWorkorder); TaskUtils.setWorkOrderUpdateByAcs(bdWorkorder);
// 统计合不合格数量到工单字段中
int qualified_qty = baseBrickInfoService.getCountQualifiedQty(bdWorkorder.getWorkorder_code());
int unqualified_qty = baseBrickInfoService.getCountUnqualifiedQty(bdWorkorder.getWorkorder_code());
bdWorkorder.setQualified_qty(qualified_qty);
bdWorkorder.setUnqualified_qty(unqualified_qty);
workorderService.updateById(bdWorkorder); workorderService.updateById(bdWorkorder);
// todo: 统计当前设备的不合格位置的数量作为不合格数,并上报给mes // todo: 统计当前设备的不合格位置的数量作为不合格数,并上报给mes
wmsToMesService.reportPressUnusedMaterial(bdWorkorder); wmsToMesService.reportPressUnusedMaterial(bdWorkorder);
@ -504,23 +509,34 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
/** /**
* 扫码成功申请 - 判断是否静置完成 * 扫码成功申请 - 判断是否静置完成
*/ */
@SneakyThrows
@Override @Override
public ApplyTaskResponse barcodeSuccessApply(JSONObject param) { public ApplyTaskResponse barcodeSuccessApply(JSONObject param) {
ApplyTaskRequest baseRequest = param.toJavaObject(ApplyTaskRequest.class); ApplyTaskRequest baseRequest = param.toJavaObject(ApplyTaskRequest.class);
ApplyTaskResponse taskResponse = ApplyTaskResponse.responseOk(baseRequest.getRequestNo()); ApplyTaskResponse taskResponse = ApplyTaskResponse.responseOk(baseRequest.getRequestNo());
String deviceCode = baseRequest.getDevice_code(); String deviceCode = baseRequest.getDevice_code();
SchBasePoint basePoint = pointService.getById(deviceCode); // 获取点位实体 RLock lock = redissonClient.getLock(deviceCode);
switch (basePoint.getRegion_code()) { boolean tryLock = lock.tryLock(5, TimeUnit.SECONDS);
case GeneralDefinition.LZKLX: // 如果是困料线位置就是判断是否静置完成 try {
return this.isStandingFinish(baseRequest); // 直接返回 if (tryLock) {
case GeneralDefinition.GZY: // 如果是入窑口就是记录数据 SchBasePoint basePoint = pointService.getById(deviceCode); // 获取点位实体
return this.recordKilnTime(baseRequest); // 直接返回 switch (basePoint.getRegion_code()) {
default: case GeneralDefinition.LZKLX: // 如果是困料线位置就是判断是否静置完成
taskResponse.setMessage("参数错误!"); return this.isStandingFinish(baseRequest); // 直接返回
taskResponse.setCode(HttpStatus.HTTP_BAD_REQUEST); case GeneralDefinition.GZY: // 如果是入窑口就是记录数据
return taskResponse; return this.recordKilnTime(baseRequest); // 直接返回
default:
taskResponse.setMessage("参数错误!");
taskResponse.setCode(HttpStatus.HTTP_BAD_REQUEST);
return taskResponse;
}
}
} finally {
if (tryLock) {
lock.unlock();
}
} }
return null;
} }
/** /**
@ -802,45 +818,58 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
/** /**
* 实时修改点位状态 * 实时修改点位状态
*/ */
@SneakyThrows
@Override @Override
public BaseResponse realTimeSetPoint(JSONObject param) { public BaseResponse realTimeSetPoint(JSONObject param) {
log.info("ACS修改点位状态:{}", param); log.info("ACS修改点位状态:{}", param);
ApplySignalStatusRequest actionRequest = param.toJavaObject(ApplySignalStatusRequest.class); ApplySignalStatusRequest actionRequest = param.toJavaObject(ApplySignalStatusRequest.class);
String deviceCode = actionRequest.getDevice_code(); String deviceCode = actionRequest.getDevice_code();
String move = null; RLock lock = redissonClient.getLock(deviceCode);
if (ObjectUtil.isNotEmpty(actionRequest.getMove())) { boolean tryLock = lock.tryLock(3, TimeUnit.SECONDS);
move = (Integer.parseInt(actionRequest.getMove()) + 1) + ""; try {
} if (tryLock) {
String action = actionRequest.getAction(); String move = null;
String vehicleType = actionRequest.getVehicle_type(); if (ObjectUtil.isNotEmpty(actionRequest.getMove())) {
if (deviceCode == null) { move = (Integer.parseInt(actionRequest.getMove()) + 1) + "";
return BaseResponse.responseError(actionRequest.getRequestNo(), "设备编码不能为空"); }
} String action = actionRequest.getAction();
// 找到点位 String vehicleType = actionRequest.getVehicle_type();
SchBasePoint schBasePoint = pointService.getById(deviceCode); if (deviceCode == null) {
if (ObjectUtil.isEmpty(schBasePoint)) { return BaseResponse.responseError(actionRequest.getRequestNo(), "设备编码不能为空");
return BaseResponse.responseError(actionRequest.getRequestNo(), "设备: [" + deviceCode + "]未找到"); }
} // 找到点位
// 点位的状态如果是null,就默认是空位置 SchBasePoint schBasePoint = pointService.getById(deviceCode);
String pointStatus = ObjectUtil.isNotEmpty(schBasePoint.getPoint_status()) if (ObjectUtil.isEmpty(schBasePoint)) {
? schBasePoint.getPoint_status() return BaseResponse.responseError(actionRequest.getRequestNo(), "设备: [" + deviceCode + "]未找到");
: PointStatusEnum.EMPTY_POINT.getCode(); }
if ((pointStatus.equals(PointStatusEnum.FULL_POINT.getCode()) // 点位的状态如果是null,就默认是空位置
&& move.equals(PointStatusEnum.EMPTY_VEHICLE.getCode())) || (pointStatus.equals(move))) { // 不做操作 String pointStatus = ObjectUtil.isNotEmpty(schBasePoint.getPoint_status())
return BaseResponse.responseOk(actionRequest.getRequestNo()); ? schBasePoint.getPoint_status()
} : PointStatusEnum.EMPTY_POINT.getCode();
// 载具类型不为空,并且不是0的情况,lmsVehicleTypeShift:转成lms的载具类型 if ((pointStatus.equals(PointStatusEnum.FULL_POINT.getCode())
if (ObjectUtil.isNotEmpty(vehicleType) && !vehicleType.equals(GeneralDefinition.NO)) { && move.equals(PointStatusEnum.EMPTY_VEHICLE.getCode())) || (pointStatus.equals(move))) { // 不做操作
schBasePoint.setVehicle_type(vehicleType); return BaseResponse.responseOk(actionRequest.getRequestNo());
} }
if (ObjectUtil.isNotEmpty(action)) { // 载具类型不为空,并且不是0的情况,lmsVehicleTypeShift:转成lms的载具类型
schBasePoint.setIs_used(!action.equals(GeneralDefinition.NO)); if (ObjectUtil.isNotEmpty(vehicleType) && !vehicleType.equals(GeneralDefinition.NO)) {
} schBasePoint.setVehicle_type(vehicleType);
// move为空则表示无货 }
schBasePoint.setPoint_status(move == null ? PointStatusEnum.EMPTY_POINT.getCode() : move); if (ObjectUtil.isNotEmpty(action)) {
PointUtils.setUpdateByAcs(schBasePoint); schBasePoint.setIs_used(!action.equals(GeneralDefinition.NO));
pointService.updateById(schBasePoint); }
log.info("点位" + schBasePoint.getPoint_code() + "更新之后:{}", schBasePoint); // move为空则不修改
if (ObjectUtil.isNotEmpty(move)) {
schBasePoint.setPoint_status(move);
}
PointUtils.setUpdateByAcs(schBasePoint);
pointService.updateById(schBasePoint);
log.info("点位" + schBasePoint.getPoint_code() + "更新之后:{}", schBasePoint);
}
} finally {
if (tryLock) {
lock.unlock();
}
}
return BaseResponse.responseOk(actionRequest.getRequestNo()); return BaseResponse.responseOk(actionRequest.getRequestNo());
} }
} }

63
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/autotask/AutoSaveWaitGdyInfo.java

@ -0,0 +1,63 @@
package org.nl.wms.ext.mes.autotask;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.nl.system.service.notice.ISysNoticeService;
import org.nl.wms.ext.mes.service.WmsToMesService;
import org.nl.wms.ext.mes.service.dao.mapper.MesRequestMapper;
import org.nl.wms.ext.mes.service.dto.MesGdyInfoWaitDto;
import org.nl.wms.sch.task_manage.GeneralDefinition;
import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
/**
* @Author: lyd
* @Description: 定时保存待入窑
* @Date: 2023/9/22
*/
@Slf4j
@Component
@Order(value = 1)
public class AutoSaveWaitGdyInfo {
@Autowired
private WmsToMesService wmsToMesService;
@Autowired
private MesRequestMapper mesRequestMapper;
@Autowired
private ISysNoticeService noticeService;
@SneakyThrows
public void run() {
// 获取滚筒线内数据
List<MesGdyInfoWaitDto> list = wmsToMesService.getAllWaitIntoGdyInfos();
AtomicInteger successNum = new AtomicInteger();
long startTime = System.currentTimeMillis();
// 存入表中
list.forEach(mesGdyInfoWaitDto -> {
mesGdyInfoWaitDto.setMSGID(IdUtil.getSnowflake(1,1).nextIdStr());
mesGdyInfoWaitDto.setSEND_TM(DateUtil.now());
mesGdyInfoWaitDto.setPRO_SUBUNIT("块");
mesGdyInfoWaitDto.setCREATE_TM(DateUtil.now());
mesGdyInfoWaitDto.setOP_FLAG(GeneralDefinition.NO);
// 插入
try {
mesRequestMapper.insertGdyMaterialWait(mesGdyInfoWaitDto);
successNum.incrementAndGet();
} catch (Exception e) {
log.error("插入窑前失败的数据: {}", mesGdyInfoWaitDto);
log.error("插入窑前失败的信息:{}", e.getMessage());
// notice通知
noticeService.createNotice(e.getMessage(), "窑前数据同步失败" + mesGdyInfoWaitDto.getMSGID(), NoticeTypeEnum.NOTIFICATION.getCode());
}
});
long endTime = System.currentTimeMillis();
log.info("窑前数据有" + list.size() + "条,成功" + successNum.get() + "条, 消耗时长:" + (endTime - startTime) + "ms");
}
}

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

@ -1,6 +1,8 @@
package org.nl.wms.ext.mes.service; package org.nl.wms.ext.mes.service;
import org.nl.wms.ext.mes.autotask.AutoSaveWaitGdyInfo;
import org.nl.wms.ext.mes.service.dto.MesGdyInfoDto; import org.nl.wms.ext.mes.service.dto.MesGdyInfoDto;
import org.nl.wms.ext.mes.service.dto.MesGdyInfoWaitDto;
import org.nl.wms.ext.mes.service.dto.MesMudConsumptionDto; import org.nl.wms.ext.mes.service.dto.MesMudConsumptionDto;
import org.nl.wms.ext.mes.service.dto.MesSemiProductionInfo; import org.nl.wms.ext.mes.service.dto.MesSemiProductionInfo;
import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder; import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder;
@ -67,4 +69,10 @@ public interface WmsToMesService {
* @param workorderCode * @param workorderCode
*/ */
void reportPressUnusedMaterial(PdmBdWorkorder workorderCode); void reportPressUnusedMaterial(PdmBdWorkorder workorderCode);
/**
* 获取所有待入窑数据
* @return
*/
List<MesGdyInfoWaitDto> getAllWaitIntoGdyInfos();
} }

5
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dao/mapper/MesRequestMapper.java

@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.dynamic.datasource.annotation.DS;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.nl.wms.database.material.service.dao.MdBaseMaterial; import org.nl.wms.database.material.service.dao.MdBaseMaterial;
import org.nl.wms.ext.mes.autotask.AutoSaveWaitGdyInfo;
import org.nl.wms.ext.mes.service.dto.*; import org.nl.wms.ext.mes.service.dto.*;
import java.util.List; import java.util.List;
@ -48,4 +49,8 @@ public interface MesRequestMapper {
int countFPNumber(String workorderCode, String pointCode); int countFPNumber(String workorderCode, String pointCode);
@DS("oracle") @DS("oracle")
void insertMesUnusedInfo(MesUnusedDto mesUnusedDto); void insertMesUnusedInfo(MesUnusedDto mesUnusedDto);
@DS("mysql")
List<MesGdyInfoWaitDto> getAllWaitIntoGdyInfos();
@DS("oracle")
void insertGdyMaterialWait(MesGdyInfoWaitDto mesGdyInfoWaitDto);
} }

26
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dao/mapper/MesRequestMapper.xml

@ -64,6 +64,12 @@
VALUES (#{MSGID}, #{FORDER_NO}, #{PWORKSCHE_ID}, #{FPRODUCT_MATERIAL_ID}, #{FPRODUCT_MATERIAL_NAME}, #{FMATSPEC} VALUES (#{MSGID}, #{FORDER_NO}, #{PWORKSCHE_ID}, #{FPRODUCT_MATERIAL_ID}, #{FPRODUCT_MATERIAL_NAME}, #{FMATSPEC}
, #{FMATMODEL}, #{BATCHNO}, #{PRESSUNIT}, #{FTEAM}, #{FPSUBNUM}, #{FP_SUBUNIT}, #{PRODATE}, #{CREATE_TM}, #{OP_FLAG}) , #{FMATMODEL}, #{BATCHNO}, #{PRESSUNIT}, #{FTEAM}, #{FPSUBNUM}, #{FP_SUBUNIT}, #{PRODATE}, #{CREATE_TM}, #{OP_FLAG})
</insert> </insert>
<insert id="insertGdyMaterialWait" parameterType="org.nl.wms.ext.mes.service.dto.MesGdyInfoWaitDto">
INSERT INTO "LMSTELCOM"."RECEIVE_GDY_MATWAIT"(MSGID, SEND_TM, TRAY_NO, FPRODUCT_MATERIAL_ID, FPRODUCT_MATERIAL_NAME
, FMATSPEC, FMATMODEL, BATCHNO, PRESSUNIT, PRO_SUBNUM, PRO_SUBUNIT, CREATE_TM, OP_FLAG)
VALUES (#{MSGID}, #{SEND_TM}, #{TRAY_NO}, #{FPRODUCT_MATERIAL_ID}, #{FPRODUCT_MATERIAL_NAME}, #{FMATSPEC}
, #{FMATMODEL}, #{BATCHNO}, #{PRESSUNIT}, #{PRO_SUBNUM}, #{PRO_SUBUNIT}, #{CREATE_TM}, #{OP_FLAG})
</insert>
<update id="updateWorkOrderRead" parameterType="java.util.List"> <update id="updateWorkOrderRead" parameterType="java.util.List">
UPDATE "LMSTELCOM"."SEND_POP_SCHEDULE_PRESS" UPDATE "LMSTELCOM"."SEND_POP_SCHEDULE_PRESS"
SET OP_FLAG = '1' SET OP_FLAG = '1'
@ -177,4 +183,24 @@
`md_base_brick_info` mi `md_base_brick_info` mi
WHERE mi.workorder_code = #{workorderCode} AND mi.get_station = #{pointCode} AND mi.put_station LIKE 'YZBHGW%' WHERE mi.workorder_code = #{workorderCode} AND mi.get_station = #{pointCode} AND mi.put_station LIKE 'YZBHGW%'
</select> </select>
<select id="getAllWaitIntoGdyInfos" resultType="org.nl.wms.ext.mes.service.dto.MesGdyInfoWaitDto">
SELECT
vg.vehicle_code AS TRAY_NO,
mm.material_code AS FPRODUCT_MATERIAL_ID,
mm.material_name AS FPRODUCT_MATERIAL_NAME,
mm.material_spec AS FMATSPEC,
mm.material_model AS FMATMODEL,
pw.batch_no AS BATCHNO,
p2.ext_point_code AS PRESSUNIT,
vg.material_qty AS PRO_SUBNUM
FROM
`sch_base_vehiclematerialgroup` vg
LEFT JOIN pdm_bd_workorder pw ON pw.workorder_code = vg.workorder_code
LEFT JOIN md_base_material mm ON mm.material_id = vg.material_id
LEFT JOIN sch_base_point p ON p.point_code = vg.source_vehicle_code
LEFT JOIN sch_base_point p2 ON p.parent_point_code = p2.point_code
WHERE
vg.point_code IN ( 'HCSSX01', 'HCSSX63' )
AND pw.workorder_code IS NOT NULL
</select>
</mapper> </mapper>

47
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesGdyInfoWaitDto.java

@ -0,0 +1,47 @@
package org.nl.wms.ext.mes.service.dto;
import lombok.Data;
/**
* @Author: lyd
* @Description: 带入窑实体
* @Date: 2023/9/22
* 二维码
* 发送时间
* 托盘编号
* 物料编码
* 物料名称
* 规格
* 型号
* 批次号
* 压机号
* 重量
* 重量单位
* 数量
* 数量单位
* 单位转换率
* 写入时间
* 读取标志,0未读取1已读取
* 读取时间
*/
@Data
public class MesGdyInfoWaitDto {
private String MSGID;
private String SEND_TM;
private String TRAY_NO;
private String FPRODUCT_MATERIAL_ID;
private String FPRODUCT_MATERIAL_NAME;
private String FMATSPEC;
private String FMATMODEL;
private String BATCHNO;
private String PRESSUNIT;
private String PRO_NUM;
private String PRO_UNIT;
private String PRO_SUBNUM;
private String PRO_SUBUNIT;
private String FCONVERTRATE;
private String CREATE_TM;
private String OP_FLAG;
private String OP_TM;
}

22
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/impl/WmsToMesServiceImpl.java

@ -10,6 +10,7 @@ import lombok.extern.slf4j.Slf4j;
import org.nl.system.service.notice.ISysNoticeService; import org.nl.system.service.notice.ISysNoticeService;
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.ext.mes.autotask.AutoSaveWaitGdyInfo;
import org.nl.wms.ext.mes.service.WmsToMesService; import org.nl.wms.ext.mes.service.WmsToMesService;
import org.nl.wms.ext.mes.service.dao.mapper.MesRequestMapper; import org.nl.wms.ext.mes.service.dao.mapper.MesRequestMapper;
import org.nl.wms.ext.mes.service.dto.*; import org.nl.wms.ext.mes.service.dto.*;
@ -147,7 +148,7 @@ public class WmsToMesServiceImpl implements WmsToMesService {
@Override @Override
public void reportSemiProductionInfoIn(String groupId) { public void reportSemiProductionInfoIn(String groupId) {
log.info("物料入滚筒线"); log.info("半成品入库");
// 获取组盘信息 // 获取组盘信息
SchBaseVehiclematerialgroup vehiclematerialgroup = vehiclematerialgroupService.getById(groupId); SchBaseVehiclematerialgroup vehiclematerialgroup = vehiclematerialgroupService.getById(groupId);
String workorderCode = vehiclematerialgroup.getWorkorder_code(); String workorderCode = vehiclematerialgroup.getWorkorder_code();
@ -175,21 +176,21 @@ public class WmsToMesServiceImpl implements WmsToMesService {
semiProductionInfoInDto.setPRODATE(workorder.getProduce_date()); semiProductionInfoInDto.setPRODATE(workorder.getProduce_date());
semiProductionInfoInDto.setCREATE_TM(DateUtil.now()); semiProductionInfoInDto.setCREATE_TM(DateUtil.now());
semiProductionInfoInDto.setOP_FLAG(GeneralDefinition.NO); semiProductionInfoInDto.setOP_FLAG(GeneralDefinition.NO);
log.info("入滚筒线返给MES的数据:{}", semiProductionInfoInDto); log.info("半成品入库返给MES的数据:{}", semiProductionInfoInDto);
// 插入mes数据库 // 插入mes数据库
try { try {
mesRequestMapper.insertSemiProductInfo(semiProductionInfoInDto); mesRequestMapper.insertSemiProductInfo(semiProductionInfoInDto);
} catch (Exception e) { } catch (Exception e) {
log.error("入滚筒线插入mes数据库失败:{}", e.getMessage()); log.error("半成品入库插入mes数据库失败:{}", e.getMessage());
// todo:发送通知 // todo:发送通知
noticeService.createNotice("入滚筒线插入mes数据库失败", "入滚筒线" + semiProductionInfoInDto.getMSGID(), noticeService.createNotice("半成品入库插入mes数据库失败", "半成品入库" + semiProductionInfoInDto.getMSGID(),
NoticeTypeEnum.EXCEPTION.getCode()); NoticeTypeEnum.EXCEPTION.getCode());
} }
} }
@Override @Override
public void reportSemiProductionInfoOut(String groupId) { public void reportSemiProductionInfoOut(String groupId) {
log.info("物料出滚筒线"); log.info("半成品出库");
// 获取组盘信息 // 获取组盘信息
SchBaseVehiclematerialgroup vehiclematerialgroup = vehiclematerialgroupService.getById(groupId); SchBaseVehiclematerialgroup vehiclematerialgroup = vehiclematerialgroupService.getById(groupId);
String workorderCode = vehiclematerialgroup.getWorkorder_code(); String workorderCode = vehiclematerialgroup.getWorkorder_code();
@ -214,14 +215,14 @@ public class WmsToMesServiceImpl implements WmsToMesService {
semiProductionInfoOutDto.setOUTTYPE("成品出库"); semiProductionInfoOutDto.setOUTTYPE("成品出库");
semiProductionInfoOutDto.setCREATE_TM(DateUtil.now()); semiProductionInfoOutDto.setCREATE_TM(DateUtil.now());
semiProductionInfoOutDto.setOP_FLAG(GeneralDefinition.NO); semiProductionInfoOutDto.setOP_FLAG(GeneralDefinition.NO);
log.info("出滚筒线返给MES的数据:{}", semiProductionInfoOutDto); log.info("半成品出库返给MES的数据:{}", semiProductionInfoOutDto);
// 插入mes数据库 // 插入mes数据库
try { try {
mesRequestMapper.insertSemiProductOutInfo(semiProductionInfoOutDto); mesRequestMapper.insertSemiProductOutInfo(semiProductionInfoOutDto);
} catch (Exception e) { } catch (Exception e) {
log.error("出滚筒线插入mes数据库失败:{}", e.getMessage()); log.error("半成品出库插入mes数据库失败:{}", e.getMessage());
// todo:发送通知 // todo:发送通知
noticeService.createNotice("入滚筒线插入mes数据库失败", "入滚筒线" + semiProductionInfoOutDto.getMSGID(), noticeService.createNotice("半成品出库插入mes数据库失败", "半成品出库" + semiProductionInfoOutDto.getMSGID(),
NoticeTypeEnum.EXCEPTION.getCode()); NoticeTypeEnum.EXCEPTION.getCode());
} }
} }
@ -354,6 +355,11 @@ public class WmsToMesServiceImpl implements WmsToMesService {
} }
} }
@Override
public List<MesGdyInfoWaitDto> getAllWaitIntoGdyInfos() {
return mesRequestMapper.getAllWaitIntoGdyInfos();
}
public List<PdmBdWorkorder> toWorkOrderList(List<MesWorkOrderDto> mesWorkOrderInfos) { public List<PdmBdWorkorder> toWorkOrderList(List<MesWorkOrderDto> mesWorkOrderInfos) {
List<PdmBdWorkorder> list = new CopyOnWriteArrayList<>(); List<PdmBdWorkorder> list = new CopyOnWriteArrayList<>();
mesWorkOrderInfos.forEach(mesWorkOrderDto -> { mesWorkOrderInfos.forEach(mesWorkOrderDto -> {

49
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/controller/PdaController.java

@ -1,5 +1,6 @@
package org.nl.wms.pda.controller; package org.nl.wms.pda.controller;
import cn.dev33.satoken.annotation.SaIgnore;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
@ -10,6 +11,8 @@ import org.nl.wms.das.device.check.service.dao.DasDeviceCheckRecord;
import org.nl.wms.das.device.operation.service.IDasDeviceOperationRecordService; import org.nl.wms.das.device.operation.service.IDasDeviceOperationRecordService;
import org.nl.wms.das.device.operation.service.dao.DasDeviceOperationRecord; import org.nl.wms.das.device.operation.service.dao.DasDeviceOperationRecord;
import org.nl.wms.pda.service.PdaService; import org.nl.wms.pda.service.PdaService;
import org.nl.wms.pda.service.dao.dto.BlendingMoveDto;
import org.nl.wms.pda.service.dao.dto.ForcedRestingDto;
import org.nl.wms.pda.service.dao.dto.ManualGroupDto; import org.nl.wms.pda.service.dao.dto.ManualGroupDto;
import org.nl.wms.pda.service.dao.vo.PdaResponseVo; import org.nl.wms.pda.service.dao.vo.PdaResponseVo;
import org.nl.wms.pdm.workorder.service.IPdmBdWorkorderService; import org.nl.wms.pdm.workorder.service.IPdmBdWorkorderService;
@ -32,6 +35,7 @@ import org.springframework.web.bind.annotation.RestController;
@RestController @RestController
@Api(tags = "手持接口") @Api(tags = "手持接口")
@RequestMapping("/api/pda") @RequestMapping("/api/pda")
@SaIgnore
public class PdaController { public class PdaController {
@Autowired @Autowired
private IDasDeviceCheckRecordService deviceCheckRecordService; private IDasDeviceCheckRecordService deviceCheckRecordService;
@ -85,10 +89,18 @@ public class PdaController {
return new ResponseEntity<>(pdaService.getDeviceInfo(), HttpStatus.OK); return new ResponseEntity<>(pdaService.getDeviceInfo(), HttpStatus.OK);
} }
@PostMapping("/group/getVehicleType")
@Log("获取载具类型")
@ApiOperation("获取载具类型")
public ResponseEntity<Object> getVehicleType(){
return new ResponseEntity<>(pdaService.getVehicleType(), HttpStatus.OK);
}
@PostMapping("/group/getPressWorkOrder") @PostMapping("/group/getPressWorkOrder")
@Log("获取压机编码") @Log("获取工单编码")
@ApiOperation("获取压机编码") @ApiOperation("获取工单编码")
public ResponseEntity<Object> getPressWorkOrder(JSONObject param){ @Deprecated
public ResponseEntity<Object> getPressWorkOrder(@RequestBody JSONObject param){
return new ResponseEntity<>(workorderService.getDeviceProductionTask(param.getString("point_code")), HttpStatus.OK); return new ResponseEntity<>(workorderService.getDeviceProductionTask(param.getString("point_code")), HttpStatus.OK);
} }
@ -96,6 +108,35 @@ public class PdaController {
@Log("人工组盘") @Log("人工组盘")
@ApiOperation("人工组盘") @ApiOperation("人工组盘")
public ResponseEntity<PdaResponseVo> manualDiskAssembly(@Validated @RequestBody ManualGroupDto entity){ public ResponseEntity<PdaResponseVo> manualDiskAssembly(@Validated @RequestBody ManualGroupDto entity){
return new ResponseEntity<>(vehiclematerialgroupService.manualCreateByPda(entity), HttpStatus.OK); return new ResponseEntity<>(pdaService.manualCreateByPda(entity), HttpStatus.OK);
} }
@PostMapping("/move/getBlendingCode")
@Log("获取混碾机编码")
@ApiOperation("获取混碾机编码")
public ResponseEntity<Object> getBlendingCode(){
return new ResponseEntity<>(pdaService.getBlendingCode(), HttpStatus.OK);
}
@PostMapping("/move/sendTask")
@Log("生成混碾->压机任务")
@ApiOperation("生成混碾->压机任务")
public ResponseEntity<PdaResponseVo> sendTask(@Validated @RequestBody BlendingMoveDto blendingMoveDto){
return new ResponseEntity<>(pdaService.sendTask(blendingMoveDto), HttpStatus.OK);
}
@PostMapping("/forcedResting/show")
@Log("显示静置时长")
@ApiOperation("显示静置时长")
public ResponseEntity<Object> forcedRestingShow(){
return new ResponseEntity<>(pdaService.forcedRestingShow(), HttpStatus.OK);
}
@PostMapping("/forcedResting/submit")
@Log("强制静置")
@ApiOperation("强制静置")
public ResponseEntity<PdaResponseVo> forcedResting(@Validated @RequestBody ForcedRestingDto forcedRestingDto){
return new ResponseEntity<>(pdaService.forcedResting(forcedRestingDto), HttpStatus.OK);
}
} }

18
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/PdaService.java

@ -1,6 +1,11 @@
package org.nl.wms.pda.service; package org.nl.wms.pda.service;
import org.nl.wms.pda.service.dao.dto.BlendingMoveDto;
import org.nl.wms.pda.service.dao.dto.ForcedRestingDto;
import org.nl.wms.pda.service.dao.dto.ManualGroupDto;
import org.nl.wms.pda.service.dao.vo.DropdownListVo; import org.nl.wms.pda.service.dao.vo.DropdownListVo;
import org.nl.wms.pda.service.dao.vo.PdaResponseVo;
import org.nl.wms.pda.service.dao.vo.StandTimeShowVo;
import java.util.List; import java.util.List;
@ -15,4 +20,17 @@ public interface PdaService {
List<DropdownListVo> getDeviceStatus(); List<DropdownListVo> getDeviceStatus();
List<DropdownListVo> deviceAction(); List<DropdownListVo> deviceAction();
PdaResponseVo manualCreateByPda(ManualGroupDto entity);
List<DropdownListVo> getBlendingCode();
PdaResponseVo sendTask(BlendingMoveDto blendingMoveDto);
PdaResponseVo forcedResting(ForcedRestingDto forcedRestingDto);
List<StandTimeShowVo> forcedRestingShow();
List<DropdownListVo> getVehicleType();
} }

18
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/dto/BlendingMoveDto.java

@ -0,0 +1,18 @@
package org.nl.wms.pda.service.dao.dto;
import lombok.Data;
import java.math.BigDecimal;
/**
* @Author: lyd
* @Description: 混碾搬运参数
* @Date: 2023/9/21
*/
@Data
public class BlendingMoveDto {
private String vehicle_code;
private String start_point_code;
private String end_point_code;
private BigDecimal material_weight;
}

14
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/dto/ForcedRestingDto.java

@ -0,0 +1,14 @@
package org.nl.wms.pda.service.dao.dto;
import lombok.Data;
/**
* @Author: lyd
* @Description: 强制静置实体
* @Date: 2023/9/25
*/
@Data
public class ForcedRestingDto {
private Integer stand_time; // 静置时间
private String group_id; // 组盘标识
}

2
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/dto/ManualGroupDto.java

@ -14,6 +14,6 @@ public class ManualGroupDto {
private String vehicle_code; private String vehicle_code;
private String vehicle_type; private String vehicle_type;
private String point_code; private String point_code;
private String order_code; private String order_code; // 不需要
private BigDecimal material_weight; private BigDecimal material_weight;
} }

19
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/mapper/PdaMapper.java

@ -1,6 +1,8 @@
package org.nl.wms.pda.service.dao.mapper; package org.nl.wms.pda.service.dao.mapper;
import org.nl.wms.pda.service.dao.vo.DropdownListVo; import org.nl.wms.pda.service.dao.vo.DropdownListVo;
import org.nl.wms.pda.service.dao.vo.StandTimeShowVo;
import org.nl.wms.sch.point.service.dao.SchBasePoint;
import java.util.List; import java.util.List;
@ -13,4 +15,21 @@ public interface PdaMapper {
List<DropdownListVo> getDeviceInfo(); List<DropdownListVo> getDeviceInfo();
List<DropdownListVo> getDictByCode(String code); List<DropdownListVo> getDictByCode(String code);
/**
* 根据区域编码和点位名称获取信息
* @param device
* @param type
* @return
*/
List<DropdownListVo> getDeviceInfos(String device, String type);
/**
* 获取压机对应可用的满盅位
* @param endPointCode
* @return
*/
SchBasePoint findKLXPoint(String endPointCode);
List<StandTimeShowVo> forcedRestingShow();
} }

34
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/mapper/PdaMapper.xml

@ -18,4 +18,38 @@
`sys_dict` `sys_dict`
WHERE `code` = #{code} WHERE `code` = #{code}
</select> </select>
<select id="getDeviceInfos" resultType="org.nl.wms.pda.service.dao.vo.DropdownListVo">
SELECT
p.point_code AS `value`,
p.point_name AS text
FROM
`sch_base_point` p
WHERE p.region_code = #{device} AND p.point_type = #{type} AND is_used = TRUE
</select>
<select id="findKLXPoint" resultType="org.nl.wms.sch.point.service.dao.SchBasePoint">
SELECT
p.*
FROM
`sch_base_point` p
LEFT JOIN sch_base_task t ON t.point_code2 = p.point_code AND t.task_status IN ('2','3','4')
WHERE p.region_code = 'LZKLX' AND p.parent_point_code LIKE CONCAT('%', #{endPointCode}, '%') AND p.point_type = '5'
AND t.task_code IS NULL
</select>
<select id="forcedRestingShow" resultType="org.nl.wms.pda.service.dao.vo.StandTimeShowVo">
SELECT
vg.group_id,
vg.point_code,
p2.point_name AS device_code,
vg.standing_time,
TIMESTAMPDIFF(MINUTE, NOW(), DATE_ADD(vg.instorage_time, INTERVAL vg.standing_time MINUTE)) AS timeDifferenceMinutes,
DATE_FORMAT(DATE_ADD(vg.instorage_time, INTERVAL vg.standing_time MINUTE), '%Y-%m-%d %H:%i:%s') AS estimatedCompletionTimeString
FROM
`sch_base_vehiclematerialgroup` vg
LEFT JOIN sch_base_point p1 ON p1.point_code = vg.point_code
LEFT JOIN sch_base_point p2 ON p2.point_code = p1.parent_point_code
WHERE vg.point_code IN (
SELECT p.point_code FROM sch_base_point p WHERE p.region_code = 'LZKLX' AND p.point_type = '3'
)
AND vg.group_bind_material_status = '2'
</select>
</mapper> </mapper>

19
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/vo/StandTimeShowVo.java

@ -0,0 +1,19 @@
package org.nl.wms.pda.service.dao.vo;
import lombok.Data;
/**
* @Author: lyd
* @Description: 显示静置时间
* @Date: 2023/9/25
*/
@Data
public class StandTimeShowVo {
private String group_id;
private String point_code;
private String device_code;
private Integer standing_time;
private double timeDifferenceMinutes; // 剩余时间
// 格式化预计完成时间为字符串
private String estimatedCompletionTimeString;
}

120
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/impl/PdaServiceImpl.java

@ -1,9 +1,31 @@
package org.nl.wms.pda.service.impl; package org.nl.wms.pda.service.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.nl.common.exception.BadRequestException;
import org.nl.common.utils.SecurityUtils;
import org.nl.wms.database.material.service.IMdBaseMaterialService;
import org.nl.wms.database.material.service.dao.MdBaseMaterial;
import org.nl.wms.pda.service.PdaService; import org.nl.wms.pda.service.PdaService;
import org.nl.wms.pda.service.dao.dto.BlendingMoveDto;
import org.nl.wms.pda.service.dao.dto.ForcedRestingDto;
import org.nl.wms.pda.service.dao.dto.ManualGroupDto;
import org.nl.wms.pda.service.dao.mapper.PdaMapper; import org.nl.wms.pda.service.dao.mapper.PdaMapper;
import org.nl.wms.pda.service.dao.vo.DropdownListVo; import org.nl.wms.pda.service.dao.vo.DropdownListVo;
import org.nl.wms.pda.service.dao.vo.PdaResponseVo;
import org.nl.wms.pda.service.dao.vo.StandTimeShowVo;
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;
import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup;
import org.nl.wms.sch.point.service.ISchBasePointService;
import org.nl.wms.sch.point.service.dao.SchBasePoint;
import org.nl.wms.sch.task.service.dao.SchBaseTask;
import org.nl.wms.sch.task_manage.GeneralDefinition;
import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum;
import org.nl.wms.sch.task_manage.enums.GroupStatusEnum;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -19,6 +41,14 @@ import java.util.List;
public class PdaServiceImpl implements PdaService { public class PdaServiceImpl implements PdaService {
@Autowired @Autowired
private PdaMapper pdaMapper; private PdaMapper pdaMapper;
@Autowired
private IPdmBdWorkorderService workorderService;
@Autowired
private ISchBasePointService pointService;
@Autowired
private IMdBaseMaterialService materialService;
@Autowired
private ISchBaseVehiclematerialgroupService vehiclematerialgroupService;
@Override @Override
public List<DropdownListVo> getDeviceInfo() { public List<DropdownListVo> getDeviceInfo() {
// 暂定压机区域 // 暂定压机区域
@ -34,4 +64,94 @@ public class PdaServiceImpl implements PdaService {
public List<DropdownListVo> deviceAction() { public List<DropdownListVo> deviceAction() {
return pdaMapper.getDictByCode("device_action"); return pdaMapper.getDictByCode("device_action");
} }
@Override
public PdaResponseVo manualCreateByPda(ManualGroupDto entity) {
if (ObjectUtil.isEmpty(entity)) {
throw new BadRequestException("组盘不能为空");
}
SchBaseVehiclematerialgroup groupInfo = vehiclematerialgroupService.getGroupInfo(entity.getVehicle_code(),
entity.getVehicle_type(), GroupBindMaterialStatusEnum.BOUND.getValue());
if (ObjectUtil.isNotEmpty(groupInfo)) {
throw new BadRequestException("组盘信息已存在");
}
// 获取压机工单
PdmBdWorkorder bdWorkorder = workorderService.getDeviceProductionTask(entity.getPoint_code());
// PdmBdWorkorder bdWorkorder = workorderService.getByCode(entity.getOrder_code());
// 获取点位
SchBasePoint basePoint = pointService.getById(entity.getPoint_code());
// 获取物料
MdBaseMaterial material = materialService.getById(bdWorkorder.getMaterial_id());
SchBaseVehiclematerialgroup group = new SchBaseVehiclematerialgroup();
group.setGroup_id(IdUtil.getSnowflake(1,1).nextIdStr());
group.setVehicle_type(entity.getVehicle_type());
group.setVehicle_code(entity.getVehicle_code());
group.setMaterial_id(bdWorkorder.getMaterial_id());
group.setRedundance_material_code(bdWorkorder.getRaw_material_code());
group.setSource_vehicle_code(entity.getPoint_code());
group.setPoint_code(entity.getPoint_code());
group.setPoint_name(basePoint.getPoint_name());
group.setInstorage_time(DateUtil.now());
group.setStanding_time(material.getStanding_time());
group.setMaterial_weight(entity.getMaterial_weight());
group.setWorkorder_code(bdWorkorder.getWorkorder_code());
group.setGroup_status(GroupStatusEnum.IN_STORAGE.getType());
group.setMove_way(basePoint.getPoint_code());
group.setBuss_move_id(IdUtil.getSnowflake(1,1).nextIdStr());
group.setCreate_id(SecurityUtils.getCurrentUserId());
group.setCreate_name(SecurityUtils.getCurrentNickName());
group.setCreate_time(DateUtil.now());
vehiclematerialgroupService.save(group);
return PdaResponseVo.pdaResultOk("组盘成功");
}
@Override
public List<DropdownListVo> getBlendingCode() {
return pdaMapper.getDeviceInfos("HL", GeneralDefinition.DOCKING_POINT);
}
@Override
// todo
public PdaResponseVo sendTask(BlendingMoveDto blendingMoveDto) {
if (ObjectUtil.isEmpty(blendingMoveDto.getStart_point_code())) {
throw new BadRequestException("混碾位不能为空");
}
if (ObjectUtil.isEmpty(blendingMoveDto.getEnd_point_code())) {
throw new BadRequestException("目标压机位不能为空");
}
// 获取压机对应的困料线、空位、无任务
SchBasePoint point = pdaMapper.findKLXPoint(blendingMoveDto.getEnd_point_code());
if (ObjectUtil.isEmpty(point)) {
throw new BadRequestException("创建失败,已有搬运到【" + blendingMoveDto.getEnd_point_code() + "】的任务, 请稍后在试!");
}
// 获取压机当前工单
PdmBdWorkorder workorder = workorderService.getDeviceProductionTask(blendingMoveDto.getEnd_point_code());
// 组盘
// 创建任务
SchBaseTask task = new SchBaseTask(); // 任务实体
return null;
}
@Override
public PdaResponseVo forcedResting(ForcedRestingDto forcedRestingDto) {
if (ObjectUtil.isEmpty(forcedRestingDto.getGroup_id())) {
throw new BadRequestException("请选择需要设置静置的料盅!");
}
SchBaseVehiclematerialgroup vehiclematerialgroup = vehiclematerialgroupService.getById(forcedRestingDto.getGroup_id());
vehiclematerialgroup.setStanding_time(forcedRestingDto.getStand_time());
vehiclematerialgroupService.updateById(vehiclematerialgroup);
return PdaResponseVo.pdaResultOk("设置静置时长完成");
}
@Override
public List<StandTimeShowVo> forcedRestingShow() {
return pdaMapper.forcedRestingShow();
}
@Override
public List<DropdownListVo> getVehicleType() {
return pdaMapper.getDictByCode("vehicle_type");
}
} }

6
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/PdmBdWorkorder.java

@ -128,6 +128,12 @@ public class PdmBdWorkorder implements Serializable {
@ApiModelProperty(value = "是否加急") @ApiModelProperty(value = "是否加急")
private Boolean is_urgent; private Boolean is_urgent;
@ApiModelProperty(value = "开工人")
private String operator;
@ApiModelProperty(value = "合格数")
private Integer qualified_qty;
@ApiModelProperty(value = "不合格数")
private Integer unqualified_qty;
@TableField(exist = false) @TableField(exist = false)
private String material_name; private String material_name;

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

@ -137,9 +137,8 @@ public class PdmBdWorkorderServiceImpl extends ServiceImpl<PdmBdWorkorderMapper,
if (ObjectUtil.isNotEmpty(bdWorkorder)) { if (ObjectUtil.isNotEmpty(bdWorkorder)) {
throw new BadRequestException("该设备已有生产工单,不能重复下发"); throw new BadRequestException("该设备已有生产工单,不能重复下发");
} }
/** // 设置开工人
* todo: 待优化-虽然一次性下发一个工单为了方便后续多个一起下发此处接口设置为list形式 pdmBdWorkorder.setOperator(SecurityUtils.getCurrentNickName());
*/
List<AcsWorkOrderVo> list = new CopyOnWriteArrayList<>(); List<AcsWorkOrderVo> list = new CopyOnWriteArrayList<>();
// 重装数据回ACS,重新根据id找一遍,省的改动以上代码 // 重装数据回ACS,重新根据id找一遍,省的改动以上代码
AcsWorkOrderVo acsWorkOrderVo = pdmBdWorkorderMapper.toAcsWorkOrderById(pdmBdWorkorder.getWorkorder_id()); AcsWorkOrderVo acsWorkOrderVo = pdmBdWorkorderMapper.toAcsWorkOrderById(pdmBdWorkorder.getWorkorder_id());

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

@ -79,6 +79,4 @@ public interface ISchBaseVehiclematerialgroupService extends IService<SchBaseVeh
* @return * @return
*/ */
SchBaseVehiclematerialgroup getGroupInfo(String vehicleCode, String value); SchBaseVehiclematerialgroup getGroupInfo(String vehicleCode, String value);
PdaResponseVo manualCreateByPda(ManualGroupDto entity);
} }

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

@ -129,38 +129,4 @@ public class SchBaseVehiclematerialgroupServiceImpl extends ServiceImpl<SchBaseV
return selectOne; return selectOne;
} }
@Override
public PdaResponseVo manualCreateByPda(ManualGroupDto entity) {
if (ObjectUtil.isEmpty(entity)) {
throw new BadRequestException("组盘不能为空");
}
// 获取压机工单
PdmBdWorkorder bdWorkorder = workorderService.getByCode(entity.getOrder_code());
// 获取点位
SchBasePoint basePoint = pointService.getById(entity.getPoint_code());
// 获取物料
MdBaseMaterial material = materialService.getById(bdWorkorder.getWorkorder_id());
SchBaseVehiclematerialgroup group = new SchBaseVehiclematerialgroup();
group.setGroup_id(IdUtil.getSnowflake(1,1).nextIdStr());
group.setVehicle_type(entity.getVehicle_type());
group.setVehicle_code(entity.getVehicle_code());
group.setMaterial_id(bdWorkorder.getMaterial_id());
group.setRedundance_material_code(bdWorkorder.getRaw_material_code());
group.setSource_vehicle_code(entity.getPoint_code());
group.setPoint_code(entity.getPoint_code());
group.setPoint_name(basePoint.getPoint_name());
group.setInstorage_time(DateUtil.now());
group.setStanding_time(material.getStanding_time());
group.setMaterial_weight(entity.getMaterial_weight());
group.setWorkorder_code(bdWorkorder.getWorkorder_code());
group.setGroup_status(GroupStatusEnum.IN_STORAGE.getType());
group.setMove_way(basePoint.getPoint_code());
group.setBuss_move_id(IdUtil.getSnowflake(1,1).nextIdStr());
group.setCreate_id(SecurityUtils.getCurrentUserId());
group.setCreate_name(SecurityUtils.getCurrentNickName());
group.setCreate_time(DateUtil.now());
vehiclematerialgroupMapper.insert(group);
return PdaResponseVo.pdaResultOk("组盘成功");
}
} }

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

@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.wms.ext.mes.service.WmsToMesService;
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;
import org.nl.wms.sch.point.service.ISchBasePointService; import org.nl.wms.sch.point.service.ISchBasePointService;
@ -49,6 +50,8 @@ public class FJSKTask extends AbstractTask {
private ISchBaseTaskconfigService taskConfigService; private ISchBaseTaskconfigService taskConfigService;
@Autowired @Autowired
private FJMapper fjMapper; private FJMapper fjMapper;
@Autowired
private WmsToMesService wmsToMesService;
@Autowired @Autowired
private ISysNoticeService noticeService; private ISysNoticeService noticeService;
@ -197,6 +200,14 @@ public class FJSKTask extends AbstractTask {
endPointObj.setPoint_status(PointStatusEnum.EMPTY_VEHICLE.getCode()); endPointObj.setPoint_status(PointStatusEnum.EMPTY_VEHICLE.getCode());
PointUtils.setUpdateByType(endPointObj, taskFinishedType); PointUtils.setUpdateByType(endPointObj, taskFinishedType);
pointService.updateById(endPointObj); pointService.updateById(endPointObj);
// 组盘状态改变
SchBaseVehiclematerialgroup vehicleMaterialGroupObj =
vehiclematerialgroupService.getById(taskObj.getGroup_id());
vehicleMaterialGroupObj.setGroup_bind_material_status(GroupBindMaterialStatusEnum.UNBOUND.getValue());
TaskUtils.setGroupUpdateByType(vehicleMaterialGroupObj, taskFinishedType);
vehiclematerialgroupService.updateById(vehicleMaterialGroupObj);
// todo: 上报mes, 物料出库
wmsToMesService.reportSemiProductionInfoOut(taskObj.getGroup_id());
} }
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/task_manage/task/tasks/hn/HNMLTask.java

@ -311,9 +311,9 @@ public class HNMLTask extends AbstractTask {
String vehicleType = param.getString("vehicle_type"); String vehicleType = param.getString("vehicle_type");
// 泥料物料对应不出物料标识 // 泥料物料对应不出物料标识
// todo: 暂未处理 // todo: 暂未处理
String materialCode = param.getString("material_code"); // 泥料编码: 吨袋号,泥料前 String packNo = param.getString("material_code"); // 泥料编码: 吨袋号,泥料前
// String materialCode = packNo.substring(0, 12); String materialCode = packNo.substring(0, 12);
// String mixTimes = param.getString("mix_number"); // 碾次 String mixTimes = packNo.substring(18, packNo.length()); // 碾次
// 载具类型默认料盅 // 载具类型默认料盅
if (vehicleType == null || vehicleType.equals(GeneralDefinition.NO)) { if (vehicleType == null || vehicleType.equals(GeneralDefinition.NO)) {
vehicleType = GeneralDefinition.MATERIAL_CUP; vehicleType = GeneralDefinition.MATERIAL_CUP;
@ -349,7 +349,7 @@ public class HNMLTask extends AbstractTask {
groupEntity.setPoint_code(basePoint.getPoint_code()); // 当前位置 groupEntity.setPoint_code(basePoint.getPoint_code()); // 当前位置
groupEntity.setPoint_name(basePoint.getPoint_name()); groupEntity.setPoint_name(basePoint.getPoint_name());
groupEntity.setMove_way(basePoint.getPoint_code()); // 头次 groupEntity.setMove_way(basePoint.getPoint_code()); // 头次
// groupEntity.setMix_times(mixTimes); // 碾次 groupEntity.setMix_times(mixTimes); // 碾次
groupEntity.setInstorage_time(DateUtil.now()); groupEntity.setInstorage_time(DateUtil.now());
groupEntity.setMaterial_weight(ObjectUtil.isNotEmpty(weight)// 重量 groupEntity.setMaterial_weight(ObjectUtil.isNotEmpty(weight)// 重量
? weight ? weight
@ -357,7 +357,7 @@ public class HNMLTask extends AbstractTask {
groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue()); // 绑定 groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue()); // 绑定
groupEntity.setGroup_status(GroupStatusEnum.IN_STORAGE.getType()); // 暂时不维护。 groupEntity.setGroup_status(GroupStatusEnum.IN_STORAGE.getType()); // 暂时不维护。
groupEntity.setIs_delete(false); groupEntity.setIs_delete(false);
// groupEntity.setExt_data(packNo);// todo: 对于混碾的组盘 暂时存吨袋号 groupEntity.setExt_data(packNo);// todo: 对于混碾的组盘 暂时存吨袋号
vehiclematerialgroupService.saveOrUpdate(groupEntity); vehiclematerialgroupService.saveOrUpdate(groupEntity);
return groupEntity.getGroup_id(); return groupEntity.getGroup_id();
} }

2
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/mapper/HNMapper.xml

@ -21,7 +21,7 @@
</foreach> </foreach>
ORDER BY r.create_time ORDER BY r.create_time
</select> </select>
<select id="findPointForHNMLAndWorkOrder" resultType="org.nl.wms.sch.point.service.dao.SchBasePoint"> <select id="findPointForHNMLAndWorkOrder" resultType="org.nl.wms.sch.point.service.dao.SchBasePoint">
SELECT SELECT
p.*, p.*,
p2.point_code AS device_code p2.point_code AS device_code

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

@ -171,8 +171,6 @@ public class GZYQLTask extends AbstractTask {
} }
if (status.equals(TaskStatus.FINISHED)) { // 完成 if (status.equals(TaskStatus.FINISHED)) { // 完成
this.finishTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); this.finishTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS);
// todo 上传mes出滚筒线
wmsToMesService.reportSemiProductionInfoOut(taskObj.getGroup_id());
// todo 记录入窑数据 // todo 记录入窑数据
wmsToMesService.reportGdyMaterialInfoIn(taskObj.getGroup_id()); wmsToMesService.reportGdyMaterialInfoIn(taskObj.getGroup_id());
} }

3
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZSKTask.java

@ -3,6 +3,7 @@ package org.nl.wms.sch.task_manage.task.tasks.yz;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.extern.slf4j.Slf4j;
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.wms.sch.group.service.ISchBaseVehiclematerialgroupService; import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
@ -36,6 +37,7 @@ import java.util.stream.Collectors;
* @Description: 压制送空盅任务 * @Description: 压制送空盅任务
* @Date: 2023/5/25 * @Date: 2023/5/25
*/ */
@Slf4j
@Component @Component
@TaskType("LZKLXSKTask") @TaskType("LZKLXSKTask")
public class YZSKTask extends AbstractTask { public class YZSKTask extends AbstractTask {
@ -69,6 +71,7 @@ public class YZSKTask extends AbstractTask {
NoticeTypeEnum.WARN.getCode()); NoticeTypeEnum.WARN.getCode());
throw new BadRequestException("送空盅任务未找到混料机空位!"); throw new BadRequestException("送空盅任务未找到混料机空位!");
} }
log.warn("送空盅找到点位的信息:{}", point);
// 设置终点并修改创建成功状态 // 设置终点并修改创建成功状态
task.setPoint_code2(point.getPoint_code()); task.setPoint_code2(point.getPoint_code());
task.setTask_status(TaskStatus.CREATED.getCode()); task.setTask_status(TaskStatus.CREATED.getCode());

28
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/CommonUtils.java

@ -8,6 +8,7 @@ import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.Duration; import java.time.Duration;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
@ -53,19 +54,42 @@ public class CommonUtils {
// 计算距离静置完成还有多少毫秒 // 计算距离静置完成还有多少毫秒
long timeDifferenceMillis = inputDate.getTime() + (staticDurationMinutes * 60 * 1000) - currentDate.getTime(); long timeDifferenceMillis = inputDate.getTime() + (staticDurationMinutes * 60 * 1000) - currentDate.getTime();
// 将毫秒转换为分钟 // 将毫秒转换为分钟
long timeDifferenceMinutes = timeDifferenceMillis / (60 * 1000); double timeDifferenceMinutes = (double) timeDifferenceMillis / (60 * 1000);
// System.out.println("距离静置完成还有 " + timeDifferenceMinutes + " 分钟"); // System.out.println("距离静置完成还有 " + timeDifferenceMinutes + " 分钟");
// 计算预计完成时间 // 计算预计完成时间
Date estimatedCompletionTime = new Date(currentDate.getTime() + timeDifferenceMillis); Date estimatedCompletionTime = new Date(currentDate.getTime() + timeDifferenceMillis);
// 格式化预计完成时间为字符串 // 格式化预计完成时间为字符串
String estimatedCompletionTimeString = dateFormat.format(estimatedCompletionTime); String estimatedCompletionTimeString = dateFormat.format(estimatedCompletionTime);
return "距离静置完成还有 " + timeDifferenceMinutes + " 分钟" + ", 预计完成时间为:" + estimatedCompletionTimeString; return "距离静置完成还有 " + String.format("%.2f", timeDifferenceMinutes) + " 分钟" + ", 预计完成时间为:" + estimatedCompletionTimeString;
} catch (ParseException e) { } catch (ParseException e) {
e.printStackTrace(); e.printStackTrace();
} }
return null; return null;
} }
/**
* 获取当前时间是白晚班
* @return
*/
public static String getDayShift() {
// 获取当前时间
LocalTime currentTime = LocalTime.now();
// 设置白班和晚班的时间范围
LocalTime dayShiftStart = LocalTime.of(8, 0); // 白班开始时间:8:00 AM
LocalTime dayShiftEnd = LocalTime.of(17, 0); // 白班结束时间:5:00 PM
LocalTime nightShiftStart = LocalTime.of(17, 0); // 晚班开始时间:5:00 PM
LocalTime nightShiftEnd = LocalTime.of(23, 59); // 晚班结束时间:11:59 PM
// 检查当前时间属于哪个班次
if (currentTime.isAfter(dayShiftStart) && currentTime.isBefore(dayShiftEnd)) {
return "白班";
} else if (currentTime.isAfter(nightShiftStart) || currentTime.isBefore(dayShiftStart)) {
return "晚班";
} else {
return "白班";
}
}
public static <T> T toJavaObject(String objectString, Class<T> clazz) { public static <T> T toJavaObject(String objectString, Class<T> clazz) {
JSONObject jsonObject = JSONObject.parseObject(objectString); JSONObject jsonObject = JSONObject.parseObject(objectString);
return jsonObject.toJavaObject(clazz); return jsonObject.toJavaObject(clazz);

57
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/DatabaseBackup.java

@ -0,0 +1,57 @@
package org.nl.wms.util;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Arrays;
import java.util.List;
/**
* @Author: lyd
* @Description: 备份数据库
* @Date: 2023/9/25
*/
public class DatabaseBackup {
public static void main(String[] args) {
String jdbcUrl = "jdbc:mysql://localhost:3306/rtmg_lms";
String username = "root";
String password = "12356";
try {
Connection connection = DriverManager.getConnection(jdbcUrl, username, password);
// 在这里执行备份操作
String backupPath = "D:\\backup.sql"; // 备份文件保存的路径
// 构建备份命令
List<String> command = Arrays.asList(
"mysqldump",
"--host=localhost",
"--port=3306",
"--user=" + username,
"--password=" + password,
"--result-file=" + backupPath,
"--databases", "rtmg_lms",
"--force"
);
// 执行备份命令
ProcessBuilder processBuilder = new ProcessBuilder(command);
Process process = processBuilder.start();
int exitCode = process.waitFor();
if (exitCode == 0) {
System.out.println("备份成功!");
} else {
System.out.println("备份失败!");
}
connection.close();
} catch (SQLException e) {
e.printStackTrace();
} catch (IOException e) {
throw new RuntimeException(e);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
}

2
lms/nladmin-system/nlsso-server/src/main/resources/config/application.yml

@ -42,7 +42,7 @@ spring:
freemarker: freemarker:
check-template-location: false check-template-location: false
profiles: profiles:
active: prod active: dev
jackson: jackson:
time-zone: GMT+8 time-zone: GMT+8
data: data:

6
lms/nladmin-system/nlsso-server/src/test/java/org/nl/point/test.java

@ -112,4 +112,10 @@ public class test {
System.out.println("2"); System.out.println("2");
} }
public static void main(String[] args) {
String f = "14070300003423092216085408190002";
System.out.println(f.substring(0, 12));
System.out.println(f.substring(18, f.length()));
}
} }

Loading…
Cancel
Save