rev:任务列表维护

This commit is contained in:
zhangzhiqiang
2023-06-09 21:24:40 +08:00
parent 32fd5187ad
commit dd5cd32d4b
20 changed files with 300 additions and 135 deletions

View File

@@ -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);
}

View File

@@ -60,6 +60,7 @@ public interface AcsToWmsService {
* @return
*/
void feedDevQty(Map param);
void feedDevQty2(Map param);
/**
* ACS给WMS反馈设备状态状态

View File

@@ -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) {

View File

@@ -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);
}
}

View File

@@ -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);
}

View File

@@ -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") + "%");

View File

@@ -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,

View File

@@ -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()));
}

View File

@@ -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

View File

@@ -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);
/*----一体及接口---*/

View File

@@ -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

View File

@@ -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

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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>

View File

@@ -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> {
}

View File

@@ -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();

View File

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