rev:任务列表维护
This commit is contained in:
@@ -105,7 +105,7 @@ public class AcsToWmsController {
|
||||
@SaIgnore
|
||||
@Log("反馈深坑数量")
|
||||
public ResponseEntity<Object> feedDeviceRealQty2(@RequestBody Map param) {
|
||||
acsToWmsService.feedDevQty(param);
|
||||
acsToWmsService.feedDevQty2(param);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
@@ -60,6 +60,7 @@ public interface AcsToWmsService {
|
||||
* @return
|
||||
*/
|
||||
void feedDevQty(Map param);
|
||||
void feedDevQty2(Map param);
|
||||
|
||||
/**
|
||||
* ACS给WMS反馈设备状态状态
|
||||
|
||||
@@ -79,7 +79,6 @@ public class AcsToWmsServiceImpl implements AcsToWmsService{
|
||||
RedissonUtils.lock(()->{
|
||||
//业务处理
|
||||
Task_Collent.get(taskEnum).createTask(param);
|
||||
|
||||
},param.getString("type"),5);
|
||||
}catch (Exception ex){
|
||||
log.error("acs申请任务失败:ex:{}",ex.getMessage());
|
||||
@@ -282,6 +281,28 @@ public class AcsToWmsServiceImpl implements AcsToWmsService{
|
||||
}
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public void feedDevQty2(Map param) {
|
||||
if (CollectionUtils.isEmpty(param)){
|
||||
return;
|
||||
}
|
||||
log.info("反馈设备数量接口:{}", JSONObject.toJSONString(param));
|
||||
Iterator iterator = param.keySet().iterator();
|
||||
while (iterator.hasNext()){
|
||||
String deviceCode = (String)iterator.next();
|
||||
if (!StringUtils.isEmpty(deviceCode)){
|
||||
Map item = (Map)param.get(deviceCode);
|
||||
Object qty = item.get("qty");
|
||||
Object weight = item.get("weight");
|
||||
UpdateWrapper<PdmBiDevice> wrapper = new UpdateWrapper<>();
|
||||
if (weight!=null){
|
||||
wrapper.set("deviceinstor_weight",weight);
|
||||
wrapper.eq("device_code",deviceCode);
|
||||
deviceService.update(wrapper);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void feedcachelineVe(JSONObject param) {
|
||||
|
||||
@@ -75,7 +75,7 @@ public class SpecialDeviceController {
|
||||
.set("deviceinstor_weight",query.getBigDecimal("deviceinstor_weight"))
|
||||
.eq("device_code",device_code));
|
||||
}
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.TableDataInfo;
|
||||
import org.nl.common.anno.Log;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.common.utils.RedissonUtils;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.wms.product_manage.service.device.IPdmBiDeviceService;
|
||||
import org.nl.wms.product_manage.service.workorder.IPdmProduceWorkorderService;
|
||||
@@ -26,8 +27,8 @@ import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@@ -117,8 +118,10 @@ public class PdmProduceWorkorderController {
|
||||
@PostMapping("/excelImport")
|
||||
@Log("excel导入")
|
||||
@ApiOperation("excel导入")
|
||||
public ResponseEntity<Object> excelImport(@RequestParam("file") MultipartFile file, HttpServletRequest request) {
|
||||
iPdmProduceWorkorderService.excelImport(file,request);
|
||||
public ResponseEntity<Object> excelImport(@RequestParam("file") MultipartFile file, HttpServletRequest request, HttpServletResponse response) {
|
||||
RedissonUtils.lock(()->{
|
||||
iPdmProduceWorkorderService.excelImport(file,request, response);
|
||||
},"工单导入",null);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
@@ -60,13 +60,14 @@ public class TaskServiceImpl implements TaskService {
|
||||
}
|
||||
|
||||
if (StrUtil.isNotEmpty(whereJson.getString("task_code"))) {
|
||||
map.put("task_code", "%" + whereJson.getString("task_code") + "%");
|
||||
if (whereJson.getString("task_code").length()>13){
|
||||
map.put("task_id", whereJson.getString("task_code"));
|
||||
}else {
|
||||
map.put("task_code", "%" + whereJson.getString("task_code") + "%");
|
||||
}
|
||||
}
|
||||
if (StrUtil.isNotEmpty(whereJson.getString("point_code1"))) {
|
||||
map.put("point_code1", "%" + whereJson.getString("point_code1") + "%");
|
||||
}
|
||||
if (StrUtil.isNotEmpty(whereJson.getString("point_code2"))) {
|
||||
map.put("point_code2", "%" + whereJson.getString("point_code2") + "%");
|
||||
if (StrUtil.isNotEmpty(whereJson.getString("point_code"))) {
|
||||
map.put("point_code", "%" + whereJson.getString("point_code1") + "%");
|
||||
}
|
||||
if (StrUtil.isNotEmpty(whereJson.getString("vehicle_code"))) {
|
||||
map.put("vehicle_code", "%" + whereJson.getString("vehicle_code") + "%");
|
||||
|
||||
@@ -105,7 +105,7 @@ public class SpeEmpTask extends AbstractAcsTask {
|
||||
.eq("point_code2", param.getString("device_code")).lt("task_status", StatusEnum.TASK_FINISH.getCode())
|
||||
);
|
||||
if (!CollectionUtils.isEmpty(list)){
|
||||
throw new BadRequestException(String.format("设备%s存在未完成任务", param.getString("device_code")));
|
||||
throw new BadRequestException(String.format("设备%s存在未完成任务:"+list.stream().map(SchBaseTask::getTask_id).collect(Collectors.toList()).toString(), param.getString("device_code")));
|
||||
}
|
||||
|
||||
JSONObject form = new JSONObject(MapOf.of("start_point_code",cahceLine,
|
||||
|
||||
@@ -102,7 +102,7 @@ public class SpeFullTask extends AbstractAcsTask {
|
||||
.eq("point_code1", point_code).lt("task_status", StatusEnum.TASK_FINISH.getCode())
|
||||
);
|
||||
if (!CollectionUtils.isEmpty(list)){
|
||||
throw new BadRequestException(String.format("设备%s存在未完成任务", param.getString("device_code")));
|
||||
throw new BadRequestException(String.format("设备%s存在未完成任务"+list.stream().map(SchBaseTask::getTask_id).collect(Collectors.toList()).toString(), param.getString("device_code")));
|
||||
}
|
||||
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,
|
||||
@@ -265,6 +265,7 @@ public class SpeFullTask extends AbstractAcsTask {
|
||||
if (!("fall_finish"+task.getTask_id()).equals(one.getRemark())){
|
||||
deviceService.update(new UpdateWrapper<PdmBiDevice>()
|
||||
.set("material_id", task.getMaterial_id())
|
||||
.set("deviceinstor_qty",one.getDeviceinstor_qty().add(task.getMaterial_qty()))
|
||||
.set("remark","fall_finish"+task.getTask_id())
|
||||
.eq("device_code", task.getPoint_code2()));
|
||||
}
|
||||
|
||||
@@ -14,12 +14,14 @@
|
||||
## 表字段对应输入参数
|
||||
#################################################
|
||||
输入.flag TYPEAS s_string
|
||||
输入.task_status TYPEAS s_string
|
||||
输入.task_status TYPEAS s_string
|
||||
输入.finished_type TYPEAS s_string
|
||||
输入.task_type TYPEAS s_string
|
||||
输入.point_code1 TYPEAS s_string
|
||||
输入.point_code2 TYPEAS s_string
|
||||
输入.point_code1 TYPEAS s_string
|
||||
输入.point_code TYPEAS s_string
|
||||
输入.point_code2 TYPEAS s_string
|
||||
输入.task_code TYPEAS s_string
|
||||
输入.task_id TYPEAS s_string
|
||||
输入.product_area TYPEAS s_string
|
||||
输入.vehicle_code TYPEAS s_string
|
||||
输入.begin_time TYPEAS s_string
|
||||
@@ -95,6 +97,9 @@
|
||||
OPTION 输入.product_area <> ""
|
||||
task.product_area = 输入.product_area
|
||||
ENDOPTION
|
||||
OPTION 输入.point_code <> ""
|
||||
( task.point_code1 = 输入.product_area or task.point_code2 = 输入.product_area)
|
||||
ENDOPTION
|
||||
OPTION 输入.unFinish <> ""
|
||||
task.task_status <> '7'
|
||||
ENDOPTION
|
||||
@@ -107,6 +112,9 @@
|
||||
OPTION 输入.task_code <> ""
|
||||
(task.task_code like 输入.task_code)
|
||||
ENDOPTION
|
||||
OPTION 输入.task_id <> ""
|
||||
(task.task_id = 输入.task_code)
|
||||
ENDOPTION
|
||||
OPTION 输入.point_code <> ""
|
||||
(task.point_code1 like 输入.point_code1)
|
||||
ENDOPTION
|
||||
|
||||
@@ -11,6 +11,7 @@ import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -87,8 +88,9 @@ public interface IPdmProduceWorkorderService extends IService<PdmProduceWorkorde
|
||||
* excel导入
|
||||
* @param file
|
||||
* @param request
|
||||
* @param response
|
||||
*/
|
||||
void excelImport(MultipartFile file, HttpServletRequest request);
|
||||
void excelImport(MultipartFile file, HttpServletRequest request, HttpServletResponse response);
|
||||
|
||||
|
||||
/*----一体及接口---*/
|
||||
|
||||
@@ -63,6 +63,7 @@ import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.math.BigDecimal;
|
||||
@@ -240,7 +241,7 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void excelImport(MultipartFile file, HttpServletRequest request) {
|
||||
public void excelImport(MultipartFile file, HttpServletRequest request, HttpServletResponse response) {
|
||||
InputStream inputStream = null;
|
||||
try {
|
||||
inputStream = file.getInputStream();
|
||||
@@ -248,109 +249,90 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
||||
//material_spec='24030921S'
|
||||
ExcelReader excelReader = ExcelUtil.getReader(inputStream,"推弯计划表");
|
||||
List<List<Object>> read = excelReader.read();
|
||||
String produce_date = "";
|
||||
// 循环获取的数据
|
||||
List<PdmProduceWorkorder> data = new ArrayList<>();
|
||||
Map<String,String> errorMap = new HashMap();
|
||||
List<Map> errlist = new ArrayList<>();
|
||||
row:
|
||||
for (int i = 0; i < read.size(); i++) {
|
||||
List<Object> list = read.get(i);
|
||||
if (ObjectUtil.isEmpty(list)) {
|
||||
continue;
|
||||
}
|
||||
//获取每列
|
||||
JSONObject param = new JSONObject();
|
||||
//按照列获取
|
||||
param.put("workorder_id", IdUtil.getStringId());
|
||||
param.put("workorder_code", CodeUtil.getNewCode("PDM_SHIFTORDER"));
|
||||
param.put("workorder_status", WorkerOrderEnum.CREATE.getCode());
|
||||
param.put("shift_type_scode", StatusEnum.DAYSHIFT.getCode()); // 默认白班
|
||||
String error_message = "";
|
||||
PdmProduceWorkorder workorder = new PdmProduceWorkorder();
|
||||
workorder.setWorkorder_id(IdUtil.getStringId());
|
||||
workorder.setWorkorder_code(CodeUtil.getNewCode("PDM_SHIFTORDER"));
|
||||
workorder.setWorkorder_status(WorkerOrderEnum.CREATE.getCode());
|
||||
workorder.setIs_needmove(true);
|
||||
workorder.setIs_canupdate_update(true);
|
||||
workorder.setCreate_time(DateUtil.now());
|
||||
workorder.setCreate_id(SecurityUtils.getCurrentUserId());
|
||||
workorder.setCreate_name("导入订单");
|
||||
workorder.setCreate_type(StatusEnum.EXCELINTO.getCode());
|
||||
|
||||
for (int j = 0; j < list.size(); j++) {
|
||||
String col = String.valueOf(list.get(j));
|
||||
解析cell:{ //如果是第一行 为生产日期
|
||||
if (i == 0 && j == 0) {
|
||||
continue row;
|
||||
}
|
||||
//如果第一列包含规格二字 则为表头 结束内循环列
|
||||
if (j == 0 && col.contains("班次")) {
|
||||
continue row;
|
||||
}
|
||||
if (j == 0) {
|
||||
//物料
|
||||
workorder.setShift_type_scode(col.equals("晚上") ? "2" : "1");
|
||||
}
|
||||
if (j == 1) {
|
||||
//物料
|
||||
workorder.setPlanproduceend_date(col.substring(0,col.indexOf(" "))+" 18:30:00");
|
||||
workorder.setPlanproducestart_date(col.substring(0,col.indexOf(" "))+" 07:30:00");
|
||||
}
|
||||
if (j == 2) {
|
||||
//物料
|
||||
List<MdMeMaterialbase> material_specs = materialbaseService.list(new QueryWrapper<MdMeMaterialbase>().eq("material_spec", col));
|
||||
if (CollectionUtils.isEmpty(material_specs)) {
|
||||
errorMap.put("第" + i + "行" + col, "物料规格对应物料信息不存在");
|
||||
error_message = error_message + col + "物料规格对应物料信息不存在,";
|
||||
} else {
|
||||
Optional<MdMeMaterialbase> first = material_specs.stream().filter(mdMeMaterialbase -> mdMeMaterialbase.getMaterial_code().contains("S")
|
||||
&& Pattern.matches("^[0-9]*$", mdMeMaterialbase.getMaterial_name().substring(mdMeMaterialbase.getMaterial_name().length() - 1))
|
||||
).findFirst();
|
||||
if (!first.isPresent()) {
|
||||
errorMap.put("第" + i + "行" + col, "物料规格对应物料信息不存在");
|
||||
}
|
||||
workorder.setMaterial_id(first.get().getMaterial_id());
|
||||
for (int i = 0; i < read.size(); i++) {
|
||||
Map<String,String> errorMap = new HashMap();
|
||||
List<Object> list = read.get(i);
|
||||
if (ObjectUtil.isEmpty(list)) {continue;}
|
||||
PdmProduceWorkorder workorder = new PdmProduceWorkorder();
|
||||
packageForm(workorder);
|
||||
for (int j = 0; j < list.size(); j++) {
|
||||
String col = String.valueOf(list.get(j));
|
||||
解析cell:{ //如果是第一行 为生产日期
|
||||
if (i == 0 && j == 0) {
|
||||
continue row;
|
||||
}
|
||||
//如果第一列包含规格二字 则为表头 结束内循环列
|
||||
if (j == 0 && col.contains("班次")) {
|
||||
continue row;
|
||||
}
|
||||
if (j == 0) {
|
||||
//物料
|
||||
workorder.setShift_type_scode(col.equals("晚班") ? "2" : "1");
|
||||
}
|
||||
if (j == 1) {
|
||||
//物料
|
||||
workorder.setPlanproduceend_date(col.substring(0,col.indexOf(" "))+" 18:30:00");
|
||||
workorder.setPlanproducestart_date(col.substring(0,col.indexOf(" "))+" 07:30:00");
|
||||
}
|
||||
if (j == 2) {
|
||||
//物料
|
||||
List<MdMeMaterialbase> material_specs = materialbaseService.list(new QueryWrapper<MdMeMaterialbase>().eq("material_spec", col));
|
||||
if (CollectionUtils.isEmpty(material_specs)) {
|
||||
errorMap.put("第" + j + "行", col+"物料规格对应物料信息不存在");
|
||||
} else {
|
||||
Optional<MdMeMaterialbase> first = material_specs.stream().filter(mdMeMaterialbase -> mdMeMaterialbase.getMaterial_code().contains("S")
|
||||
&& Pattern.matches("^[0-9]*$", mdMeMaterialbase.getMaterial_name().substring(mdMeMaterialbase.getMaterial_name().length() - 1))
|
||||
).findFirst();
|
||||
if (!first.isPresent()) {
|
||||
errorMap.put("第" + j + "行", col+"物料规格对应物料信息不存在");
|
||||
}
|
||||
}
|
||||
if (j == 3) {
|
||||
PdmBiWorkprocedure workprocedure = workprocedureService.getOne(new QueryWrapper<PdmBiWorkprocedure>().eq("workprocedure_name", col));
|
||||
if (ObjectUtil.isEmpty(workprocedure)) {
|
||||
errorMap.put("第" + i + "行" + col, "工序名称是否正确");
|
||||
} else {
|
||||
workorder.setWorkprocedure_id(workprocedure.getWorkprocedure_id());
|
||||
}
|
||||
}
|
||||
if (j == 4) {
|
||||
//设备 A1_TW_
|
||||
workorder.setDevice_code("A1_TW_" + col);
|
||||
}
|
||||
if (j == 7) {
|
||||
//单重
|
||||
BigDecimal bigDecimal = BigDecimal.valueOf(Double.valueOf(col) * 1000);
|
||||
workorder.setMaterial_weight(bigDecimal.setScale(3, RoundingMode.HALF_UP));
|
||||
}
|
||||
if (j == 8) {
|
||||
//操作工
|
||||
SysUser user = userService.getOne(new QueryWrapper<SysUser>().eq("person_name", col));
|
||||
if (ObjectUtil.isEmpty(user)) {
|
||||
errorMap.put("第" + i + "行" + col, " 操作工没有账号");
|
||||
} else {
|
||||
workorder.setCurrent_produce_person_id(user.getUser_id());
|
||||
}
|
||||
}
|
||||
if (j == 9) {
|
||||
workorder.setPlan_qty(new BigDecimal(Long.valueOf(col)));
|
||||
workorder.setMaterial_id(first.get().getMaterial_id());
|
||||
}
|
||||
}
|
||||
}
|
||||
if (CollectionUtils.isEmpty(errorMap)){
|
||||
data.add(workorder);
|
||||
}else {
|
||||
throw new BadRequestException(JSON.toJSONString(errorMap));
|
||||
if (j == 3) {
|
||||
PdmBiWorkprocedure workprocedure = workprocedureService.getOne(new QueryWrapper<PdmBiWorkprocedure>().eq("workprocedure_name", col));
|
||||
if (ObjectUtil.isEmpty(workprocedure)) {
|
||||
errorMap.put("第" + j + "行", col+"工序名称是否正确");
|
||||
} else {
|
||||
workorder.setWorkprocedure_id(workprocedure.getWorkprocedure_id());
|
||||
}
|
||||
}
|
||||
if (j == 4) {
|
||||
//设备 A1_TW_
|
||||
workorder.setDevice_code("A1_TW_" + col.replaceAll("-", "_"));
|
||||
}
|
||||
if (j == 7) {
|
||||
//单重
|
||||
BigDecimal bigDecimal = BigDecimal.valueOf(Double.valueOf(col) * 1000);
|
||||
workorder.setMaterial_weight(bigDecimal.setScale(3, RoundingMode.HALF_UP));
|
||||
}
|
||||
if (j == 8) {
|
||||
//操作工
|
||||
SysUser user = userService.getOne(new QueryWrapper<SysUser>().eq("person_name", col));
|
||||
if (ObjectUtil.isEmpty(user)) {
|
||||
errorMap.put("第" + j + "行", col+" 操作工没有账号");
|
||||
} else {
|
||||
workorder.setCurrent_produce_person_id(user.getUser_id());
|
||||
}
|
||||
}
|
||||
if (j == 9) {
|
||||
workorder.setPlan_qty(new BigDecimal(Long.valueOf(col)));
|
||||
}
|
||||
}
|
||||
}
|
||||
this.saveBatch(data);
|
||||
|
||||
if (CollectionUtils.isEmpty(errorMap)){
|
||||
data.add(workorder);
|
||||
}else { errlist.add(errorMap); };
|
||||
}
|
||||
if (!CollectionUtils.isEmpty(errlist)){
|
||||
throw new BadRequestException(JSON.toJSONString(errlist));
|
||||
}else {
|
||||
this.saveBatch(data);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
throw new BadRequestException(e.getMessage());
|
||||
@@ -364,6 +346,18 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
||||
|
||||
}
|
||||
|
||||
private void packageForm(PdmProduceWorkorder workorder) {
|
||||
workorder.setWorkorder_id(IdUtil.getStringId());
|
||||
workorder.setWorkorder_code(CodeUtil.getNewCode("PDM_SHIFTORDER"));
|
||||
workorder.setWorkorder_status(WorkerOrderEnum.CREATE.getCode());
|
||||
workorder.setIs_needmove(true);
|
||||
workorder.setIs_canupdate_update(true);
|
||||
workorder.setCreate_time(DateUtil.now());
|
||||
workorder.setCreate_id(SecurityUtils.getCurrentUserId());
|
||||
workorder.setCreate_name("导入订单");
|
||||
workorder.setCreate_type(StatusEnum.EXCELINTO.getCode());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
|
||||
@@ -3,12 +3,19 @@ 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 com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.github.pagehelper.Page;
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.nl.common.TableDataInfo;
|
||||
import org.nl.common.anno.Log;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.common.enums.StatusEnum;
|
||||
import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService;
|
||||
import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask;
|
||||
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;
|
||||
@@ -21,6 +28,7 @@ import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
/**
|
||||
* @author ldjun
|
||||
@@ -42,8 +50,22 @@ public class TaskController {
|
||||
@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);
|
||||
public ResponseEntity<Object> query(@RequestParam Map query, PageQuery pageQuery) {
|
||||
Page<Object> page = PageHelper.startPage(pageQuery.getPage()+1, pageQuery.getSize());
|
||||
page.setOrderBy("task_code desc");
|
||||
List<Map> list = baseTaskService.queryAll(query);
|
||||
TableDataInfo build = TableDataInfo.build(list);
|
||||
build.setTotalElements(page.getTotal());
|
||||
return new ResponseEntity<>(build, HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
@GetMapping("/undo")
|
||||
@Log("查询任务")
|
||||
@ApiOperation("查询任务")
|
||||
public ResponseEntity<Object> undo() {
|
||||
int count = baseTaskService.count(new QueryWrapper<SchBaseTask>().lt("task_status", StatusEnum.TASK_FINISH.getCode()));
|
||||
return new ResponseEntity<>(count, HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping
|
||||
|
||||
@@ -3,6 +3,7 @@ package org.nl.wms.scheduler_manage.service.task;
|
||||
import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
@@ -21,4 +22,6 @@ public interface ISchBaseTaskService extends IService<SchBaseTask> {
|
||||
* @param param
|
||||
*/
|
||||
void operation(Map<String, Object> param);
|
||||
|
||||
List<Map> queryAll(Map query);
|
||||
}
|
||||
|
||||
@@ -17,5 +17,7 @@ import java.util.Map;
|
||||
*/
|
||||
public interface SchBaseTaskMapper extends BaseMapper<SchBaseTask> {
|
||||
|
||||
List<Map> getTaskInfo (@Param("map") Map map);
|
||||
List<Map> getTaskInfo (Map map);
|
||||
|
||||
List<Map> queryAll (Map map);
|
||||
}
|
||||
|
||||
@@ -21,7 +21,6 @@
|
||||
LEFT JOIN sch_base_point point1 ON task.point_code1 = point1.point_code
|
||||
LEFT JOIN sch_base_point point2 ON task.point_code2 = point2.point_code
|
||||
LEFT JOIN md_me_materialbase mater ON task.material_id = mater.material_id
|
||||
LEFT JOIN md_pb_classstandard class ON task.task_type = class.class_id
|
||||
LEFT JOIN sys_dict dict ON dict.`value` = task.task_status AND dict.`code` = 'task_status'
|
||||
<where>
|
||||
task.is_delete = '0'
|
||||
@@ -31,4 +30,64 @@
|
||||
</where>
|
||||
|
||||
</select>
|
||||
<select id="queryAll" resultType="java.util.Map">
|
||||
SELECT
|
||||
task.*,
|
||||
mb.material_name,
|
||||
mb.material_spec,
|
||||
mb.material_code,
|
||||
DICT.label task_status_name,
|
||||
reg1.region_name as point1_region_name,
|
||||
reg2.region_name as point2_region_name,
|
||||
reg3.region_name as point3_region_name,
|
||||
reg4.region_name as point4_region_name
|
||||
FROM
|
||||
sch_base_task task
|
||||
left join md_me_materialbase mb on mb.material_id = task.material_id
|
||||
LEFT JOIN SYS_DICT DICT ON DICT.`VALUE` = TASK.TASK_STATUS AND DICT.`CODE` = 'TASK_STATUS'
|
||||
LEFT JOIN SCH_BASE_Region reg1 ON reg1.region_code = (
|
||||
SELECT p1.region_code FROM SCH_BASE_Point p1 WHERE p1.point_code = task.point_code1
|
||||
)
|
||||
LEFT JOIN SCH_BASE_Region reg2 ON reg2.region_code = (
|
||||
SELECT p2.region_code FROM SCH_BASE_Point p2 WHERE p2.point_code = task.point_code2
|
||||
)
|
||||
LEFT JOIN SCH_BASE_Region reg3 ON reg3.region_code = (
|
||||
SELECT p3.region_code FROM SCH_BASE_Point p3 WHERE p3.point_code = task.point_code3
|
||||
)
|
||||
LEFT JOIN SCH_BASE_Region reg4 ON reg4.region_code = (
|
||||
SELECT p4.region_code FROM SCH_BASE_Point p4 WHERE p4.point_code = task.point_code4
|
||||
)
|
||||
WHERE
|
||||
task.is_delete = '0'
|
||||
<if test="task_type != null and task_type != ''">
|
||||
and task.task_type = #{task_type}
|
||||
</if>
|
||||
<if test="finished_type != null and finished_type != ''">
|
||||
and task.finished_type = #{finished_type}
|
||||
</if>
|
||||
<if test="task_status != null and task_status != ''">
|
||||
and task.task_status in (${task_status})
|
||||
</if>
|
||||
<if test="begin_time != null and begin_time != ''">
|
||||
and task.create_time >= #{begin_time}
|
||||
</if>
|
||||
<if test="end_time != null and end_time != ''">
|
||||
and #{end_time} >= task.create_time
|
||||
</if>
|
||||
<if test="product_area != null and product_area != ''">
|
||||
and task.product_area = #{product_area}
|
||||
</if>
|
||||
<if test="point_code != null and point_code != ''">
|
||||
and ( task.point_code1 = #{point_code} or task.point_code2 = #{point_code} )
|
||||
</if>
|
||||
<if test="vehicle_code != null and vehicle_code != ''">
|
||||
and task.vehicle_code = #{vehicle_code}
|
||||
</if>
|
||||
<if test="task_code != null and task_code != ''">
|
||||
and task.task_code = #{task_code}
|
||||
</if>
|
||||
<if test="task_id != null and task_code != ''">
|
||||
and task.task_id = #{task_id}
|
||||
</if>
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
package org.nl.wms.scheduler_manage.service.task.dto;
|
||||
|
||||
import org.nl.common.domain.query.BaseQuery;
|
||||
import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask;
|
||||
|
||||
/*
|
||||
* @author ZZQ
|
||||
* @Date 2023/6/9 15:49
|
||||
*/
|
||||
public class TaskQuery extends BaseQuery<SchBaseTask> {
|
||||
|
||||
}
|
||||
@@ -6,12 +6,15 @@ 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.apache.commons.lang3.StringUtils;
|
||||
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.modules.wql.util.SpringContextHolder;
|
||||
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.AbstractAcsTask;
|
||||
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.mapper.SchBaseTaskMapper;
|
||||
@@ -22,6 +25,8 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
@@ -39,19 +44,40 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
|
||||
@Lazy
|
||||
private AcsToWmsService acsToWmsService;
|
||||
|
||||
@Override
|
||||
public List<Map> queryAll(Map query) {
|
||||
if (query.get("task_status") != null && ((String)query.get("task_status")).contains("-1")){
|
||||
query.put("task_status",((String)query.get("task_status")).replaceAll("-1","1,4,5"));
|
||||
}
|
||||
List<Map> maps = this.baseMapper.queryAll(query);
|
||||
return maps;
|
||||
}
|
||||
|
||||
@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("任务已完成!");
|
||||
|
||||
SchBaseTask taskObj = this.getOne(new QueryWrapper<SchBaseTask>().eq("task_id", task_id));
|
||||
if (taskObj.getTask_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);
|
||||
if (!taskObj.getTask_status().equals(TaskStatusEnum.START_AND_POINT.getCode())){
|
||||
try {
|
||||
AbstractAcsTask taskHandler = (AbstractAcsTask) SpringContextHolder.getBean(Class.forName(taskObj.getHandle_class()));
|
||||
taskHandler.pointConfirm((JSONObject) JSONObject.toJSON(taskObj));
|
||||
JSONArray array = new JSONArray();
|
||||
array.add(taskObj);
|
||||
wms.issueTaskToAcs(array);
|
||||
}catch (Exception ex){
|
||||
taskObj.setTask_status(StatusEnum.TASK_START_ERROR.getCode());
|
||||
taskObj.setRemark(ex.getMessage());
|
||||
taskObj.setUpdate_time(new Date());
|
||||
this.updateById(taskObj);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case "forceFinish":
|
||||
JSONArray finish = new JSONArray();
|
||||
|
||||
@@ -2,7 +2,7 @@ spring:
|
||||
freemarker:
|
||||
check-template-location: false
|
||||
profiles:
|
||||
active: dev3
|
||||
active: prod
|
||||
jackson:
|
||||
time-zone: GMT+8
|
||||
data:
|
||||
|
||||
Reference in New Issue
Block a user