rev:现场调试优化

This commit is contained in:
2025-10-20 11:03:38 +08:00
parent a3f2c69f32
commit 0e19688493
18 changed files with 485 additions and 149 deletions

View File

@@ -12,7 +12,8 @@
WHERE
1=1
<if test="param.blurry != null and param.blurry != ''">
AND (material_code = #{param.blurry} OR material_name = #{param.blurry})
AND (material_code LIKE CONCAT('%', #{param.blurry}, '%')
OR material_name LIKE CONCAT('%', #{param.blurry}, '%'))
</if>
<if test="param.material_type != null and param.material_type != ''">
AND material_type = #{param.material_type}

View File

@@ -123,11 +123,11 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
public Map<String, Object> secondaryAllocationPoint(String taskCode, String actionType, String type) {
JSONObject result = new JSONObject();
result.put("status", org.springframework.http.HttpStatus.BAD_REQUEST.value());
// RedissonUtils.lock(c -> {
// try {
// Thread.sleep(1000);
// } catch (InterruptedException e) {
// }
RedissonUtils.lock(c -> {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
}
String pointCode = "";
String action = "";
switch (actionType) {
@@ -146,16 +146,16 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
}
result.put("status", org.springframework.http.HttpStatus.OK.value());
return result;
// }, "secondaryAllocationPoint" + actionType, null);
// log.info("二次分配" + taskCode + "---------------------------------------------" + result);
// return result;
}, "secondaryAllocationPoint" + actionType, null);
log.info("二次分配" + taskCode + "---------------------------------------------" + result);
return result;
}
private String getNewPoint(String taskCode, String actionType, String type) {
SchBasePoint newPoint = null;
String taskPointType = null;
//执行中的任务
List<String> status = Arrays.asList(TaskStatus.EXECUTING.getCode(), TaskStatusEnum.PICK_UP_COMPLETED.getCode());
List<String> status = Arrays.asList(TaskStatus.EXECUTING.getCode(), TaskStatus.PICK_UP_COMPLETED.getCode());
SchBaseTask baseTask = taskService.getOne(new LambdaQueryWrapper<SchBaseTask>()
.eq(SchBaseTask::getTask_code, taskCode)
.eq(SchBaseTask::getIs_delete, PackageInfoIvtEnum.IS_SEND.code(""))
@@ -349,7 +349,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
SchBasePoint startPoint = pointMapper.selectOne(new LambdaQueryWrapper<SchBasePoint>().eq(SchBasePoint::getPoint_code, start_point));
PointUtils.setUpdateByAcs(startPoint);
PointUtils.clearPoint(startPoint);
task.setTask_status(TaskStatusEnum.PICK_UP_COMPLETED.getCode());
task.setTask_status(TaskStatus.PICK_UP_COMPLETED.getCode());
TaskUtils.setUpdateByAcs(task);
taskService.updateById(task);
return result;

View File

@@ -84,6 +84,12 @@ public class PdaTaskController {
return new ResponseEntity<>(pdaTaskService.getChargeRegions(), HttpStatus.OK);
}
@PostMapping("/getCallRegions")
@Log("获取所有区域")
public ResponseEntity<Object> getCallRegions() {
return new ResponseEntity<>(pdaTaskService.getCallRegions(), HttpStatus.OK);
}
@PostMapping("/getPointInfo")
@Log("获取点位信息")
public ResponseEntity<Object> getPointInfo(@RequestBody JSONObject whereJson) {
@@ -230,6 +236,11 @@ public class PdaTaskController {
return new ResponseEntity<>(pdaTaskService.selectMaterialByRegion(whereJson), HttpStatus.OK);
}
@PostMapping("/selectFullMaterials")
@Log("根据区域编码查询用料清单")
@SaIgnore
public ResponseEntity<Object> selectFullMaterials(@RequestBody JSONObject whereJson) {
return new ResponseEntity<>(pdaTaskService.selectFullMaterials(whereJson), HttpStatus.OK);
}
}

View File

@@ -53,6 +53,8 @@ public interface PdaTaskService {
JSONObject selectMaterialByRegion(JSONObject whereJson);
JSONObject selectFullMaterials(JSONObject whereJson);
JSONObject inArea(JSONObject whereJson);
JSONObject outArea(JSONObject whereJson);
@@ -65,6 +67,8 @@ public interface PdaTaskService {
JSONObject getChargeRegions();
JSONObject getCallRegions();
JSONObject getMaterialTypes();
JSONObject selectMaterialByPointCode(JSONObject whereJson);

View File

@@ -5,6 +5,7 @@ import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpStatus;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -52,6 +53,7 @@ import org.nl.wms.sch.task.service.dao.mapper.SchBaseTaskMapper;
import org.nl.wms.sch.task_manage.AbstractTask;
import org.nl.wms.sch.task_manage.GeneralDefinition;
import org.nl.wms.sch.task_manage.enums.PointStatusEnum;
import org.nl.wms.sch.task_manage.enums.PointTypeEnum;
import org.nl.wms.sch.task_manage.enums.RegionTypeEnum;
import org.nl.wms.sch.task_manage.task.TaskFactory;
import org.nl.wms.sch.tasks.PdaPointTask;
@@ -96,10 +98,13 @@ public class PdaTaskServiceImpl implements PdaTaskService {
private RegionChargeMapper regionChargeMapper;
@Autowired
private WmsToAcsService wmsToAcsService;
@Autowired
private MdPbGroupplatedtlMapper mdPbGroupplatedtlMapper;
@Override
@Transactional(rollbackFor = Exception.class)
public PdaResponseVo loading(JSONObject whereJson) {
log.info("产线叫料,请求参数:" + whereJson);
String point_code = whereJson.getString("point_code");
String region_code = whereJson.getString("region_code");
String material_code = whereJson.getString("material_code");
@@ -159,7 +164,7 @@ public class PdaTaskServiceImpl implements PdaTaskService {
String prefix = schBasePoint.getPoint_code().substring(0, schBasePoint.getPoint_code().length() - 2);
List<SchBaseTask> existTask = taskService.findUnFinishTasksByTaskConfig("THSLTask", prefix);
if (existTask.size() <= 1) {
List<SchBasePoint> list = pointMapper.selectListByRegionAndPrefix(region_code, prefix,schBasePoint.getPoint_type());
List<SchBasePoint> list = pointMapper.selectListByRegionAndPrefix(region_code, prefix, schBasePoint.getPoint_type());
if (list.size() == 0) {
throw new BadRequestException(region_code + "区域无空闲点位");
}
@@ -198,6 +203,18 @@ public class PdaTaskServiceImpl implements PdaTaskService {
throw new BadRequestException("点位" + point_code + "不存在!");
}
String region_code = point.getRegion_code();
if ("N1".equals(region_code) || "N3".equals(region_code)) {
if (!point.getPoint_type().equals(PointTypeEnum.NET_IN_POINT.getCode())){
throw new BadRequestException("点位" + point_code + "不为NET的上料位请扫描正确上料位再重新操作!");
}
}else if ("L1".equals(region_code) || "L2".equals(region_code)) {
List<String> regions = Arrays.asList("1", "2", "3");
if (!regions.contains(point.getPoint_type())){
throw new BadRequestException("点位" + point_code + "不为贴合加工区的上料位,请扫描正确上料位再重新操作!");
}
}else {
throw new BadRequestException("当前点位" + point_code + "不是上料位!");
}
String region_name = point.getRegion_name();
JSONObject jo = new JSONObject();
jo.put("region_code", region_code);
@@ -208,6 +225,7 @@ public class PdaTaskServiceImpl implements PdaTaskService {
@Override
@Transactional(rollbackFor = Exception.class)
public PdaResponseVo blanking(JSONObject whereJson) {
log.info("产线下料,请求参数:" + whereJson);
String point_code = whereJson.getString("point_code");
String region_code = whereJson.getString("region_code");
JSONArray data = whereJson.getJSONArray("data");
@@ -224,8 +242,11 @@ public class PdaTaskServiceImpl implements PdaTaskService {
if (ObjectUtil.isEmpty(point)) {
throw new BadRequestException("点位" + point_code + "不存在!");
}
if (point.getPoint_status().equals(PointStatusEnum.EMPTY_VEHICLE.getCode())){
throw new BadRequestException("点位" + point_code + "已有货,请先检查再操作!");
}
List<SchBaseTask> list = taskService.findTaskByPoint(point_code);
if (list.size()>0){
if (list.size() > 0) {
throw new BadRequestException("点位" + point_code + "已经存在agv任务!");
}
JSONObject jo = data.getJSONObject(0);
@@ -234,16 +255,24 @@ public class PdaTaskServiceImpl implements PdaTaskService {
if (mdMeMaterialbase == null) {
throw new BadRequestException("当前物料不存在【" + material_code + "");
}
String vehicleCode = "TP" + TaskUtils.getDateTime("yyMMddHHmmss") + CodeUtil.getNewCode("VEHICLE_CODE");
JSONObject param = new JSONObject();
param.put("device_code", point.getPoint_code());
param.put("material_code", mdMeMaterialbase.getMaterial_code());
param.put("requestNo", IdUtil.simpleUUID());
if ("N1".equals(point.getRegion_code()) || "N3".equals(point.getRegion_code())) {
if (!point.getPoint_type().equals(PointTypeEnum.NET_OUT_POINT.getCode())){
throw new BadRequestException("点位" + point_code + "不为NET的下料位请扫描正确下料位再重新操作!");
}
param.put("config_code", "NETXLTask");
} else if ("L1".equals(point.getRegion_code()) || "L2".equals(point.getRegion_code())) {
if (!point.getPoint_type().equals(PointTypeEnum.L_OUT_POINT.getCode())){
throw new BadRequestException("点位" + point_code + "不为贴合加工下料位,请扫描正确下料位再重新操作!");
}
param.put("config_code", "THXLTask");
}else {
throw new BadRequestException("当前点位" + point_code + "不是下料位!");
}
String vehicleCode = "TP" + TaskUtils.getDateTime("yyMMddHHmmss") + CodeUtil.getNewCode("VEHICLE_CODE");
param.put("vehicle_code", vehicleCode);
// param.put("vehicle_qty", "1");
param.put("user_id", "1");
@@ -400,6 +429,27 @@ public class PdaTaskServiceImpl implements PdaTaskService {
return ret;
}
@Override
public JSONObject getCallRegions() {
List<String> regions = Arrays.asList("MB","H1", "H2","E1", "E2","GC","HXTFZW");
List<SchBaseRegion> list = regionMapper.selectList(new LambdaQueryWrapper<SchBaseRegion>().in(SchBaseRegion::getRegion_code, regions));
List<JSONObject> ja = new ArrayList<>();
list.forEach(region -> {
JSONObject jo = new JSONObject();
jo.put("value", region.getRegion_code());
jo.put("text", region.getRegion_name());
ja.add(jo);
});
JSONObject ret = new JSONObject();
if (ObjectUtil.isNotEmpty(list)) {
ret.put("code", String.valueOf(HttpStatus.HTTP_OK));
ret.put("message", "查询成功");
ret.put("data", ja);
return ret;
}
return ret;
}
@Override
public JSONObject getChargeRegions() {
List<String> regions = Arrays.asList("H1", "H2");
@@ -426,7 +476,7 @@ public class PdaTaskServiceImpl implements PdaTaskService {
String region_code = whereJson.getString("region_code");
LambdaQueryWrapper<SchBasePoint> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SchBasePoint::getRegion_code, whereJson.getString("region_code"));
if ("L1".equals(region_code)||"L2".equals(region_code)){
if ("L1".equals(region_code) || "L2".equals(region_code)) {
wrapper.eq(SchBasePoint::getPoint_type, "4");
}
List<SchBasePoint> list = pointMapper.selectList(wrapper);
@@ -605,6 +655,7 @@ public class PdaTaskServiceImpl implements PdaTaskService {
@Override
public PdaResponseVo sendPointTask(JSONObject whereJson) {
log.info("创建定点任务");
// 校验数据
checkPoint(whereJson);
// 创建任务
@@ -619,6 +670,7 @@ public class PdaTaskServiceImpl implements PdaTaskService {
@Override
public PdaResponseVo unlock(JSONObject whereJson) {
log.info("库位解锁");
JSONArray data = whereJson.getJSONArray("data");
if (ObjectUtil.isEmpty(data)) {
throw new BadRequestException("数据不能为空!");
@@ -643,6 +695,7 @@ public class PdaTaskServiceImpl implements PdaTaskService {
@Override
public PdaResponseVo lock(JSONObject whereJson) {
log.info("库位锁定");
JSONArray data = whereJson.getJSONArray("data");
if (ObjectUtil.isEmpty(data)) {
throw new BadRequestException("数据不能为空!");
@@ -667,6 +720,7 @@ public class PdaTaskServiceImpl implements PdaTaskService {
@Override
public JSONObject comfirmGetting(JSONObject whereJson) {
log.info("人工开始取货");
String point_code = whereJson.getString("point_code");
if (ObjectUtil.isEmpty(point_code)) {
throw new BadRequestException("点位不能为空!");
@@ -676,17 +730,24 @@ public class PdaTaskServiceImpl implements PdaTaskService {
throw new BadRequestException("点位不存在!");
}
if (ObjectUtil.isNotEmpty(point.getStoragevehicle_code())) {
GroupPlate groupPlate = groupplateMapper.selectOne(new LambdaQueryWrapper<GroupPlate>().eq(GroupPlate::getStoragevehicle_code, point.getStoragevehicle_code())
.eq(GroupPlate::getStatus, GroupStatus.START.getCode())
.eq(GroupPlate::getIs_delete, GeneralDefinition.NO));
groupPlate.setStatus(GroupStatus.OUT.getCode());
groupPlate.setUpdate_id(SecurityUtils.getCurrentUserId());
groupPlate.setUpdate_name(SecurityUtils.getCurrentUsername());
groupPlate.setUpdate_time(DateUtil.now());
groupplateMapper.updateById(groupPlate);
GroupPlate groupPlate = groupplateMapper.selectOne(new LambdaQueryWrapper<GroupPlate>().eq(GroupPlate::getStoragevehicle_code, point.getStoragevehicle_code()));
if (ObjectUtil.isNotEmpty(groupPlate)) {
//删除组盘信息
List<GroupPlatedtl> list = mdPbGroupplatedtlMapper.selectList(new LambdaQueryWrapper<GroupPlatedtl>().eq(GroupPlatedtl::getGroup_id, groupPlate.getGroup_id()));
if (list.size() > 0) {
Set<String> ids = new HashSet<String>();
list.forEach(groupPlatedtl ->{
String id = groupPlatedtl.getGroupdtl_id();
ids.add(id);
} );
mdPbGroupplatedtlMapper.deleteBatchIds(ids);
}
groupplateMapper.deleteById(groupPlate);
}
}
point.setPoint_status(PointStatusEnum.EMPTY_POINT.getCode());
point.setStoragevehicle_code("");
point.setMaterial_code("");
pointMapper.updateById(point);
JSONObject ret = new JSONObject();
ret.put("status", String.valueOf(HttpStatus.HTTP_OK));
@@ -696,6 +757,7 @@ public class PdaTaskServiceImpl implements PdaTaskService {
@Override
public JSONObject vehicleBinding(JSONObject whereJson) {
log.info("载具绑定,请求参数:" + whereJson);
String point_code = whereJson.getString("point_code");
SchBasePoint point = pointMapper.selectOne(new LambdaQueryWrapper<SchBasePoint>().eq(SchBasePoint::getPoint_code, point_code));
point.setPoint_status("2");
@@ -710,6 +772,7 @@ public class PdaTaskServiceImpl implements PdaTaskService {
@Override
@Transactional(rollbackFor = Exception.class)
public JSONObject materialBinding(JSONObject whereJson) {
log.info("物料绑定,请求参数:" + whereJson);
String point_code = whereJson.getString("point_code");
//校验该点位是否存在任务
List<SchBaseTask> taskList = taskService.findTaskByPoint(point_code);
@@ -806,7 +869,14 @@ public class PdaTaskServiceImpl implements PdaTaskService {
List<JSONObject> list = pointMapper.queryPointInfo(whereJson);
JSONArray arr = new JSONArray();
list.forEach(item -> {
JSONArray ext_code = item.getJSONArray("ext_code");
String ext_code = item.getString("ext_code");
String substring = ext_code.substring(1, ext_code.length() - 1);
List<String> containerList = new ArrayList<>();
String[] containers = substring.split(",");
for (int i = 0; i < containers.length; i++) {
String s = containers[i].replace("\"", "").replace("\"", "");
containerList.add(s);
}
JSONObject jo = new JSONObject();
jo.put("point_code", item.getString("point_code"));
jo.put("is_used", item.getString("is_used"));
@@ -814,7 +884,7 @@ public class PdaTaskServiceImpl implements PdaTaskService {
jo.put("material_name", item.getString("material_name"));
jo.put("qty", item.getString("qty"));
jo.put("measure_unit_id", item.getString("unit_name"));
jo.put("containers", ext_code);
jo.put("containers", containerList);
arr.add(jo);
});
JSONObject ret = new JSONObject();
@@ -854,8 +924,28 @@ public class PdaTaskServiceImpl implements PdaTaskService {
return ret;
}
@Override
public JSONObject selectFullMaterials(JSONObject whereJson) {
String region_code = whereJson.getString("region_code");
List<JSONObject> list = materialRecordMapper.selectMaterialByRegionCode(region_code);
JSONArray arr = new JSONArray();
list.forEach(item -> {
JSONObject jo = new JSONObject();
jo.put("material_code", item.getString("material_code"));
jo.put("material_name", item.getString("material_name"));
arr.add(jo);
});
JSONObject ret = new JSONObject();
ret.put("code", String.valueOf(HttpStatus.HTTP_OK));
ret.put("message", "查询成功");
ret.put("data", arr);
return ret;
}
@Override
public JSONObject inArea(JSONObject whereJson) {
log.info("请求进入,请求参数:" + whereJson);
String region_code = whereJson.getString("region_code");
if (StrUtil.isEmpty(region_code)) {
throw new BadRequestException("区域编码不能为空!");
@@ -888,6 +978,7 @@ public class PdaTaskServiceImpl implements PdaTaskService {
@Override
public JSONObject outArea(JSONObject whereJson) {
log.info("请求离开,请求参数:" + whereJson);
String region_name = whereJson.getString("region_name");
String create_name = whereJson.getString("create_name");
SchBasePoint schBasePoint = pointMapper.selectOne(new LambdaQueryWrapper<SchBasePoint>().eq(SchBasePoint::getRegion_name, region_name)
@@ -927,7 +1018,7 @@ public class PdaTaskServiceImpl implements PdaTaskService {
SchBasePoint pointStartDao = pointMapper.selectOne(new LambdaQueryWrapper<SchBasePoint>()
.eq(SchBasePoint::getPoint_code, start_point_code));
if (!pointStartDao.getPoint_status().equals("2")) {
throw new BadRequestException(end_point_code + "点位不是满位状态");
throw new BadRequestException(start_point_code + "点位不是满位状态");
}
// 校验终点

View File

@@ -15,4 +15,6 @@ public interface MaterialRecordMapper extends BaseMapper<MaterialRecord> {
List<JSONObject> selectMaterialByRegion(@Param("region_code") String region_code);
List<JSONObject> getMaterialTypes();
List<JSONObject> selectMaterialByRegionCode(@Param("region_code") String region_code);
}

View File

@@ -36,4 +36,28 @@
GROUP BY
material_type
</select>
<select id="selectMaterialByRegionCode" resultType="com.alibaba.fastjson.JSONObject"
parameterType="java.lang.String">
SELECT
p.material_code,
MAX(plate.material_name) as material_name
FROM `sch_base_point` p
LEFT JOIN md_pb_groupplate plate ON plate.storagevehicle_code = p.storagevehicle_code
WHERE
p.region_code = #{region_code}
AND 0 = (
SELECT COUNT(*)
FROM sch_base_task
WHERE (point_code1 = p.point_code
OR point_code2 = p.point_code
OR point_code3 = p.point_code
OR point_code4 = p.point_code
)
AND task_status <![CDATA[<]]> '5'
AND is_delete = '0'
)
AND p.point_status = '2'
AND p.is_used = 1
GROUP BY p.material_code
</select>
</mapper>

View File

@@ -40,16 +40,16 @@
<if test="whereJson.is_used != null">
AND is_used = #{whereJson.is_used}
</if>
<choose>
<!-- Case: whereJson.lock_type is true -->
<when test="whereJson.lock_type">
AND (ing_task_code IS NOT NULL AND ing_task_code <![CDATA[<>]]> '')
</when>
<!-- Case: whereJson.lock_type is false -->
<otherwise>
AND (ing_task_code IS NULL OR ing_task_code = '')
</otherwise>
</choose>
<!-- <choose>-->
<!-- &lt;!&ndash; Case: whereJson.lock_type is true &ndash;&gt;-->
<!-- <when test="whereJson.lock_type">-->
<!-- AND (ing_task_code IS NOT NULL AND ing_task_code <![CDATA[<>]]> '')-->
<!-- </when>-->
<!-- &lt;!&ndash; Case: whereJson.lock_type is false &ndash;&gt;-->
<!-- <otherwise>-->
<!-- AND (ing_task_code IS NULL OR ing_task_code = '')-->
<!-- </otherwise>-->
<!-- </choose>-->
</where>
ORDER BY region_code, point_code, point_type
</select>

View File

@@ -59,12 +59,13 @@
WHEN '2' THEN '创建完成'
WHEN '3' THEN '下发'
WHEN '4' THEN '执行中'
WHEN '071' THEN '取货完成'
END) AS task_status
FROM
sch_base_task
<where>
is_delete = '0'
AND task_status IN ('0','1','2','3','4')
AND task_status IN ('0','1','2','3','4','071')
<if test="param.task_code != null and param.task_code != ''">
AND
(task_code = #{param.task_code} or

View File

@@ -0,0 +1,20 @@
package org.nl.wms.sch.task_manage.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum PointTypeEnum {
NET_IN_POINT("1", "N1/N3下料位"),
NET_OUT_POINT("2", "N1/N3下料位"),
L_IN_POINT("4", "L1/L2位"),
L_OUT_POINT("4", "L1/L2下料位");
private final String code;
private final String label;
}

View File

@@ -33,12 +33,16 @@ public enum TaskStatus {
* 已取消
*/
CANCELED("6", "已取消", "已取消"),
PICK_UP_COMPLETED("071", "取货完成,执行中","取货完成,执行中"),
/**
* 未完成
*/
UNFINISHED("7", "未完成", "未完成");
TaskStatus(String code, String name, String desc) {
this.code = code;
this.name = name;

View File

@@ -30,6 +30,7 @@ import org.nl.wms.util.TaskUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import oshi.driver.mac.net.NetStat;
import java.util.Arrays;
import java.util.List;

View File

@@ -21,6 +21,10 @@ import org.nl.wms.sch.forewarn.service.dao.StIvtForewarningconfig;
import org.nl.wms.sch.forewarn.service.dao.StIvtForewarningmaterial;
import org.nl.wms.sch.forewarn.service.dao.mapper.StIvtForewarningconfigMapper;
import org.nl.wms.sch.forewarn.service.dao.mapper.StIvtForewarningmaterialMapper;
import org.nl.wms.sch.group.service.dao.GroupPlate;
import org.nl.wms.sch.group.service.dao.GroupPlatedtl;
import org.nl.wms.sch.group.service.dao.mapper.MdPbGroupplateMapper;
import org.nl.wms.sch.group.service.dao.mapper.MdPbGroupplatedtlMapper;
import org.nl.wms.sch.point.service.ISchBasePointService;
import org.nl.wms.sch.point.service.dao.SchBasePoint;
import org.nl.wms.sch.point.service.dto.SchBasePointDto;
@@ -43,9 +47,7 @@ import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
// NET加工区上料任务
@@ -74,6 +76,10 @@ public class NETSLTask extends AbstractTask {
private StIvtForewarningconfigMapper stIvtForewarningconfigMapper;
@Autowired
private MdMeMaterialbaseMapper mdMeMaterialbaseMapper;
@Autowired
private MdPbGroupplateMapper mdPbGroupplateMapper;
@Autowired
private MdPbGroupplatedtlMapper mdPbGroupplatedtlMapper;
@Override
public void create() throws BadRequestException {
@@ -201,6 +207,7 @@ public class NETSLTask extends AbstractTask {
if (ObjectUtil.isNotEmpty(endPointObj)) {
endPointObj.setPoint_status(PointStatusEnum.EMPTY_VEHICLE.getCode());
endPointObj.setStoragevehicle_code(taskObj.getVehicle_code());
endPointObj.setMaterial_code(taskObj.getMaterial_code());
// endPointObj.setVehicle_qty(taskObj.getVehicle_qty());
endPointObj.setUpdate_time(DateUtil.now());
PointUtils.setUpdateByType(endPointObj, taskFinishedType);
@@ -240,6 +247,43 @@ public class NETSLTask extends AbstractTask {
SchBasePoint startPointObj = pointService.getById(taskObj.getPoint_code1());
// 起点解锁
if (ObjectUtil.isNotEmpty(startPointObj)) {
String storagevehicle_code = startPointObj.getStoragevehicle_code();
//取货完成会清空托盘号
//托盘号不为空,还未取货
if (ObjectUtil.isEmpty(storagevehicle_code)&&startPointObj.getPoint_type().equals("1")) {
String vehicle_code = taskObj.getVehicle_code();
GroupPlate groupPlate = mdPbGroupplateMapper.selectOne(new LambdaQueryWrapper<GroupPlate>().eq(GroupPlate::getStoragevehicle_code, vehicle_code));
if (ObjectUtil.isNotEmpty(groupPlate)) {
//删除组盘信息
List<GroupPlatedtl> list = mdPbGroupplatedtlMapper.selectList(new LambdaQueryWrapper<GroupPlatedtl>().eq(GroupPlatedtl::getGroup_id, groupPlate.getGroup_id()));
if (list.size()>0){
Set<String> ids = new HashSet<String>();
list.forEach(groupPlatedtl ->{
String id = groupPlatedtl.getGroupdtl_id();
ids.add(id);
} );
mdPbGroupplatedtlMapper.deleteBatchIds(ids);
}
mdPbGroupplateMapper.deleteById(groupPlate);
}
}else {
GroupPlate groupPlate = mdPbGroupplateMapper.selectOne(new LambdaQueryWrapper<GroupPlate>().eq(GroupPlate::getStoragevehicle_code, storagevehicle_code));
if (ObjectUtil.isNotEmpty(groupPlate)) {
//删除组盘信息
List<GroupPlatedtl> list = mdPbGroupplatedtlMapper.selectList(new LambdaQueryWrapper<GroupPlatedtl>().eq(GroupPlatedtl::getGroup_id, groupPlate.getGroup_id()));
if (list.size() > 0) {
Set<String> ids = new HashSet<String>();
list.forEach(groupPlatedtl ->{
String id = groupPlatedtl.getGroupdtl_id();
ids.add(id);
} );
mdPbGroupplatedtlMapper.deleteBatchIds(ids);
}
mdPbGroupplateMapper.deleteById(groupPlate);
}
startPointObj.setMaterial_code("");
startPointObj.setStoragevehicle_code("");
}
startPointObj.setIng_task_code("");
PointUtils.setUpdateByType(startPointObj, taskFinishedType);
pointService.updateById(startPointObj);

View File

@@ -37,7 +37,9 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@@ -163,7 +165,7 @@ public class NETXLTask extends AbstractTask {
List<SchBasePoint> list = pointService.getSamePoints(regionCode, task.getMaterial_code());
if (!CollectionUtils.isEmpty(list)) {
for (int i = 0; i < list.size(); i++) {
SchBasePoint point = list.get(0);
SchBasePoint point = list.get(i);
int col_num = point.getCol_num();
if (col_num == 1) {
continue;
@@ -195,7 +197,7 @@ public class NETXLTask extends AbstractTask {
return null;
}
for (int i = 0; i < points.size(); i++) {
SchBasePoint thirdColPoint = points.get(0);
SchBasePoint thirdColPoint = points.get(i);
String firstColPointCode = thirdColPoint.getPoint_code().substring(0, thirdColPoint.getPoint_code().length() - 1) + "1";
String secondColPointCode = thirdColPoint.getPoint_code().substring(0, thirdColPoint.getPoint_code().length() - 1) + "2";
@@ -301,6 +303,7 @@ public class NETXLTask extends AbstractTask {
if (ObjectUtil.isNotEmpty(endPointObj)) {
endPointObj.setPoint_status(PointStatusEnum.EMPTY_VEHICLE.getCode());
endPointObj.setStoragevehicle_code(taskObj.getVehicle_code());
endPointObj.setMaterial_code(taskObj.getMaterial_code());
endPointObj.setUpdate_time(DateUtil.now());
PointUtils.setUpdateByType(endPointObj, taskFinishedType);
pointService.updateById(endPointObj);
@@ -320,14 +323,44 @@ public class NETXLTask extends AbstractTask {
// 起点解锁
if (ObjectUtil.isNotEmpty(startPointObj)) {
String storagevehicle_code = startPointObj.getStoragevehicle_code();
if (ObjectUtil.isNotEmpty(storagevehicle_code)) {
//取货完成会清空托盘号
//托盘号不为空,还未取货
if (ObjectUtil.isEmpty(storagevehicle_code)) {
String vehicle_code = taskObj.getVehicle_code();
GroupPlate groupPlate = mdPbGroupplateMapper.selectOne(new LambdaQueryWrapper<GroupPlate>().eq(GroupPlate::getStoragevehicle_code, vehicle_code));
if (ObjectUtil.isNotEmpty(groupPlate)) {
//删除组盘信息
List<GroupPlatedtl> list = mdPbGroupplatedtlMapper.selectList(new LambdaQueryWrapper<GroupPlatedtl>().eq(GroupPlatedtl::getGroup_id, groupPlate.getGroup_id()));
if (list.size()>0){
Set<String> ids = new HashSet<String>();
list.forEach(groupPlatedtl ->{
String id = groupPlatedtl.getGroupdtl_id();
ids.add(id);
} );
mdPbGroupplatedtlMapper.deleteBatchIds(ids);
}
mdPbGroupplateMapper.deleteById(groupPlate);
}
}else {
GroupPlate groupPlate = mdPbGroupplateMapper.selectOne(new LambdaQueryWrapper<GroupPlate>().eq(GroupPlate::getStoragevehicle_code, storagevehicle_code));
if (ObjectUtil.isNotEmpty(groupPlate)) {
//删除组盘信息
groupPlate.setIs_delete(GeneralDefinition.YES);
mdPbGroupplateMapper.updateById(groupPlate);
List<GroupPlatedtl> list = mdPbGroupplatedtlMapper.selectList(new LambdaQueryWrapper<GroupPlatedtl>().eq(GroupPlatedtl::getGroup_id, groupPlate.getGroup_id()));
if (list.size() > 0) {
Set<String> ids = new HashSet<String>();
list.forEach(groupPlatedtl ->{
String id = groupPlatedtl.getGroupdtl_id();
ids.add(id);
} );
mdPbGroupplatedtlMapper.deleteBatchIds(ids);
}
mdPbGroupplateMapper.deleteById(groupPlate);
}
}
startPointObj.setMaterial_code("");
startPointObj.setStoragevehicle_code("");
startPointObj.setIng_task_code("");
startPointObj.setPoint_status(PointStatusEnum.EMPTY_POINT.getCode());
PointUtils.setUpdateByType(startPointObj, taskFinishedType);
pointService.updateById(startPointObj);
}

View File

@@ -3,11 +3,16 @@ package org.nl.wms.sch.tasks.thsl;
import cn.hutool.core.convert.Convert;
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.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.nl.common.enums.PackageInfoIvtEnum;
import org.nl.common.exception.BadRequestException;
import org.nl.system.service.notice.ISysNoticeService;
import org.nl.wms.sch.group.service.dao.GroupPlate;
import org.nl.wms.sch.group.service.dao.GroupPlatedtl;
import org.nl.wms.sch.group.service.dao.mapper.MdPbGroupplateMapper;
import org.nl.wms.sch.group.service.dao.mapper.MdPbGroupplatedtlMapper;
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.mapper.SchBasePointMapper;
@@ -32,9 +37,7 @@ import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import oshi.driver.mac.net.NetStat;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
//// 贴合区上料任务
@@ -54,6 +57,10 @@ public class THSLTask extends AbstractTask {
private THSLMapper thslMapper;
@Autowired
private SchBasePointMapper pointMapper;
@Autowired
private MdPbGroupplateMapper mdPbGroupplateMapper;
@Autowired
private MdPbGroupplatedtlMapper mdPbGroupplatedtlMapper;
@Override
public void create() throws BadRequestException {
@@ -124,6 +131,12 @@ public class THSLTask extends AbstractTask {
task.setPoint_code1(schBasePointDto.getPoint_code());
task.setVehicle_code2(PackageInfoIvtEnum.AGV_ACTION_TYPE.code("普通任务"));
}
String requestParam = task.getRequest_param();
JSONObject jsonObject = JSONObject.parseObject(requestParam);
String point4 = jsonObject.getString("point4");
if (StrUtil.isNotEmpty(point4)){
task.setPoint_code4(point4);
}
// 设置终点并修改创建成功状态
task.setVehicle_code(schBasePointDto.getStoragevehicle_code());
task.setRemark("");
@@ -188,6 +201,7 @@ public class THSLTask extends AbstractTask {
if (ObjectUtil.isNotEmpty(endPointObj)) {
endPointObj.setPoint_status(PointStatusEnum.EMPTY_VEHICLE.getCode());
endPointObj.setStoragevehicle_code(taskObj.getVehicle_code());
endPointObj.setMaterial_code(taskObj.getMaterial_code());
endPointObj.setUpdate_time(DateUtil.now());
PointUtils.setUpdateByType(endPointObj, taskFinishedType);
pointService.updateById(endPointObj);
@@ -206,6 +220,43 @@ public class THSLTask extends AbstractTask {
SchBasePoint startPointObj = pointService.getById(taskObj.getPoint_code1());
// 起点解锁
if (ObjectUtil.isNotEmpty(startPointObj)) {
String storagevehicle_code = startPointObj.getStoragevehicle_code();
//取货完成会清空托盘号
//托盘号不为空,还未取货
if (ObjectUtil.isEmpty(storagevehicle_code)&&startPointObj.getPoint_type().equals("1")) {
String vehicle_code = taskObj.getVehicle_code();
GroupPlate groupPlate = mdPbGroupplateMapper.selectOne(new LambdaQueryWrapper<GroupPlate>().eq(GroupPlate::getStoragevehicle_code, vehicle_code));
if (ObjectUtil.isNotEmpty(groupPlate)) {
//删除组盘信息
List<GroupPlatedtl> list = mdPbGroupplatedtlMapper.selectList(new LambdaQueryWrapper<GroupPlatedtl>().eq(GroupPlatedtl::getGroup_id, groupPlate.getGroup_id()));
if (list.size()>0){
Set<String> ids = new HashSet<String>();
list.forEach(groupPlatedtl ->{
String id = groupPlatedtl.getGroupdtl_id();
ids.add(id);
} );
mdPbGroupplatedtlMapper.deleteBatchIds(ids);
}
mdPbGroupplateMapper.deleteById(groupPlate);
}
}else {
GroupPlate groupPlate = mdPbGroupplateMapper.selectOne(new LambdaQueryWrapper<GroupPlate>().eq(GroupPlate::getStoragevehicle_code, storagevehicle_code));
if (ObjectUtil.isNotEmpty(groupPlate)) {
//删除组盘信息
List<GroupPlatedtl> list = mdPbGroupplatedtlMapper.selectList(new LambdaQueryWrapper<GroupPlatedtl>().eq(GroupPlatedtl::getGroup_id, groupPlate.getGroup_id()));
if (list.size() > 0) {
Set<String> ids = new HashSet<String>();
list.forEach(groupPlatedtl ->{
String id = groupPlatedtl.getGroupdtl_id();
ids.add(id);
} );
mdPbGroupplatedtlMapper.deleteBatchIds(ids);
}
mdPbGroupplateMapper.deleteById(groupPlate);
}
startPointObj.setMaterial_code("");
startPointObj.setStoragevehicle_code("");
}
startPointObj.setIng_task_code("");
PointUtils.setUpdateByType(startPointObj, taskFinishedType);
pointService.updateById(startPointObj);

View File

@@ -8,6 +8,10 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.nl.common.enums.PackageInfoIvtEnum;
import org.nl.common.exception.BadRequestException;
import org.nl.system.service.notice.ISysNoticeService;
import org.nl.wms.sch.group.service.dao.GroupPlate;
import org.nl.wms.sch.group.service.dao.GroupPlatedtl;
import org.nl.wms.sch.group.service.dao.mapper.MdPbGroupplateMapper;
import org.nl.wms.sch.group.service.dao.mapper.MdPbGroupplatedtlMapper;
import org.nl.wms.sch.point.service.ISchBasePointService;
import org.nl.wms.sch.point.service.dao.SchBasePoint;
import org.nl.wms.sch.task.service.ISchBaseTaskService;
@@ -31,7 +35,9 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
//// 贴合区下料任务
@@ -49,6 +55,10 @@ public class THXLTask extends AbstractTask {
private ISysNoticeService noticeService;
@Autowired
private THXLMapper thxlMapper;
@Autowired
private MdPbGroupplateMapper mdPbGroupplateMapper;
@Autowired
private MdPbGroupplatedtlMapper mdPbGroupplatedtlMapper;
@Override
public void create() throws BadRequestException {
@@ -125,7 +135,7 @@ public class THXLTask extends AbstractTask {
List<SchBasePoint> list = pointService.getSamePoints(regionCode, task.getMaterial_code());
if (!CollectionUtils.isEmpty(list)) {
for (int i = 0; i < list.size(); i++) {
SchBasePoint point = list.get(0);
SchBasePoint point = list.get(i);
int col_num = point.getCol_num();
if (col_num == 1) {
continue;
@@ -158,7 +168,7 @@ public class THXLTask extends AbstractTask {
return null;
}
for (int i = 0; i < points.size(); i++) {
SchBasePoint twoColPoint = points.get(0);
SchBasePoint twoColPoint = points.get(i);
String firstColPointCode = twoColPoint.getPoint_code().substring(0, twoColPoint.getPoint_code().length() - 1) + "1";
// 查询第一列
SchBasePoint firstColPoint = pointService.findByCode(firstColPointCode);
@@ -279,6 +289,7 @@ public class THXLTask extends AbstractTask {
endPointObj.setPoint_status(PointStatusEnum.EMPTY_VEHICLE.getCode());
endPointObj.setStoragevehicle_code(taskObj.getVehicle_code());
endPointObj.setMaterial_code(taskObj.getMaterial_code());
endPointObj.setUpdate_time(DateUtil.now());
PointUtils.setUpdateByType(endPointObj, taskFinishedType);
pointService.updateById(endPointObj);
@@ -297,7 +308,45 @@ public class THXLTask extends AbstractTask {
SchBasePoint startPointObj = pointService.getById(taskObj.getPoint_code1());
// 起点解锁
if (ObjectUtil.isNotEmpty(startPointObj)) {
String storagevehicle_code = startPointObj.getStoragevehicle_code();
//取货完成会清空托盘号
//托盘号不为空,还未取货
if (ObjectUtil.isEmpty(storagevehicle_code)) {
String vehicle_code = taskObj.getVehicle_code();
GroupPlate groupPlate = mdPbGroupplateMapper.selectOne(new LambdaQueryWrapper<GroupPlate>().eq(GroupPlate::getStoragevehicle_code, vehicle_code));
if (ObjectUtil.isNotEmpty(groupPlate)) {
//删除组盘信息
List<GroupPlatedtl> list = mdPbGroupplatedtlMapper.selectList(new LambdaQueryWrapper<GroupPlatedtl>().eq(GroupPlatedtl::getGroup_id, groupPlate.getGroup_id()));
if (list.size()>0){
Set<String> ids = new HashSet<String>();
list.forEach(groupPlatedtl ->{
String id = groupPlatedtl.getGroupdtl_id();
ids.add(id);
} );
mdPbGroupplatedtlMapper.deleteBatchIds(ids);
}
mdPbGroupplateMapper.deleteById(groupPlate);
}
}else {
GroupPlate groupPlate = mdPbGroupplateMapper.selectOne(new LambdaQueryWrapper<GroupPlate>().eq(GroupPlate::getStoragevehicle_code, storagevehicle_code));
if (ObjectUtil.isNotEmpty(groupPlate)) {
//删除组盘信息
List<GroupPlatedtl> list = mdPbGroupplatedtlMapper.selectList(new LambdaQueryWrapper<GroupPlatedtl>().eq(GroupPlatedtl::getGroup_id, groupPlate.getGroup_id()));
if (list.size() > 0) {
Set<String> ids = new HashSet<String>();
list.forEach(groupPlatedtl ->{
String id = groupPlatedtl.getGroupdtl_id();
ids.add(id);
} );
mdPbGroupplatedtlMapper.deleteBatchIds(ids);
}
mdPbGroupplateMapper.deleteById(groupPlate);
}
}
startPointObj.setMaterial_code("");
startPointObj.setStoragevehicle_code("");
startPointObj.setIng_task_code("");
startPointObj.setPoint_status(PointStatusEnum.EMPTY_POINT.getCode());
PointUtils.setUpdateByType(startPointObj, taskFinishedType);
pointService.updateById(startPointObj);
}