rev:工单一体机功能
This commit is contained in:
@@ -35,8 +35,6 @@ import org.springframework.web.bind.annotation.RestController;
|
|||||||
})
|
})
|
||||||
@ServletComponentScan
|
@ServletComponentScan
|
||||||
@EnableTransactionManagement
|
@EnableTransactionManagement
|
||||||
@EnableJpaAuditing(auditorAwareRef = "auditorAware")
|
|
||||||
|
|
||||||
@EnableMethodCache(basePackages = "org.nl")
|
@EnableMethodCache(basePackages = "org.nl")
|
||||||
@EnableCreateCacheAnnotation
|
@EnableCreateCacheAnnotation
|
||||||
@MapperScan("org.nl.**.mapper")
|
@MapperScan("org.nl.**.mapper")
|
||||||
|
|||||||
@@ -24,10 +24,10 @@ public enum AcsTaskEnum {
|
|||||||
TASK_PRODUCT_MAC("1","专机-专机满料任务"),
|
TASK_PRODUCT_MAC("1","专机-专机满料任务"),
|
||||||
//3个点,任务编号,缓存线空载具列表
|
//3个点,任务编号,缓存线空载具列表
|
||||||
TASK_PRODUCT_CACHE("2","专机-缓存线满料任务"),
|
TASK_PRODUCT_CACHE("2","专机-缓存线满料任务"),
|
||||||
//3个点,任务编号,缓存线满料载具列表
|
|
||||||
TASK_CACHELINE_OUT("3","缓存线-专机出库任务"),
|
|
||||||
//专机到深坑任务:深坑业务单独处理
|
//专机到深坑任务:深坑业务单独处理
|
||||||
TASK_PRODUCT_WASH("4","专机-深坑任务"),
|
TASK_PRODUCT_WASH("3","专机-深坑任务"),
|
||||||
|
//3个点,任务编号,缓存线满料载具列表
|
||||||
|
TASK_CACHELINE_OUT("4","缓存线-专机出库任务"),
|
||||||
TASK_PLOTTER_MAC("5","刻字机-满料入库"),
|
TASK_PLOTTER_MAC("5","刻字机-满料入库"),
|
||||||
TASK_PLOTTER_EMPTY("6","刻字机-呼叫空框"),
|
TASK_PLOTTER_EMPTY("6","刻字机-呼叫空框"),
|
||||||
TASK_WARP_MAC("7","包装机-叫料出库"),
|
TASK_WARP_MAC("7","包装机-叫料出库"),
|
||||||
@@ -56,8 +56,8 @@ public enum AcsTaskEnum {
|
|||||||
|
|
||||||
ACS_TASK_TYPE_NOBLE_DOUBLE_TASK("1","诺宝双工任务"),
|
ACS_TASK_TYPE_NOBLE_DOUBLE_TASK("1","诺宝双工任务"),
|
||||||
ACS_TASK_TYPE_NOBLE_SINGLE_TASK("2","诺宝单工任务"),
|
ACS_TASK_TYPE_NOBLE_SINGLE_TASK("2","诺宝单工任务"),
|
||||||
ACS_TASK_TYPE_NOBLE_SINGLE_ENTRY_TASK("3","诺宝单入-单任务"),
|
ACS_TASK_TYPE_NOBLE_DOUBLE_ENTRY_TASK("3","诺宝双入-双任务"),
|
||||||
ACS_TASK_TYPE_NOBLE_DOUBLE_ENTRY_TASK("4","诺宝双入-双任务"),
|
ACS_TASK_TYPE_NOBLE_SINGLE_ENTRY_TASK("4","诺宝单入-单任务"),
|
||||||
ACS_TASK_TYPE_NOBLE_POINT_POINT_TASK("5","诺宝点对点任务"),
|
ACS_TASK_TYPE_NOBLE_POINT_POINT_TASK("5","诺宝点对点任务"),
|
||||||
ACS_TASK_TYPE_WEIGHING_TASK_OF_PS20("6","PS20称重任务(刻字-包装)"),
|
ACS_TASK_TYPE_WEIGHING_TASK_OF_PS20("6","PS20称重任务(刻字-包装)"),
|
||||||
ACS_TASK_TYPE_NON_WEIGHING_TASK_OF_PS20("7","PS20不称重任务(刻字-包装)"),
|
ACS_TASK_TYPE_NON_WEIGHING_TASK_OF_PS20("7","PS20不称重任务(刻字-包装)"),
|
||||||
|
|||||||
@@ -15,65 +15,66 @@ import java.util.Arrays;
|
|||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public enum StatusEnum {
|
public enum StatusEnum {
|
||||||
//枚举状态
|
//枚举状态
|
||||||
STATUS_TRUE("1","是",""),
|
STATUS_TRUE("1","是","",null),
|
||||||
STATUS_FLASE("0","否",""),
|
STATUS_FLASE("0","否","",null),
|
||||||
//锁状态
|
//锁状态
|
||||||
LOCK_OFF("0","否",""),
|
LOCK_OFF("0","否","",null),
|
||||||
LOCK_ON("1","是",""),
|
LOCK_ON("1","是","",null),
|
||||||
//缓存线点位异常情况
|
//缓存线点位异常情况
|
||||||
CACHE_POINT_NORMAL("0","正常",""),
|
CACHE_POINT_NORMAL("0","正常","",null),
|
||||||
CACHE_POINT_ERROR("1","异常盘点",""),
|
CACHE_POINT_ERROR("1","异常盘点","",null),
|
||||||
CACHE_POINT_SCAN_ERROR("2","异常扫码",""),
|
CACHE_POINT_SCAN_ERROR("2","异常扫码","",null),
|
||||||
//缓存线载具状态 1-空位、2-绿色空箱、3-黄色满箱、4-红色异常、5不显示
|
//缓存线载具状态 1-空位、2-绿色空箱、3-黄色满箱、4-红色异常、5不显示
|
||||||
CACHE_VEL_NORMAL("0","正常",""),
|
CACHE_VEL_NORMAL("0","正常","",null),
|
||||||
CACHE_VEL_NULL("1","空位",""),
|
CACHE_VEL_NULL("1","空位","",null),
|
||||||
CACHE_VEL_EMT("2","绿色空箱",""),
|
CACHE_VEL_EMT("2","绿色空箱","",null),
|
||||||
CACHE_VEL_FULL("3","黄色满箱",""),
|
CACHE_VEL_FULL("3","黄色满箱","",null),
|
||||||
CACHE_VEL_ERR("4","红色异常",""),
|
CACHE_VEL_ERR("4","红色异常","",null),
|
||||||
CACHE_VEL_DIS("5","不显示",""),
|
CACHE_VEL_DIS("5","不显示","",null),
|
||||||
//任务状态
|
//任务状态
|
||||||
TASK_CREATE("1","生成",""),
|
TASK_CREATE("1","生成","",1),
|
||||||
TASK_START_ERROR("2","点位确认异常",""),
|
TASK_START_ERROR("2","点位确认异常","",1<<2),
|
||||||
//TASK_END_P("3","确定终点",""),
|
//TASK_END_P("3","确定终点",""),
|
||||||
TASK_START_END_P("4","起点和终点确认",""),
|
TASK_START_END_P("4","起点和终点确认","",1<<3),
|
||||||
TASK_PUBLISH("5","下发",""),
|
TASK_PUBLISH("5","下发","",1<<4),
|
||||||
TASK_RUNNING("6","运行",""),
|
TASK_RUNNING("6","运行","",1<<5),
|
||||||
TASK_FINISH("7","完成",""),
|
TASK_FINISH("7","完成","",1<<6),
|
||||||
TASK_CANNEL("8","取消",""),
|
TASK_CANNEL("8","取消","",1<<7),
|
||||||
//点位表位置状态
|
//点位表位置状态
|
||||||
POINT_LOCATION_EMP("1","空料位",""),
|
POINT_LOCATION_EMP("1","空料位","",null),
|
||||||
POINT_LOCATION_REC("2","接料位",""),
|
POINT_LOCATION_REC("2","接料位","",null),
|
||||||
POINT_LOCATION_FULL("3","满料位",""),
|
POINT_LOCATION_FULL("3","满料位","",null),
|
||||||
POINT_LOCATION_IN("4","上料位",""),
|
POINT_LOCATION_IN("4","上料位","",null),
|
||||||
//出入料箱
|
//出入料箱
|
||||||
IN_VEHICLE("1","入箱",""),
|
IN_VEHICLE("1","入箱","",null),
|
||||||
OUT_VEHICLE("2","出箱",""),
|
OUT_VEHICLE("2","出箱","",null),
|
||||||
//出入料箱
|
//出入料箱
|
||||||
PAUSE_CACHELINE("1","暂停",""),
|
PAUSE_CACHELINE("1","暂停","",null),
|
||||||
START_CACHELINE("2","启动",""),
|
START_CACHELINE("2","启动","",null),
|
||||||
|
|
||||||
//设备状态枚举1-关机、2-开机、3-生产中、4-待机、5-故障
|
//设备状态枚举1-关机、2-开机、3-生产中、4-待机、5-故障
|
||||||
DEVICE_STATUS_OFF("1","关机",""),
|
DEVICE_STATUS_OFF("1","关机","",null),
|
||||||
DEVICE_STATUS_ON("2","开机",""),
|
DEVICE_STATUS_ON("2","开机","",null),
|
||||||
DEVICE_STATUS_RUNING("3","生产中",""),
|
DEVICE_STATUS_RUNING("3","生产中","",null),
|
||||||
DEVICE_STATUS_WAITING("4","待机",""),
|
DEVICE_STATUS_WAITING("4","待机","",null),
|
||||||
DEVICE_STATUS_ERROR("5","故障",""),
|
DEVICE_STATUS_ERROR("5","故障","",null),
|
||||||
|
|
||||||
// 点位表点位状态
|
// 点位表点位状态
|
||||||
POINT_STATUS_EMPTY("1", "空位", ""),
|
POINT_STATUS_EMPTY("1", "空位", "",null),
|
||||||
POINT_STATUS_FULL("2", "有料", ""),
|
POINT_STATUS_FULL("2", "有料", "",null),
|
||||||
POINT_STATUS_EMPTY_VEHICLE("3", "空载具", ""),
|
POINT_STATUS_EMPTY_VEHICLE("3", "空载具", "",null),
|
||||||
|
|
||||||
// 出入库分配明细状态
|
// 出入库分配明细状态
|
||||||
IOS_NOCREATE("00","未生成",""),
|
IOS_NOCREATE("00","未生成","",null),
|
||||||
IOS_CREATE("01","生成",""),
|
IOS_CREATE("01","生成","",null),
|
||||||
IOS_RUNNING("02","执行中",""),
|
IOS_RUNNING("02","执行中","",null),
|
||||||
IOS_FINISH("99","完成",""),
|
IOS_FINISH("99","完成","",null),
|
||||||
;
|
;
|
||||||
|
|
||||||
private String code;
|
private String code;
|
||||||
private String desc;
|
private String desc;
|
||||||
private String ext;
|
private String ext;
|
||||||
|
private Integer bit;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -80,10 +80,12 @@ public class AgvInstService {
|
|||||||
if (next.getName().equals("深坑清洗")){
|
if (next.getName().equals("深坑清洗")){
|
||||||
query.put("material_id",task.getString("material_id"));
|
query.put("material_id",task.getString("material_id"));
|
||||||
// query.put("qty",quantity) 深坑物料需要转重量
|
// query.put("qty",quantity) 深坑物料需要转重量
|
||||||
|
task.put("task_type",AcsTaskEnum.TASK_PRODUCT_WASH.getCode());
|
||||||
}
|
}
|
||||||
|
|
||||||
List<Map<String,String>> list = deviceService.workproceduceDevices(query);
|
List<Map<String,String>> list = deviceService.workproceduceDevices(query);
|
||||||
|
task.put("acs_task_type",AcsTaskEnum.ACS_TASK_TYPE_NOBLE_SINGLE_TASK.getCode());
|
||||||
|
task.put("is_send","1");
|
||||||
String nextPoint = null;
|
String nextPoint = null;
|
||||||
String cacheVehile = "";
|
String cacheVehile = "";
|
||||||
if (!CollectionUtils.isEmpty(list)){
|
if (!CollectionUtils.isEmpty(list)){
|
||||||
@@ -93,7 +95,8 @@ public class AgvInstService {
|
|||||||
throw new BadRequestException("当前任务下一道工序无可用设备");
|
throw new BadRequestException("当前任务下一道工序无可用设备");
|
||||||
}
|
}
|
||||||
nextPoint = getParamByXml(workprodure, currentFlow, nextPoint);
|
nextPoint = getParamByXml(workprodure, currentFlow, nextPoint);
|
||||||
task.put("acs_task_type",AcsTaskEnum.ACS_TASK_TYPE_NOBLE_DOUBLE_ENTRY_TASK.getCode());
|
task.put("task_type",AcsTaskEnum.TASK_PRODUCT_CACHE.getCode());
|
||||||
|
task.put("acs_task_type",AcsTaskEnum.ACS_TASK_TYPE_NOBLE_SINGLE_ENTRY_TASK.getCode());
|
||||||
cacheVehile = getCacheVehile(nextPoint, null);
|
cacheVehile = getCacheVehile(nextPoint, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -102,8 +105,8 @@ public class AgvInstService {
|
|||||||
throw new BadRequestException("逻辑非配错误,请检查代码");
|
throw new BadRequestException("逻辑非配错误,请检查代码");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
basePointService.update(new UpdateWrapper<SchBasePoint>()
|
// basePointService.update(new UpdateWrapper<SchBasePoint>()
|
||||||
.set("lock_type",StatusEnum.LOCK_ON.getCode()).set("task_id",task.getString("task_id")).eq("point_code",nextPoint));
|
// .set("lock_type",StatusEnum.LOCK_ON.getCode()).set("task_id",task.getString("task_id")).eq("point_code",nextPoint));
|
||||||
|
|
||||||
SchBaseTask schBaseTask = task.toJavaObject(SchBaseTask.class);
|
SchBaseTask schBaseTask = task.toJavaObject(SchBaseTask.class);
|
||||||
schBaseTask.setBarcodeArr(cacheVehile);
|
schBaseTask.setBarcodeArr(cacheVehile);
|
||||||
@@ -168,7 +171,8 @@ public class AgvInstService {
|
|||||||
SchBaseTask schBaseTask = task.toJavaObject(SchBaseTask.class);
|
SchBaseTask schBaseTask = task.toJavaObject(SchBaseTask.class);
|
||||||
schBaseTask.setBarcodeArr(cacheVehile);
|
schBaseTask.setBarcodeArr(cacheVehile);
|
||||||
schBaseTask.setPoint_code1(startPoint);
|
schBaseTask.setPoint_code1(startPoint);
|
||||||
schBaseTask.setAcs_task_type(AcsTaskEnum.ACS_TASK_TYPE_NOBLE_SINGLE_TASK.getCode());
|
schBaseTask.setIs_send(true);
|
||||||
|
schBaseTask.setAcs_task_type(AcsTaskEnum.ACS_TASK_TYPE_NOBLE_SINGLE_ENTRY_TASK.getCode());
|
||||||
schBaseTask.setPoint_code3(startPoint);
|
schBaseTask.setPoint_code3(startPoint);
|
||||||
schBaseTask.setTask_status(StatusEnum.TASK_START_END_P.getCode());
|
schBaseTask.setTask_status(StatusEnum.TASK_START_END_P.getCode());
|
||||||
schBaseTask.setUpdate_time(new Date());
|
schBaseTask.setUpdate_time(new Date());
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ public class WmsToAcsServiceImpl implements WmsToAcsService{
|
|||||||
, "priority", task.getString("priority")
|
, "priority", task.getString("priority")
|
||||||
, "is_send", task.getBoolean("is_send")?"1":"0"
|
, "is_send", task.getBoolean("is_send")?"1":"0"
|
||||||
, "vehicle_code", task.getString("vehicle_code")
|
, "vehicle_code", task.getString("vehicle_code")
|
||||||
|
, "quantity", task.getString("material_qty")
|
||||||
, "barcodeArr", task.getString("barcodeArr")
|
, "barcodeArr", task.getString("barcodeArr")
|
||||||
, "proprity_floor", "2"
|
, "proprity_floor", "2"
|
||||||
, "agv_system_type", task.getString("agv_system_type")
|
, "agv_system_type", task.getString("agv_system_type")
|
||||||
|
|||||||
@@ -0,0 +1,39 @@
|
|||||||
|
package org.nl.wms.product_manage;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.nl.common.utils.MapOf;
|
||||||
|
import org.nl.modules.common.exception.BadRequestException;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @author ZZQ
|
||||||
|
* @Date 2023/5/4 20:11
|
||||||
|
*/
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Getter
|
||||||
|
public enum ReportEnum {
|
||||||
|
//出入库类型
|
||||||
|
REPORT_STATUS(MapOf.of("生成", "1", "报工", "2","报工审核","3")),
|
||||||
|
;
|
||||||
|
private Map<String, String> code;
|
||||||
|
|
||||||
|
public String code(String desc) {
|
||||||
|
String code = this.getCode().get(desc);
|
||||||
|
if (StringUtils.isNotEmpty(code)) {
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
throw new BadRequestException(this.name() + "对应类型" + desc + "未定义");
|
||||||
|
}
|
||||||
|
|
||||||
|
public String check(String code) {
|
||||||
|
for (Map.Entry<String, String> entry : this.getCode().entrySet()) {
|
||||||
|
if (entry.getValue().equals("code")) {
|
||||||
|
return entry.getValue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
throw new BadRequestException(this.name() + "对应类型" + code + "未定义");
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -50,11 +50,11 @@ public class PdmBiDeviceController {
|
|||||||
return new ResponseEntity<>(TableDataInfo.build(result),HttpStatus.OK);
|
return new ResponseEntity<>(TableDataInfo.build(result),HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/list")
|
@PostMapping("/list")
|
||||||
@Log("查询生产设备列表")
|
@Log("查询生产设备列表")
|
||||||
@ApiOperation("查询生产设备列表")
|
@ApiOperation("查询生产设备列表")
|
||||||
@SaIgnore
|
@SaIgnore
|
||||||
public ResponseEntity<Object> queryList(DeviceQuery query){
|
public ResponseEntity<Object> queryList(@RequestBody DeviceQuery query){
|
||||||
List<Map<String, Object>> list = iDeviceService.listMaps(query.build().select("device_code", "device_name"));
|
List<Map<String, Object>> list = iDeviceService.listMaps(query.build().select("device_code", "device_name"));
|
||||||
return new ResponseEntity<>(TableDataInfo.build(list),HttpStatus.OK);
|
return new ResponseEntity<>(TableDataInfo.build(list),HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package org.nl.wms.product_manage.controller.workorder;
|
package org.nl.wms.product_manage.controller.workorder;
|
||||||
|
|
||||||
|
|
||||||
|
import cn.dev33.satoken.annotation.SaIgnore;
|
||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||||
@@ -93,9 +94,6 @@ public class PdmProduceWorkorderController {
|
|||||||
if (ids != null && ids.length > 0){
|
if (ids != null && ids.length > 0){
|
||||||
iPdmProduceWorkorderService.update(new UpdateWrapper<PdmProduceWorkorder>()
|
iPdmProduceWorkorderService.update(new UpdateWrapper<PdmProduceWorkorder>()
|
||||||
.set("is_delete",true)
|
.set("is_delete",true)
|
||||||
.set("update_id", SecurityUtils.getCurrentUserId())
|
|
||||||
.set("update_name",SecurityUtils.getCurrentNickName())
|
|
||||||
.set("update_time",new Date())
|
|
||||||
.in("workorder_id", Arrays.asList(ids)));
|
.in("workorder_id", Arrays.asList(ids)));
|
||||||
}
|
}
|
||||||
return new ResponseEntity<>(HttpStatus.OK);
|
return new ResponseEntity<>(HttpStatus.OK);
|
||||||
@@ -146,14 +144,18 @@ public class PdmProduceWorkorderController {
|
|||||||
return new ResponseEntity<>(HttpStatus.OK);
|
return new ResponseEntity<>(HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/reportQuery")
|
|
||||||
@Log("报工查询")
|
|
||||||
@ApiOperation("报工查询")
|
@PostMapping("/reportQuery")
|
||||||
public ResponseEntity<Object> reportQuery(ReportQuery query) {
|
@Log("报工数修改")
|
||||||
return new ResponseEntity<>(TableDataInfo.build(iPdmProduceWorkorderService.reportQuery(query)),HttpStatus.OK);
|
@ApiOperation("报工数修改")
|
||||||
|
@SaIgnore
|
||||||
|
public ResponseEntity<Object> reportQuery(@RequestBody ReportQuery param) {
|
||||||
|
return new ResponseEntity<>(TableDataInfo.build(iPdmProduceWorkorderService.reportQuery(param)),HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,9 +2,11 @@ package org.nl.wms.product_manage.controller.workorder;
|
|||||||
|
|
||||||
import cn.dev33.satoken.annotation.SaIgnore;
|
import cn.dev33.satoken.annotation.SaIgnore;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.nl.common.TableDataInfo;
|
||||||
import org.nl.common.anno.Log;
|
import org.nl.common.anno.Log;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.nl.common.utils.api.ResultCode;
|
import org.nl.common.utils.api.ResultCode;
|
||||||
@@ -13,6 +15,9 @@ import org.nl.wms.mps.service.ProduceshiftorderService;
|
|||||||
import org.nl.wms.mps.service.dto.DeviceDto;
|
import org.nl.wms.mps.service.dto.DeviceDto;
|
||||||
import org.nl.wms.product_manage.service.device.IPdmBiDeviceService;
|
import org.nl.wms.product_manage.service.device.IPdmBiDeviceService;
|
||||||
import org.nl.wms.product_manage.service.workorder.IPdmProduceWorkorderService;
|
import org.nl.wms.product_manage.service.workorder.IPdmProduceWorkorderService;
|
||||||
|
import org.nl.wms.product_manage.service.workorder.IPdmProduceWorkorderrecordService;
|
||||||
|
import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorderrecord;
|
||||||
|
import org.nl.wms.product_manage.service.workorder.impl.PdmProduceWorkorderrecordServiceImpl;
|
||||||
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Pageable;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
@@ -33,8 +38,10 @@ import java.util.Map;
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
public class ProduceshiftorderController{
|
public class ProduceshiftorderController{
|
||||||
private final ProduceshiftorderService produceshiftorderService;
|
private final ProduceshiftorderService produceshiftorderService;
|
||||||
|
|
||||||
private final IPdmProduceWorkorderService iPdmProduceWorkorderService;
|
private final IPdmProduceWorkorderService iPdmProduceWorkorderService;
|
||||||
private final IPdmBiDeviceService pdmBiDeviceService;
|
|
||||||
|
private final IPdmProduceWorkorderrecordService workorderrecordService;
|
||||||
|
|
||||||
|
|
||||||
@PostMapping("/getDevice")
|
@PostMapping("/getDevice")
|
||||||
@@ -69,7 +76,8 @@ public class ProduceshiftorderController{
|
|||||||
if(null == param) {
|
if(null == param) {
|
||||||
throw new BizCoreException(ResultCode.VALIDATE_FAILED);
|
throw new BizCoreException(ResultCode.VALIDATE_FAILED);
|
||||||
}
|
}
|
||||||
return new ResponseEntity<>(produceshiftorderService.getOrderList(param, page), HttpStatus.OK);
|
List<Map> list = iPdmProduceWorkorderService.getOrderList(param, page);
|
||||||
|
return new ResponseEntity<>(TableDataInfo.build(list), HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/openStart")
|
@PostMapping("/openStart")
|
||||||
@@ -93,6 +101,23 @@ public class ProduceshiftorderController{
|
|||||||
iPdmProduceWorkorderService.finish(param);
|
iPdmProduceWorkorderService.finish(param);
|
||||||
return new ResponseEntity<>(HttpStatus.OK);
|
return new ResponseEntity<>(HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
@PostMapping("/deleteReport")
|
||||||
|
@Log("deleteReport")
|
||||||
|
@ApiOperation("deleteReport")
|
||||||
|
public ResponseEntity<Object> deleteReport(@RequestBody JSONObject param) {
|
||||||
|
workorderrecordService.removeById(param.getString("macoperate_id"));
|
||||||
|
return new ResponseEntity<>(HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@PostMapping("/updateReport")
|
||||||
|
@Log("报工数修改")
|
||||||
|
@ApiOperation("报工数修改")
|
||||||
|
public ResponseEntity<Object> updateReport(@RequestBody JSONObject param) {
|
||||||
|
iPdmProduceWorkorderService.updateReport(param);
|
||||||
|
return new ResponseEntity<>(HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@PostMapping("/getReportWork")
|
@PostMapping("/getReportWork")
|
||||||
@Log("获取当前报工记录")
|
@Log("获取当前报工记录")
|
||||||
@@ -118,6 +143,7 @@ public class ProduceshiftorderController{
|
|||||||
return new ResponseEntity<>(HttpStatus.OK);
|
return new ResponseEntity<>(HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@GetMapping("/getUser")
|
@GetMapping("/getUser")
|
||||||
@Log("查询操作人员")
|
@Log("查询操作人员")
|
||||||
@ApiOperation("查询操作人员")
|
@ApiOperation("查询操作人员")
|
||||||
|
|||||||
@@ -4,6 +4,10 @@ package org.nl.wms.product_manage.sch.manage;
|
|||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -25,14 +29,16 @@ public abstract class AbstractAcsTask {
|
|||||||
|
|
||||||
public abstract String createTask(JSONObject param);
|
public abstract String createTask(JSONObject param);
|
||||||
|
|
||||||
|
|
||||||
public abstract void cancel(String task_id);
|
public abstract void cancel(String task_id);
|
||||||
|
|
||||||
|
|
||||||
public abstract void pointConfirm(JSONObject param);
|
public abstract void pointConfirm(JSONObject param);
|
||||||
|
|
||||||
public void notifyAcs(JSONArray param){};
|
public void notifyAcs(JSONArray param){};
|
||||||
|
|
||||||
|
public List<SchBaseTask> schedulerTask(List<SchBaseTask> tasks){
|
||||||
|
return new ArrayList<>();
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,114 +0,0 @@
|
|||||||
|
|
||||||
package org.nl.wms.product_manage.sch.rest;
|
|
||||||
|
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
|
||||||
import io.swagger.annotations.Api;
|
|
||||||
import io.swagger.annotations.ApiOperation;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
import org.nl.common.anno.Log;
|
|
||||||
import org.nl.wms.product_manage.sch.service.PointService;
|
|
||||||
import org.nl.wms.product_manage.sch.service.dto.PointDto;
|
|
||||||
import org.springframework.data.domain.Pageable;
|
|
||||||
import org.springframework.http.HttpStatus;
|
|
||||||
import org.springframework.http.ResponseEntity;
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
|
||||||
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author ldjun
|
|
||||||
* @date 2021-08-19
|
|
||||||
**/
|
|
||||||
//@RestController
|
|
||||||
@RequiredArgsConstructor
|
|
||||||
//@Api(tags = "点位管理")
|
|
||||||
//@RequestMapping("/api/point")
|
|
||||||
//@Slf4j
|
|
||||||
public class PointController {
|
|
||||||
|
|
||||||
private final PointService pointService;
|
|
||||||
|
|
||||||
@GetMapping
|
|
||||||
@Log("查询点位")
|
|
||||||
@ApiOperation("查询点位")
|
|
||||||
//@SaCheckPermission("point:list")
|
|
||||||
public ResponseEntity<Object> query(@RequestParam Map whereJson, Pageable page) {
|
|
||||||
return new ResponseEntity<>(pointService.queryAll(whereJson, page), HttpStatus.OK);
|
|
||||||
}
|
|
||||||
|
|
||||||
@PostMapping
|
|
||||||
@Log("新增点位")
|
|
||||||
@ApiOperation("新增点位")
|
|
||||||
//@SaCheckPermission("point:add")
|
|
||||||
public ResponseEntity<Object> create(@Validated @RequestBody PointDto dto) {
|
|
||||||
pointService.create(dto);
|
|
||||||
return new ResponseEntity<>(HttpStatus.CREATED);
|
|
||||||
}
|
|
||||||
|
|
||||||
@PutMapping
|
|
||||||
@Log("修改点位")
|
|
||||||
@ApiOperation("修改点位")
|
|
||||||
//@SaCheckPermission("point:edit")
|
|
||||||
public ResponseEntity<Object> update(@Validated @RequestBody PointDto dto) {
|
|
||||||
pointService.update(dto);
|
|
||||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Log("删除点位")
|
|
||||||
@ApiOperation("删除点位")
|
|
||||||
//@SaCheckPermission("point:del")
|
|
||||||
@DeleteMapping
|
|
||||||
public ResponseEntity<Object> delete(@RequestBody Long[] ids) {
|
|
||||||
pointService.deleteAll(ids);
|
|
||||||
return new ResponseEntity<>(HttpStatus.OK);
|
|
||||||
}
|
|
||||||
@PutMapping("/changeActive")
|
|
||||||
@Log("修改点位启用状态")
|
|
||||||
@ApiOperation("修改点位启用状态")
|
|
||||||
//@SaCheckPermission("store:edit")
|
|
||||||
public ResponseEntity<Object> update(@RequestBody JSONObject json) {
|
|
||||||
pointService.changeActive(json);
|
|
||||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
|
||||||
}
|
|
||||||
|
|
||||||
@PostMapping("/getPoint")
|
|
||||||
@Log("查询点位下拉框")
|
|
||||||
@ApiOperation("查询点位下拉框")
|
|
||||||
//@SaCheckPermission("materialtype:list")
|
|
||||||
public ResponseEntity<Object> queryPoint(@RequestBody Map whereJson) {
|
|
||||||
return new ResponseEntity<>(pointService.getPoint(whereJson), HttpStatus.OK);
|
|
||||||
}
|
|
||||||
|
|
||||||
@GetMapping("/selectPoint")
|
|
||||||
@Log("查询点位管理")
|
|
||||||
@ApiOperation("查询点位管理")
|
|
||||||
//@SaCheckPermission("Point:list")
|
|
||||||
public ResponseEntity<Object> selectPoint(@RequestParam Map whereJson, Pageable page){
|
|
||||||
return new ResponseEntity<>(pointService.selectPoint(whereJson,page),HttpStatus.OK);
|
|
||||||
}
|
|
||||||
@GetMapping("/getRegion")
|
|
||||||
@Log("获取区域")
|
|
||||||
@ApiOperation("获取区域")
|
|
||||||
public ResponseEntity<Object> getRegion(){
|
|
||||||
return new ResponseEntity<>(pointService.getRegion(),HttpStatus.OK);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Log("启动与禁用")
|
|
||||||
@PostMapping("/changeUsed")
|
|
||||||
@ApiOperation("启动与禁用")
|
|
||||||
public ResponseEntity<Object> changeUsedOn(@RequestBody JSONObject jsonObject) {
|
|
||||||
pointService.changeUsed(jsonObject);
|
|
||||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Log("锁定与解锁")
|
|
||||||
@PostMapping("/changeLock")
|
|
||||||
@ApiOperation("锁定与解锁")
|
|
||||||
public ResponseEntity<Object> changeLock(@RequestBody JSONObject jsonObject) {
|
|
||||||
pointService.changeLock(jsonObject);
|
|
||||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,99 +0,0 @@
|
|||||||
package org.nl.wms.product_manage.sch.rest;
|
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
|
||||||
import io.swagger.annotations.Api;
|
|
||||||
import io.swagger.annotations.ApiOperation;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
import org.nl.common.anno.Log;
|
|
||||||
import org.nl.wms.product_manage.sch.service.RegionService;
|
|
||||||
import org.nl.wms.product_manage.sch.service.dto.RegionDto;
|
|
||||||
import org.springframework.data.domain.Pageable;
|
|
||||||
import org.springframework.http.HttpStatus;
|
|
||||||
import org.springframework.http.ResponseEntity;
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
|
||||||
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author lyd
|
|
||||||
* @date 2023-03-17
|
|
||||||
**/
|
|
||||||
//@RestController
|
|
||||||
@RequiredArgsConstructor
|
|
||||||
//@Api(tags = "区域管理管理")
|
|
||||||
//@RequestMapping("/api/region")
|
|
||||||
//@Slf4j
|
|
||||||
public class RegionController {
|
|
||||||
|
|
||||||
private final RegionService regionService;
|
|
||||||
|
|
||||||
@GetMapping
|
|
||||||
@Log("查询区域管理")
|
|
||||||
@ApiOperation("查询区域管理")
|
|
||||||
//@SaCheckPermission("region:list")
|
|
||||||
public ResponseEntity<Object> query(@RequestParam Map whereJson, Pageable page) {
|
|
||||||
return new ResponseEntity<>(regionService.queryAll(whereJson, page), HttpStatus.OK);
|
|
||||||
}
|
|
||||||
|
|
||||||
@GetMapping("/getPointQuery")
|
|
||||||
@Log("获取可用点位")
|
|
||||||
@ApiOperation("获取可用点位")
|
|
||||||
//@SaCheckPermission("region:list")
|
|
||||||
public ResponseEntity<Object> getPointQuery(@RequestParam Map whereJson, Pageable page) {
|
|
||||||
return new ResponseEntity<>(regionService.getPointQuery(whereJson, page), HttpStatus.OK);
|
|
||||||
}
|
|
||||||
|
|
||||||
@PostMapping
|
|
||||||
@Log("新增区域管理")
|
|
||||||
@ApiOperation("新增区域管理")
|
|
||||||
//@SaCheckPermission("region:add")
|
|
||||||
public ResponseEntity<Object> create(@Validated @RequestBody RegionDto dto) {
|
|
||||||
regionService.create(dto);
|
|
||||||
return new ResponseEntity<>(HttpStatus.CREATED);
|
|
||||||
}
|
|
||||||
|
|
||||||
@PutMapping
|
|
||||||
@Log("修改区域管理")
|
|
||||||
@ApiOperation("修改区域管理")
|
|
||||||
//@SaCheckPermission("region:edit")
|
|
||||||
public ResponseEntity<Object> update(@Validated @RequestBody RegionDto dto) {
|
|
||||||
regionService.update(dto);
|
|
||||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Log("删除区域管理")
|
|
||||||
@ApiOperation("删除区域管理")
|
|
||||||
//@SaCheckPermission("region:del")
|
|
||||||
@DeleteMapping
|
|
||||||
public ResponseEntity<Object> delete(@RequestBody String[] codes) {
|
|
||||||
regionService.deleteAll(codes);
|
|
||||||
return new ResponseEntity<>(HttpStatus.OK);
|
|
||||||
}
|
|
||||||
|
|
||||||
@PostMapping("/getPointStatusSelectByCode")
|
|
||||||
@Log("获取点位状态下拉框")
|
|
||||||
@ApiOperation("获取点位状态下拉框")
|
|
||||||
//@SaCheckPermission("region:add")
|
|
||||||
public ResponseEntity<Object> getPointStatusSelectByCode(@RequestBody String region_code) {
|
|
||||||
return new ResponseEntity<>(regionService.getPointStatusSelectByCode(region_code), HttpStatus.CREATED);
|
|
||||||
}
|
|
||||||
|
|
||||||
@PostMapping("/getPointTypeSelectByCode")
|
|
||||||
@Log("获取点位类型下拉框")
|
|
||||||
@ApiOperation("获取点位类型下拉框")
|
|
||||||
//@SaCheckPermission("region:add")
|
|
||||||
public ResponseEntity<Object> getPointTypeSelectByCode(@RequestBody String region_code) {
|
|
||||||
return new ResponseEntity<>(regionService.getPointTypeSelectByCode(region_code), HttpStatus.CREATED);
|
|
||||||
}
|
|
||||||
|
|
||||||
@PostMapping("/getRegionSelect")
|
|
||||||
@Log("获取区域下拉框")
|
|
||||||
@ApiOperation("获取区域下拉框")
|
|
||||||
public ResponseEntity<Object> getRegionSelect(@RequestBody JSONObject whereJson) {
|
|
||||||
return new ResponseEntity<>(regionService.getRegionSelect(whereJson), HttpStatus.CREATED);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,119 +0,0 @@
|
|||||||
|
|
||||||
package org.nl.wms.product_manage.sch.rest;
|
|
||||||
|
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSONArray;
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
||||||
import io.swagger.annotations.Api;
|
|
||||||
import io.swagger.annotations.ApiOperation;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
|
||||||
import org.nl.common.anno.Log;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
import org.nl.wms.system_manage.service.dict.ISysDictService;
|
|
||||||
import org.nl.wms.system_manage.service.dict.dao.Dict;
|
|
||||||
import org.nl.wms.product_manage.sch.manage.FinishTypeEnum;
|
|
||||||
import org.nl.wms.product_manage.sch.service.TaskService;
|
|
||||||
import org.nl.wms.product_manage.sch.service.dto.TaskDto;
|
|
||||||
import org.springframework.data.domain.Pageable;
|
|
||||||
import org.springframework.http.HttpStatus;
|
|
||||||
import org.springframework.http.ResponseEntity;
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
|
||||||
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author ldjun
|
|
||||||
* @date 2021-08-19
|
|
||||||
**/
|
|
||||||
@RestController
|
|
||||||
@RequiredArgsConstructor
|
|
||||||
@Api(tags = "任务管理")
|
|
||||||
@RequestMapping("/api/task")
|
|
||||||
@Slf4j
|
|
||||||
public class TaskController {
|
|
||||||
|
|
||||||
private final TaskService taskService;
|
|
||||||
private final ISysDictService dictService;
|
|
||||||
|
|
||||||
@GetMapping
|
|
||||||
@Log("查询任务")
|
|
||||||
@ApiOperation("查询任务")
|
|
||||||
//@PreAuthorize("@el.check('task:list')")
|
|
||||||
public ResponseEntity<Object> query(@RequestParam Map whereJson, Pageable page) {
|
|
||||||
return new ResponseEntity<>(taskService.queryAll(whereJson, page), HttpStatus.OK);
|
|
||||||
}
|
|
||||||
|
|
||||||
@PostMapping
|
|
||||||
@Log("新增任务")
|
|
||||||
@ApiOperation("新增任务")
|
|
||||||
//@PreAuthorize("@el.check('task:add')")
|
|
||||||
public ResponseEntity<Object> create(@Validated @RequestBody TaskDto dto) {
|
|
||||||
taskService.create(dto);
|
|
||||||
return new ResponseEntity<>(HttpStatus.CREATED);
|
|
||||||
}
|
|
||||||
|
|
||||||
@PutMapping
|
|
||||||
@Log("修改任务")
|
|
||||||
@ApiOperation("修改任务")
|
|
||||||
//@PreAuthorize("@el.check('task:edit')")
|
|
||||||
public ResponseEntity<Object> update(@Validated @RequestBody TaskDto dto) {
|
|
||||||
taskService.update(dto);
|
|
||||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Log("删除任务")
|
|
||||||
@ApiOperation("删除任务")
|
|
||||||
//@PreAuthorize("@el.check('task:del')")
|
|
||||||
@DeleteMapping
|
|
||||||
public ResponseEntity<Object> delete(@RequestBody String[] ids) {
|
|
||||||
taskService.deleteAll(ids);
|
|
||||||
return new ResponseEntity<>(HttpStatus.OK);
|
|
||||||
}
|
|
||||||
|
|
||||||
@GetMapping("/taskStatus")
|
|
||||||
@Log("获取任务状态列表")
|
|
||||||
@ApiOperation("获取任务状态列表")
|
|
||||||
public ResponseEntity<Object> getTaskStatus() {
|
|
||||||
return new ResponseEntity<>(dictService.list(new LambdaQueryWrapper<Dict>()
|
|
||||||
.eq(Dict::getCode, "task_status")), HttpStatus.OK);
|
|
||||||
}
|
|
||||||
|
|
||||||
@PostMapping("/taskType")
|
|
||||||
@Log("获取任务类型列表")
|
|
||||||
@ApiOperation("获取任务类型列表")
|
|
||||||
public ResponseEntity<Object> getTaskType() {
|
|
||||||
return new ResponseEntity<>(taskService.getTaskTypes(), HttpStatus.OK);
|
|
||||||
}
|
|
||||||
@GetMapping("/acsTaskType")
|
|
||||||
@Log("获取acs任务类型列表")
|
|
||||||
@ApiOperation("获取acs任务类型列表")
|
|
||||||
public ResponseEntity<Object> getAcsTaskType() {
|
|
||||||
return new ResponseEntity<>(taskService.getAcsTaskType(), HttpStatus.OK);
|
|
||||||
}
|
|
||||||
|
|
||||||
@GetMapping("/finishType")
|
|
||||||
@Log("获取任务类型列表")
|
|
||||||
@ApiOperation("获取任务类型列表")
|
|
||||||
public ResponseEntity<Object> getFinishType() {
|
|
||||||
FinishTypeEnum[] values = FinishTypeEnum.values();
|
|
||||||
JSONArray arr = new JSONArray();
|
|
||||||
for (FinishTypeEnum value : values) {
|
|
||||||
JSONObject json = new JSONObject();
|
|
||||||
json.put("code", value.getCode());
|
|
||||||
json.put("name", value.getName());
|
|
||||||
arr.add(json);
|
|
||||||
}
|
|
||||||
return new ResponseEntity<>(arr, HttpStatus.OK);
|
|
||||||
}
|
|
||||||
|
|
||||||
@PutMapping("/operation")
|
|
||||||
@Log("任务操作")
|
|
||||||
@ApiOperation("任务操作")
|
|
||||||
//@PreAuthorize("@el.check('task:edit')")
|
|
||||||
public ResponseEntity<Object> update(@RequestBody Map<String, Object> map) {
|
|
||||||
taskService.operation(map);
|
|
||||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -207,6 +207,14 @@ public class TaskServiceImpl implements TaskService {
|
|||||||
cancel.add(res2);
|
cancel.add(res2);
|
||||||
acsToWmsService.receiveTaskStatusAcs(JSON.toJSONString(cancel));
|
acsToWmsService.receiveTaskStatusAcs(JSON.toJSONString(cancel));
|
||||||
break;
|
break;
|
||||||
|
case "delete":
|
||||||
|
JSONArray delete = new JSONArray();
|
||||||
|
JSONObject res3 = new JSONObject();
|
||||||
|
res3.put("task_id", task_id);
|
||||||
|
res3.put("status", AcsTaskEnum.STATUS_CANNEL.getCode());
|
||||||
|
delete.add(res3);
|
||||||
|
acsToWmsService.receiveTaskStatusAcs(JSON.toJSONString(delete));
|
||||||
|
break;
|
||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package org.nl.wms.product_manage.sch.tasks.SpeMachinery;
|
package org.nl.wms.product_manage.sch.tasks.SpeMachinery;
|
||||||
|
|
||||||
|
import cn.hutool.core.date.DateUnit;
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.lang.Assert;
|
import cn.hutool.core.lang.Assert;
|
||||||
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.core.util.IdUtil;
|
||||||
@@ -17,6 +18,7 @@ import org.nl.common.utils.MapOf;
|
|||||||
import org.nl.common.utils.SecurityUtils;
|
import org.nl.common.utils.SecurityUtils;
|
||||||
import org.nl.modules.common.exception.BadRequestException;
|
import org.nl.modules.common.exception.BadRequestException;
|
||||||
import org.nl.modules.system.util.CodeUtil;
|
import org.nl.modules.system.util.CodeUtil;
|
||||||
|
import org.nl.modules.wql.WQL;
|
||||||
import org.nl.modules.wql.core.bean.WQLObject;
|
import org.nl.modules.wql.core.bean.WQLObject;
|
||||||
import org.nl.wms.ext.acs.service.impl.AgvInstService;
|
import org.nl.wms.ext.acs.service.impl.AgvInstService;
|
||||||
import org.nl.wms.product_manage.sch.manage.AbstractAcsTask;
|
import org.nl.wms.product_manage.sch.manage.AbstractAcsTask;
|
||||||
@@ -36,9 +38,8 @@ import org.springframework.stereotype.Service;
|
|||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.*;
|
||||||
import java.util.List;
|
import java.util.stream.Collectors;
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 专机任务
|
* 专机任务
|
||||||
@@ -151,7 +152,7 @@ public class SpeEmpTask extends AbstractAcsTask {
|
|||||||
private JSONObject packageParam(JSONObject form, String task_id) {
|
private JSONObject packageParam(JSONObject form, String task_id) {
|
||||||
JSONObject task = new JSONObject();
|
JSONObject task = new JSONObject();
|
||||||
参数封装:{
|
参数封装:{
|
||||||
AcsTaskEnum taskEnum = AcsTaskEnum.getType(form.getString("type"), "REQUEST_");
|
AcsTaskEnum taskEnum = AcsTaskEnum.getType(form.getString("type"), "TASK_");
|
||||||
task.put("task_id", task_id);
|
task.put("task_id", task_id);
|
||||||
task.put("task_name", taskEnum.getDesc());
|
task.put("task_name", taskEnum.getDesc());
|
||||||
task.put("task_code", CodeUtil.getNewCode("TASK_CODE"));
|
task.put("task_code", CodeUtil.getNewCode("TASK_CODE"));
|
||||||
@@ -227,4 +228,114 @@ public class SpeEmpTask extends AbstractAcsTask {
|
|||||||
public void pointConfirm(JSONObject param) {
|
public void pointConfirm(JSONObject param) {
|
||||||
agvInstService.empMatter(param);
|
agvInstService.empMatter(param);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<SchBaseTask> schedulerTask(List<SchBaseTask> array) {
|
||||||
|
ArrayList<SchBaseTask> Merge = new ArrayList<>();
|
||||||
|
if (!CollectionUtils.isEmpty(array)){
|
||||||
|
String pointCollect = array.stream().map(a->a.getPoint_code1() + "','" + a.getPoint_code2()).collect(Collectors.joining("','"));
|
||||||
|
JSONArray needMergeCollect = WQL.getWO("sch_point").addParamMap(MapOf.of("flag", "5", "point_codes", "'" + pointCollect + "'")).process().getResultJSONArray(0);
|
||||||
|
//区域编号对应point_code
|
||||||
|
Map<String, List<Object>> pointRegionCollent = needMergeCollect.stream().collect(Collectors.groupingBy(o -> ((JSONObject) o).getString("point_code")));
|
||||||
|
Set<String> mergePointCollent = needMergeCollect.stream().map(item -> ((JSONObject) item).getString("point_code")).collect(Collectors.toSet());
|
||||||
|
//合并下发的任务
|
||||||
|
List<SchBaseTask> notMerge = new ArrayList<>();//单独下发的任务
|
||||||
|
List<SchBaseTask> waitingTask = new ArrayList<>();//可合并,但是只有单条任务
|
||||||
|
Map<String, String> taskGroupMap = new HashMap<>();
|
||||||
|
for (SchBaseTask task : array) {
|
||||||
|
String taskGroupId = org.nl.common.utils.IdUtil.getStringId();
|
||||||
|
String taskId = task.getTask_id();
|
||||||
|
task.setIs_send(true);
|
||||||
|
if (taskGroupMap.get(taskId) != null){
|
||||||
|
task.setTask_group_id(taskGroupMap.get(taskId));
|
||||||
|
task.setIs_send(false);
|
||||||
|
Merge.add(task);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
String start = task.getPoint_code1();
|
||||||
|
String end = task.getPoint_code2();
|
||||||
|
taskGroupMap.put(taskId,taskGroupId);
|
||||||
|
task.setTask_group_id(taskGroupId);
|
||||||
|
//如果点位不属于查询出来可以合并点位集合:则单独下发集合
|
||||||
|
if (!mergePointCollent.contains(start) && !mergePointCollent.contains(end)){
|
||||||
|
notMerge.add(task);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
//起点点位是否有多个合并任务点,如果没有则判断终点是否有多个合并任务点;都没有则说明当前起点终点对应区域只有一个任务:放入等待下发集合中
|
||||||
|
List<String> collect = taskGroupMap.keySet().stream().collect(Collectors.toList());
|
||||||
|
collect.add(taskId);
|
||||||
|
String mergeTargetId = getMergePoint(pointRegionCollent, start,end,array,collect);
|
||||||
|
if (mergeTargetId == null){
|
||||||
|
waitingTask.add(task);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
//查询到相同区域可以合并的点位集合
|
||||||
|
taskGroupMap.put(mergeTargetId,taskGroupId);
|
||||||
|
Merge.add(task);
|
||||||
|
}
|
||||||
|
//开始下发:处理waitingTask:如果创建时间>2分钟:则改单独下发
|
||||||
|
if (waitingTask.size()>0){
|
||||||
|
List<SchBaseTask> needPublish = waitingTask.stream().filter(a -> DateUtil.between(new Date(),a.getCreate_time(), DateUnit.MINUTE) >1 ).collect(Collectors.toList());
|
||||||
|
notMerge.addAll(needPublish);
|
||||||
|
}
|
||||||
|
String notMergeID = notMerge.stream().map(a -> a.getTask_id()).collect(Collectors.joining(","));
|
||||||
|
String waitingTaskId = waitingTask.stream().map(a -> a.getTask_id()).collect(Collectors.joining(","));
|
||||||
|
String MergeId = Merge.stream().map(a -> a.getTask_id()).collect(Collectors.joining(","));
|
||||||
|
log.info("TaskScheduleService#taskPublish notMerge:{},waitingTask:{},merge:{}",notMergeID,waitingTaskId,MergeId);
|
||||||
|
notMerge.forEach(a->{
|
||||||
|
a.setIs_send(true);
|
||||||
|
});
|
||||||
|
Merge.addAll(notMerge);
|
||||||
|
}
|
||||||
|
Map<String, List<SchBaseTask>> collect = Merge.stream().collect(Collectors.groupingBy(SchBaseTask::getTask_group_id));
|
||||||
|
ArrayList<SchBaseTask> result = new ArrayList<>();
|
||||||
|
for (List<SchBaseTask> value : collect.values()) {
|
||||||
|
updateAcsTaskType(value);
|
||||||
|
result.addAll(value);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateAcsTaskType(List<SchBaseTask> value) {
|
||||||
|
if (value.size() > 1){
|
||||||
|
boolean tag = true;
|
||||||
|
for (SchBaseTask task : value) {
|
||||||
|
if (task.getAcs_task_type().equals(AcsTaskEnum.ACS_TASK_TYPE_NOBLE_SINGLE_ENTRY_TASK.getCode())){
|
||||||
|
task.setAcs_task_type(AcsTaskEnum.ACS_TASK_TYPE_NOBLE_DOUBLE_ENTRY_TASK.getCode());
|
||||||
|
}
|
||||||
|
if (task.getAcs_task_type().equals(AcsTaskEnum.ACS_TASK_TYPE_NOBLE_SINGLE_TASK.getCode())){
|
||||||
|
task.setAcs_task_type(AcsTaskEnum.ACS_TASK_TYPE_NOBLE_DOUBLE_TASK.getCode());
|
||||||
|
}
|
||||||
|
if (tag){task.setIs_send(true);tag = false;}else {task.setIs_send(false); }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private String getMergePoint(Map<String, List<Object>> pointRegionCollent, String start,String end,List<SchBaseTask> tasks,List<String> taskIds) {
|
||||||
|
String findpoint = findpoint(pointRegionCollent, start, tasks, taskIds);
|
||||||
|
if (findpoint == null){
|
||||||
|
findpoint = findpoint(pointRegionCollent, end, tasks, taskIds);
|
||||||
|
}
|
||||||
|
return findpoint;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String findpoint(Map<String, List<Object>> pointRegionCollent, String start, List<SchBaseTask> tasks, List<String> taskIds) {
|
||||||
|
List<Object> objects = pointRegionCollent.get(start);
|
||||||
|
if (CollectionUtils.isEmpty(objects)){
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
JSONObject startPointInfo = (JSONObject) objects.get(0);
|
||||||
|
String startPointCollent = startPointInfo.getString("pointcollent");
|
||||||
|
String[] split = startPointCollent.split(",");
|
||||||
|
for (String s : split) {
|
||||||
|
Optional<SchBaseTask> any = tasks.stream().filter(a -> a.getPoint_code1().equals(s) && !taskIds.contains((a.getTask_id()))).findAny();
|
||||||
|
if (any.isPresent()){
|
||||||
|
return any.get().getTask_id();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
package org.nl.wms.product_manage.sch.tasks.SpeMachinery;
|
package org.nl.wms.product_manage.sch.tasks.SpeMachinery;
|
||||||
|
|
||||||
|
import cn.hutool.core.date.DateUnit;
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.lang.Assert;
|
import cn.hutool.core.lang.Assert;
|
||||||
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||||
@@ -19,12 +21,12 @@ import org.nl.modules.wql.core.bean.WQLObject;
|
|||||||
import org.nl.wms.ext.acs.service.impl.AgvInstService;
|
import org.nl.wms.ext.acs.service.impl.AgvInstService;
|
||||||
import org.nl.wms.product_manage.sch.manage.AbstractAcsTask;
|
import org.nl.wms.product_manage.sch.manage.AbstractAcsTask;
|
||||||
import org.nl.wms.product_manage.sch.manage.TaskStatusEnum;
|
import org.nl.wms.product_manage.sch.manage.TaskStatusEnum;
|
||||||
|
import org.nl.wms.product_manage.service.device.IPdmBiDeviceService;
|
||||||
|
import org.nl.wms.product_manage.service.device.dao.PdmBiDevice;
|
||||||
import org.nl.wms.product_manage.service.workorder.IPdmProduceWorkorderService;
|
import org.nl.wms.product_manage.service.workorder.IPdmProduceWorkorderService;
|
||||||
import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorder;
|
import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorder;
|
||||||
import org.nl.wms.scheduler_manage.service.cacheline.ISchCachelineVehilematerialService;
|
import org.nl.wms.scheduler_manage.service.cacheline.ISchCachelineVehilematerialService;
|
||||||
import org.nl.wms.scheduler_manage.service.cacheline.dao.SchCachelineVehilematerial;
|
import org.nl.wms.scheduler_manage.service.cacheline.dao.SchCachelineVehilematerial;
|
||||||
import org.nl.wms.scheduler_manage.service.point.ISchBasePointService;
|
|
||||||
import org.nl.wms.scheduler_manage.service.point.dao.SchBasePoint;
|
|
||||||
import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService;
|
import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService;
|
||||||
import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask;
|
import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@@ -32,9 +34,8 @@ import org.springframework.stereotype.Service;
|
|||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.*;
|
||||||
import java.util.List;
|
import java.util.stream.Collectors;
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 专机任务
|
* 专机任务
|
||||||
@@ -47,7 +48,7 @@ public class SpeFullTask extends AbstractAcsTask {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private ISchBaseTaskService taskService;
|
private ISchBaseTaskService taskService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private ISchBasePointService pointService;
|
private IPdmBiDeviceService deviceService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private ISchCachelineVehilematerialService cacheLineVechileService;
|
private ISchCachelineVehilematerialService cacheLineVechileService;
|
||||||
@Autowired
|
@Autowired
|
||||||
@@ -60,6 +61,7 @@ public class SpeFullTask extends AbstractAcsTask {
|
|||||||
public SpeFullTask() {
|
public SpeFullTask() {
|
||||||
SpeHandles.put(AcsTaskEnum.TASK_PRODUCT_MAC.name() ,new Spe2Spe());
|
SpeHandles.put(AcsTaskEnum.TASK_PRODUCT_MAC.name() ,new Spe2Spe());
|
||||||
SpeHandles.put(AcsTaskEnum.TASK_PRODUCT_CACHE.name() ,new Spe2Cache());
|
SpeHandles.put(AcsTaskEnum.TASK_PRODUCT_CACHE.name() ,new Spe2Cache());
|
||||||
|
SpeHandles.put(AcsTaskEnum.TASK_PRODUCT_WASH.name() ,new Spe2Wash());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -69,7 +71,10 @@ public class SpeFullTask extends AbstractAcsTask {
|
|||||||
// 指令执行中
|
// 指令执行中
|
||||||
SchBaseTask task = taskService.getById(param.getString("task_id"));
|
SchBaseTask task = taskService.getById(param.getString("task_id"));
|
||||||
AcsTaskEnum taskType = AcsTaskEnum.getType(task.getTask_type(),"TASK_");
|
AcsTaskEnum taskType = AcsTaskEnum.getType(task.getTask_type(),"TASK_");
|
||||||
pointService.update(new UpdateWrapper<SchBasePoint>().set("lock_type","0").in("point_code",task.getPoint_code1(),task.getPoint_code2(),task.getPoint_code3()));
|
taskService.update(new UpdateWrapper<SchBaseTask>()
|
||||||
|
.set("task_status",status)
|
||||||
|
.set("update_name","acs")
|
||||||
|
.set("update_time",DateUtil.now()).eq("task_id",task.getTask_id()));
|
||||||
try {
|
try {
|
||||||
SpeHandles.get(taskType.name()).handle(param,status,task);
|
SpeHandles.get(taskType.name()).handle(param,status,task);
|
||||||
}catch (Exception ex){
|
}catch (Exception ex){
|
||||||
@@ -83,7 +88,6 @@ public class SpeFullTask extends AbstractAcsTask {
|
|||||||
public String createTask(JSONObject param) {
|
public String createTask(JSONObject param) {
|
||||||
String point_code = param.getString("device_code");
|
String point_code = param.getString("device_code");
|
||||||
String quantity = param.getString("quantity");
|
String quantity = param.getString("quantity");
|
||||||
String type = param.getString("type");
|
|
||||||
PdmProduceWorkorder order = workorderService.getOne(new QueryWrapper<PdmProduceWorkorder>()
|
PdmProduceWorkorder order = workorderService.getOne(new QueryWrapper<PdmProduceWorkorder>()
|
||||||
.eq("workorder_code", param.getString("workorder_code"))
|
.eq("workorder_code", param.getString("workorder_code"))
|
||||||
.eq("is_delete", false)
|
.eq("is_delete", false)
|
||||||
@@ -98,7 +102,7 @@ public class SpeFullTask extends AbstractAcsTask {
|
|||||||
JSONObject empPoint = WQL.getWO("sch_point").addParamMap(MapOf.of("flag", "2", "point_code", point_code, "point_type", StatusEnum.POINT_LOCATION_EMP.getCode())).process().uniqueResult(0);
|
JSONObject empPoint = WQL.getWO("sch_point").addParamMap(MapOf.of("flag", "2", "point_code", point_code, "point_type", StatusEnum.POINT_LOCATION_EMP.getCode())).process().uniqueResult(0);
|
||||||
JSONObject form = new JSONObject(MapOf.of("start_point_code",point_code,
|
JSONObject form = new JSONObject(MapOf.of("start_point_code",point_code,
|
||||||
"next_point_code","","return_point_code", empPoint.getString("point_code"),"vehicle_code",
|
"next_point_code","","return_point_code", empPoint.getString("point_code"),"vehicle_code",
|
||||||
"","product_area",order.getProduct_area(),"quantity", quantity,"type",type,"material_id", order.getMaterial_id()));
|
"","product_area",order.getProduct_area(),"quantity", quantity,"type",AcsTaskEnum.TASK_PRODUCT_MAC.getCode(),"material_id", order.getMaterial_id()));
|
||||||
|
|
||||||
String taskId = IdUtil.getStringId();
|
String taskId = IdUtil.getStringId();
|
||||||
JSONObject task = packageParam(form, taskId);
|
JSONObject task = packageParam(form, taskId);
|
||||||
@@ -117,7 +121,7 @@ public class SpeFullTask extends AbstractAcsTask {
|
|||||||
private JSONObject packageParam(JSONObject form, String task_id) {
|
private JSONObject packageParam(JSONObject form, String task_id) {
|
||||||
JSONObject task = new JSONObject();
|
JSONObject task = new JSONObject();
|
||||||
参数封装:{
|
参数封装:{
|
||||||
AcsTaskEnum taskEnum = AcsTaskEnum.getType(form.getString("type"), "REQUEST_");
|
AcsTaskEnum taskEnum = AcsTaskEnum.getType(form.getString("type"), "TASK_");
|
||||||
task.put("task_id", task_id);
|
task.put("task_id", task_id);
|
||||||
task.put("task_name", taskEnum.getDesc());
|
task.put("task_name", taskEnum.getDesc());
|
||||||
task.put("task_code", CodeUtil.getNewCode("TASK_CODE"));
|
task.put("task_code", CodeUtil.getNewCode("TASK_CODE"));
|
||||||
@@ -145,15 +149,8 @@ public class SpeFullTask extends AbstractAcsTask {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void cancel(String taskId) {
|
public void cancel(String taskId) { }
|
||||||
log.info(OPT_NAME+"cancel taskID:{}",taskId);
|
|
||||||
WQLObject taskTable = WQLObject.getWQLObject("sch_base_task");
|
|
||||||
//专机-专机
|
|
||||||
//专机-缓存线
|
|
||||||
//缓存线出库
|
|
||||||
taskTable.update(MapOf.of("task_status",StatusEnum.TASK_CANNEL.getCode()),"task_id = '"+taskId+"'");
|
|
||||||
|
|
||||||
}
|
|
||||||
interface SpeStatusHandler{
|
interface SpeStatusHandler{
|
||||||
void handle(JSONObject param,String status,SchBaseTask task);
|
void handle(JSONObject param,String status,SchBaseTask task);
|
||||||
}
|
}
|
||||||
@@ -163,30 +160,22 @@ public class SpeFullTask extends AbstractAcsTask {
|
|||||||
AcsTaskEnum status = AcsTaskEnum.getType(sta,"status_");
|
AcsTaskEnum status = AcsTaskEnum.getType(sta,"status_");
|
||||||
switch (status){
|
switch (status){
|
||||||
case STATUS_START:
|
case STATUS_START:
|
||||||
taskService.update(new UpdateWrapper<SchBaseTask>()
|
|
||||||
.set("task_status",StatusEnum.TASK_RUNNING.getCode())
|
|
||||||
.set("update_name","acs")
|
|
||||||
.set("update_time",DateUtil.now()).eq("task_id",task.getTask_id()));
|
|
||||||
Map<String, String> extParam = (Map)param.get("ext_param");
|
Map<String, String> extParam = (Map)param.get("ext_param");
|
||||||
if (extParam.get("put_finish") != null){
|
// if (extParam.get("put_finish") != null){
|
||||||
pointService.update(new UpdateWrapper<SchBasePoint>()
|
// pointService.update(new UpdateWrapper<SchBasePoint>()
|
||||||
.set("vehicle_code",task.getVehicle_code2())
|
// .set("vehicle_code",task.getVehicle_code2())
|
||||||
.eq("point_code",task.getPoint_code3()));
|
// .eq("point_code",task.getPoint_code3()));
|
||||||
}
|
// }
|
||||||
if (extParam.get("take_finish") != null){
|
// if (extParam.get("take_finish") != null){
|
||||||
pointService.update(new UpdateWrapper<SchBasePoint>()
|
// pointService.update(new UpdateWrapper<SchBasePoint>()
|
||||||
.set("vehicle_code","")
|
// .set("vehicle_code","")
|
||||||
.eq("point_code",task.getPoint_code3()));
|
// .eq("point_code",task.getPoint_code3()));
|
||||||
pointService.update(new UpdateWrapper<SchBasePoint>()
|
// pointService.update(new UpdateWrapper<SchBasePoint>()
|
||||||
.set("vehicle_code",task.getVehicle_code2())
|
// .set("vehicle_code",task.getVehicle_code2())
|
||||||
.eq("point_code",task.getPoint_code1()));
|
// .eq("point_code",task.getPoint_code1()));
|
||||||
}
|
// }
|
||||||
break;
|
break;
|
||||||
case STATUS_FINISH:
|
case STATUS_FINISH:
|
||||||
taskService.update(new UpdateWrapper<SchBaseTask>()
|
|
||||||
.set("task_status",StatusEnum.TASK_FINISH.getCode())
|
|
||||||
.set("update_name","acs")
|
|
||||||
.set("update_time",DateUtil.now()).eq("task_id",task.getTask_id()));
|
|
||||||
break;
|
break;
|
||||||
case STATUS_CANNEL:
|
case STATUS_CANNEL:
|
||||||
cancel(param.getString("task_id"));
|
cancel(param.getString("task_id"));
|
||||||
@@ -203,15 +192,8 @@ public class SpeFullTask extends AbstractAcsTask {
|
|||||||
AcsTaskEnum status = AcsTaskEnum.getType(sta,"status_");
|
AcsTaskEnum status = AcsTaskEnum.getType(sta,"status_");
|
||||||
switch (status){
|
switch (status){
|
||||||
case STATUS_START:
|
case STATUS_START:
|
||||||
Map<String, String> extParam = (Map)param.get("ext_param");
|
Map<String, String> extParam = (Map)param.get("ext_param");//outboxt inboxt
|
||||||
UpdateWrapper<SchBaseTask> wrapper = new UpdateWrapper<SchBaseTask>()
|
//outboxt箱子更新到任务表vechile_code2?
|
||||||
.set("task_status", StatusEnum.TASK_RUNNING.getCode())
|
|
||||||
.set("update_name", "acs")
|
|
||||||
.set("update_time", DateUtil.now()).eq("task_id", task.getTask_id());
|
|
||||||
|
|
||||||
if (extParam.get("outboxt")!= null){ wrapper.set("vehicle_code2",extParam.get("outboxt")); }
|
|
||||||
taskService.update(wrapper);
|
|
||||||
|
|
||||||
if (extParam.get("inboxt") != null){
|
if (extParam.get("inboxt") != null){
|
||||||
SchCachelineVehilematerial vehilematerial = new SchCachelineVehilematerial();
|
SchCachelineVehilematerial vehilematerial = new SchCachelineVehilematerial();
|
||||||
vehilematerial.setVehmaterial_id(IdUtil.getStringId());
|
vehilematerial.setVehmaterial_id(IdUtil.getStringId());
|
||||||
@@ -222,13 +204,8 @@ public class SpeFullTask extends AbstractAcsTask {
|
|||||||
vehilematerial.setQuantity(task.getMaterial_qty());
|
vehilematerial.setQuantity(task.getMaterial_qty());
|
||||||
cacheLineVechileService.save(vehilematerial);
|
cacheLineVechileService.save(vehilematerial);
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case STATUS_FINISH:
|
case STATUS_FINISH:
|
||||||
taskService.update(new UpdateWrapper<SchBaseTask>()
|
|
||||||
.set("task_status",StatusEnum.TASK_FINISH.getCode())
|
|
||||||
.set("update_name","acs")
|
|
||||||
.set("update_time",DateUtil.now()).eq("task_id",task.getTask_id()));
|
|
||||||
break;
|
break;
|
||||||
case STATUS_CANNEL:
|
case STATUS_CANNEL:
|
||||||
cancel(param.getString("task_id"));
|
cancel(param.getString("task_id"));
|
||||||
@@ -238,9 +215,138 @@ public class SpeFullTask extends AbstractAcsTask {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
class Spe2Wash implements SpeStatusHandler{
|
||||||
|
@Override
|
||||||
|
public void handle(JSONObject param, String sta,SchBaseTask task) {
|
||||||
|
AcsTaskEnum status = AcsTaskEnum.getType(sta,"status_");
|
||||||
|
switch (status){
|
||||||
|
case STATUS_START:
|
||||||
|
Map<String, String> extParam = (Map)param.get("ext_param");
|
||||||
|
log.info("生坑到料完成:"+param.toString());
|
||||||
|
if (extParam.get("fall_finish") != null){
|
||||||
|
PdmBiDevice one = deviceService.getOne(new QueryWrapper<PdmBiDevice>().eq("device_code", task.getPoint_code2()));
|
||||||
|
deviceService.update(new UpdateWrapper<PdmBiDevice>()
|
||||||
|
.set("material_id", task.getMaterial_id())
|
||||||
|
.set("deviceinstor_qty",one.getDeviceinstor_qty().add(task.getMaterial_qty()))
|
||||||
|
.eq("device_code", task.getPoint_code2()));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case STATUS_FINISH:
|
||||||
|
break;
|
||||||
|
case STATUS_CANNEL:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new BadRequestException(OPT_NAME+"未定义任务状态:"+sta);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void pointConfirm(JSONObject param) {
|
public void pointConfirm(JSONObject param) {
|
||||||
agvInstService.fullMaster(param);
|
agvInstService.fullMaster(param);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<SchBaseTask> schedulerTask(List<SchBaseTask> array) {
|
||||||
|
ArrayList<SchBaseTask> Merge = new ArrayList<>();
|
||||||
|
if (!CollectionUtils.isEmpty(array)){
|
||||||
|
String pointCollect = array.stream().map(a->a.getPoint_code1() + "','" + a.getPoint_code2()).collect(Collectors.joining("','"));
|
||||||
|
JSONArray needMergeCollect = WQL.getWO("sch_point").addParamMap(MapOf.of("flag", "5", "point_codes", "'" + pointCollect + "'")).process().getResultJSONArray(0);
|
||||||
|
//区域编号对应point_code
|
||||||
|
Map<String, List<Object>> pointRegionCollent = needMergeCollect.stream().collect(Collectors.groupingBy(o -> ((JSONObject) o).getString("point_code")));
|
||||||
|
Set<String> mergePointCollent = needMergeCollect.stream().map(item -> ((JSONObject) item).getString("point_code")).collect(Collectors.toSet());
|
||||||
|
//合并下发的任务
|
||||||
|
List<SchBaseTask> notMerge = new ArrayList<>();//单独下发的任务
|
||||||
|
List<SchBaseTask> waitingTask = new ArrayList<>();//可合并,但是只有单条任务
|
||||||
|
Map<String, String> taskGroupMap = new HashMap<>();
|
||||||
|
for (SchBaseTask task : array) {
|
||||||
|
String taskGroupId = IdUtil.getStringId();
|
||||||
|
String taskId = task.getTask_id();
|
||||||
|
if (taskGroupMap.get(taskId) != null){
|
||||||
|
task.setTask_group_id(taskGroupMap.get(taskId));
|
||||||
|
Merge.add(task);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
String start = task.getPoint_code1();
|
||||||
|
String end = task.getPoint_code2();
|
||||||
|
taskGroupMap.put(taskId,taskGroupId);
|
||||||
|
task.setTask_group_id(taskGroupId);
|
||||||
|
//如果点位不属于查询出来可以合并点位集合:则单独下发集合
|
||||||
|
if (!mergePointCollent.contains(start) && !mergePointCollent.contains(end)){
|
||||||
|
notMerge.add(task);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
//起点点位是否有多个合并任务点,如果没有则判断终点是否有多个合并任务点;都没有则说明当前起点终点对应区域只有一个任务:放入等待下发集合中
|
||||||
|
List<String> collect = taskGroupMap.keySet().stream().collect(Collectors.toList());
|
||||||
|
collect.add(taskId);
|
||||||
|
String mergeTargetId = getMergePoint(pointRegionCollent, start,end,array,collect);
|
||||||
|
if (mergeTargetId == null){
|
||||||
|
waitingTask.add(task);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
//查询到相同区域可以合并的点位集合
|
||||||
|
taskGroupMap.put(mergeTargetId,taskGroupId);
|
||||||
|
Merge.add(task);
|
||||||
|
}
|
||||||
|
//开始下发:处理waitingTask:如果创建时间>2分钟:则改单独下发
|
||||||
|
if (waitingTask.size()>0){
|
||||||
|
List<SchBaseTask> needPublish = waitingTask.stream().filter(a -> DateUtil.between(new Date(),a.getCreate_time(), DateUnit.MINUTE) >1 ).collect(Collectors.toList());
|
||||||
|
notMerge.addAll(needPublish);
|
||||||
|
}
|
||||||
|
String notMergeID = notMerge.stream().map(a -> a.getTask_id()).collect(Collectors.joining(","));
|
||||||
|
String waitingTaskId = waitingTask.stream().map(a -> a.getTask_id()).collect(Collectors.joining(","));
|
||||||
|
String MergeId = Merge.stream().map(a -> a.getTask_id()).collect(Collectors.joining(","));
|
||||||
|
log.info("TaskScheduleService#taskPublish notMerge:{},waitingTask:{},merge:{}",notMergeID,waitingTaskId,MergeId);
|
||||||
|
Merge.addAll(notMerge);
|
||||||
|
}
|
||||||
|
Map<String, List<SchBaseTask>> collect = Merge.stream().collect(Collectors.groupingBy(SchBaseTask::getTask_group_id));
|
||||||
|
|
||||||
|
ArrayList<SchBaseTask> result = new ArrayList<>();
|
||||||
|
for (List<SchBaseTask> value : collect.values()) {
|
||||||
|
updateAcsTaskType(value);
|
||||||
|
result.addAll(value);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateAcsTaskType(List<SchBaseTask> value) {
|
||||||
|
if (value.size() > 1){
|
||||||
|
boolean tag = true;
|
||||||
|
for (SchBaseTask task : value) {
|
||||||
|
if (task.getAcs_task_type().equals(AcsTaskEnum.ACS_TASK_TYPE_NOBLE_SINGLE_ENTRY_TASK.getCode())){
|
||||||
|
task.setAcs_task_type(AcsTaskEnum.ACS_TASK_TYPE_NOBLE_DOUBLE_ENTRY_TASK.getCode());
|
||||||
|
}
|
||||||
|
if (task.getAcs_task_type().equals(AcsTaskEnum.ACS_TASK_TYPE_NOBLE_SINGLE_TASK.getCode())){
|
||||||
|
task.setAcs_task_type(AcsTaskEnum.ACS_TASK_TYPE_NOBLE_DOUBLE_TASK.getCode());
|
||||||
|
}
|
||||||
|
if (tag){task.setIs_send(true);tag = false;}else {task.setIs_send(false); }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getMergePoint(Map<String, List<Object>> pointRegionCollent, String start,String end,List<SchBaseTask> tasks,List<String> taskIds) {
|
||||||
|
String findpoint = findpoint(pointRegionCollent, start, tasks, taskIds);
|
||||||
|
if (findpoint == null){
|
||||||
|
findpoint = findpoint(pointRegionCollent, end, tasks, taskIds);
|
||||||
|
}
|
||||||
|
return findpoint;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String findpoint(Map<String, List<Object>> pointRegionCollent, String start, List<SchBaseTask> tasks, List<String> taskIds) {
|
||||||
|
List<Object> objects = pointRegionCollent.get(start);
|
||||||
|
if (CollectionUtils.isEmpty(objects)){
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
JSONObject startPointInfo = (JSONObject) objects.get(0);
|
||||||
|
String startPointCollent = startPointInfo.getString("pointcollent");
|
||||||
|
String[] split = startPointCollent.split(",");
|
||||||
|
for (String s : split) {
|
||||||
|
Optional<SchBaseTask> any = tasks.stream().filter(a -> a.getPoint_code1().equals(s) && !taskIds.contains((a.getTask_id()))).findAny();
|
||||||
|
if (any.isPresent()){
|
||||||
|
return any.get().getTask_id();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSONArray;
|
|||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.SneakyThrows;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.nl.common.enums.AcsTaskEnum;
|
import org.nl.common.enums.AcsTaskEnum;
|
||||||
@@ -17,6 +18,7 @@ import org.nl.modules.wql.WQL;
|
|||||||
import org.nl.modules.wql.core.bean.WQLObject;
|
import org.nl.modules.wql.core.bean.WQLObject;
|
||||||
import org.nl.modules.wql.util.SpringContextHolder;
|
import org.nl.modules.wql.util.SpringContextHolder;
|
||||||
import org.nl.wms.ext.acs.service.WmsToAcsService;
|
import org.nl.wms.ext.acs.service.WmsToAcsService;
|
||||||
|
import org.nl.wms.product_manage.sch.manage.AbstractAcsTask;
|
||||||
import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService;
|
import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService;
|
||||||
import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask;
|
import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
@@ -43,120 +45,52 @@ public class TaskScheduleService {
|
|||||||
private final WmsToAcsService wmsToAcsService;
|
private final WmsToAcsService wmsToAcsService;
|
||||||
private final ISchBaseTaskService taskService;
|
private final ISchBaseTaskService taskService;
|
||||||
|
|
||||||
|
@SneakyThrows
|
||||||
@Scheduled(cron = "0/30 * * * * ?")
|
@Scheduled(cron = "0/30 * * * * ?")
|
||||||
public void taskPublish(){
|
public void taskPublish(){
|
||||||
boolean islock = lock.tryLock();
|
boolean islock = lock.tryLock();
|
||||||
try {
|
try {
|
||||||
if (islock){
|
if (islock){
|
||||||
WQLObject taskTable = WQLObject.getWQLObject("sch_base_task");
|
|
||||||
//查询所有自动下发的任务
|
//查询所有自动下发的任务
|
||||||
List<SchBaseTask> all = taskService.list(new QueryWrapper<SchBaseTask>().eq("is_auto_issue", "1").lt("task_status", StatusEnum.TASK_PUBLISH.getCode()));
|
List<SchBaseTask> pointConfirmList = taskService.list(new QueryWrapper<SchBaseTask>().eq("is_auto_issue", "1").eq("is_delete",false).lt("task_status", StatusEnum.TASK_START_END_P.getCode()));
|
||||||
//进行起点终点确认:
|
//进行起点终点确认:
|
||||||
if (all.size() == 0){
|
if (pointConfirmList.size() > 0){
|
||||||
return;
|
Iterator<SchBaseTask> iterator = pointConfirmList.iterator();
|
||||||
}
|
while (iterator.hasNext()){
|
||||||
log.info("TaskScheduleService#taskPublish all_task:{}",all.size());
|
SchBaseTask task =iterator.next();
|
||||||
Iterator<SchBaseTask> iterator = all.iterator();
|
try {
|
||||||
while (iterator.hasNext()){
|
Object obj = SpringContextHolder.getBean(Class.forName(task.getHandle_class()));
|
||||||
SchBaseTask task =iterator.next();
|
// 调用每个任务类的forceFinishInst()强制结束方法
|
||||||
if (task.getTask_status().equals(StatusEnum.TASK_START_END_P.getCode())){
|
Method m = obj.getClass().getDeclaredMethod("pointConfirm", JSONObject.class);
|
||||||
continue;
|
m.invoke(obj,JSONObject.toJSON(task));
|
||||||
}
|
task.setTask_type(StatusEnum.TASK_START_END_P.getCode());
|
||||||
try {
|
}catch (Exception ex){
|
||||||
Object obj = SpringContextHolder.getBean(Class.forName(task.getHandle_class()));
|
task.setTask_type(StatusEnum.TASK_START_ERROR.getCode());
|
||||||
// 调用每个任务类的forceFinishInst()强制结束方法
|
task.setRemark(ex.getMessage());
|
||||||
Method m = obj.getClass().getDeclaredMethod("pointConfirm", JSONObject.class, String.class);
|
task.setUpdate_time(new Date());
|
||||||
m.invoke(obj,task);
|
taskService.updateById(task);
|
||||||
task.setTask_type(StatusEnum.TASK_START_END_P.getCode());
|
}
|
||||||
}catch (Exception ex){
|
|
||||||
task.setTask_type(StatusEnum.TASK_START_ERROR.getCode());
|
|
||||||
task.setRemark(ex.getMessage());
|
|
||||||
task.setUpdate_time(new Date());
|
|
||||||
taskService.updateById(task);
|
|
||||||
iterator.remove();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
List<SchBaseTask> all = taskService.list(new QueryWrapper<SchBaseTask>().eq("is_auto_issue", "1").eq("is_delete",false).eq("task_status", StatusEnum.TASK_START_END_P.getCode()));
|
||||||
//分区域:不同区域调用不同acs接口
|
//分区域:不同区域调用不同acs接口
|
||||||
Map<String, List<SchBaseTask>> areaCollent = all.stream().collect(Collectors.groupingBy(SchBaseTask::getProduct_area));
|
Map<String, List<SchBaseTask>> areaCollent = all.stream().collect(Collectors.groupingBy(SchBaseTask::getProduct_area));
|
||||||
for (String area : areaCollent.keySet()) {
|
for (String area : areaCollent.keySet()) {
|
||||||
List<SchBaseTask> array = areaCollent.get(area);
|
Map<String, List<SchBaseTask>> listMap = areaCollent.get(area).stream().collect(Collectors.groupingBy(SchBaseTask::getHandle_class));
|
||||||
if (array.size()>0){
|
List<SchBaseTask> Merge = new ArrayList<>();
|
||||||
String pointCollect = array.stream().map(a->a.getPoint_code1() + "','" + a.getPoint_code2()).collect(Collectors.joining("','"));
|
for (Map.Entry<String, List<SchBaseTask>> array : listMap.entrySet()) {
|
||||||
JSONArray needMergeCollect = WQL.getWO("sch_point").addParamMap(MapOf.of("flag", "5", "point_codes", "'" + pointCollect + "'")).process().getResultJSONArray(0);
|
//调用不同实现
|
||||||
//区域编号对应point_code
|
AbstractAcsTask taskHandler = (AbstractAcsTask)SpringContextHolder.getBean(Class.forName(array.getKey()));
|
||||||
Map<String, List<Object>> pointRegionCollent = needMergeCollect.stream().collect(Collectors.groupingBy(o -> ((JSONObject) o).getString("point_code")));
|
Merge.addAll(taskHandler.schedulerTask(array.getValue()));
|
||||||
Set<String> mergePointCollent = needMergeCollect.stream().map(item -> ((JSONObject) item).getString("point_code")).collect(Collectors.toSet());
|
|
||||||
//合并下发的任务
|
|
||||||
List<SchBaseTask> notMerge = new ArrayList<>();//单独下发的任务
|
|
||||||
List<SchBaseTask> Merge = new ArrayList<>();//单独下发的任务
|
|
||||||
List<SchBaseTask> waitingTask = new ArrayList<>();//可合并,但是只有单条任务
|
|
||||||
//Map<String, String> taskGroupMap = array.stream().filter(a-> StringUtils.isNotEmpty(a.getTask_group_id())).collect(HashMap::new, (k, v) -> k.put(v.getTask_id(), v.getTask_group_id()), HashMap::putAll);
|
|
||||||
Map<String, String> taskGroupMap = new HashMap<>();
|
|
||||||
for (SchBaseTask task : array) {
|
|
||||||
String taskGroupId = IdUtil.getStringId();
|
|
||||||
String taskId = task.getTask_id();
|
|
||||||
task.setIs_send(true);
|
|
||||||
if (taskGroupMap.get(taskId) != null){
|
|
||||||
task.setTask_group_id(taskGroupMap.get(taskId));
|
|
||||||
task.setIs_send(false);
|
|
||||||
Merge.add(task);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
String start = task.getPoint_code1();
|
|
||||||
String end = task.getPoint_code2();
|
|
||||||
taskGroupMap.put(taskId,taskGroupId);
|
|
||||||
task.setTask_group_id(taskGroupId);
|
|
||||||
//如果点位不属于查询出来可以合并点位集合:则单独下发集合
|
|
||||||
if (!mergePointCollent.contains(start) && !mergePointCollent.contains(end)){
|
|
||||||
notMerge.add(task);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
//起点点位是否有多个合并任务点,如果没有则判断终点是否有多个合并任务点;都没有则说明当前起点终点对应区域只有一个任务:放入等待下发集合中
|
|
||||||
List<String> collect = taskGroupMap.keySet().stream().collect(Collectors.toList());
|
|
||||||
collect.add(taskId);
|
|
||||||
String mergeTargetId = getMergePoint(pointRegionCollent, start,end,array,collect);
|
|
||||||
if (mergeTargetId == null){
|
|
||||||
waitingTask.add(task);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
//查询到相同区域可以合并的点位集合
|
|
||||||
taskGroupMap.put(mergeTargetId,taskGroupId);
|
|
||||||
Merge.add(task);
|
|
||||||
}
|
|
||||||
//开始下发:处理waitingTask:如果创建时间>2分钟:则改单独下发
|
|
||||||
if (waitingTask.size()>0){
|
|
||||||
List<SchBaseTask> needPublish = waitingTask.stream().filter(a -> DateUtil.between(new Date(),a.getCreate_time(), DateUnit.MINUTE) >2 ).collect(Collectors.toList());
|
|
||||||
notMerge.addAll(needPublish);
|
|
||||||
}
|
|
||||||
String notMergeID = notMerge.stream().map(a -> a.getTask_id()).collect(Collectors.joining(","));
|
|
||||||
String waitingTaskId = waitingTask.stream().map(a -> a.getTask_id()).collect(Collectors.joining(","));
|
|
||||||
String MergeId = Merge.stream().map(a -> a.getTask_id()).collect(Collectors.joining(","));
|
|
||||||
log.info("TaskScheduleService#taskPublish notMerge:{},waitingTask:{},merge:{}",notMergeID,waitingTaskId,MergeId);
|
|
||||||
notMerge.forEach(a->{
|
|
||||||
a.setIs_send(true);
|
|
||||||
if (a.getAcs_task_type().equals(AcsTaskEnum.ACS_TASK_TYPE_NOBLE_DOUBLE_TASK.getCode())){
|
|
||||||
a.setAcs_task_type(AcsTaskEnum.ACS_TASK_TYPE_NOBLE_SINGLE_TASK.getCode());
|
|
||||||
}
|
|
||||||
if (a.getAcs_task_type().equals(AcsTaskEnum.ACS_TASK_TYPE_NOBLE_DOUBLE_ENTRY_TASK.getCode())){
|
|
||||||
a.setAcs_task_type(AcsTaskEnum.ACS_TASK_TYPE_NOBLE_SINGLE_ENTRY_TASK.getCode());
|
|
||||||
}
|
|
||||||
});
|
|
||||||
Merge.addAll(notMerge);
|
|
||||||
//批量更新任务状态,is_send,task_group_id
|
|
||||||
JSONArray arr = new JSONArray();
|
|
||||||
for (SchBaseTask task : Merge) {
|
|
||||||
task.setUpdate_name("schedule");
|
|
||||||
task.setUpdate_time(new Date());
|
|
||||||
taskService.updateById(task);
|
|
||||||
arr.add(JSONObject.toJSON(task));
|
|
||||||
}
|
|
||||||
//缓存线任务待确认是否生成多个
|
|
||||||
Map<String, Object> resp = wmsToAcsService.issueTaskToAcs(arr);
|
|
||||||
// if (((int)resp.get("status")) == (HttpStatus.BAD_REQUEST.value())){
|
|
||||||
// Object errArr = resp.get("errArr");
|
|
||||||
// throw new BadRequestException(String.valueOf(resp.get("message")));
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
JSONArray arr = new JSONArray();
|
||||||
|
for (SchBaseTask task : Merge) {
|
||||||
|
task.setUpdate_name("schedule");
|
||||||
|
task.setUpdate_time(new Date());
|
||||||
|
taskService.updateById(task);
|
||||||
|
arr.add(JSONObject.toJSON(task));
|
||||||
|
}
|
||||||
|
Map<String, Object> resp = wmsToAcsService.issueTaskToAcs(arr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}finally {
|
}finally {
|
||||||
@@ -167,30 +101,4 @@ public class TaskScheduleService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private String getMergePoint(Map<String, List<Object>> pointRegionCollent, String start,String end,List<SchBaseTask> tasks,List<String> taskIds) {
|
|
||||||
String findpoint = findpoint(pointRegionCollent, start, tasks, taskIds);
|
|
||||||
if (findpoint == null){
|
|
||||||
findpoint = findpoint(pointRegionCollent, end, tasks, taskIds);
|
|
||||||
}
|
|
||||||
return findpoint;
|
|
||||||
}
|
|
||||||
|
|
||||||
private String findpoint(Map<String, List<Object>> pointRegionCollent, String start, List<SchBaseTask> tasks, List<String> taskIds) {
|
|
||||||
List<Object> objects = pointRegionCollent.get(start);
|
|
||||||
if (CollectionUtils.isEmpty(objects)){
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
JSONObject startPointInfo = (JSONObject) objects.get(0);
|
|
||||||
String startPointCollent = startPointInfo.getString("pointcollent");
|
|
||||||
String[] split = startPointCollent.split(",");
|
|
||||||
for (String s : split) {
|
|
||||||
Optional<SchBaseTask> any = tasks.stream().filter(a -> a.getPoint_code1().equals(s) && !taskIds.contains((a.getTask_id()))).findAny();
|
|
||||||
if (any.isPresent()){
|
|
||||||
return any.get().getTask_id();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,10 +7,10 @@ import org.nl.common.domain.query.PageQuery;
|
|||||||
import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorder;
|
import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorder;
|
||||||
import org.nl.wms.product_manage.service.workorder.dto.ReportQuery;
|
import org.nl.wms.product_manage.service.workorder.dto.ReportQuery;
|
||||||
import org.nl.wms.product_manage.service.workorder.dto.WorkorderQuery;
|
import org.nl.wms.product_manage.service.workorder.dto.WorkorderQuery;
|
||||||
|
import org.springframework.data.domain.Pageable;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@@ -90,6 +90,15 @@ public interface IPdmProduceWorkorderService extends IService<PdmProduceWorkorde
|
|||||||
void excelImport(MultipartFile file, HttpServletRequest request);
|
void excelImport(MultipartFile file, HttpServletRequest request);
|
||||||
|
|
||||||
|
|
||||||
|
/*----一体及接口---*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 一体机工单列表
|
||||||
|
* @param param
|
||||||
|
* @param page
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<Map> getOrderList(Map<String,String> param, Pageable page);
|
||||||
/**
|
/**
|
||||||
* 开工操作
|
* 开工操作
|
||||||
*
|
*
|
||||||
@@ -107,6 +116,9 @@ public interface IPdmProduceWorkorderService extends IService<PdmProduceWorkorde
|
|||||||
Object report(JSONObject param);
|
Object report(JSONObject param);
|
||||||
|
|
||||||
void reportApprove(JSONArray param);
|
void reportApprove(JSONArray param);
|
||||||
|
void updateReport(JSONObject param);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 工单更换设备
|
* 工单更换设备
|
||||||
@@ -117,4 +129,5 @@ public interface IPdmProduceWorkorderService extends IService<PdmProduceWorkorde
|
|||||||
|
|
||||||
List<Map> reportQuery(ReportQuery query);
|
List<Map> reportQuery(ReportQuery query);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,5 +17,5 @@ import java.util.Map;
|
|||||||
*/
|
*/
|
||||||
public interface IPdmProduceWorkorderrecordService extends IService<PdmProduceWorkorderrecord> {
|
public interface IPdmProduceWorkorderrecordService extends IService<PdmProduceWorkorderrecord> {
|
||||||
|
|
||||||
List<Map> getWorkorderRecordDtl(ReportQuery query);
|
List<Map> reportQuery(ReportQuery query);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,4 +25,6 @@ public interface PdmProduceWorkorderMapper extends BaseMapper<PdmProduceWorkorde
|
|||||||
|
|
||||||
int batchUpdateByParam(@Param("event") List<Map> event, @Param("workorder_id")String workorder_id);
|
int batchUpdateByParam(@Param("event") List<Map> event, @Param("workorder_id")String workorder_id);
|
||||||
|
|
||||||
|
List<Map> orderList(Map qeury);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,6 +71,37 @@
|
|||||||
</where>
|
</where>
|
||||||
order by record.seq_number
|
order by record.seq_number
|
||||||
</select>
|
</select>
|
||||||
|
<select id="orderList" resultType="java.util.Map">
|
||||||
|
SELECT
|
||||||
|
mater.material_name,
|
||||||
|
mater.material_code,
|
||||||
|
mater.material_spec,
|
||||||
|
workorder.*,
|
||||||
|
workprocedure.workprocedure_name
|
||||||
|
FROM
|
||||||
|
pdm_produce_workorder workorder
|
||||||
|
LEFT JOIN md_me_materialbase mater ON workorder.material_id = mater.material_id
|
||||||
|
LEFT JOIN pdm_bi_workprocedure workprocedure ON workorder.workprocedure_id = workprocedure.workprocedure_id
|
||||||
|
WHERE
|
||||||
|
workorder.is_delete = false and workorder.workorder_status > 1
|
||||||
|
<if test="device_code != null and device_code != ''">
|
||||||
|
and workorder.device_code = #{device_code}
|
||||||
|
</if>
|
||||||
|
<if test="key_value != null and key_value != ''">
|
||||||
|
and (
|
||||||
|
workorder.workorder_code like %${key_value}% or
|
||||||
|
mater.material_name like%${key_value}% or
|
||||||
|
mater.material_code like %${key_value}%
|
||||||
|
)
|
||||||
|
</if>
|
||||||
|
<if test="realproducestart_date != null and realproducestart_date != ''">
|
||||||
|
and workorder.realproducestart_date >= #{realproducestart_date}
|
||||||
|
</if>
|
||||||
|
<if test="realproduceend_date != null and realproduceend_date != ''">
|
||||||
|
and #{realproduceend_date} >= workorder.realproducestart_date
|
||||||
|
</if>
|
||||||
|
order by workorder_code desc
|
||||||
|
</select>
|
||||||
|
|
||||||
<update id="batchUpdateByParam">
|
<update id="batchUpdateByParam">
|
||||||
update PDM_produce_workOrder set
|
update PDM_produce_workOrder set
|
||||||
|
|||||||
@@ -18,5 +18,5 @@ import java.util.Map;
|
|||||||
*/
|
*/
|
||||||
public interface PdmProduceWorkorderrecordMapper extends BaseMapper<PdmProduceWorkorderrecord> {
|
public interface PdmProduceWorkorderrecordMapper extends BaseMapper<PdmProduceWorkorderrecord> {
|
||||||
|
|
||||||
List<Map> getWorkorderRecordDtl(@Param("query")ReportQuery query);
|
List<Map> reportQuery(@Param("query")ReportQuery query);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,9 +2,10 @@
|
|||||||
<!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.product_manage.service.workorder.dao.mapper.PdmProduceWorkorderrecordMapper">
|
<mapper namespace="org.nl.wms.product_manage.service.workorder.dao.mapper.PdmProduceWorkorderrecordMapper">
|
||||||
|
|
||||||
<select id="getWorkorderRecordDtl" resultType="java.util.Map">
|
<select id="reportQuery" resultType="java.util.Map">
|
||||||
SELECT
|
SELECT
|
||||||
wr.workorder_code,
|
wr.workorder_code,
|
||||||
|
sys_user.username as produce_person_name,
|
||||||
wr.device_code,
|
wr.device_code,
|
||||||
mb.material_name,
|
mb.material_name,
|
||||||
mb.material_spec,
|
mb.material_spec,
|
||||||
@@ -13,12 +14,13 @@
|
|||||||
FROM pdm_produce_workorderrecord re
|
FROM pdm_produce_workorderrecord re
|
||||||
INNER JOIN pdm_produce_workorder wr on re.workorder_id = wr.workorder_id
|
INNER JOIN pdm_produce_workorder wr on re.workorder_id = wr.workorder_id
|
||||||
LEFT JOIN md_me_materialbase mb on mb.material_id = wr.material_id
|
LEFT JOIN md_me_materialbase mb on mb.material_id = wr.material_id
|
||||||
where wr.is_delete = true
|
LEFT JOIN sys_user on re.produce_person_id = sys_user.user_id
|
||||||
|
where wr.is_delete = false
|
||||||
<if test="query.device_code != null and query.device_code != ''">
|
<if test="query.device_code != null and query.device_code != ''">
|
||||||
and wr.device_code = #{device_code}
|
and wr.device_code = #{query.device_code}
|
||||||
</if>
|
</if>
|
||||||
<if test="query.workorder_code != null and query.workorder_code != ''">
|
<if test="query.workorder_code != null and query.workorder_code != ''">
|
||||||
and wr.workorder_code = #{workorder_code}
|
and wr.workorder_code = #{query.workorder_code}
|
||||||
</if>
|
</if>
|
||||||
<if test="query.start_time != null and query.start_time != ''">
|
<if test="query.start_time != null and query.start_time != ''">
|
||||||
and wr.realproducestart_date >= #{query.start_time}
|
and wr.realproducestart_date >= #{query.start_time}
|
||||||
@@ -26,5 +28,6 @@
|
|||||||
<if test="query.end_time != null and query.end_time != ''">
|
<if test="query.end_time != null and query.end_time != ''">
|
||||||
and #{query.end_time} >= wr.realproducestart_date
|
and #{query.end_time} >= wr.realproducestart_date
|
||||||
</if>
|
</if>
|
||||||
|
order by workorder_code desc,seq_number asc
|
||||||
</select>
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
@@ -7,15 +7,19 @@ import org.nl.common.enums.QueryTEnum;
|
|||||||
import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorder;
|
import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorder;
|
||||||
import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorderrecord;
|
import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorderrecord;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @author ZZQ
|
* @author ZZQ
|
||||||
* @Date 2023/4/26 11:05
|
* @Date 2023/4/26 11:05
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class ReportQuery extends BaseQuery<PdmProduceWorkorderrecord> {
|
public class ReportQuery {
|
||||||
|
|
||||||
private String device_code;
|
private String device_code;
|
||||||
private String workorder_code;
|
private String workorder_code;
|
||||||
private String report;
|
private String report;
|
||||||
|
private String start_time;
|
||||||
|
private String end_time;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService;
|
|||||||
import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase;
|
import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase;
|
||||||
import org.nl.wms.mps.service.WorkOrderImportEnum;
|
import org.nl.wms.mps.service.WorkOrderImportEnum;
|
||||||
import org.nl.wms.mps.service.dto.ProduceshiftorderDto;
|
import org.nl.wms.mps.service.dto.ProduceshiftorderDto;
|
||||||
|
import org.nl.wms.product_manage.ReportEnum;
|
||||||
import org.nl.wms.product_manage.ReportRecordStatus;
|
import org.nl.wms.product_manage.ReportRecordStatus;
|
||||||
import org.nl.wms.product_manage.service.device.IPdmBiDeviceService;
|
import org.nl.wms.product_manage.service.device.IPdmBiDeviceService;
|
||||||
import org.nl.wms.product_manage.service.device.dao.PdmBiDevice;
|
import org.nl.wms.product_manage.service.device.dao.PdmBiDevice;
|
||||||
@@ -43,7 +44,9 @@ import org.nl.wms.product_manage.service.workorder.dto.ReportQuery;
|
|||||||
import org.nl.wms.product_manage.service.workorder.dto.WorkorderQuery;
|
import org.nl.wms.product_manage.service.workorder.dto.WorkorderQuery;
|
||||||
import org.nl.wms.system_manage.service.user.ISysUserService;
|
import org.nl.wms.system_manage.service.user.ISysUserService;
|
||||||
import org.nl.wms.system_manage.service.user.dao.SysUser;
|
import org.nl.wms.system_manage.service.user.dao.SysUser;
|
||||||
|
import org.redisson.misc.Hash;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.data.domain.Pageable;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
@@ -522,18 +525,38 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
|||||||
JSONObject order = packageForm(param);
|
JSONObject order = packageForm(param);
|
||||||
array.add(order);
|
array.add(order);
|
||||||
//下发acs
|
//下发acs
|
||||||
Map<String, Object> resp = wmsToAcsService.order(array);
|
|
||||||
PdmProduceWorkorder workOrder = this.getOne(new QueryWrapper<PdmProduceWorkorder>().eq("workorder_id", param.getString("workorder_id")));
|
PdmProduceWorkorder workOrder = this.getOne(new QueryWrapper<PdmProduceWorkorder>().eq("workorder_id", param.getString("workorder_id")));
|
||||||
workOrder.setWorkorder_status(WorkerOrderEnum.PRODUCTING.getCode());
|
workOrder.setWorkorder_status(WorkerOrderEnum.PRODUCTING.getCode());
|
||||||
if (((int) resp.get("status")) == (HttpStatus.BAD_REQUEST.value())) {
|
workOrder.setRealproducestart_date(DateUtil.now());
|
||||||
throw new BadRequestException(resp.get("message")!=null?String.valueOf(resp.get("message")):"acs反馈异常");
|
|
||||||
}
|
|
||||||
workOrder.setReal_qty(null);
|
workOrder.setReal_qty(null);
|
||||||
this.update(workOrder, new QueryWrapper<PdmProduceWorkorder>().eq("workorder_id", param.getString("workorder_id")));
|
this.update(workOrder, new QueryWrapper<PdmProduceWorkorder>().eq("workorder_id", param.getString("workorder_id")));
|
||||||
|
PdmProduceWorkorderrecord workorderrecord = packageRecordForm(workOrder);
|
||||||
|
reportRecordService.save(workorderrecord);
|
||||||
|
|
||||||
|
Map<String, Object> resp = wmsToAcsService.order(array);
|
||||||
|
if (HttpStatus.BAD_REQUEST.equals(resp.get("status"))) {
|
||||||
|
throw new BadRequestException(resp.get("message")!=null?String.valueOf(resp.get("message")):"acs反馈异常");
|
||||||
|
}
|
||||||
|
|
||||||
return RestBusinessTemplate.execute(() -> resp);
|
return RestBusinessTemplate.execute(() -> resp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
private PdmProduceWorkorderrecord packageRecordForm(PdmProduceWorkorder workOrder) {
|
||||||
|
PdmProduceWorkorderrecord workorderrecord = new PdmProduceWorkorderrecord();
|
||||||
|
workorderrecord.setMacoperate_id(IdUtil.getStringId());
|
||||||
|
workorderrecord.setWorkorder_id(workOrder.getWorkorder_id());
|
||||||
|
workorderrecord.setWorkprocedure_id(workOrder.getWorkprocedure_id());
|
||||||
|
workorderrecord.setDevice_code(workOrder.getDevice_code());
|
||||||
|
workorderrecord.setProduct_area(workOrder.getProduct_area());
|
||||||
|
workorderrecord.setReport_status(ReportEnum.REPORT_STATUS.code("生成"));
|
||||||
|
workorderrecord.setProduce_person_id(SecurityUtils.getCurrentUserId());
|
||||||
|
workorderrecord.setOperatetime_start(DateUtil.now());
|
||||||
|
workorderrecord.setShift_type_scode(workOrder.getShift_type_scode());
|
||||||
|
return workorderrecord;
|
||||||
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
private JSONObject packageForm(JSONObject param) {
|
private JSONObject packageForm(JSONObject param) {
|
||||||
PdmProduceWorkorder workOrder = this.getOne(new QueryWrapper<PdmProduceWorkorder>().eq("workorder_id", param.getString("workorder_id")));
|
PdmProduceWorkorder workOrder = this.getOne(new QueryWrapper<PdmProduceWorkorder>().eq("workorder_id", param.getString("workorder_id")));
|
||||||
@@ -576,13 +599,14 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
|||||||
if (workorder.getPlan_qty().doubleValue() <= workorder.getReport_qty().doubleValue()) {
|
if (workorder.getPlan_qty().doubleValue() <= workorder.getReport_qty().doubleValue()) {
|
||||||
workorder.setWorkorder_status(WorkerOrderEnum.COMPLETE.getCode());
|
workorder.setWorkorder_status(WorkerOrderEnum.COMPLETE.getCode());
|
||||||
}
|
}
|
||||||
|
workorder.setReal_qty(null);
|
||||||
this.updateById(workorder);
|
this.updateById(workorder);
|
||||||
|
|
||||||
reportRecordService.update(new UpdateWrapper<PdmProduceWorkorderrecord>()
|
reportRecordService.update(new UpdateWrapper<PdmProduceWorkorderrecord>()
|
||||||
.set("report_qty", param.getBigDecimal("report_qty"))
|
.set("report_qty", param.getBigDecimal("report_qty"))
|
||||||
.set("nok_qty", param.getBigDecimal("nok_qty"))
|
.set("nok_qty", param.getBigDecimal("nok_qty"))
|
||||||
.set("repare_qty", param.getBigDecimal("repare_qty"))
|
.set("repare_qty", param.getBigDecimal("repare_qty"))
|
||||||
.set("needproduct_qty", workorder.getPlan_qty().doubleValue() - workorder.getReport_qty().doubleValue())
|
.set("needproduct_qty", Math.max(0,workorder.getPlan_qty().intValue() - workorder.getReport_qty().intValue()))
|
||||||
.eq("macoperate_id", one.getMacoperate_id()));
|
.eq("macoperate_id", one.getMacoperate_id()));
|
||||||
return one.getMacoperate_id();
|
return one.getMacoperate_id();
|
||||||
}
|
}
|
||||||
@@ -672,6 +696,41 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Map> reportQuery(ReportQuery query) {
|
public List<Map> reportQuery(ReportQuery query) {
|
||||||
return reportRecordService.getWorkorderRecordDtl(query);
|
List<Map> list = reportRecordService.reportQuery(query);
|
||||||
|
Map<String, String> hashMap = new HashMap<>();
|
||||||
|
int i =0;
|
||||||
|
for (Map map : list) {
|
||||||
|
String code = (String)map.get("workorder_code");
|
||||||
|
if (hashMap.get(code)==null){
|
||||||
|
hashMap.put(code,code);
|
||||||
|
i =0;
|
||||||
|
}
|
||||||
|
i++;
|
||||||
|
map.put("seq_number",i);
|
||||||
|
}
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Map> getOrderList(Map<String, String> param, Pageable page) {
|
||||||
|
return this.baseMapper.orderList(param);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateReport(JSONObject param) {
|
||||||
|
Assert.notNull(param,"参数不能为空");
|
||||||
|
PdmProduceWorkorderrecord record = reportRecordService.getOne(new QueryWrapper<PdmProduceWorkorderrecord>()
|
||||||
|
.eq("macoperate_id", param.getString("macoperate_id")));
|
||||||
|
PdmProduceWorkorder workorder = this.getOne(new QueryWrapper<PdmProduceWorkorder>()
|
||||||
|
.eq("workorder_id", record.getWorkorder_id()));
|
||||||
|
if (!workorder.getIs_canupdate_update()){
|
||||||
|
throw new BadRequestException("当前工单设置为不允许修改报工记录");
|
||||||
|
}
|
||||||
|
reportRecordService.update(new UpdateWrapper<PdmProduceWorkorderrecord>()
|
||||||
|
.set("nok_qty",param.getBigDecimal("nok_qty"))
|
||||||
|
.set("repare_qty",param.getBigDecimal("repare_qty"))
|
||||||
|
.set("report_qty",param.getBigDecimal("report_qty"))
|
||||||
|
.eq("macoperate_id", param.getString("macoperate_id")));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package org.nl.wms.product_manage.service.workorder.impl;
|
package org.nl.wms.product_manage.service.workorder.impl;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
import lombok.var;
|
import lombok.var;
|
||||||
import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorderrecord;
|
import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorderrecord;
|
||||||
import org.nl.wms.product_manage.service.workorder.dao.mapper.PdmProduceWorkorderrecordMapper;
|
import org.nl.wms.product_manage.service.workorder.dao.mapper.PdmProduceWorkorderrecordMapper;
|
||||||
@@ -23,7 +24,7 @@ import java.util.Map;
|
|||||||
public class PdmProduceWorkorderrecordServiceImpl extends ServiceImpl<PdmProduceWorkorderrecordMapper, PdmProduceWorkorderrecord> implements IPdmProduceWorkorderrecordService {
|
public class PdmProduceWorkorderrecordServiceImpl extends ServiceImpl<PdmProduceWorkorderrecordMapper, PdmProduceWorkorderrecord> implements IPdmProduceWorkorderrecordService {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Map> getWorkorderRecordDtl(ReportQuery query) {
|
public List<Map> reportQuery(ReportQuery query) {
|
||||||
return this.baseMapper.getWorkorderRecordDtl(query);
|
return this.baseMapper.reportQuery(query);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,21 +1,121 @@
|
|||||||
package org.nl.wms.scheduler_manage.controller.task;
|
package org.nl.wms.scheduler_manage.controller.task;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONArray;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.nl.common.anno.Log;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService;
|
||||||
|
import org.nl.wms.system_manage.service.dict.ISysDictService;
|
||||||
|
import org.nl.wms.system_manage.service.dict.dao.Dict;
|
||||||
|
import org.nl.wms.product_manage.sch.manage.FinishTypeEnum;
|
||||||
|
import org.nl.wms.product_manage.sch.service.TaskService;
|
||||||
|
import org.nl.wms.product_manage.sch.service.dto.TaskDto;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.data.domain.Pageable;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* @author ldjun
|
||||||
* 任务表 前端控制器
|
* @date 2021-08-19
|
||||||
* </p>
|
**/
|
||||||
*
|
|
||||||
* @author generator
|
|
||||||
* @since 2023-05-11
|
|
||||||
*/
|
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/schBaseTask")
|
@RequiredArgsConstructor
|
||||||
|
@Api(tags = "任务管理")
|
||||||
|
@RequestMapping("/api/task")
|
||||||
|
@Slf4j
|
||||||
public class SchBaseTaskController {
|
public class SchBaseTaskController {
|
||||||
|
|
||||||
|
private final TaskService taskService;
|
||||||
|
private final ISysDictService dictService;
|
||||||
|
@Autowired
|
||||||
|
private ISchBaseTaskService baseTaskService;
|
||||||
|
|
||||||
|
@GetMapping
|
||||||
|
@Log("查询任务")
|
||||||
|
@ApiOperation("查询任务")
|
||||||
|
//@PreAuthorize("@el.check('task:list')")
|
||||||
|
public ResponseEntity<Object> query(@RequestParam Map whereJson, Pageable page) {
|
||||||
|
return new ResponseEntity<>(taskService.queryAll(whereJson, page), HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping
|
||||||
|
@Log("新增任务")
|
||||||
|
@ApiOperation("新增任务")
|
||||||
|
//@PreAuthorize("@el.check('task:add')")
|
||||||
|
public ResponseEntity<Object> create(@Validated @RequestBody TaskDto dto) {
|
||||||
|
taskService.create(dto);
|
||||||
|
return new ResponseEntity<>(HttpStatus.CREATED);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PutMapping
|
||||||
|
@Log("修改任务")
|
||||||
|
@ApiOperation("修改任务")
|
||||||
|
//@PreAuthorize("@el.check('task:edit')")
|
||||||
|
public ResponseEntity<Object> update(@Validated @RequestBody TaskDto dto) {
|
||||||
|
taskService.update(dto);
|
||||||
|
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Log("删除任务")
|
||||||
|
@ApiOperation("删除任务")
|
||||||
|
//@PreAuthorize("@el.check('task:del')")
|
||||||
|
@DeleteMapping
|
||||||
|
public ResponseEntity<Object> delete(@RequestBody String[] ids) {
|
||||||
|
taskService.deleteAll(ids);
|
||||||
|
return new ResponseEntity<>(HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/taskStatus")
|
||||||
|
@Log("获取任务状态列表")
|
||||||
|
@ApiOperation("获取任务状态列表")
|
||||||
|
public ResponseEntity<Object> getTaskStatus() {
|
||||||
|
return new ResponseEntity<>(dictService.list(new LambdaQueryWrapper<Dict>()
|
||||||
|
.eq(Dict::getCode, "task_status")), HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/taskType")
|
||||||
|
@Log("获取任务类型列表")
|
||||||
|
@ApiOperation("获取任务类型列表")
|
||||||
|
public ResponseEntity<Object> getTaskType() {
|
||||||
|
return new ResponseEntity<>(taskService.getTaskTypes(), HttpStatus.OK);
|
||||||
|
}
|
||||||
|
@GetMapping("/acsTaskType")
|
||||||
|
@Log("获取acs任务类型列表")
|
||||||
|
@ApiOperation("获取acs任务类型列表")
|
||||||
|
public ResponseEntity<Object> getAcsTaskType() {
|
||||||
|
return new ResponseEntity<>(taskService.getAcsTaskType(), HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/finishType")
|
||||||
|
@Log("获取任务类型列表")
|
||||||
|
@ApiOperation("获取任务类型列表")
|
||||||
|
public ResponseEntity<Object> getFinishType() {
|
||||||
|
FinishTypeEnum[] values = FinishTypeEnum.values();
|
||||||
|
JSONArray arr = new JSONArray();
|
||||||
|
for (FinishTypeEnum value : values) {
|
||||||
|
JSONObject json = new JSONObject();
|
||||||
|
json.put("code", value.getCode());
|
||||||
|
json.put("name", value.getName());
|
||||||
|
arr.add(json);
|
||||||
|
}
|
||||||
|
return new ResponseEntity<>(arr, HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PutMapping("/operation")
|
||||||
|
@Log("任务操作")
|
||||||
|
@ApiOperation("任务操作")
|
||||||
|
//@PreAuthorize("@el.check('task:edit')")
|
||||||
|
public ResponseEntity<Object> update(@RequestBody Map<String, Object> map) {
|
||||||
|
baseTaskService.operation(map);
|
||||||
|
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,8 @@ package org.nl.wms.scheduler_manage.service.task;
|
|||||||
import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask;
|
import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
* 任务表 服务类
|
* 任务表 服务类
|
||||||
@@ -13,4 +15,10 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
|||||||
*/
|
*/
|
||||||
public interface ISchBaseTaskService extends IService<SchBaseTask> {
|
public interface ISchBaseTaskService extends IService<SchBaseTask> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 任务操作
|
||||||
|
*
|
||||||
|
* @param param
|
||||||
|
*/
|
||||||
|
void operation(Map<String, Object> param);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,29 @@
|
|||||||
package org.nl.wms.scheduler_manage.service.task.impl;
|
package org.nl.wms.scheduler_manage.service.task.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.map.MapUtil;
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import com.alibaba.fastjson.JSONArray;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||||
|
import org.nl.common.enums.AcsTaskEnum;
|
||||||
|
import org.nl.common.enums.StatusEnum;
|
||||||
|
import org.nl.modules.common.exception.BadRequestException;
|
||||||
|
import org.nl.modules.wql.core.bean.WQLObject;
|
||||||
|
import org.nl.wms.ext.acs.service.AcsToWmsService;
|
||||||
|
import org.nl.wms.ext.acs.service.impl.WmsToAcsServiceImpl;
|
||||||
|
import org.nl.wms.product_manage.sch.manage.TaskStatusEnum;
|
||||||
import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask;
|
import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask;
|
||||||
import org.nl.wms.scheduler_manage.service.task.dao.mapper.SchBaseTaskMapper;
|
import org.nl.wms.scheduler_manage.service.task.dao.mapper.SchBaseTaskMapper;
|
||||||
import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService;
|
import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import org.nl.wms.storage_manage.CHANGE_BILL_TYPE_ENUM;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.context.annotation.Lazy;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
* 任务表 服务实现类
|
* 任务表 服务实现类
|
||||||
@@ -17,4 +35,58 @@ import org.springframework.stereotype.Service;
|
|||||||
@Service
|
@Service
|
||||||
public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBaseTask> implements ISchBaseTaskService {
|
public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBaseTask> implements ISchBaseTaskService {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
@Lazy
|
||||||
|
private AcsToWmsService acsToWmsService;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void operation(Map<String, Object> map) {
|
||||||
|
WmsToAcsServiceImpl wms = new WmsToAcsServiceImpl();
|
||||||
|
String task_id = MapUtil.getStr(map, "task_id");
|
||||||
|
String method_name = MapUtil.getStr(map, "method_name");
|
||||||
|
JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0);
|
||||||
|
if (taskObj.getString("task_status").equals(TaskStatusEnum.FINISHED.getCode())) throw new BadRequestException("任务已完成!");
|
||||||
|
|
||||||
|
switch (method_name) { // forceFinish, cancel
|
||||||
|
case "immediateNotifyAcs":
|
||||||
|
JSONArray array = new JSONArray();
|
||||||
|
array.add(taskObj);
|
||||||
|
wms.issueTaskToAcs(array);
|
||||||
|
break;
|
||||||
|
case "forceFinish":
|
||||||
|
JSONArray finish = new JSONArray();
|
||||||
|
JSONObject res = new JSONObject();
|
||||||
|
res.put("task_id", task_id);
|
||||||
|
res.put("status", AcsTaskEnum.STATUS_FINISH.getCode());
|
||||||
|
res.put("finished_type", AcsTaskEnum.MANUAL_TASK_FINISHED_TYPE.getCode()); // 手动完成
|
||||||
|
finish.add(res);
|
||||||
|
acsToWmsService.receiveTaskStatusAcs(JSON.toJSONString(finish));
|
||||||
|
break;
|
||||||
|
case "cancel":
|
||||||
|
JSONArray cancel = new JSONArray();
|
||||||
|
JSONObject res2 = new JSONObject();
|
||||||
|
res2.put("task_id", task_id);
|
||||||
|
res2.put("status", AcsTaskEnum.STATUS_CANNEL.getCode());
|
||||||
|
cancel.add(res2);
|
||||||
|
acsToWmsService.receiveTaskStatusAcs(JSON.toJSONString(cancel));
|
||||||
|
break;
|
||||||
|
case "delete":
|
||||||
|
SchBaseTask one = getOne(new QueryWrapper<SchBaseTask>().eq("task_id", task_id));
|
||||||
|
int status = Integer.valueOf(one.getTask_status());
|
||||||
|
//判断如果在3个状态之内,更新操作
|
||||||
|
int tag = 1 << StatusEnum.TASK_CANNEL.getBit()
|
||||||
|
| 1 << StatusEnum.TASK_CREATE.getBit()
|
||||||
|
| 1 << StatusEnum.TASK_START_ERROR.getBit()
|
||||||
|
| 1 << StatusEnum.TASK_START_END_P.getBit();
|
||||||
|
if ((tag &~ 1 << status) != tag){
|
||||||
|
this.update(new UpdateWrapper<SchBaseTask>()
|
||||||
|
.set("is_delete",true)
|
||||||
|
.eq("task_id", task_id));
|
||||||
|
}else {
|
||||||
|
throw new BadRequestException("任务已经下发不允许直接删除");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,26 +9,24 @@ spring:
|
|||||||
client:
|
client:
|
||||||
reactive:
|
reactive:
|
||||||
#endpoints: 172.31.185.110:8200,172.31.154.9:8200 #内网
|
#endpoints: 172.31.185.110:8200,172.31.154.9:8200 #内网
|
||||||
# endpoints: 47.96.133.1785:8200 #外网
|
# endpoints: 192.168.46.225:9200 #外网
|
||||||
endpoints: http://47.96.133.1785:8200 #外网
|
endpoints: http://192.168.46.225:9200 #外网
|
||||||
elasticsearch:
|
elasticsearch:
|
||||||
rest:
|
rest:
|
||||||
#uris: 172.31.185.110:8200,172.31.154.9:8200 #内网
|
#uris: 172.31.185.110:8200,172.31.154.9:8200 #内网
|
||||||
# uris: 47.96.133.1785:8200 #外网
|
# uris: 192.168.46.225:9200 #外网
|
||||||
uris: http://47.96.133.1785:8200 #外网
|
uris: http://192.168.46.225:9200 #外网
|
||||||
username: elastic
|
# username: elastic
|
||||||
password: 123456
|
# password: 123456
|
||||||
datasource:
|
datasource:
|
||||||
druid:
|
druid:
|
||||||
db-type: com.alibaba.druid.pool.DruidDataSource
|
db-type: com.alibaba.druid.pool.DruidDataSource
|
||||||
driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
|
driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
|
||||||
url: jdbc:log4jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:hl_one_mes}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false
|
url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:hl_one_mes}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false
|
||||||
#url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.81.252}:${DB_PORT:3306}/${DB_NAME:hl_one_mes}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false
|
# url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.81.252}:${DB_PORT:3306}/${DB_NAME:hl_one_mes}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false
|
||||||
username: ${DB_USER:shenhua}
|
username: ${DB_USER:root}
|
||||||
#password: ${DB_PWD:P@ssw0rd}
|
password: ${DB_PWD:942464Yy}
|
||||||
#password: ${DB_PWD:root}
|
|
||||||
#password: ${DB_PWD:Root.123456}
|
|
||||||
password: ${DB_PWD:123456789}
|
|
||||||
# 初始连接数
|
# 初始连接数
|
||||||
initial-size: 5
|
initial-size: 5
|
||||||
# 最小连接数
|
# 最小连接数
|
||||||
@@ -173,6 +171,7 @@ sa-token:
|
|||||||
cookie:
|
cookie:
|
||||||
# 配置 Cookie 作用域:根据二级域名实现sso登入如lms.sso.com;acs.sso.com
|
# 配置 Cookie 作用域:根据二级域名实现sso登入如lms.sso.com;acs.sso.com
|
||||||
domain:
|
domain:
|
||||||
|
is-read-cookie: false
|
||||||
|
|
||||||
#jetcache:
|
#jetcache:
|
||||||
# defaultCacheType: LOCAL
|
# defaultCacheType: LOCAL
|
||||||
|
|||||||
@@ -206,6 +206,11 @@
|
|||||||
icon="el-icon-error"
|
icon="el-icon-error"
|
||||||
@click="doOperate(scope.row, 'b')"
|
@click="doOperate(scope.row, 'b')"
|
||||||
>取消</el-button>
|
>取消</el-button>
|
||||||
|
<el-button
|
||||||
|
type="text"
|
||||||
|
icon="el-icon-error"
|
||||||
|
@click="doOperate(scope.row, 'delete')"
|
||||||
|
>删除</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
@@ -382,6 +387,9 @@ export default {
|
|||||||
case 'd':// 详情
|
case 'd':// 详情
|
||||||
method_name = 'view'
|
method_name = 'view'
|
||||||
break
|
break
|
||||||
|
case 'delete':// 详情
|
||||||
|
method_name = 'delete'
|
||||||
|
break
|
||||||
}
|
}
|
||||||
if (method_name === 'view') {
|
if (method_name === 'view') {
|
||||||
this.view(row)
|
this.view(row)
|
||||||
|
|||||||
Reference in New Issue
Block a user