rev:刻字包装任务/工序/工单merge

This commit is contained in:
zhangzhiqiang
2023-07-06 18:21:54 +08:00
parent 8fb06c033c
commit 974a14a63e
47 changed files with 1267 additions and 798 deletions

View File

@@ -45,6 +45,7 @@ public enum AcsTaskEnum {
TASK_WASH_EMP("21","清洗机-空叫空框"),
TASK_WASH_FULL_AUTO("22","清洗机-满料请求自动"),//去半成品入库:参数不全也去异常处理位
TASK_WASH_FULL_QZ("23","清洗机-满料请求强制"),//去异常位:
TASK_POINT_TO_POINT("99","点对点搬运"),//去异常位:
//回调状态
STATUS_START("1","执行中"),
@@ -53,18 +54,17 @@ public enum AcsTaskEnum {
//专机请求
REQUEST_CALLTYPE_FULL("2","专机满料请求"),
REQUEST_CALLTYPE_EMP("1","专机缺料请求"),
REQUEST_PLOTTER_SEND_FULL("3","刻字满料请求"),
REQUEST_PLOTTER_CALL_EMP("4","刻字空框请求"),
REQUEST_WARP_CALL_FULL("5","包装缺料请求"),
REQUEST_WARP_SEND_EMP("6","包装送空框请求"),
REQUEST_PLOTTER_SEND_FULL("3","刻字满料请求"),//ok
REQUEST_PLOTTER_CALL_EMP("4","刻字空框请求"),//ok
REQUEST_WARP_CALL_FULL("5","包装缺料请求"),//ok
REQUEST_WARP_SEND_EMP("6","包装送空框请求"),//ok
REQUEST_WASH_LACK("7","清洗机器缺料请求"),//深坑->清洗:相同物料的重量<150公斤
REQUEST_WASH_EMP("8","清洗机器空框请求"),//清洗机下料位
REQUEST_WASH_FULL("9","清洗机器满料请求"),//清洗机满料请求
REQUEST_WASH_FULL_ERROR("10","清洗机-满料异常请求"),//去半成品入库
REQUEST_WASH_FULL("8","清洗机器满料请求"),//清洗机满料请求//去半成品入库
REQUEST_WASH_EMP("10","清洗机器空框请求"),//清洗机下料位
REQUEST_WASH_FULL_ERROR("11","清洗机-满料异常请求"),//去半成品入库 异常位
REQUEST_WASH_PLOTTER_EMP("12","刻字上料空框回库"),
//
///api/dict/dictDetail/api/dict/dictDetail/api/dict/dictDetail
AGV_SYSTEM_NB("1","诺宝机器人任务"),
AGV_SYSTEM_XC("2","叉车任务"),

View File

@@ -33,7 +33,7 @@ public enum StatusEnum {
CACHE_VEL_DIS("5","不显示","",null),
//任务状态
TASK_CREATE("1","生成","",1),
TASK_START_ERROR("2","点位确认异常","",1<<2),
TASK_START_ERROR("2","任务异常","",1<<2),
//TASK_END_P("3","确定终点",""),
TASK_START_END_P("4","起点和终点确认","",1<<3),
TASK_PUBLISH("5","下发","",1<<4),

View File

@@ -48,19 +48,16 @@ public class AcsUtil {
} catch (Exception e) {
log.info("ACS反馈异常----------------------------------------+"+api+",---"+e.getMessage());
String msg = e.getMessage();
//ConnectException: Connection refused: connect
//网络不通
result.put("status", HttpStatus.BAD_REQUEST);
result.put("status", "400");
result.put("message", "网络不通,操作失败!");
result.put("data", new JSONObject());
result.put("error", msg);
result.put("error", e.getMessage());
}
//acs抛异常这里
if (api.equals("api/wms/task")){
List<String> errorList = new ArrayList();
if (!StrUtil.equals(result.getString("status"), "200")) {
result.put("status", HttpStatus.BAD_REQUEST);
result.put("status", "400");
JSONArray errorArr = result.getJSONArray("result");
if (errorArr !=null && errorArr.size()>0){
errorList = errorArr.stream().map(a -> ((JSONObject) a).getString("task_id")).collect(Collectors.toList());
@@ -93,15 +90,13 @@ public class AcsUtil {
String isConnect = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("IS_CONNECT_ACS").getValue();
JSONObject result = new JSONObject();
if (StrUtil.equals(StatusEnum.STATUS_FLASE.getCode(), isConnect)) {
result.put("status", HttpStatus.OK.value());
result.put("status", "200");
result.put("message", "下发成功但未连接ACS!");
result.put("data", new JSONObject());
return result;
}
//ACS地址127.0.0.1:8010
String acsUrl = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("acs_url").getValue();
String url = acsUrl + api;
try {
String resultMsg = HttpRequest.post(url)
@@ -113,13 +108,16 @@ public class AcsUtil {
} catch (Exception e) {
log.info("ACS反馈异常----------------------------------------+"+api+",---"+e.getMessage());
String msg = e.getMessage();
//ConnectException: Connection refused: connect
//网络不通
result.put("status", HttpStatus.BAD_REQUEST);
result.put("status", "400");
result.put("message", "网络不通,操作失败!");
result.put("data", new JSONObject());
result.put("error", msg);
}
if (!StrUtil.equals(result.getString("status"), "200")) {
result.put("status", "400");
result.put("message", result.getString("message"));
result.put("data", new JSONObject());
}
return result;
}
}

View File

@@ -3,15 +3,25 @@ package org.nl.common.utils;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.AllArgsConstructor;
import lombok.Getter;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.formula.functions.T;
import org.nl.common.publish.event.PublishEvent;
import org.nl.config.thread.ThreadPoolExecutorUtil;
import org.nl.modules.wql.util.SpringContextHolder;
import org.nl.wms.system_manage.service.ql.IPdmQlOptionService;
import org.nl.wms.system_manage.service.ql.dao.PdmQlOption;
import org.nl.wms.system_manage.service.ql.dto.OptionRecordQuery;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ThreadPoolExecutor;
/*
@@ -27,9 +37,9 @@ public class OptionRecord {
qlOption.setOptiod_date(JSON.toJSONString(option));
}
qlOption.setOrderno(order);
qlOption.setOption_id(IdUtil.getStringId());
qlOption.setType(type.name());
qlOption.setCreate_id(DateUtil.now());
qlOption.setCreate_time(SecurityUtils.getCurrentUserId());
qlOption.setCreate_time(DateUtil.now());
qlOption.setCreate_name(SecurityUtils.getCurrentNickName());
qlOption.setBussclass(classname.name());
qlOption.setStatus(status);
@@ -68,5 +78,6 @@ public class OptionRecord {
WORKORDER,
MATERIAL,
VECHILE,
POINT,
}
}

View File

@@ -8,12 +8,12 @@ import org.nl.wms.ext.acs.service.impl.AcsToWmsServiceImpl;
import org.nl.wms.product_manage.sch.tasks.SpeMachinery.SpeEmpTask;
import org.nl.wms.product_manage.sch.tasks.SpeMachinery.SpeFullTask;
import org.nl.wms.product_manage.sch.tasks.WashMachineryTask;
import org.nl.wms.product_manage.sch.tasks.callEmpty.PlotterCallEmptyTask;
import org.nl.wms.product_manage.sch.tasks.callEmpty.WashCallEmptyTask;
import org.nl.wms.product_manage.sch.tasks.callMaterial.WrapCallMaterialTask;
import org.nl.wms.product_manage.sch.tasks.sendEmpty.WrapSendEmptyTask;
import org.nl.wms.product_manage.sch.tasks.sendMaterial.PlotterSendMaterialTask;
import org.nl.wms.product_manage.sch.tasks.sendMaterial.WashSendMaterialTask;
import org.nl.wms.product_manage.sch.tasks.plotter.PlotterCallEmptyTask;
import org.nl.wms.product_manage.sch.tasks.wash.WashCallEmptyTask;
import org.nl.wms.product_manage.sch.tasks.packageWrap.WrapCallMaterialTask;
import org.nl.wms.product_manage.sch.tasks.packageWrap.WrapSendEmptyTask;
import org.nl.wms.product_manage.sch.tasks.plotter.PlotterSendMaterialTask;
import org.nl.wms.product_manage.sch.tasks.wash.WashSendMaterialTask;
import org.springframework.context.SmartLifecycle;
import org.springframework.context.annotation.Configuration;

View File

@@ -71,7 +71,6 @@ public class LogAspect {
MethodSignature signature = (MethodSignature) joinPoint.getSignature();
Method method = signature.getMethod();
String methodName = joinPoint.getTarget().getClass().getName() + "." + signature.getName() + "()";
String params = getParameter(method, joinPoint.getArgs());
HttpServletRequest request = RequestHolder.getHttpServletRequest();
String url = request.getRequestURI();
@@ -92,29 +91,6 @@ public class LogAspect {
Log log = new Log("INFO", System.currentTimeMillis() - comming);
logService.save(getUsername(), StringUtils.getBrowser(request), requestIp, joinPoint, log);
}
if (logInfo.isInterfaceLog()) {
try {
WQLObject interfaceLog = WQLObject.getWQLObject("sys_interface_log");
JSONObject json = new JSONObject();
json.put("log_id", IdUtil.getStringId());
json.put("description", logInfo.value());
json.put("log_type", logInfo.interfaceLogType().getDesc());
json.put("log_level", "1");
json.put("method", methodName);
json.put("params", getParameter(method, joinPoint.getArgs()));
json.put("request_ip", StringUtils.getIp(request));
json.put("time", System.currentTimeMillis() - comming);
json.put("username", getUsername());
json.put("address", StringUtils.getCityInfo(requestIp));
json.put("browser", StringUtils.getBrowser(request));
json.put("exception_detail", IdUtil.getStringId());
json.put("create_time", DateUtil.now());
Object parse = JSONObject.parse(result.toString());
json.put("return_result", parse);
interfaceLog.insert(json);
} catch (Exception e) {
}
}
}catch (Exception ex){
StringBuffer errorStack = new StringBuffer();
errorStack.append("<br/>【异常堆栈:");

View File

@@ -65,4 +65,12 @@ public interface WmsToAcsService {
* @return
*/
Map<String, Object> action(JSONArray arr);
/**
* 目标请求
* @param arr
* @param url
* @return
*/
JSONObject request(JSONObject arr,String url);
}

View File

@@ -71,7 +71,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService{
@Override
public Map<String, Object> apply(JSONObject param) {
Assert.notNull(param,"请求参数不能为空");
Assert.notNull(param,"请求参数不能为空");//{"workorder_code":230704889,"device_code":"A1_BZJ_1","type":"5"}
Map result = MapOf.of("status", HttpStatus.OK.value(), "message", "ACS向WMS申请任务成功!");
AcsTaskEnum taskEnum = AcsTaskEnum.getType(param.getString("type"), "REQUEST_");

View File

@@ -135,5 +135,9 @@ public class WmsToAcsServiceImpl implements WmsToAcsService{
return AcsUtil.notifyAcs(api, arr);
}
@Override
public JSONObject request(JSONObject arr, String url) {
return AcsUtil.notifyAcs(url, arr);
}
}

View File

@@ -7,46 +7,126 @@ package org.nl.wms.pda_manage.pda.controller;
*/
import cn.dev33.satoken.annotation.SaIgnore;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
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.wms.ext.acs.service.WmsToAcsService;
import org.nl.wms.product_manage.sch.tasks.plotter.PlotterCallEmptyTask;
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.dao.SchBaseTask;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
@RestController
@Api(tags = "成品手持服务")
@Api(tags = "一体机刻字服务")
@RequestMapping("/api/pda")
@Slf4j
@SaIgnore
public class TmpKZController {
@Autowired
private WmsToAcsService wmsToAcsService;
@Autowired
private ISchBasePointService basePointService;
@Autowired
private PlotterCallEmptyTask plotterCallEmptyTask;
@Autowired
private ISchBaseTaskService taskService;
/**
*
* @param param
* @return
*/
@RequestMapping("deviceinstorQty")
@SaIgnore
public ResponseEntity<Object> deviceinstorQty(@RequestBody JSONObject param){
SchBasePoint one = basePointService.getOne(new QueryWrapper<SchBasePoint>()
.eq("device_code", param.getString("device_code"))
.eq("point_type", StatusEnum.POINT_LOCATION_IN.getCode()));
if (one==null){
throw new BadRequestException("当前设备无倒料点");
}
JSONObject jo = new JSONObject();
jo.put("device_code", one.getPoint_code());
jo.put("qty", param.getString("qty"));
JSONObject result = wmsToAcsService.request(jo, "api/wms/handPour");
if (!StrUtil.equals(result.getString("status"), "200")) {
throw new BadRequestException((String)result.get("message"));
}
return new ResponseEntity<>( HttpStatus.OK);
}
@RequestMapping("callVechile")
@SaIgnore
public ResponseEntity<Object> callVechile(@RequestBody JSONObject param){
plotterCallEmptyTask.callEmpVechile(param.getString("device_code"));
return new ResponseEntity<>( HttpStatus.OK);
}
//鞋料
@RequestMapping("kzunload")
public ResponseEntity<Object> kzunload(@RequestBody JSONObject param){
@SaIgnore
public ResponseEntity<Object> kzunload(@RequestBody JSONObject param) {
JSONObject jo = new JSONObject();
jo.put("device_code", "A1_KZ_SL");
JSONObject result = wmsToAcsService.request(jo, "api/wms/startDischarge");
if (!StrUtil.equals(result.getString("status"), "200")) {
throw new BadRequestException((String)result.get("message"));
}
return new ResponseEntity<>( HttpStatus.OK);
}
@RequestMapping("kzresidue")
@SaIgnore
public ResponseEntity<Object> kzresidue(@RequestBody JSONObject param){
JSONObject jo = new JSONObject();
jo.put("next_point_code", param.getString("device_code"));
jo.put("start_point_code", param.getString("A1_KZ_SL"));
jo.put("weight", param.getString("qty"));
JSONObject result = wmsToAcsService.request(jo, "api/wms/putOver");
if (!StrUtil.equals(result.getString("status"), "200")) {
throw new BadRequestException((String)result.get("message"));
}
return new ResponseEntity<>( HttpStatus.OK);
}
@RequestMapping("tmpcallVechile")
@SaIgnore
public ResponseEntity<Object> tmpcallVechile(@RequestBody JSONObject param){
JSONObject moveTask =taskService.createMoveTask("", "", AcsTaskEnum.TASK_POINT_TO_POINT, AcsTaskEnum.ACS_TASK_TYPE_NON_WEIGHING_TASK_OF_PS20);
JSONArray data = new JSONArray();
data.add(moveTask);
Map<String, Object> result = wmsToAcsService.issueTaskToAcs2(data);
if (StrUtil.equals((String)result.get("status"), "400")) {
throw new BadRequestException((String)result.get("message"));
}
taskService.save(moveTask.toJavaObject(SchBaseTask.class));
return new ResponseEntity<>( HttpStatus.OK);
}
@RequestMapping("tmpsendVechile")
@SaIgnore
public ResponseEntity<Object> tmpsendVechile(@RequestBody JSONObject param){
JSONObject moveTask = taskService.createMoveTask("", "", AcsTaskEnum.TASK_POINT_TO_POINT, AcsTaskEnum.ACS_TASK_TYPE_NON_WEIGHING_TASK_OF_PS20);
JSONArray data = new JSONArray();
data.add(moveTask);
Map<String, Object> result = wmsToAcsService.issueTaskToAcs2(data);
if (StrUtil.equals((String)result.get("status"), "400")) {
throw new BadRequestException((String)result.get("message"));
}
taskService.save(moveTask.toJavaObject(SchBaseTask.class));
return new ResponseEntity<>( HttpStatus.OK);
}

View File

@@ -56,6 +56,7 @@ public class SpecialDeviceController {
for (Map pdmBiDevice : list.getRecords()) {
MdMeMaterialbase materialbase = materialMap.get(pdmBiDevice.get("material_id"));
pdmBiDevice.put("material_name",materialbase!=null?materialbase.getMaterial_name():"");
pdmBiDevice.put("material_code",materialbase!=null?materialbase.getMaterial_code():"");
pdmBiDevice.put("material_spec",materialbase!=null?materialbase.getMaterial_spec():"");
}
}
@@ -77,5 +78,20 @@ public class SpecialDeviceController {
}
return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK);
}
@PostMapping("/setEmp")
@Log("设置空点位")
@ApiOperation("设置空点位")
@SaIgnore
public ResponseEntity<Object> setEmp (@RequestBody String[]ids){
if (ids.length>0){
iDeviceService.update(new UpdateWrapper<PdmBiDevice>()
.set("material_id","")
.set("deviceinstor_qty",0)
.set("deviceinstor_weight",0)
.set("remark","")
.in("device_code",ids));
}
return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK);
}
}

View File

@@ -36,7 +36,7 @@ public abstract class AbstractAcsTask {
public void notifyAcs(JSONArray param){};
public List<SchBaseTask> schedulerTask(List<SchBaseTask> tasks){
return new ArrayList<>();
return tasks;
};

View File

@@ -5,7 +5,7 @@ package org.nl.wms.product_manage.sch.manage;
*/
public enum TaskStatusEnum {
CREATED("1", "生成"),
SURE_START_ERROR("2", "点位确认异常"),
SURE_START_ERROR("2", "任务异常"),
//SURE_END("3", "确定终点"),
START_AND_POINT("4", "起点终点确认"),
ISSUE("5", "下发"),

View File

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

View File

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

View File

@@ -1,4 +1,4 @@
package org.nl.wms.product_manage.sch.tasks.callMaterial;
package org.nl.wms.product_manage.sch.tasks.packageWrap;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Assert;
@@ -10,11 +10,13 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.jetbrains.annotations.NotNull;
import org.nl.common.enums.AcsTaskEnum;
import org.nl.common.enums.StatusEnum;
import org.nl.common.enums.WorkerOrderEnum;
import org.nl.common.utils.IdUtil;
import org.nl.common.utils.MapOf;
import org.nl.common.utils.OptionRecord;
import org.nl.common.utils.SecurityUtils;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.system.util.CodeUtil;
@@ -33,6 +35,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
@@ -57,61 +60,45 @@ public class WrapCallMaterialTask extends AbstractAcsTask {
@Override
@Transactional(rollbackFor = Exception.class)
public void updateTaskStatus(JSONObject task, String status) {
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point");
JSONObject taskObj = taskTab.query("task_id = '" + task.getString("task_id") + "' " +
"and task_status <> '" + StatusEnum.TASK_FINISH.getCode() + "' " +
"and task_status <> '" + StatusEnum.TASK_CANNEL.getCode() + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(taskObj)) {
SchBaseTask one = taskService.getOne(new QueryWrapper<SchBaseTask>()
.eq("task_id", task.getString("task_id")));
if (one.getTask_status().equals(StatusEnum.TASK_FINISH.getCode())||one.getTask_status().equals(StatusEnum.TASK_CANNEL.getCode())) {
throw new BadRequestException("任务已完成,不可取消!");
}
String pointCode1 = taskObj.getString("point_code1");
JSONObject pointObj = null;
if (ObjectUtil.isNotEmpty(pointCode1)) {
pointObj = pointTab.query("point_code = '" + pointCode1 + "'").uniqueResult(0);
}
if (status.equals(AcsTaskEnum.STATUS_START.getCode())) {
// 执行中
// 任务执行中
taskObj.put("task_status", StatusEnum.TASK_RUNNING.getCode());
taskObj.put("update_time", DateUtil.now());
taskTab.update(taskObj);
} else if (status.equals(AcsTaskEnum.STATUS_FINISH.getCode())) {
// 完成
if (ObjectUtil.isNotEmpty(pointObj)) {
// 释放点位并赋值
pointObj.put("lock_type", StatusEnum.LOCK_OFF.getCode());
pointObj.put("point_status", StatusEnum.POINT_STATUS_EMPTY.getCode());
pointObj.put("material_id", taskObj.getString("material_id"));
pointObj.put("update_time", DateUtil.now());
pointTab.update(pointObj);
}
// 2任务完成
taskObj.put("task_status", StatusEnum.TASK_FINISH.getCode());
taskObj.put("update_time", DateUtil.now());
taskObj.put("finished_type", ObjectUtil.isNotEmpty(task.getString("finished_type"))?
task.getString("finished_type"):AcsTaskEnum.AUTO_TASK_FINISHED_TYPE.getCode());
taskTab.update(taskObj);
} else {
/**
* 取消任务
* 1点位恢复
* 2任务状态修改
*/
// 2点位恢复
if (ObjectUtil.isNotEmpty(pointObj)) {
// 释放点位
pointObj.put("lock_type", StatusEnum.LOCK_OFF.getCode());
pointObj.put("update_time", DateUtil.now());
pointTab.update(pointObj);
}
// 2任务取消
taskObj.put("task_status", StatusEnum.TASK_CANNEL.getCode());
taskObj.put("update_time", DateUtil.now());
taskObj.put("finished_type", ObjectUtil.isNotEmpty(task.getString("finished_type"))?
task.getString("finished_type"):AcsTaskEnum.AUTO_TASK_FINISHED_TYPE.getCode());
taskTab.update(taskObj);
taskService.update(new UpdateWrapper<SchBaseTask>()
.set("task_status",StatusEnum.TASK_RUNNING.getCode()).set("update_time",new Date())
.eq("task_id",one.getTask_id()));
}
if (status.equals(AcsTaskEnum.STATUS_FINISH.getCode())) {
// 完成
pointService.update(new UpdateWrapper<SchBasePoint>().set("lock_type",StatusEnum.LOCK_OFF.getCode())
.set("point_status",StatusEnum.POINT_STATUS_EMPTY.getCode())
.set("material_id","").set("qty",0)
.set("task_id","")
.set("point_status", StatusEnum.POINT_STATUS_EMPTY.getCode())
.eq("point_code",one.getPoint_code1()));
taskService.update(new UpdateWrapper<SchBaseTask>()
.set("task_status",StatusEnum.TASK_FINISH.getCode()).set("update_time",new Date())
.eq("task_id",task.getString("task_id")));
}
if (status.equals(AcsTaskEnum.STATUS_CANNEL.getCode())) {
// 完成
pointService.update(new UpdateWrapper<SchBasePoint>()
.set("lock_type",StatusEnum.LOCK_OFF.getCode())
.set("task_id","")
.eq("point_code",one.getPoint_code1()));
taskService.update(new UpdateWrapper<SchBaseTask>()
.set("task_status",StatusEnum.TASK_CANNEL.getCode())
.set("update_time",new Date())
.eq("task_id",task.getString("task_id")));
}
OptionRecord.recordAsync(OptionRecord.OptionEnum.UPDATE,
status,
OptionRecord.Buss.POINT,
one.getPoint_code1(), MapOf.of("start",one.getPoint_code1(),"end",one.getPoint_code3(),"time",DateUtil.now(),"order",one.getTask_id()));
}
@Override
@@ -130,23 +117,7 @@ public class WrapCallMaterialTask extends AbstractAcsTask {
throw new BadRequestException(String.format("设备%s存在未完成任务"+list.stream().map(SchBaseTask::getTask_id).collect(Collectors.toList()).toString(), param.getString("device_code")));
}
// 查找任务状态
JSONObject task = new JSONObject();
task.put("task_id", IdUtil.getStringId());
task.put("task_name", AcsTaskEnum.TASK_WARP_MAC.getDesc());
task.put("task_type", AcsTaskEnum.TASK_WARP_MAC.getCode());
task.put("task_code", CodeUtil.getNewCode("TASK_CODE"));
task.put("acs_task_type", AcsTaskEnum.ACS_TASK_TYPE_NON_WEIGHING_TASK_OF_PS20.getCode());
task.put("task_status", StatusEnum.TASK_CREATE.getCode());
task.put("point_code2", param.getString("device_code"));
task.put("handle_class", this.getClass().getName());
task.put("is_delete", StatusEnum.STATUS_FLASE.getCode());
String currentUserId = SecurityUtils.getCurrentUserId();
task.put("create_id", currentUserId);
task.put("create_name", SecurityUtils.getCurrentNickName());
task.put("create_time", DateUtil.now());
task.put("priority", "1");
task.put("agv_system_type", AcsTaskEnum.AGV_SYSTEM_XC.getCode());
task.put("table_fk_id",order.getWorkorder_code());
JSONObject task = packageTask(param, order);
SchBaseTask schBaseTask = task.toJavaObject(SchBaseTask.class);
taskService.save(schBaseTask);
// 找终点
@@ -155,48 +126,93 @@ public class WrapCallMaterialTask extends AbstractAcsTask {
JSONArray data = new JSONArray();
data.add(task);
// 下发
wms.issueTaskToAcs2(data);
wms.issueTaskToAcs(data);
} catch (Exception ex) {
log.error("刻字请求异常,error:{}",ex);
pointService.update(new UpdateWrapper<SchBasePoint>()
.set("lock_type",StatusEnum.LOCK_OFF.getCode())
.in("point_code",schBaseTask.getPoint_code1(),schBaseTask.getPoint_code2()));
schBaseTask.setRemark(ex.getMessage());
schBaseTask.setUpdate_time(new Date());
schBaseTask.setUpdate_name("acs");
schBaseTask.setTask_status(StatusEnum.TASK_START_ERROR.getCode());
taskService.save(schBaseTask);
taskService.updateById(schBaseTask);
}
return task.getString("task_id");
}
@NotNull
private JSONObject packageTask(JSONObject param, PdmProduceWorkorder order) {
JSONObject task = new JSONObject();
task.put("task_id", IdUtil.getStringId());
task.put("task_name", AcsTaskEnum.TASK_WARP_MAC.getDesc());
task.put("task_type", AcsTaskEnum.TASK_WARP_MAC.getCode());
task.put("task_code", CodeUtil.getNewCode("TASK_CODE"));
task.put("acs_task_type", AcsTaskEnum.ACS_TASK_TYPE_NON_WEIGHING_TASK_OF_PS20.getCode());
task.put("task_status", StatusEnum.TASK_CREATE.getCode());
task.put("point_code3", param.getString("device_code"));
task.put("handle_class", this.getClass().getName());
task.put("is_delete", StatusEnum.STATUS_FLASE.getCode());
task.put("is_send", true);
String currentUserId = SecurityUtils.getCurrentUserId();
task.put("create_id", currentUserId);
task.put("create_name", SecurityUtils.getCurrentNickName());
task.put("create_time", DateUtil.now());
task.put("finished_type", "1");
task.put("priority", "1");
task.put("material_id",order.getMaterial_id());
task.put("agv_system_type", AcsTaskEnum.AGV_SYSTEM_XC.getCode());
task.put("table_fk_id", order.getWorkorder_code());
return task;
}
@Override
public void cancel(String task_id) {
}
@Override
public void pointConfirm(JSONObject taskObj) {
public void pointConfirm(JSONObject task) {
// 去刻字缓存区寻找空位
List<Map<String, String>> points = pointService.queryVehicle(
MapOf.of("is_used", "1",
"lock_type", StatusEnum.LOCK_OFF.getCode(),
"region_code", "A1_KZHC",
"material_id", taskObj.getString("material_id")));
if (ObjectUtil.isNotEmpty(points)) {
Map<String, String> map = points.get(0);
if (CollectionUtils.isEmpty(map)|| StringUtils.isEmpty(map.get("point_code"))){
throw new BadRequestException("刻字缓存区没有可用货位.");
}
List<SchBasePoint> list = pointService.list(new QueryWrapper<SchBasePoint>()
.eq("region_code", "A1_KZHC")
.eq("lock_type", StatusEnum.LOCK_OFF.getCode())
.eq("is_used", "1")
.eq("point_status", StatusEnum.POINT_STATUS_FULL.getCode())
.eq("material_id", task.getString("material_id"))
.gt("qty", 0));
if (ObjectUtil.isNotEmpty(list)) {
SchBasePoint schBasePoint = list.get(0);
pointService.update(new UpdateWrapper<SchBasePoint>()
.set("lock_type",StatusEnum.LOCK_ON.getCode())
.eq("point_code",map.get("point_code")));
.set("task_id",task.getString("task_id"))
.eq("point_code",schBasePoint.getPoint_code()));
// 设置点位
taskObj.put("update_time", DateUtil.now());
taskObj.put("point_code1",map.get("point_code"));
SchBaseTask schBaseTask = taskObj.toJavaObject(SchBaseTask.class);
task.put("update_time", DateUtil.now());
task.put("point_code1",schBasePoint.getPoint_code());
SchBaseTask schBaseTask = task.toJavaObject(SchBaseTask.class);
schBaseTask.setTask_status(StatusEnum.TASK_START_END_P.getCode());
schBaseTask.setUpdate_time(new Date());
schBaseTask.setTask_group_id(org.nl.common.utils.IdUtil.getStringId());
taskService.updateById(schBaseTask);
OptionRecord.recordAsync(OptionRecord.OptionEnum.ADD,
WorkerOrderEnum.CREATE.getCode(),
OptionRecord.Buss.POINT,
task.getString("point_code1"), MapOf.of("start",task.getString("point_code1"),"end",task.getString("point_code3"),"time",DateUtil.now(),"order",task.getString("task_id")));
} else {
throw new BadRequestException("刻字缓存区没有可用货位.");
}
}
@Override
public List<SchBaseTask> schedulerTask(List<SchBaseTask> tasks) {
ArrayList<SchBaseTask> Merge = new ArrayList<>();
if (!CollectionUtils.isEmpty(tasks)){
for (SchBaseTask task : tasks) {
task.setTask_group_id(org.nl.common.utils.IdUtil.getStringId());
Merge.add(task);
}
}
return Merge;
}
}

View File

@@ -1,4 +1,4 @@
package org.nl.wms.product_manage.sch.tasks.sendEmpty;
package org.nl.wms.product_manage.sch.tasks.packageWrap;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil;
@@ -7,9 +7,13 @@ import cn.hutool.core.util.StrUtil;
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 lombok.extern.slf4j.Slf4j;
import org.nl.common.enums.AcsTaskEnum;
import org.nl.common.enums.StatusEnum;
import org.nl.common.enums.WorkerOrderEnum;
import org.nl.common.utils.MapOf;
import org.nl.common.utils.OptionRecord;
import org.nl.common.utils.SecurityUtils;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.system.util.CodeUtil;
@@ -47,60 +51,46 @@ public class WrapSendEmptyTask extends AbstractAcsTask {
@Override
@Transactional(rollbackFor = Exception.class)
public void updateTaskStatus(JSONObject task, String status) {
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point");
JSONObject taskObj = taskTab.query("task_id = '" + task.getString("task_id") + "' " +
"AND task_status <> '" + StatusEnum.TASK_FINISH.getCode() + "' " +
"AND task_status <> '" + StatusEnum.TASK_CANNEL.getCode() + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(taskObj)) {
SchBaseTask one = taskService.getOne(new QueryWrapper<SchBaseTask>()
.eq("task_id", task.getString("task_id")));
if (one.getTask_status().equals(StatusEnum.TASK_FINISH.getCode())||one.getTask_status().equals(StatusEnum.TASK_CANNEL.getCode())) {
throw new BadRequestException("任务已完成,不可取消!");
}
String pointCode2 = taskObj.getString("point_code2");
JSONObject pointObj = null;
if (ObjectUtil.isNotEmpty(pointCode2)) {
pointObj = pointTab.query("point_code = '" + pointCode2 + "'").uniqueResult(0);
}
if (status.equals(AcsTaskEnum.STATUS_START.getCode())) {
// 执行中
// 任务执行中
taskObj.put("task_status", StatusEnum.TASK_RUNNING.getCode());
taskObj.put("update_time", DateUtil.now());
taskTab.update(taskObj);
} else if (status.equals(AcsTaskEnum.STATUS_FINISH.getCode())) {
// 完成
if (ObjectUtil.isNotEmpty(pointObj)) {
// 释放点位并赋值
pointObj.put("lock_type", StatusEnum.LOCK_OFF.getCode());
pointObj.put("point_status", StatusEnum.POINT_STATUS_EMPTY_VEHICLE.getCode());
pointObj.put("update_time", DateUtil.now());
pointTab.update(pointObj);
}
// 2任务完成
taskObj.put("task_status", StatusEnum.TASK_FINISH.getCode());
taskObj.put("update_time", DateUtil.now());
taskObj.put("finished_type", ObjectUtil.isNotEmpty(task.getString("finished_type"))?
task.getString("finished_type"):AcsTaskEnum.AUTO_TASK_FINISHED_TYPE.getCode());
taskTab.update(taskObj);
} else {
/**
* 取消任务
* 1点位恢复
* 2任务状态修改
*/
// 2点位恢复
if (ObjectUtil.isNotEmpty(pointObj)) {
// 释放点位
pointObj.put("lock_type", StatusEnum.LOCK_OFF.getCode());
pointObj.put("update_time", DateUtil.now());
pointTab.update(pointObj);
}
// 2任务取消
taskObj.put("task_status", StatusEnum.TASK_CANNEL.getCode());
taskObj.put("update_time", DateUtil.now());
taskObj.put("finished_type", ObjectUtil.isNotEmpty(task.getString("finished_type"))?
task.getString("finished_type"):AcsTaskEnum.AUTO_TASK_FINISHED_TYPE.getCode());
taskTab.update(taskObj);
taskService.update(new UpdateWrapper<SchBaseTask>()
.set("task_status",StatusEnum.TASK_RUNNING.getCode()).set("update_time",new Date())
.eq("task_id",task.getString("task_id")));
}
if (status.equals(AcsTaskEnum.STATUS_FINISH.getCode())) {
// 完成
pointService.update(new UpdateWrapper<SchBasePoint>().set("lock_type",StatusEnum.LOCK_OFF.getCode())
.set("point_status",StatusEnum.POINT_STATUS_EMPTY_VEHICLE.getCode())
.set("material_id","")
.set("task_id","")
.set("qty",0)
.eq("point_code",one.getPoint_code3()));
taskService.update(new UpdateWrapper<SchBaseTask>()
.set("task_status",StatusEnum.TASK_FINISH.getCode()).set("update_time",new Date())
.eq("task_id",task.getString("task_id")));
}
if (status.equals(AcsTaskEnum.STATUS_CANNEL.getCode())) {
// 完成
pointService.update(new UpdateWrapper<SchBasePoint>()
.set("lock_type",StatusEnum.LOCK_OFF.getCode())
.set("point_status",StatusEnum.POINT_STATUS_EMPTY.getCode())
.set("material_id","").set("qty",0)
.eq("point_code",one.getPoint_code3()));
taskService.update(new UpdateWrapper<SchBaseTask>()
.set("task_status",StatusEnum.TASK_CANNEL.getCode()).set("update_time",new Date())
.eq("task_id",task.getString("task_id")));
}
OptionRecord.recordAsync(OptionRecord.OptionEnum.UPDATE,
status,
OptionRecord.Buss.POINT,
one.getPoint_code1(), MapOf.of("start",one.getPoint_code1(),"end",one.getPoint_code3(),"time",DateUtil.now(),"order",one.getTask_id()));
}
@Override
@@ -130,6 +120,7 @@ public class WrapSendEmptyTask extends AbstractAcsTask {
task.put("is_delete", StatusEnum.STATUS_FLASE.getCode());
String currentUserId = SecurityUtils.getCurrentUserId();
task.put("create_id", currentUserId);
task.put("is_send", true);
task.put("create_name", SecurityUtils.getCurrentNickName());
task.put("update_id", currentUserId);
task.put("update_name", SecurityUtils.getCurrentNickName());
@@ -137,20 +128,20 @@ public class WrapSendEmptyTask extends AbstractAcsTask {
task.put("update_time", DateUtil.now());
task.put("priority", "1");
task.put("agv_system_type", AcsTaskEnum.AGV_SYSTEM_XC.getCode());
WQLObject.getWQLObject("SCH_BASE_Task").insert(task);
SchBaseTask schBaseTask = task.toJavaObject(SchBaseTask.class);
taskService.save(schBaseTask);
// 找终点
try {
pointConfirm(task);
JSONArray data = new JSONArray();
JSONObject result = taskTab.query("task_id = '" + taskdtl_id + "'").uniqueResult(0);
data.add(result);
data.add(task);
// 下发
wms.issueTaskToAcs2(data);
wms.issueTaskToAcs(data);
} catch (Exception ex) {
// 未找到
task.put("remark", ex.getMessage());
task.put("update_time", DateUtil.now());
task.put("task_status", StatusEnum.TASK_START_END_P.getCode());
task.put("task_status", StatusEnum.TASK_START_ERROR.getCode());
taskTab.update(task);
}
return taskdtl_id;
@@ -164,23 +155,32 @@ public class WrapSendEmptyTask extends AbstractAcsTask {
@Override
public void pointConfirm(JSONObject task) {
// 去刻字缓存区寻找空位
List<SchBasePoint> list = pointService.list(new QueryWrapper<SchBasePoint>().isNull("vehicle_code")
List<SchBasePoint> list = pointService.list(new QueryWrapper<SchBasePoint>()
.eq("is_used", "1")
.eq("region_code","A1_KZHC")
.eq("lock_type", StatusEnum.LOCK_OFF.getCode()));
.eq("point_status", StatusEnum.POINT_STATUS_EMPTY.getCode())
.eq("lock_type", StatusEnum.LOCK_OFF.getCode())
.last("and (material_id is null or material_id = '')")
);
if (ObjectUtil.isNotEmpty(list)) {
// 找到位置
// 点位上锁
SchBasePoint point = list.get(0);
point.setLock_type(StatusEnum.LOCK_ON.getCode());
point.setTask_id(task.getString("task_id"));
pointService.updateById(point);
// 设置点位
task.put("update_time", DateUtil.now());
task.put("point_code2",point.getPoint_code());
task.put("point_code3",point.getPoint_code());
SchBaseTask schBaseTask = task.toJavaObject(SchBaseTask.class);
schBaseTask.setTask_status(StatusEnum.TASK_START_END_P.getCode());
schBaseTask.setUpdate_time(new Date());
schBaseTask.setTask_group_id(org.nl.common.utils.IdUtil.getStringId());
OptionRecord.recordAsync(OptionRecord.OptionEnum.ADD,
WorkerOrderEnum.CREATE.getCode(),
OptionRecord.Buss.POINT,
task.getString("point_code1"), MapOf.of("start",task.getString("point_code1"),"end",task.getString("point_code3"),"time",DateUtil.now(),"order",task.getString("task_id")));
taskService.updateById(schBaseTask);
} else {
throw new BadRequestException("刻字缓存区没有可用货位.");

View File

@@ -1,8 +1,7 @@
package org.nl.wms.product_manage.sch.tasks.callEmpty;
package org.nl.wms.product_manage.sch.tasks.plotter;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONArray;
@@ -11,10 +10,13 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.jetbrains.annotations.NotNull;
import org.nl.common.enums.AcsTaskEnum;
import org.nl.common.enums.StatusEnum;
import org.nl.common.enums.WorkerOrderEnum;
import org.nl.common.utils.IdUtil;
import org.nl.common.utils.MapOf;
import org.nl.common.utils.OptionRecord;
import org.nl.common.utils.SecurityUtils;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.system.util.CodeUtil;
@@ -58,33 +60,46 @@ public class PlotterCallEmptyTask extends AbstractAcsTask {
private WmsToAcsService wms;
@Override
@Transactional(rollbackFor = Exception.class)
public void updateTaskStatus(JSONObject param, String status) {
SchBaseTask task = taskService.getById(param.getString("task_id"));
public void updateTaskStatus(JSONObject task, String status) {
SchBaseTask one = taskService.getById(task.getString("task_id"));
if (one.getTask_status().equals(StatusEnum.TASK_FINISH.getCode())||one.getTask_status().equals(StatusEnum.TASK_CANNEL.getCode())) {
throw new BadRequestException("任务已完成,不可取消!");
}
if (status.equals(AcsTaskEnum.STATUS_START.getCode())) {
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()));
.set("update_time",DateUtil.now()).eq("task_id",task.getString("task_id")));
}
if (status.equals(AcsTaskEnum.STATUS_FINISH.getCode())) {
// 完成
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()));
pointService.update(new UpdateWrapper<SchBasePoint>()
.set("lock_type",StatusEnum.LOCK_OFF.getCode())
.in("point_code",task.getPoint_code1(),task.getPoint_code2(),task.getPoint_code3()));
.set("update_time",DateUtil.now()).eq("task_id",task.getString("task_id")));
pointService.update(new UpdateWrapper<SchBasePoint>().set("lock_type",StatusEnum.LOCK_OFF.getCode())
.set("point_status",StatusEnum.POINT_STATUS_EMPTY.getCode())
.set("material_id","").set("qty",0)
.set("task_id","")
.eq("point_code",one.getPoint_code1()));
}
if (status.equals(AcsTaskEnum.STATUS_CANNEL.getCode())) {
taskService.update(new UpdateWrapper<SchBaseTask>()
.set("task_status",StatusEnum.TASK_CANNEL.getCode())
.set("update_name","acs")
.set("update_time",DateUtil.now()).eq("task_id",task.getTask_id()));
.set("update_time",DateUtil.now()).eq("task_id",task.getString("task_id")));
pointService.update(new UpdateWrapper<SchBasePoint>()
.set("lock_type",StatusEnum.LOCK_OFF.getCode())
.in("point_code",task.getPoint_code1(),task.getPoint_code2(),task.getPoint_code3()));
.set("task_id","")
.eq("point_code",one.getPoint_code1()));
}
OptionRecord.recordAsync(OptionRecord.OptionEnum.UPDATE,
status,
OptionRecord.Buss.POINT,
one.getPoint_code1(), MapOf.of("start",one.getPoint_code1(),"end",one.getPoint_code3(),"time",DateUtil.now(),"order",one.getTask_id()));
}
@Override
@@ -108,28 +123,7 @@ public class PlotterCallEmptyTask extends AbstractAcsTask {
throw new BadRequestException(String.format("设备%s存在未完成任务"+list.stream().map(SchBaseTask::getTask_id).collect(Collectors.toList()).toString(), param.getString("device_code")));
}
// 查找任务状态
String taskdtl_id = IdUtil.getSnowflake(1, 1).nextId() + "";
JSONObject task = new JSONObject();
task.put("task_id", taskdtl_id);
task.put("task_name", AcsTaskEnum.TASK_PLOTTER_EMPTY.getDesc());
task.put("task_type", AcsTaskEnum.TASK_PLOTTER_EMPTY.getCode());
task.put("task_code", CodeUtil.getNewCode("TASK_CODE"));
task.put("acs_task_type", AcsTaskEnum.ACS_TASK_TYPE_NON_WEIGHING_TASK_OF_PS20.getCode());
task.put("material_id", order.getMaterial_id());
task.put("task_status", StatusEnum.TASK_CREATE.getCode());
task.put("point_code2", end_point_code);
task.put("handle_class", this.getClass().getName());
task.put("is_delete", StatusEnum.STATUS_FLASE.getCode());
String currentUserId = SecurityUtils.getCurrentUserId();
task.put("create_id", currentUserId);
task.put("create_name", SecurityUtils.getCurrentNickName());
task.put("update_id", currentUserId);
task.put("update_name", SecurityUtils.getCurrentNickName());
task.put("create_time", DateUtil.now());
task.put("update_time", DateUtil.now());
task.put("priority", "1");
task.put("agv_system_type", AcsTaskEnum.AGV_SYSTEM_XC.getCode());
task.put("table_fk_id",order.getWorkorder_code());
JSONObject task = packageTask(end_point_code, order.getMaterial_id(),order.getWorkorder_code());
SchBaseTask schBaseTask = task.toJavaObject(SchBaseTask.class);
taskService.save(schBaseTask);
// 找终点
@@ -147,7 +141,33 @@ public class PlotterCallEmptyTask extends AbstractAcsTask {
schBaseTask.setTask_status(StatusEnum.TASK_START_ERROR.getCode());
taskService.save(schBaseTask);
}
return taskdtl_id;
return task.getString("task_id");
}
@NotNull
private JSONObject packageTask(String end_point_code, String material_id,String fk) {
JSONObject task = new JSONObject();
task.put("task_id", IdUtil.getStringId());
task.put("task_name", AcsTaskEnum.TASK_PLOTTER_EMPTY.getDesc());
task.put("task_type", AcsTaskEnum.TASK_PLOTTER_EMPTY.getCode());
task.put("task_code", CodeUtil.getNewCode("TASK_CODE"));
task.put("acs_task_type", AcsTaskEnum.ACS_TASK_TYPE_NON_WEIGHING_TASK_OF_PS20.getCode());
task.put("material_id", material_id);
task.put("task_status", StatusEnum.TASK_CREATE.getCode());
task.put("point_code3", end_point_code);
task.put("handle_class", this.getClass().getName());
task.put("is_delete", StatusEnum.STATUS_FLASE.getCode());
String currentUserId = SecurityUtils.getCurrentUserId();
task.put("create_id", currentUserId);
task.put("create_name", SecurityUtils.getCurrentNickName());
task.put("update_id", currentUserId);
task.put("update_name", SecurityUtils.getCurrentNickName());
task.put("create_time", DateUtil.now());
task.put("update_time", DateUtil.now());
task.put("priority", "1");
task.put("agv_system_type", AcsTaskEnum.AGV_SYSTEM_XC.getCode());
task.put("table_fk_id", fk);
return task;
}
@Override
@@ -161,29 +181,29 @@ public class PlotterCallEmptyTask extends AbstractAcsTask {
/**
* 满料请求
* 从刻字机满料缓存区中获取空位放入就行
* @param taskObj: 任务对象
* @param : 任务对象
*/
@Override
public void pointConfirm(JSONObject taskObj) {
// 去刻字缓存区寻找空 TODO:空箱
List<Map<String, String>> points = pointService.queryVehicle(
MapOf.of("is_used", "1",
"lock_type", StatusEnum.LOCK_OFF.getCode(),
"region_code", "A1_KZHC",
"material_null", "material_null"));
if (ObjectUtil.isNotEmpty(points)) {
Map<String, String> map = points.get(0);
if (CollectionUtils.isEmpty(map)|| StringUtils.isEmpty(map.get("point_code"))){
throw new BadRequestException("刻字缓存区没有可用货位.");
}
pointService.update(new UpdateWrapper<SchBasePoint>()
.set("lock_type",StatusEnum.LOCK_ON.getCode())
.eq("point_code",map.get("point_code")));
public void pointConfirm(JSONObject task) {
// 去刻字缓存区寻找空
List<SchBasePoint> list = pointService.list(new QueryWrapper<SchBasePoint>()
.eq("is_used", "1")
.eq("region_code","A1_KZHC")
.eq("point_status", StatusEnum.POINT_STATUS_EMPTY_VEHICLE.getCode())
.eq("lock_type", StatusEnum.LOCK_OFF.getCode())
.last("and (material_id is null or material_id = '')")
);
if (ObjectUtil.isNotEmpty(list)) {
SchBasePoint point = list.get(0);
point.setLock_type(StatusEnum.LOCK_ON.getCode());
point.setTask_id(task.getString("task_id"));
pointService.updateById(point);
// 设置点位
taskObj.put("update_time", DateUtil.now());
taskObj.put("point_code1",map.get("point_code"));
SchBaseTask schBaseTask = taskObj.toJavaObject(SchBaseTask.class);
task.put("update_time", DateUtil.now());
task.put("point_code1",point.getPoint_code());
SchBaseTask schBaseTask = task.toJavaObject(SchBaseTask.class);
schBaseTask.setTask_status(StatusEnum.TASK_START_END_P.getCode());
schBaseTask.setTask_group_id(org.nl.common.utils.IdUtil.getStringId());
schBaseTask.setUpdate_time(new Date());
taskService.updateById(schBaseTask);
} else {
@@ -202,4 +222,38 @@ public class PlotterCallEmptyTask extends AbstractAcsTask {
}
return Merge;
}
@Transactional
public void callEmpVechile(String device_code) {
List<SchBasePoint> list = pointService.list(new QueryWrapper<SchBasePoint>()
.eq("is_used", "1")
.eq("region_code","A1_KZHC")
.eq("point_status", StatusEnum.POINT_STATUS_EMPTY_VEHICLE.getCode())
.eq("lock_type", StatusEnum.LOCK_OFF.getCode())
.last("and (material_id is null or material_id = '')")
);
if (ObjectUtil.isNotEmpty(list)) {
SchBasePoint point = list.get(0);
JSONObject task = packageTask(device_code, null, null);
point.setLock_type(StatusEnum.LOCK_ON.getCode());
point.setTask_id(task.getString("task_id"));
pointService.updateById(point);
// 设置点位
task.put("update_time", DateUtil.now());
task.put("point_code1",point.getPoint_code());
task.put("task_status",StatusEnum.TASK_START_END_P.getCode());
task.put("task_group_id",IdUtil.getStringId());
SchBaseTask schBaseTask = task.toJavaObject(SchBaseTask.class);
taskService.save(schBaseTask);
JSONArray data = new JSONArray();
data.add(task);
// 下发
Map<String, Object> result = wms.issueTaskToAcs2(data);
if (!StrUtil.equals((String)result.get("status"), "200")) {
throw new BadRequestException((String)result.get("message"));
}
} else {
throw new BadRequestException("刻字缓存区没有可用货位.");
}
}
}

View File

@@ -1,4 +1,4 @@
package org.nl.wms.product_manage.sch.tasks.sendMaterial;
package org.nl.wms.product_manage.sch.tasks.plotter;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
@@ -10,10 +10,13 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.nl.common.enums.AcsTaskEnum;
import org.nl.common.enums.StatusEnum;
import org.nl.common.enums.WorkerOrderEnum;
import org.nl.common.utils.IdUtil;
import org.nl.common.utils.MapOf;
import org.nl.common.utils.OptionRecord;
import org.nl.common.utils.SecurityUtils;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.system.util.CodeUtil;
@@ -22,6 +25,7 @@ import org.nl.wms.ext.acs.service.WmsToAcsService;
import org.nl.wms.product_manage.sch.manage.AbstractAcsTask;
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.dao.PdmProduceWorkorder;
import org.nl.wms.scheduler_manage.service.point.ISchBasePointService;
@@ -52,37 +56,59 @@ public class PlotterSendMaterialTask extends AbstractAcsTask {
private ISchBasePointService pointService;
@Autowired
private WmsToAcsService wms;
@Override
@Override
@Transactional(rollbackFor = Exception.class)
public void updateTaskStatus(JSONObject param, String status) {
SchBaseTask task = taskService.getById(param.getString("task_id"));
SchBaseTask one = taskService.getById(param.getString("task_id"));
if (one.getTask_status().equals(StatusEnum.TASK_FINISH.getCode())||one.getTask_status().equals(StatusEnum.TASK_CANNEL.getCode())) {
throw new BadRequestException("任务已完成,不可取消!");
}
if (status.equals(AcsTaskEnum.STATUS_START.getCode())) {
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()));
UpdateWrapper<SchBaseTask> updateWrapper = new UpdateWrapper<SchBaseTask>()
.set("task_status", StatusEnum.TASK_RUNNING.getCode())
.set("update_name", "acs")
.set("update_time", DateUtil.now()).eq("task_id", one.getTask_id());
if (!("fall_finish"+one.getTask_id()).equals(one.getRemark())){
updateWrapper.set("remark","fall_finish"+one.getTask_id());
Map<String, String> extParam = (Map)param.get("ext_param");
String weight = extParam.get("weight");
if (StringUtils.isNotEmpty(weight) && Integer.valueOf(weight)>0){
updateWrapper.set("material_qty",weight);
}
}
taskService.update(updateWrapper);
}
if (status.equals(AcsTaskEnum.STATUS_FINISH.getCode())) {
// 完成
taskService.update(new UpdateWrapper<SchBaseTask>()
.set("task_status",StatusEnum.TASK_FINISH.getCode())
.set("point_status",StatusEnum.POINT_STATUS_FULL.getCode())
.set("update_name","acs")
.set("update_time",DateUtil.now()).eq("task_id",task.getTask_id()));
.set("update_time",DateUtil.now()).eq("task_id",one.getTask_id()));
pointService.update(new UpdateWrapper<SchBasePoint>()
.set("lock_type",StatusEnum.LOCK_OFF.getCode())
.in("point_code",task.getPoint_code1(),task.getPoint_code2(),task.getPoint_code3()));
.set("point_status",StatusEnum.POINT_STATUS_FULL.getCode())
.set("material_id",one.getMaterial_id())
.set("qty",one.getMaterial_qty())
.eq("point_code",one.getPoint_code3()));
}
if (status.equals(AcsTaskEnum.STATUS_CANNEL.getCode())) {
// 完成
taskService.update(new UpdateWrapper<SchBaseTask>()
.set("task_status",StatusEnum.TASK_CANNEL.getCode())
.set("update_name","acs")
.set("update_time",DateUtil.now()).eq("task_id",task.getTask_id()));
.set("update_time",DateUtil.now()).eq("task_id",one.getTask_id()));
pointService.update(new UpdateWrapper<SchBasePoint>()
.set("lock_type",StatusEnum.LOCK_OFF.getCode())
.in("point_code",task.getPoint_code1(),task.getPoint_code2(),task.getPoint_code3()));
.set("point_status",StatusEnum.POINT_STATUS_EMPTY.getCode())
.eq("point_code",one.getPoint_code3()));
}
OptionRecord.recordAsync(OptionRecord.OptionEnum.UPDATE,
status,
OptionRecord.Buss.POINT,
one.getPoint_code1(), MapOf.of("start",one.getPoint_code1(),"end",one.getPoint_code3(),"time",DateUtil.now(),"order",one.getTask_id()));
}
@Override
@@ -100,7 +126,7 @@ public class PlotterSendMaterialTask extends AbstractAcsTask {
.and(wa->wa
.eq("point_code1", param.getString("device_code"))
.or()
.eq("point_code2", param.getString("device_code")))
.eq("point_code3", param.getString("device_code")))
);
if (!CollectionUtils.isEmpty(list)){
throw new BadRequestException(String.format("设备%s存在未完成任务"+list.stream().map(SchBaseTask::getTask_id).collect(Collectors.toList()).toString(), param.getString("device_code")));
@@ -112,7 +138,7 @@ public class PlotterSendMaterialTask extends AbstractAcsTask {
task.put("task_name", AcsTaskEnum.TASK_PLOTTER_MAC.getDesc());
task.put("task_type", AcsTaskEnum.TASK_PLOTTER_MAC.getCode());
task.put("task_code", CodeUtil.getNewCode("TASK_CODE"));
task.put("acs_task_type", AcsTaskEnum.ACS_TASK_TYPE_NON_WEIGHING_TASK_OF_PS20.getCode());
task.put("acs_task_type", AcsTaskEnum.ACS_TASK_TYPE_WEIGHING_TASK_OF_PS20.getCode());
task.put("material_id", order.getMaterial_id());
task.put("task_status", TaskStatusEnum.CREATED.getCode());
task.put("point_code1", start_point_code);
@@ -120,6 +146,7 @@ public class PlotterSendMaterialTask extends AbstractAcsTask {
task.put("is_delete", StatusEnum.STATUS_FLASE.getCode());
String currentUserId = SecurityUtils.getCurrentUserId();
task.put("create_id", currentUserId);
task.put("is_send", true);
task.put("create_name", SecurityUtils.getCurrentNickName());
task.put("create_time", DateUtil.now());
task.put("priority", "1");
@@ -134,7 +161,7 @@ public class PlotterSendMaterialTask extends AbstractAcsTask {
JSONArray data = new JSONArray();
data.add(task);
// 下发
wms.issueTaskToAcs2(data);
wms.issueTaskToAcs(data);
} catch (Exception ex) {
// 未找到
log.error("刻字满料请求异常,error:{}",ex);
@@ -142,7 +169,7 @@ public class PlotterSendMaterialTask extends AbstractAcsTask {
schBaseTask.setUpdate_time(new Date());
schBaseTask.setUpdate_name("acs");
schBaseTask.setTask_status(StatusEnum.TASK_START_ERROR.getCode());
taskService.save(schBaseTask);
taskService.updateById(schBaseTask);
}
return taskdtl_id;
}
@@ -162,24 +189,33 @@ public class PlotterSendMaterialTask extends AbstractAcsTask {
@Override
public void pointConfirm(JSONObject task) {
// 去刻字缓存区寻找空位
List<SchBasePoint> list = pointService.list(new QueryWrapper<SchBasePoint>().isNull("vehicle_code")
List<SchBasePoint> list = pointService.list(new QueryWrapper<SchBasePoint>()
.eq("is_used", "1")
.eq("region_code","A1_KZHC")
.eq("lock_type", StatusEnum.LOCK_OFF.getCode()));
.eq("point_status", StatusEnum.POINT_STATUS_EMPTY.getCode())
.eq("lock_type", StatusEnum.LOCK_OFF.getCode())
.last("and (material_id is null or material_id = '')")
);
if (ObjectUtil.isNotEmpty(list)) {
// 找到位置
// 点位上锁
SchBasePoint point = list.get(0);
point.setLock_type(StatusEnum.LOCK_ON.getCode());
point.setTask_id(task.getString("task_id"));
pointService.updateById(point);
// 设置点位
task.put("update_time", DateUtil.now());
task.put("point_code2",point.getPoint_code());
task.put("point_code3",point.getPoint_code());
SchBaseTask schBaseTask = task.toJavaObject(SchBaseTask.class);
schBaseTask.setTask_status(StatusEnum.TASK_START_END_P.getCode());
schBaseTask.setUpdate_time(new Date());
schBaseTask.setTask_group_id(org.nl.common.utils.IdUtil.getStringId());
taskService.updateById(schBaseTask);
OptionRecord.recordAsync(OptionRecord.OptionEnum.ADD,
WorkerOrderEnum.CREATE.getCode(),
OptionRecord.Buss.POINT,
task.getString("point_code1"), MapOf.of("start",task.getString("point_code1"),"end",task.getString("point_code3"),"time",DateUtil.now(),"order",task.getString("task_id")));
} else {
throw new BadRequestException("刻字缓存区没有可用货位.");
}

View File

@@ -1,4 +1,4 @@
package org.nl.wms.product_manage.sch.tasks.callEmpty;
package org.nl.wms.product_manage.sch.tasks.wash;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Assert;
@@ -112,7 +112,7 @@ public class WashCallEmptyTask extends AbstractAcsTask {
task.put("acs_task_type", AcsTaskEnum.ACS_TASK_TYPE_NON_WEIGHING_TASK_OF_PS20.getCode());
task.put("material_id", order.getMaterial_id());
task.put("task_status", StatusEnum.TASK_CREATE.getCode());
task.put("point_code2", end_point_code);
task.put("point_code3", end_point_code);
task.put("handle_class", this.getClass().getName());
task.put("is_delete", StatusEnum.STATUS_FLASE.getCode());
String currentUserId = SecurityUtils.getCurrentUserId();
@@ -140,7 +140,7 @@ public class WashCallEmptyTask extends AbstractAcsTask {
schBaseTask.setUpdate_time(new Date());
schBaseTask.setUpdate_name("acs");
schBaseTask.setTask_status(StatusEnum.TASK_START_ERROR.getCode());
taskService.save(schBaseTask);
taskService.updateById(schBaseTask);
}
return taskdtl_id;
}
@@ -154,13 +154,13 @@ public class WashCallEmptyTask extends AbstractAcsTask {
}
/**
* 满料请求
* 刻字机满料缓存区中获取空位放入就行
* 空框请求
* 半成品区中获取空位放入就行
* @param taskObj: 任务对象
*/
@Override
public void pointConfirm(JSONObject taskObj) {
// 去刻字缓存区寻找空框 TODO:空箱
//TODO:从半成品区中获取空位放入就行
List<Map<String, String>> points = pointService.queryVehicle(
MapOf.of("is_used", "1",
"lock_type", StatusEnum.LOCK_OFF.getCode(),

View File

@@ -1,4 +1,4 @@
package org.nl.wms.product_manage.sch.tasks.sendMaterial;
package org.nl.wms.product_manage.sch.tasks.wash;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Assert;
@@ -154,7 +154,7 @@ public class WashSendMaterialQZTask extends AbstractAcsTask {
schBaseTask.setUpdate_time(new Date());
schBaseTask.setUpdate_name("acs");
schBaseTask.setTask_status(StatusEnum.TASK_START_ERROR.getCode());
taskService.save(schBaseTask);
taskService.updateById(schBaseTask);
}
return taskdtl_id;
}

View File

@@ -1,4 +1,4 @@
package org.nl.wms.product_manage.sch.tasks.sendMaterial;
package org.nl.wms.product_manage.sch.tasks.wash;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Assert;
@@ -30,13 +30,10 @@ 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.dao.SchBaseTask;
import org.nl.wms.storage_manage.IOSEnum;
import org.nl.wms.storage_manage.productmanage.util.DivRuleCpService;
import org.nl.wms.storage_manage.productmanage.util.RuleUtil;
import org.nl.wms.storage_manage.semimanage.service.structIvt.dao.StIvtStructivtBcp;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;

View File

@@ -1,6 +1,8 @@
package org.nl.wms.product_manage.service.processroute.dao;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import lombok.Data;
@@ -24,6 +26,7 @@ public class PdmBiProcessroute implements Serializable {
/**
* 工艺路线标识
*/
@TableId(value = "processroute_id")
private String processroute_id;
/**

View File

@@ -89,7 +89,7 @@ public class PdmBiProcessrouteServiceImpl extends ServiceImpl<PdmBiProcessrouteM
processroute.setRemark(json.getString("remark"));
processroute.setCreate_id(SecurityUtils.getCurrentUserId());
processroute.setCreate_name(SecurityUtils.getCurrentNickName());
processroute.setCreate_name(DateUtil.now());
processroute.setCreate_time(DateUtil.now());
return processroute;
}
@@ -127,7 +127,9 @@ public class PdmBiProcessrouteServiceImpl extends ServiceImpl<PdmBiProcessrouteM
processroutedtl.setWorkprocedure_no(i + 1);
if (i == 0) {
processroutedtl.setPreworkprocedure_id(" ");
processroutedtl.setNextworkprocedure_id(dataArr.getJSONObject(i + 1).getString("workprocedure_id"));
if (dataArr.size()>1){
processroutedtl.setNextworkprocedure_id(dataArr.getJSONObject(i + 1).getString("workprocedure_id"));
}
} else if ( i == dataArr.size() - 1) {
processroutedtl.setPreworkprocedure_id(dataArr.getJSONObject(i - 1).getString("workprocedure_id"));
processroutedtl.setNextworkprocedure_id(" ");

View File

@@ -25,6 +25,9 @@
<if test="query.workorder_id != null and query.workorder_id != ''">
and wr.workorder_id = #{query.workorder_id}
</if>
<if test="query.workorder_code != null and query.workorder_code != ''">
and wr.workorder_code = #{query.workorder_code}
</if>
<if test="query.shift_type_scode != null and query.shift_type_scode != ''">
and wr.shift_type_scode = #{query.shift_type_scode}
</if>

View File

@@ -1,8 +1,9 @@
package org.nl.wms.product_manage.service.workorder.impl;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.poi.excel.ExcelReader;
import cn.hutool.poi.excel.ExcelUtil;
import com.alibaba.fastjson.JSON;
@@ -14,11 +15,12 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import io.jsonwebtoken.lang.Assert;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.jetbrains.annotations.NotNull;
import org.nl.common.TableDataInfo;
import org.nl.common.domain.query.PageQuery;
@@ -33,6 +35,8 @@ import org.nl.wms.ext.acs.service.WmsToAcsService;
import org.nl.wms.masterdata_manage.master.service.classstandard.IMdPbClassstandardService;
import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService;
import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase;
import org.nl.wms.mps.service.WorkOrderImportEnum;
import org.nl.wms.mps.service.dto.ProduceWorkorderDto;
import org.nl.wms.mps.service.dto.ProduceshiftorderDto;
import org.nl.wms.product_manage.ReportEnum;
import org.nl.wms.product_manage.service.device.IPdmBiDeviceService;
@@ -49,6 +53,7 @@ import org.nl.wms.product_manage.service.workprocedure.IPdmBiWorkprocedureServic
import org.nl.wms.product_manage.service.workprocedure.dao.PdmBiWorkprocedure;
import org.nl.wms.system_manage.service.user.ISysUserService;
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.data.domain.Pageable;
import org.springframework.http.HttpStatus;
@@ -65,6 +70,7 @@ import java.io.InputStream;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
import java.util.function.Predicate;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
@@ -78,7 +84,7 @@ import java.util.stream.Collectors;
*/
@Service
@Slf4j
public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorkorderMapper,PdmProduceWorkorder> implements IPdmProduceWorkorderService{
public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorkorderMapper, PdmProduceWorkorder> implements IPdmProduceWorkorderService {
@Autowired
private IMdPbClassstandardService classstandardService;
@Autowired
@@ -100,7 +106,7 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
public Object queryAll(WorkorderQuery query, PageQuery pageQuery) {
if (!StringUtils.isEmpty(query.getProduct_series())) {
String collect = classstandardService.getChildIdStr(query.getProduct_series())
.stream().collect(Collectors.joining("','"));
.stream().collect(Collectors.joining("','"));
query.setProduct_series("('" + collect + "')");
}
if (!StringUtils.isEmpty(query.getOrder_status()) && query.getOrder_status().contains("-1")) {
@@ -123,9 +129,10 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
@Override
public void create(JSONObject form) {
JSONObject ext = form.getJSONObject("package_ext");
form.put("package_ext",null);
PdmProduceWorkorder entity = form.toJavaObject(PdmProduceWorkorder.class);
entity.setPackage_ext(ext.toJSONString());
if (ext!=null){
entity.setPackage_ext(ext.toJSONString());
}
entity.setWorkorder_id(IdUtil.getStringId());
entity.setWorkorder_code(CodeUtil.getNewCode("PDM_SHIFTORDER"));
entity.setCurrent_produce_person_id(SecurityUtils.getCurrentUserId());
@@ -141,32 +148,20 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
@Override
public void updateForm(JSONObject form) {
Assert.notNull(form, "参数不能为空");
PdmProduceWorkorder one = this.getOne(new QueryWrapper<PdmProduceWorkorder>().eq("workorder_id", form.getString("workorder_id")));
if(one == null) {
throw new BadRequestException("被删除或无权限,操作失败!");
PdmProduceWorkorder one = this.getOne(new QueryWrapper<PdmProduceWorkorder>()
.eq("workorder_id", form.getString("workorder_id"))
.in("workorder_status", "1","2","4"));
if (one == null) {
throw new BadRequestException("工单状态非生产状态下不允许修改");
}
PdmProduceWorkorder newEntity = form.toJavaObject(PdmProduceWorkorder.class);
PdmProduceWorkorder pdmProduceWorkorder = PdmProduceWorkorder
.builder()
.workorder_id(newEntity.getWorkorder_id())
.product_area(newEntity.getProduct_area())
.workprocedure_id(newEntity.getWorkprocedure_id())
.material_id(newEntity.getMaterial_id())
.material_weight(newEntity.getMaterial_weight())
.plan_qty(newEntity.getPlan_qty())
.planproducestart_date(newEntity.getPlanproducestart_date())
.planproduceend_date(newEntity.getPlanproduceend_date())
.report_qty(newEntity.getReport_qty())
.shift_type_scode(newEntity.getShift_type_scode())
.sale_id(newEntity.getSale_id())
.is_needmove(newEntity.getIs_needmove())
.is_canupdate_update(newEntity.getIs_canupdate_update())
.down_time(DateUtil.now())
.down_id(SecurityUtils.getCurrentUserId())
.down_name(SecurityUtils.getCurrentNickName())
.build();
this.updateById(pdmProduceWorkorder);
this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE, pdmProduceWorkorder.getWorkorder_id());
PdmProduceWorkorder entity = form.toJavaObject(PdmProduceWorkorder.class);
entity.setDown_time(DateUtil.now());
entity.setDown_id(SecurityUtils.getCurrentUserId());
entity.setDown_name(SecurityUtils.getCurrentNickName());
entity.setReal_qty(null);
this.updateById(entity);
this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE, entity.getWorkorder_id());
}
@Override
@@ -175,9 +170,8 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
}
@Override
@Transactional(rollbackFor = Exception.class)
public void down(List<String> ids) {
if(ids == null || ids.size() == 0) {
if (ids == null || ids.size() == 0) {
return;
}
List<PdmProduceWorkorder> workorders = this.list(new QueryWrapper<PdmProduceWorkorder>().in("workorder_id", ids).lt("workorder_status",WorkerOrderEnum.AUTO_COMPLETE.getCode()));
@@ -205,44 +199,27 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
.set("down_time", new Date())
.in("workorder_id", ids));
this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE, ids.toArray(new String[0]));
}
public void recordWorkOrder(OptionRecord.OptionEnum optionEnum, String... ids) {
List<PdmProduceWorkorder> workorders = this.list(new QueryWrapper<PdmProduceWorkorder>().in("workorder_id", ids));
for(PdmProduceWorkorder one : workorders) {
WorkorderRecord record = WorkorderRecord
.builder()
.workorder_id(one.getWorkorder_id())
.device_code(one.getDevice_code())
.dq_init_qty(one.getReal_qty())
.dq_finish_qty(one.getReal_qty())
.operatetime_start(one.getCreate_time())
.workprocedure_id(one.getWorkprocedure_id())
.operatetime_end(DateUtil.now())
.shift_type_scode(one.getShift_type_scode())
.product_area(one.getProduct_area())
.build();
OptionRecord.recordAsync(optionEnum, one.getWorkorder_status(), OptionRecord.Buss.WORKORDER, one.getWorkorder_id(), record);
}
}
@Override
public void unDown(List<String> ids) {
if(ids == null || ids.size() == 0) {
if (ids == null || ids.size() == 0) {
return;
}
List<PdmProduceWorkorder> list = this.list(new QueryWrapper<PdmProduceWorkorder>()
.ne("workorder_status", WorkerOrderEnum.SEND.getCode())
.in("workorder_id", ids));
if(list.size() > 0) {
.ne("workorder_status", WorkerOrderEnum.SEND.getCode())
.in("workorder_id", ids));
if (list.size() > 0) {
throw new BadRequestException("只有下发状态的工单才能取消下发");
}
this.update(new UpdateWrapper<PdmProduceWorkorder>()
.set("workorder_status", WorkerOrderEnum.CREATE.getCode())
.set("down_id", SecurityUtils.getCurrentUserId())
.set("down_name", SecurityUtils.getCurrentNickName())
.set("down_time", new Date())
.in("workorder_id", ids));
.set("workorder_status", WorkerOrderEnum.CREATE.getCode())
.set("down_id", SecurityUtils.getCurrentUserId())
.set("down_name", SecurityUtils.getCurrentNickName())
.set("down_time", new Date())
.in("workorder_id", ids));
this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE, ids.toArray(new String[0]));
}
@@ -250,44 +227,42 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
@Transactional(rollbackFor = Exception.class)
public void finish(JSONObject param) {
//强制完成时修改工单状态
String workorder_id = param
.getJSONObject("row")
.getString("workorder_id");
String workorder_id = param.getJSONObject("row").getString("workorder_id");
this.update(new UpdateWrapper<PdmProduceWorkorder>()
.set("workorder_status", WorkerOrderEnum.FORCE_COMPLETE.getCode())
.set("confirm_id", SecurityUtils.getCurrentUserId())
.set("confirm_name", SecurityUtils.getCurrentNickName())
.set("confirm_time", new Date())
.in("workorder_id", workorder_id));
.set("workorder_status", WorkerOrderEnum.FORCE_COMPLETE.getCode())
.set("confirm_id", SecurityUtils.getCurrentUserId())
.set("confirm_name", SecurityUtils.getCurrentNickName())
.set("confirm_time", new Date())
.in("workorder_id", workorder_id));
JSONArray array = new JSONArray();
JSONObject map = new JSONObject();
map.put("workorder_id", workorder_id);
map.put("type", WorkerOrderEnum.COMPLETE.getCode());
array.add(map);
Map<String,Object> result = wmsToAcsService.orderStatusUpdate(array);
if(!HttpStatus.OK.equals(result.get("status"))) {
Map<String, Object> result = wmsToAcsService.orderStatusUpdate(array);
if (!HttpStatus.OK.equals(result.get("status"))) {
log.error((String) result.get("message"));
}
this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE, workorder_id);
}
//public void recordWorkOrder(OptionRecord.OptionEnum optionEnum, String... ids) {
// List<PdmProduceWorkorder> workorders = this.list(new QueryWrapper<PdmProduceWorkorder>().in("workorder_id", ids));
// for (PdmProduceWorkorder one : workorders) {
// WorkorderRecord record = WorkorderRecord.builder()
// .workorder_id(one.getWorkorder_id())
// .device_code(one.getDevice_code())
// .dq_init_qty(one.getReal_qty())
// .dq_finish_qty(one.getReal_qty())
// .operatetime_start(one.getCreate_time())
// .workprocedure_id(one.getWorkprocedure_id())
// .operatetime_end(DateUtil.now())
// .shift_type_scode(one.getShift_type_scode())
// .product_area(one.getProduct_area()).build();
// OptionRecord.recordAsync(optionEnum, one.getWorkorder_status(), OptionRecord.Buss.WORKORDER, one.getWorkorder_id(), record);
// }
// }
public void recordWorkOrder(OptionRecord.OptionEnum optionEnum, String... ids) {
// List<PdmProduceWorkorder> workorders = this.list(new QueryWrapper<PdmProduceWorkorder>().in("workorder_id", ids));
// for (PdmProduceWorkorder one : workorders) {
// WorkorderRecord record = WorkorderRecord.builder()
// .workorder_id(one.getWorkorder_id())
// .device_code(one.getDevice_code())
// .dq_init_qty(one.getReal_qty())
// .dq_finish_qty(one.getReal_qty())
// .operatetime_start(one.getCreate_time())
// .workprocedure_id(one.getWorkprocedure_id())
// .operatetime_end(DateUtil.now())
// .shift_type_scode(one.getShift_type_scode())
// .product_area(one.getProduct_area()).build();
// OptionRecord.recordAsync(optionEnum, one.getWorkorder_status(), OptionRecord.Buss.WORKORDER, one.getWorkorder_id(), record);
// }
}
@Override
@Transactional(rollbackFor = Exception.class)
@@ -423,8 +398,8 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
workorder.setMaterial_id(mdMeMaterialbases.get(0).getMaterial_id());
}else {
Optional<MdMeMaterialbase> first = mdMeMaterialbases.stream().filter(mdMeMaterialbase -> mdMeMaterialbase.getMaterial_code().contains("S")
&& Pattern.matches("^[0-9]*$", mdMeMaterialbase.getMaterial_name().substring(mdMeMaterialbase.getMaterial_name().length() - 1))
).findFirst();
&& Pattern.matches("^[0-9]*$", mdMeMaterialbase.getMaterial_name().substring(mdMeMaterialbase.getMaterial_name().length() - 1))
).findFirst();
if (first.isPresent()){
workorder.setMaterial_id(first.get().getMaterial_id());
}else {
@@ -545,8 +520,8 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
workorder.setMaterial_id(mdMeMaterialbases.get(0).getMaterial_id());
}else {
Optional<MdMeMaterialbase> first = mdMeMaterialbases.stream().filter(mdMeMaterialbase -> mdMeMaterialbase.getMaterial_code().contains("S")
&& Pattern.matches("^[0-9]*$", mdMeMaterialbase.getMaterial_name().substring(mdMeMaterialbase.getMaterial_name().length() - 1))
).findFirst();
&& Pattern.matches("^[0-9]*$", mdMeMaterialbase.getMaterial_name().substring(mdMeMaterialbase.getMaterial_name().length() - 1))
).findFirst();
if (first.isPresent()){
workorder.setMaterial_id(first.get().getMaterial_id());
}else {
@@ -562,8 +537,8 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
} else {
List<String> workprocedures = data.stream().map(PdmProduceWorkorder::getWorkprocedure_id).collect(Collectors.toList());
List<PdmBiDevice> list = deviceService.list(new QueryWrapper<PdmBiDevice>()
.in("workprocedure_id", workprocedures)
);
.in("workprocedure_id", workprocedures)
);
Map<String, List<PdmBiDevice>> listMap = list.stream().collect(Collectors.groupingBy(PdmBiDevice::getWorkprocedure_id));
for (int i = 0; i < data.size(); i++) {
PdmProduceWorkorder item = data.get(i);
@@ -616,9 +591,10 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
//1-创建、2-下发、3-生产中、4-暂停、6-完成
//判断该工单状态
PdmProduceWorkorder result = this.getOne(new QueryWrapper<PdmProduceWorkorder>()
.eq("device_code", param.getString("device_code"))
.in("workorder_status", "3", "4")
.ne("workorder_id", param.getString("workorder_id")));
.eq("device_code", param.getString("device_code"))
.in("workorder_status", "3", "4")
.eq("is_delete",false)
.ne("workorder_id", param.getString("workorder_id")));
if (ObjectUtil.isNotEmpty(result)) {
throw new BadRequestException("已有工单选择该设备开工,请更换开工设备!");
}
@@ -626,9 +602,9 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
JSONObject order = packageForm(param);
//开工时更新设备生产的物料规格
// deviceService.update(new UpdateWrapper<PdmBiDevice>()
// .set("spec",order.getString("material_spec"))
// .eq("device_code",order.getString("device_code")));
// deviceService.update(new UpdateWrapper<PdmBiDevice>()
// .set("spec",order.getString("material_spec"))
// .eq("device_code",order.getString("device_code")));
array.add(order);
//下发acs
PdmProduceWorkorder workOrder = this.getOne(new QueryWrapper<PdmProduceWorkorder>().eq("workorder_id", param.getString("workorder_id")));
@@ -643,7 +619,8 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
throw new BadRequestException("当前工单存在未报工的报工记录,请先进行报工");
}
Map<String, Object> resp = wmsToAcsService.order(array);
if (HttpStatus.BAD_REQUEST.value() == (int)resp.get("status")) {
String status = String.valueOf(resp.get("status"));
if (!status.equals("200")) {
throw new BadRequestException(resp.get("message") != null ? String.valueOf(resp.get("message")) : "acs反馈异常");
}
return RestBusinessTemplate.execute(() -> resp);
@@ -694,11 +671,11 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
PdmProduceWorkorder workorder = this.getOne(new QueryWrapper<PdmProduceWorkorder>().eq("workorder_id", param.getString("workorder_id")));
Assert.notNull(workorder, "当前工单不存在");
// if (workorder.getWorkorder_status().equals(WorkerOrderEnum.AUTO_COMPLETE.getCode()) || workorder.getWorkorder_status().equals(WorkerOrderEnum.COMPLETE.getCode()) || workorder.getWorkorder_status().equals(WorkerOrderEnum.FORCE_COMPLETE.getCode())) {
// throw new BadRequestException(param.getString("workorder_id") + "当前工单已经完工不允许报工");
// }
// if (workorder.getWorkorder_status().equals(WorkerOrderEnum.AUTO_COMPLETE.getCode()) || workorder.getWorkorder_status().equals(WorkerOrderEnum.COMPLETE.getCode()) || workorder.getWorkorder_status().equals(WorkerOrderEnum.FORCE_COMPLETE.getCode())) {
// throw new BadRequestException(param.getString("workorder_id") + "当前工单已经完工不允许报工");
// }
PdmProduceWorkorderrecord one = reportRecordService.getOne(new QueryWrapper<PdmProduceWorkorderrecord>()
.eq("workorder_id", param.getString("workorder_id")).eq("report_status", ReportEnum.REPORT_STATUS.code("生成")));
.eq("workorder_id", param.getString("workorder_id")).eq("report_status", ReportEnum.REPORT_STATUS.code("生成")));
Assert.notNull(one, param.getString("workorder_id") + "当前工单没有生成状态的报工记录");
workorder.setReport_qty(workorder.getReport_qty().add(param.getBigDecimal("report_qty")));
if (workorder.getPlan_qty().doubleValue() <= workorder.getReport_qty().doubleValue()) {
@@ -716,11 +693,11 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
workorder.setReal_qty(null);
this.updateById(workorder);
reportRecordService.update(new UpdateWrapper<PdmProduceWorkorderrecord>()
.set("report_qty", param.getBigDecimal("report_qty"))
.set("report_status", ReportEnum.REPORT_STATUS.code("报工"))
.set("operatetime_end",DateUtil.now())
.set("needproduct_qty", Math.max(0, workorder.getPlan_qty().intValue() - workorder.getReport_qty().intValue()))
.eq("macoperate_id", one.getMacoperate_id()));
.set("report_qty", param.getBigDecimal("report_qty"))
.set("report_status", ReportEnum.REPORT_STATUS.code("报工"))
.set("operatetime_end",DateUtil.now())
.set("needproduct_qty", Math.max(0, workorder.getPlan_qty().intValue() - workorder.getReport_qty().intValue()))
.eq("macoperate_id", one.getMacoperate_id()));
return one.getMacoperate_id();
}
@@ -845,8 +822,9 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
return list;
}
@Override
public List<Map> getOrderList(Map<String,String> param, Pageable page) {
public List<Map> getOrderList(Map<String, String> param, Pageable page) {
return this.baseMapper.orderList(param);
}
@@ -854,9 +832,9 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
public void updateReport(JSONObject param) {
Assert.notNull(param, "参数不能为空");
PdmProduceWorkorderrecord record = reportRecordService.getOne(new QueryWrapper<PdmProduceWorkorderrecord>()
.eq("macoperate_id", param.getString("macoperate_id")));
.eq("macoperate_id", param.getString("macoperate_id")));
PdmProduceWorkorder workorder = this.getOne(new QueryWrapper<PdmProduceWorkorder>()
.eq("workorder_id", record.getWorkorder_id()));
.eq("workorder_id", record.getWorkorder_id()));
if (!workorder.getIs_canupdate_update()) {
throw new BadRequestException("当前工单设置为不允许修改报工记录");
}
@@ -869,6 +847,6 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
}
updateWrapper.set("report_qty", param.getBigDecimal("report_qty"));
reportRecordService.update(updateWrapper
.eq("macoperate_id", param.getString("macoperate_id")));
.eq("macoperate_id", param.getString("macoperate_id")));
}
}

View File

@@ -3,9 +3,11 @@ package org.nl.wms.scheduler_manage.controller.point;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import io.swagger.annotations.ApiOperation;
import org.nl.common.anno.Log;
import org.nl.common.domain.query.PageQuery;
import org.nl.common.enums.StatusEnum;
import org.nl.wms.product_manage.sch.service.PointService;
import org.nl.wms.scheduler_manage.service.point.ISchBasePointService;
import org.nl.wms.scheduler_manage.service.point.dao.SchBasePoint;
@@ -32,9 +34,6 @@ import java.util.Map;
@RequestMapping("/api/point")
public class SchBasePointController {
@Autowired
private PointService pointService;
@Autowired
private ISchBasePointService basePointService;
@Autowired
@@ -125,7 +124,22 @@ public class SchBasePointController {
@Log("查询刻字点位")
@ApiOperation("查询点位")
public ResponseEntity<Object> queryVehicle(@RequestParam Map whereJson, PageQuery page) {
return new ResponseEntity<>(basePointService.queryVehicle(whereJson,page), HttpStatus.OK);
return new ResponseEntity<>(basePointService.queryPointMaterial(whereJson,page), HttpStatus.OK);
}
@PostMapping("/setEmp")
@Log("设置点位为空")
@ApiOperation("设置点位为空")
public ResponseEntity<Object> setEmp(@RequestBody Long[] ids) {
if (ids.length>0){
basePointService.update(new UpdateWrapper<SchBasePoint>()
.set("lock_type","0")
.set("material_id","")
.set("point_status", StatusEnum.POINT_STATUS_EMPTY.getCode())
.set("qty",0)
.in("point_id",ids));
}
return new ResponseEntity<>(HttpStatus.OK);
}
}

View File

@@ -22,10 +22,12 @@ public interface ISchBasePointService extends IService<SchBasePoint> {
Object queryAll(Map whereJson, PageQuery page);
Object queryVehicle(Map whereJson, PageQuery page);
Object queryPointMaterial(Map whereJson, PageQuery page);
List<Map<String,String>> queryVehicle(Map query);
List<Map<String,String>> queryPointMaterial(Map query);
/**
*
* 获取点位

View File

@@ -78,7 +78,11 @@ public class SchBasePoint implements Serializable {
/**
* 物料标识
*/
private Long material_id;
private String material_id;
/**
* 物料数量
*/
private BigDecimal qty;
/**
* 设备编码
@@ -158,7 +162,7 @@ public class SchBasePoint implements Serializable {
/**
* 在执行的任务标识
*/
private Long task_id;
private String task_id;
/**
* 位置

View File

@@ -24,6 +24,7 @@ public interface SchBasePointMapper extends BaseMapper<SchBasePoint> {
List<Map> queryAll(Map<String,Object> map);
List<Map> queryVehicle(Map<String,Object> map);
List<Map> queryPointMaterial(Map<String,Object> map);
/**
* 点位管理页面查询

View File

@@ -209,4 +209,63 @@
</if>
</select>
<select id="queryPointMaterial" resultType="java.util.Map">
SELECT
point.*,
d3.label as lock_type_name,
region.region_name,
ma.material_name,
ma.material_code,
ma.material_spec
FROM
sch_base_point point
LEFT JOIN SCH_BASE_Region region ON point.region_code = region.region_code
LEFT JOIN sys_dict d3 ON point.lock_type = d3.value and d3.code='d_lock_type'
LEFT JOIN md_me_materialbase ma ON ma.material_id = point.material_id
WHERE
point.is_delete = '0'
<if test="region_code != null and region_code != ''">
and point.region_code = #{region_code}
</if>
<if test="material_id != null and material_id != ''">
and vehicle.material_id = #{material_id}
</if>
<if test="material_null != null and material_null != ''">
point.vehicle_code is not null and point.vehicle_code <![CDATA[<>]]> ''
and point.qty > 0
</if>
<if test="point_type != null and point_type != ''">
and point.point_type = #{point_type}
</if>
<if test="lock_type != null and lock_type != ''">
and point.lock_type = #{lock_type}
</if>
<if test="product_area != null and product_area != ''">
and point.product_area = #{product_area}
</if>
<if test="point_status != null and point_status != ''">
and point.point_status = #{point_status}
</if>
<if test="point_status == '00'">
and (point.vehicle_code is null or point.vehicle_code = '')
</if>
<if test="is_used != null and is_used != ''">
and point.is_used = #{is_used}
</if>
<if test="block_num != null and block_num != ''">
and point.block_num = #{block_num}
</if>
<if test="row_num != null and row_num != ''">
and point.row_num = #{row_num}
</if>
<if test="col_num != null and col_num != ''">
and point.col_num = #{col_num}
</if>
<if test="layer_num != null and layer_num != ''">
and point.layer_num = #{layer_num}
</if>
<if test="name != null and name != ''">
and ( point.point_code like '%${name}' or point.point_name like '%${name}' )
</if>
</select>
</mapper>

View File

@@ -99,19 +99,10 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
return build;
}
@Override
public Object queryVehicle(Map whereJson, PageQuery pageQuery) {
public Object queryPointMaterial(Map whereJson, PageQuery pageQuery) {
Page<Object> page = PageHelper.startPage(pageQuery.getPage()+1, pageQuery.getSize());
page.setOrderBy("point_code asc");
List<Map<String, String>> list = this.queryVehicle(whereJson);
list.forEach(a->{
a.put("point_status", StatusEnum.POINT_STATUS_EMPTY.getCode());
if (a.get("vehicle_code")!=null){
a.put("point_status",StatusEnum.POINT_STATUS_EMPTY_VEHICLE.getCode());
};
if (a.get("material_spec")!=null){
a.put("point_status",StatusEnum.POINT_STATUS_FULL.getCode());
};
});
List<Map<String, String>> list = this.queryPointMaterial(whereJson);
TableDataInfo build = TableDataInfo.build(list);
build.setTotalElements(page.getTotal());
return build;
@@ -122,6 +113,11 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
return schBasePointMapper.queryVehicle(query);
}
@Override
public List<Map<String,String>> queryPointMaterial(Map query) {
return schBasePointMapper.queryPointMaterial(query);
}
@Override
public Object selectPoint(Map query, PageQuery pageQuery) {
Page<Object> page = PageHelper.startPage(pageQuery.getPage()+1, pageQuery.getSize());

View File

@@ -8,13 +8,11 @@ import lombok.extern.slf4j.Slf4j;
import org.nl.common.enums.WorkerOrderEnum;
import org.nl.common.utils.BaseCode;
import org.nl.common.utils.IdUtil;
import org.nl.common.utils.RedissonUtils;
import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService;
import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase;
import org.nl.wms.product_manage.sch.tasks.sendMaterial.WashSendMaterialTask;
import org.nl.wms.product_manage.sch.tasks.wash.WashSendMaterialTask;
import org.nl.wms.product_manage.service.workorder.IPdmProduceWorkorderService;
import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorder;
import org.nl.wms.storage_manage.productmanage.service.structIvt.dao.StIvtStructivtCp;
import org.nl.wms.storage_manage.semimanage.service.iostorInv.IStIvtIostorinvBcpOutService;
import org.nl.wms.storage_manage.semimanage.service.structIvt.dao.StIvtStructivtBcp;
import org.slf4j.MDC;

View File

@@ -1,5 +1,7 @@
package org.nl.wms.scheduler_manage.service.task;
import com.alibaba.fastjson.JSONObject;
import org.nl.common.enums.AcsTaskEnum;
import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask;
import com.baomidou.mybatisplus.extension.service.IService;
@@ -24,4 +26,6 @@ public interface ISchBaseTaskService extends IService<SchBaseTask> {
void operation(Map<String, Object> param);
List<Map> queryAll(Map query);
JSONObject createMoveTask(String start, String end, AcsTaskEnum taskEnum, AcsTaskEnum acstype);
}

View File

@@ -1,26 +1,31 @@
package org.nl.wms.scheduler_manage.service.task.impl;
import cn.hutool.core.date.DateUtil;
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.apache.commons.lang3.StringUtils;
import org.nl.common.enums.AcsTaskEnum;
import org.nl.common.enums.StatusEnum;
import org.nl.common.utils.IdUtil;
import org.nl.common.utils.MapOf;
import org.nl.common.utils.SecurityUtils;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.system.util.CodeUtil;
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.point.ISchBasePointService;
import org.nl.wms.scheduler_manage.service.point.dao.SchBasePoint;
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.ISchBaseTaskService;
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;
@@ -40,6 +45,8 @@ import java.util.Map;
@Service
public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBaseTask> implements ISchBaseTaskService {
@Autowired
private ISchBasePointService pointService;
@Autowired
@Lazy
private AcsToWmsService acsToWmsService;
@@ -59,23 +66,28 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
String task_id = MapUtil.getStr(map, "task_id");
String method_name = MapUtil.getStr(map, "method_name");
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":
if (!taskObj.getTask_status().equals(TaskStatusEnum.START_AND_POINT.getCode())){
if (Integer.valueOf(taskObj.getTask_status())<Integer.valueOf(TaskStatusEnum.EXECUTING.getCode())){
try {
AbstractAcsTask taskHandler = (AbstractAcsTask) SpringContextHolder.getBean(Class.forName(taskObj.getHandle_class()));
taskHandler.pointConfirm((JSONObject) JSONObject.toJSON(taskObj));
SchBaseTask task = this.getOne(new QueryWrapper<SchBaseTask>().eq("task_id", task_id));
JSONArray array = new JSONArray();
array.add(JSON.toJSON(task));
wms.issueTaskToAcs(array);
Map<String, Object> result = wms.issueTaskToAcs(array);
String status = String.valueOf(result.get("status"));
if (!status.equals("200")) {
throw new BadRequestException(result.get("message") != null ? String.valueOf(result.get("message")) : "acs反馈异常");
}
}catch (Exception ex){
taskObj.setTask_status(StatusEnum.TASK_START_ERROR.getCode());
taskObj.setRemark(ex.getMessage());
taskObj.setUpdate_time(new Date());
pointService.update(new UpdateWrapper<SchBasePoint>()
.set("lock_type",StatusEnum.LOCK_OFF.getCode())
.in("point_code",taskObj.getPoint_code1(),taskObj.getPoint_code2()));
this.updateById(taskObj);
}
}
@@ -93,12 +105,18 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
.eq("task_id", task_id));
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));
if (taskObj.getTask_status().equals(StatusEnum.TASK_RUNNING.getCode())||taskObj.getTask_status().equals(StatusEnum.TASK_PUBLISH.getCode())){
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));
}else {
WQLObject taskTable = WQLObject.getWQLObject("sch_base_task");
taskTable.update(MapOf.of("task_status",StatusEnum.TASK_CANNEL.getCode()),"task_id = '"+task_id+"'");
}
break;
case "delete":
SchBaseTask one = getOne(new QueryWrapper<SchBaseTask>().eq("task_id", task_id));
@@ -119,4 +137,34 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
default: break;
}
}
@Override
public JSONObject createMoveTask(String start, String end, AcsTaskEnum taskEnum, AcsTaskEnum acstype) {
JSONObject task = new JSONObject();
task.put("task_id", IdUtil.getStringId());
task.put("task_name", taskEnum.getDesc());
task.put("task_type", taskEnum.getCode());
task.put("task_code", CodeUtil.getNewCode("TASK_CODE"));
task.put("acs_task_type", acstype.getCode());
task.put("material_id", "");
task.put("task_status", StatusEnum.TASK_CREATE.getCode());
task.put("point_code3", end);
task.put("handle_class", this.getClass().getName());
task.put("is_delete", StatusEnum.STATUS_FLASE.getCode());
String currentUserId = SecurityUtils.getCurrentUserId();
task.put("create_id", currentUserId);
task.put("create_name", SecurityUtils.getCurrentNickName());
task.put("update_id", currentUserId);
task.put("update_name", SecurityUtils.getCurrentNickName());
task.put("create_time", DateUtil.now());
task.put("update_time", DateUtil.now());
task.put("priority", "1");
task.put("agv_system_type", AcsTaskEnum.AGV_SYSTEM_XC.getCode());
task.put("table_fk_id", "");
task.put("update_time", DateUtil.now());
task.put("point_code1",start);
task.put("task_status",StatusEnum.TASK_START_END_P.getCode());
task.put("task_group_id", IdUtil.getStringId());
return task;
}
}

View File

@@ -38,10 +38,8 @@ public class SysDictController {
private final ISysDictService dictService;
@Log("查询字典")
@GetMapping
@ApiOperation("查询字典")
// @SaCheckPermission("dict:list")
public ResponseEntity<Object> query(@RequestParam Map whereJson, PageQuery pageable){
return new ResponseEntity<>(TableDataInfo.build(dictService.queryAll(whereJson,pageable)), HttpStatus.OK);
}
@@ -49,7 +47,6 @@ public class SysDictController {
@Log("新增字典")
@PostMapping
@ApiOperation("新增字典")
// @SaCheckPermission("dict:add")
public ResponseEntity<Object> create(@RequestBody Dict dict){
dictService.create(dict);
return new ResponseEntity<>(HttpStatus.CREATED);
@@ -112,13 +109,11 @@ public class SysDictController {
@Log("删除字典详情")
@ApiOperation("删除字典详情")
@DeleteMapping(value = "/dictDetail/{id}")
// @SaCheckPermission("dict:del")
public ResponseEntity<Object> deleteDetail(@PathVariable String id){
dictService.deleteDetail(id);
return new ResponseEntity<>(HttpStatus.OK);
}
@Log("查询字典详情")
@ApiOperation("查询字典详情")
@PostMapping("/dictDetailByCode")
@SaIgnore

View File

@@ -22,6 +22,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
/**
* <p>
@@ -96,14 +97,13 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, Dict> impleme
}
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteBatchByIds(Set<String> ids) {
// 查找code删除
ids.forEach(id -> {
String code = sysDictMapper.selectById(id).getCode();
sysDictMapper.delete(new LambdaQueryWrapper<Dict>().eq(Dict::getCode, code));
});
}
if (ids.size()>0){
List<Dict> dicts = this.list(new QueryWrapper<Dict>().in("dict_id", ids));
this.remove(new QueryWrapper<Dict>().in("code",dicts.stream().map(Dict::getCode).collect(Collectors.toSet())));
}
}
@Override
public IPage<Dict> queryAllDetail(DictQuery criteria, PageQuery page) {

View File

@@ -61,10 +61,6 @@ public class PdmQlOption implements Serializable {
*/
private String create_time;
/**
* 创建人
*/
private String create_id;
/**
* 备注

View File

@@ -0,0 +1,203 @@
server:
port: 8011
#配置数据源
spring:
data:
elasticsearch:
repositories:
enabled: true
client:
reactive:
#endpoints: 172.31.185.110:8200,172.31.154.9:8200 #内网
# endpoints: 47.96.133.178:8200 #外网
endpoints: http://127.0.0.1:9200 #外网
elasticsearch:
rest:
#uris: 172.31.185.110:8200,172.31.154.9:8200 #内网
# uris: 47.96.133.178:8200 #外网
uris: http://127.0.0.1:9200 #外网
# username: elastic
# password: 123456
datasource:
druid:
db-type: com.alibaba.druid.pool.DruidDataSource
driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
# url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.46.5}:${DB_PORT:3306}/${DB_NAME:hl_one_mes_test}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false
# url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.46.5}:${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
username: ${DB_USER:root}
# password: ${DB_PWD:123456}
password: ${DB_PWD:942464Yy}
# 初始连接数
initial-size: 5
# 最小连接数
min-idle: 15
# 最大连接数
max-active: 30
# 是否自动回收超时连接
remove-abandoned: true
# 超时时间(以秒数为单位)
remove-abandoned-timeout: 180
# 获取连接超时时间
max-wait: 3000
# 连接有效性检测时间
time-between-eviction-runs-millis: 60000
# 连接在池中最小生存的时间
min-evictable-idle-time-millis: 300000
# 连接在池中最大生存的时间
max-evictable-idle-time-millis: 900000
# 指明连接是否被空闲连接回收器(如果有)进行检验.如果检测失败,则连接将被从池中去除
test-while-idle: true
# 指明是否在从池中取出连接前进行检验,如果检验失败, 则从池中去除连接并尝试取出另一个
test-on-borrow: true
# 是否在归还到池中前进行检验
test-on-return: false
# 检测连接是否有效
validation-query: select 1
# 配置监控统计
webStatFilter:
enabled: true
stat-view-servlet:
enabled: true
url-pattern: /druid/*
reset-enable: false
filters:
DruidFilter,stat
redis:
#数据库索引
database: ${REDIS_DB:1}
#host: ${REDIS_HOST:127.0.0.1}
host: ${REDIS_HOST:localhost}
port: ${REDIS_PORT:6379}
password: ${REDIS_PWD:}
#连接超时时间
timeout: 5000
redisson:
config: |
threads: 4
nettyThreads: 4
singleServerConfig:
connectionMinimumIdleSize: 8
connectionPoolSize: 8
address: redis://127.0.0.1:6379
idleConnectionTimeout: 10000
timeout: 3000
# 登录相关配置
login:
# 登录缓存
cache-enable: true
# 是否限制单用户登录
single-login: false
# 验证码
login-code:
# 验证码类型配置 查看 LoginProperties 类
code-type: arithmetic
# 登录图形验证码有效时间/分钟
expiration: 2
# 验证码高度
width: 111
# 验证码宽度
heigth: 36
# 内容长度
length: 2
# 字体名称,为空则使用默认字体
font-name:
# 字体大小
font-size: 25
#jwt
jwt:
header: Authorization
# 令牌前缀
token-start-with: Bearer
# 必须使用最少88位的Base64对该令牌进行编码
base64-secret: ZmQ0ZGI5NjQ0MDQwY2I4MjMxY2Y3ZmI3MjdhN2ZmMjNhODViOTg1ZGE0NTBjMGM4NDA5NzYxMjdjOWMwYWRmZTBlZjlhNGY3ZTg4Y2U3YTE1ODVkZDU5Y2Y3OGYwZWE1NzUzNWQ2YjFjZDc0NGMxZWU2MmQ3MjY1NzJmNTE0MzI=
# 令牌过期时间 此处单位/毫秒 默认4小时可在此网站生成 https://www.convertworld.com/zh-hans/time/milliseconds.html
token-validity-in-seconds: 14400000
# 在线用户key
online-key: online-token-
# 验证码
code-key: code-key-
# token 续期检查时间范围默认30分钟单位毫秒在token即将过期的一段时间内用户操作了则给用户的token续期
detect: 1800000
# 续期时间范围默认1小时单位毫秒
renew: 3600000
#是否允许生成代码生产环境设置为false
generator:
enabled: true
#是否开启 swagger-ui
swagger:
enabled: true
# IP 本地解析
ip:
local-parsing: true
# 文件存储路径
file:
mac:
path: ~/file/
avatar: ~/avatar/
linux:
path: /home/eladmin/file/
avatar: /home/eladmin/avatar/
windows:
path: C:\eladmin\file\
avatar: C:\eladmin\avatar\
# 文件大小 /M
maxSize: 100
avatarMaxSize: 5
sa-token:
# token 名称 (同时也是cookie名称)
token-name: Authorization
# token 有效期单位s 默认30天, -1代表永不过期
timeout: 2592000
# token 临时有效期 (指定时间内无操作就视为token过期) 单位: 秒
activity-timeout: -1
# 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录)
is-concurrent: true
# 在多人登录同一账号时是否共用一个token (为true时所有登录共用一个token, 为false时每次登录新建一个token)
is-share: false
# token风格
token-style: random-128
# 是否输出操作日志
is-log: false
jwt-secret-key: opsjajisdnnca0sdkksdfaaasdfwwq
# token 前缀
token-prefix:
cookie:
# 配置 Cookie 作用域:根据二级域名实现sso登入如lms.sso.com;acs.sso.com
domain:
is-read-cookie: false
#jetcache:
# defaultCacheType: LOCAL
# statIntervalMinutes: 15
# areaInCacheName: false
# hiddenPackages: com.yb
# local:
# default:
# type: caffeine
# limit: 100
# keyConvertor: fastjson
# expireAfterWriteInMillis: 60000
# remote:
# default:
# type: redis.lettuce
# keyConvertor: fastjson
# valueEncoder: kryo
# valueDecoder: kryo
# poolConfig:
# minIdle: 5
# maxIdle: 200
# maxTotal: 1000
# uri:
# - redis://127.0.0.1:6379
es:
index: mes_log
schedulerFile: /Users/mima0000/Desktop/scheduler.xml