Merge branch 'master' of http://121.40.234.130:8899/root/hl_one
This commit is contained in:
@@ -43,7 +43,12 @@
|
||||
<artifactId>jansi</artifactId>
|
||||
<version>1.9</version>
|
||||
</dependency>
|
||||
|
||||
<!--redisson-->
|
||||
<dependency>
|
||||
<groupId>org.redisson</groupId>
|
||||
<artifactId>redisson-spring-boot-starter</artifactId>
|
||||
<version>3.16.4</version>
|
||||
</dependency>
|
||||
<!--登录相关-->
|
||||
<dependency>
|
||||
<groupId>cn.dev33</groupId>
|
||||
@@ -254,6 +259,11 @@
|
||||
<artifactId>velocity-engine-core</artifactId>
|
||||
<version>2.3</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-security</artifactId>
|
||||
<scope>test</scope> <!-- 特殊处理,不引入父类lib -->
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.baomidou</groupId>
|
||||
<artifactId>mybatis-plus-generator</artifactId>
|
||||
@@ -334,7 +344,11 @@
|
||||
<includes>
|
||||
<include>**/*.*</include>
|
||||
</includes>
|
||||
<excludes>
|
||||
<exclude>**/*.java</exclude>
|
||||
</excludes>
|
||||
</resource>
|
||||
|
||||
<resource>
|
||||
<directory>${basedir}/src/main/resources</directory>
|
||||
<includes>
|
||||
|
||||
@@ -27,11 +27,10 @@ public enum AcsTaskEnum {
|
||||
TASK_CACHELINE_OUT("3","缓存线出库任务"),
|
||||
|
||||
//回调状态
|
||||
STATUS_START("1","开始取货"),
|
||||
STATUS_RUNDING("2","放货中"),
|
||||
STATUS_FINISH("3","完成"),
|
||||
STATUS_CANNEL("4","取消"),
|
||||
|
||||
STATUS_START("1","执行中"),
|
||||
STATUS_FINISH("2","完成"),
|
||||
STATUS_CANNEL("3","取消"),
|
||||
//专机请求
|
||||
REQUEST_CALLTYPE_FULL("1","满料请求"),
|
||||
REQUEST_CALLTYPE_EMP("2","缺料请求"),
|
||||
;
|
||||
|
||||
@@ -20,12 +20,12 @@ public enum StatusEnum {
|
||||
//锁状态
|
||||
LOCK_OFF("0","否",""),
|
||||
LOCK_ON("1","是",""),
|
||||
//缓存线载具状态00-空位、01-绿色空箱、02-黄色满箱、03-红色异常、04不显示
|
||||
CACHE_VEL_NULL("00","空位",""),
|
||||
CACHE_VEL_EMT("01","绿色空箱",""),
|
||||
CACHE_VEL_FULL("02","黄色满箱",""),
|
||||
CACHE_VEL_ERR("03","红色异常",""),
|
||||
CACHE_VEL_DIS("04","04不显示",""),
|
||||
//缓存线载具状态 1-空位、2-绿色空箱、3-黄色满箱、4-红色异常、5不显示
|
||||
CACHE_VEL_NULL("1","空位",""),
|
||||
CACHE_VEL_EMT("2","绿色空箱",""),
|
||||
CACHE_VEL_FULL("3","黄色满箱",""),
|
||||
CACHE_VEL_ERR("4","红色异常",""),
|
||||
CACHE_VEL_DIS("5","不显示",""),
|
||||
//任务状态
|
||||
TASK_CREATE("1","生成",""),
|
||||
TASK_START_P("2","起点确认",""),
|
||||
|
||||
@@ -6,12 +6,13 @@ package org.nl.common.enums;
|
||||
* @Date: 2023/3/16
|
||||
*/
|
||||
public enum WorkerOrderEnum {
|
||||
// 1-创建、2-下发、3-生产中、4-暂停、5-完成
|
||||
// 1-创建、2-下发、3-生产中、4-暂停、5-完成 6-强制完成
|
||||
CREATE("创建", "1"),
|
||||
SEND("下发", "2"),
|
||||
PRODUCTING("生产中", "3"),
|
||||
STOP("暂停", "4"),
|
||||
COMPLETE("完成", "5"),
|
||||
FORCE_COMPLETE("强制完成", "6"),
|
||||
// 1-PC创建、2-Excel导入
|
||||
PCINTO("PC创建", "1"),
|
||||
EXCELINTO("EXCEL导入", "2"),
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
package org.nl.common.handler;
|
||||
|
||||
@FunctionalInterface
|
||||
public
|
||||
interface LockProcess {
|
||||
void process();
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
package org.nl.common.utils;
|
||||
|
||||
import lombok.SneakyThrows;
|
||||
import org.nl.common.handler.LockProcess;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.modules.wql.util.SpringContextHolder;
|
||||
import org.redisson.api.RLock;
|
||||
import org.redisson.api.RedissonClient;
|
||||
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/*
|
||||
* @author ZZQ
|
||||
* @Date 2023/3/27 10:30
|
||||
*/
|
||||
public class RedissonUtils {
|
||||
/**
|
||||
*
|
||||
* @param process 业务代码
|
||||
* @param key
|
||||
* @param seconds 尝试获取锁的等待时间,允许为空
|
||||
*/
|
||||
@SneakyThrows
|
||||
public static void lock(LockProcess process, String key, Integer seconds){
|
||||
RedissonClient redissonClient = SpringContextHolder.getBean(RedissonClient.class);
|
||||
RLock lock = redissonClient.getLock(key);
|
||||
boolean isLock;
|
||||
if (seconds == null){
|
||||
isLock = lock.tryLock();
|
||||
}else {
|
||||
isLock = lock.tryLock(seconds, TimeUnit.SECONDS);
|
||||
}
|
||||
try {
|
||||
if (isLock){
|
||||
process.process();
|
||||
}{
|
||||
throw new BadRequestException("当前业务 key:"+key+"正在锁定请稍后再试");
|
||||
}
|
||||
}finally {
|
||||
if (isLock){
|
||||
lock.unlock();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -41,7 +41,7 @@ public class RestBusinessTemplate{
|
||||
catch(Exception e) {
|
||||
log.error("execute error", e);
|
||||
result.setCode(ResultCode.FAILED.getCode());
|
||||
result.setDesc(ResultCode.FAILED.getDesc());
|
||||
result.setDesc(ResultCode.FAILED.getDesc()+",原因是:"+e.getMessage());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@ import javax.sql.DataSource;
|
||||
import java.sql.DriverManager;
|
||||
import java.sql.SQLException;
|
||||
|
||||
@Configuration
|
||||
//@Configuration
|
||||
@Slf4j
|
||||
public class DataBaseConfig {
|
||||
@Value("${erp.oracle.enabled}")
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package org.nl.system.controller.dict;
|
||||
|
||||
|
||||
import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@@ -117,5 +118,13 @@ public class SysDictController {
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
@Log("查询字典详情")
|
||||
@ApiOperation("查询字典详情")
|
||||
@PostMapping("/dictDetailByCode")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> createDetail(@RequestBody String code){
|
||||
return new ResponseEntity<>(dictService.getDictByName(code),HttpStatus.OK);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -169,6 +169,9 @@ public class SectattrServiceImpl implements SectattrService {
|
||||
String is_productstore = (String) whereJson.get("is_productstore");
|
||||
String is_attachment = (String) whereJson.get("is_attachment");
|
||||
String is_reversed = (String) whereJson.get("is_reversed");
|
||||
String stor_id = (String) whereJson.get("stor_id");
|
||||
stor_map.put("stor_id", stor_id);
|
||||
|
||||
if (!StrUtil.isEmpty(is_materialstore)) {
|
||||
stor_map.put("is_materialstore", is_materialstore);
|
||||
}
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
输入.is_productstore TYPEAS s_string
|
||||
输入.is_attachment TYPEAS s_string
|
||||
输入.is_reversed TYPEAS s_string
|
||||
输入.stor_id TYPEAS s_string
|
||||
|
||||
|
||||
[临时表]
|
||||
@@ -95,6 +96,9 @@
|
||||
ENDOPTION
|
||||
OPTION 输入.is_reversed <> ""
|
||||
stor.is_reversed = 输入.is_reversed
|
||||
ENDOPTION
|
||||
OPTION 输入.stor_id <> ""
|
||||
stor.stor_id = 输入.stor_id
|
||||
ENDOPTION
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
|
||||
Binary file not shown.
@@ -21,7 +21,7 @@ public class CachelinePositionDto implements Serializable {
|
||||
private String position_name;
|
||||
|
||||
/** 位置顺序号 */
|
||||
private BigDecimal positionOrder_no;
|
||||
private BigDecimal positionorder_no;
|
||||
|
||||
/** 缓存线编码 */
|
||||
private String cacheline_code;
|
||||
|
||||
@@ -6,8 +6,11 @@ import com.alibaba.fastjson.JSONObject;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.common.anno.Log;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.utils.api.ResultCode;
|
||||
import org.nl.modules.common.exception.BizCoreException;
|
||||
import org.nl.wms.ext.acs.service.AcsToWmsService;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
@@ -16,6 +19,7 @@ import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
@@ -37,6 +41,17 @@ public class AcsToWmsController {
|
||||
return new ResponseEntity<>(acsToWmsService.apply(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/receiveTaskIdToCacheLine")
|
||||
@Log("ACS给WMS发送缓存线的实时任务ID")
|
||||
@ApiOperation("ACS给WMS发送缓存线的实时任务ID")
|
||||
public ResponseEntity<Object> receiveTaskIdToCacheLine(@RequestBody JSONObject whereJson) {
|
||||
//参数校验
|
||||
if(StringUtils.isEmpty(whereJson.getString("task_id")) || StringUtils.isEmpty(whereJson.getString("position_code"))) {
|
||||
throw new BizCoreException(ResultCode.MISS_PARAMETER);
|
||||
}
|
||||
return new ResponseEntity<>(acsToWmsService.receiveTaskIdToCacheLine(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/status")
|
||||
@Log("ACS给WMS反馈任务状态")
|
||||
@ApiOperation("ACS给WMS反馈任务状态")
|
||||
@@ -44,11 +59,11 @@ public class AcsToWmsController {
|
||||
return new ResponseEntity<>(acsToWmsService.receiveTaskStatusAcs(string), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/orderFinish")
|
||||
@PostMapping("/orderStatus")
|
||||
@Log("ACS给WMS下发工单完成状态")
|
||||
@ApiOperation("ACS给WMS下发工单完成状态")
|
||||
public ResponseEntity<Object> orderFinish(@RequestBody String string) {
|
||||
return new ResponseEntity<>(acsToWmsService.orderFinish(string), HttpStatus.OK);
|
||||
public ResponseEntity<Object> orderFinish(@RequestBody JSONObject param) {
|
||||
return new ResponseEntity<>(acsToWmsService.orderStatus(param), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/feedDeviceStatusType")
|
||||
@@ -58,10 +73,32 @@ public class AcsToWmsController {
|
||||
return new ResponseEntity<>(acsToWmsService.feedDeviceStatusType(string), HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@PostMapping("/feedDeviceQty")
|
||||
@Log("向wms反馈设备实时数量")
|
||||
@ApiOperation("向wms反馈设备实时数量")
|
||||
public ResponseEntity<Object> feedDeviceRealQty(@RequestBody List<JSONObject> param) {
|
||||
acsToWmsService.feedDevQty(param);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/feedcachelineVe")
|
||||
@Log("向wms反馈缓存载具信息")
|
||||
@ApiOperation("向wms反馈缓存载具信息")
|
||||
public ResponseEntity<Object> feedcachelineVe(@RequestBody JSONObject param) {
|
||||
acsToWmsService.feedcachelineVe(param);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/feedOrderRealQty")
|
||||
@Log("向wms反订单实施数量")
|
||||
@Log("向wms反实施数量")
|
||||
@ApiOperation("向wms反订单实施数量")
|
||||
public ResponseEntity<Object> feedOrderRealQty(@RequestBody String string) {
|
||||
return new ResponseEntity<>(acsToWmsService.feedOrderRealQty(string), HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ import io.swagger.annotations.ApiOperation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.nl.common.anno.Log;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.enums.WorkerOrderEnum;
|
||||
import org.nl.wms.ext.acs.service.WmsToAcsService;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
@@ -64,6 +65,11 @@ public class WmsToAcsController {
|
||||
return new ResponseEntity<>(wmsToAcsService.order(arr), HttpStatus.OK);
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.nl.common.enums.WorkerOrderEnum
|
||||
* @param whereJson
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/orderStatusUpdate")
|
||||
@Log("WMS向acs发送强制完成")
|
||||
@ApiOperation("WMS强制完成向acs发送强制完成")
|
||||
|
||||
@@ -2,6 +2,7 @@ package org.nl.wms.ext.acs.service;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public interface AcsToWmsService {
|
||||
@@ -16,6 +17,18 @@ public interface AcsToWmsService {
|
||||
|
||||
Map<String, Object> apply(JSONObject jsonObject);
|
||||
|
||||
/**
|
||||
*
|
||||
* ACS客户端--->WMS服务端
|
||||
* ACS给WMS发送缓存线的实时任务ID
|
||||
* @param jsonObject 条件:1.缓存线点位编码:position_code,2.任务id:task_id
|
||||
* @return JSONObject
|
||||
* @author gbx
|
||||
* @date 2023/3/25
|
||||
*/
|
||||
|
||||
JSONObject receiveTaskIdToCacheLine(JSONObject jsonObject);
|
||||
|
||||
/**
|
||||
* ACS客户端--->WMS服务端
|
||||
* ACS向WMS反馈任务状态
|
||||
@@ -37,10 +50,16 @@ public interface AcsToWmsService {
|
||||
|
||||
/**
|
||||
* ACS给WMS下发工单强制完成状态
|
||||
* @param string
|
||||
* @return
|
||||
*/
|
||||
Map<String, Object> orderFinish(String string);
|
||||
Map<String, Object> orderStatus(JSONObject param);
|
||||
|
||||
/**
|
||||
* 设备实时数量
|
||||
* @param param
|
||||
* @return
|
||||
*/
|
||||
void feedDevQty(List<JSONObject> param);
|
||||
|
||||
/**
|
||||
* ACS给WMS反馈设备状态状态
|
||||
@@ -49,6 +68,13 @@ public interface AcsToWmsService {
|
||||
*/
|
||||
Map<String, Object> feedDeviceStatusType(String string);
|
||||
|
||||
/**
|
||||
* acs反馈缓存线载具对应关系
|
||||
* 缓存线变化时候全部反馈
|
||||
* @param param:{""cacheline_code":"xxx","param":"01_zj001,02_zj002,...""}
|
||||
*/
|
||||
void feedcachelineVe(JSONObject param);
|
||||
|
||||
/**
|
||||
* ACS给WMS反馈订单实时数量
|
||||
* @param string
|
||||
|
||||
@@ -9,6 +9,7 @@ import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.common.anno.Log;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.enums.AcsTaskEnum;
|
||||
@@ -16,24 +17,33 @@ import org.nl.common.utils.MapOf;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.modules.wql.core.bean.WQLObject;
|
||||
import org.nl.wms.ext.acs.service.AcsToWmsService;
|
||||
import org.nl.wms.pda.service.CacheLineHandService;
|
||||
import org.nl.wms.sch.manage.TaskStatusEnum;
|
||||
import org.nl.wms.sch.service.TaskService;
|
||||
import org.nl.wms.sch.service.dto.TaskDto;
|
||||
|
||||
import org.nl.wms.ext.acs.service.AcsToWmsService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
private final TaskService taskService;
|
||||
private final AgvInstService agvInstService;
|
||||
public class AcsToWmsServiceImpl implements AcsToWmsService{
|
||||
|
||||
|
||||
@Autowired
|
||||
private TaskService taskService;
|
||||
@Autowired
|
||||
private CacheLineHandService cacheLineHandService;
|
||||
private final AgvInstService agvInstService;
|
||||
|
||||
@Override
|
||||
public Map<String, Object> apply(JSONObject jsonObject) {
|
||||
@@ -55,6 +65,34 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新缓存线的点位实时任务信息
|
||||
* ACS给WMS发送缓存线的实时任务ID
|
||||
* @param jsonObject position_code:缓存线点位编码 task_id:任务id
|
||||
*/
|
||||
@Override
|
||||
public JSONObject receiveTaskIdToCacheLine(JSONObject jsonObject) {
|
||||
JSONObject result = new JSONObject();
|
||||
HashMap<String,String> json = new HashMap<>(2);
|
||||
try {
|
||||
String taskId = jsonObject.getString("position_code");
|
||||
String positionCode = jsonObject.getString("task_id");
|
||||
//缓存线位置表
|
||||
WQLObject positionTab = WQLObject.getWQLObject("sch_cacheline_position");
|
||||
json.put("position_code", positionCode);
|
||||
json.put("task_id", taskId);
|
||||
//更新缓存线的点位实时任务信息
|
||||
positionTab.update(json);
|
||||
}
|
||||
catch(Exception e) {
|
||||
result.put("status", 400);
|
||||
result.put("message", e.getMessage());
|
||||
}
|
||||
result.put("status", HttpStatus.OK.value());
|
||||
result.put("message", "设备状态反馈成功");
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* task_uuid:任务标识
|
||||
* task_code:任务编码
|
||||
@@ -70,15 +108,15 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
JSONArray errArr = new JSONArray();
|
||||
for (int i = 0; i < array.size(); i++) {
|
||||
JSONObject row = array.getJSONObject(i);
|
||||
String task_uuid = row.getString("task_uuid");
|
||||
TaskDto taskDto = taskService.findById(task_uuid);
|
||||
String task_id = row.getString("task_id");
|
||||
TaskDto taskDto = taskService.findById(task_id);
|
||||
String processing_class = taskDto.getHandle_class();
|
||||
//1:执行中,2:完成 ,3:acs取消
|
||||
String acs_task_status = row.getString("task_status");
|
||||
String message = "";
|
||||
String status = "";
|
||||
if ("1".equals(acs_task_status)) {
|
||||
status = AcsTaskEnum.STATUS_RUNDING.getCode();
|
||||
status = AcsTaskEnum.STATUS_START.getCode();
|
||||
}
|
||||
if ("2".equals(acs_task_status)) {
|
||||
status = AcsTaskEnum.STATUS_FINISH.getCode();
|
||||
@@ -101,7 +139,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
log.info("任务状态更新失败:{}", message);
|
||||
|
||||
JSONObject json = new JSONObject();
|
||||
json.put("task_uuid", task_uuid);
|
||||
json.put("task_id", task_id);
|
||||
json.put("message", message);
|
||||
errArr.add(json);
|
||||
|
||||
@@ -111,7 +149,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
log.info("任务状态更新失败:{}", message);
|
||||
|
||||
JSONObject json = new JSONObject();
|
||||
json.put("task_uuid", task_uuid);
|
||||
json.put("task_id", task_id);
|
||||
json.put("message", message);
|
||||
errArr.add(json);
|
||||
|
||||
@@ -132,14 +170,13 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> orderFinish(String string) {
|
||||
public Map<String, Object> orderStatus(JSONObject orderJson) {
|
||||
JSONObject result = new JSONObject();
|
||||
try {
|
||||
JSONObject orderJson = JSONObject.parseObject(string);
|
||||
String ext_order_id = orderJson.getString("ext_order_id");
|
||||
String ext_order_id = orderJson.getString("workorder_id");
|
||||
// JSONArray array = JSONArray.parseArray(string);
|
||||
|
||||
WQLObject wo = WQLObject.getWQLObject("MPS_BD_ProduceShiftOrder");
|
||||
//TODO: 表未维护
|
||||
WQLObject wo = WQLObject.getWQLObject("PDM_produce_workOrder");
|
||||
JSONObject map = new JSONObject();
|
||||
map.put("produceorder_id", ext_order_id);
|
||||
map.put("order_status", "04");
|
||||
@@ -214,6 +251,37 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void feedDevQty(List<JSONObject> param) {
|
||||
WQLObject deviceTab = WQLObject.getWQLObject("pdm_bi_device");
|
||||
if (CollectionUtils.isEmpty(param)){
|
||||
return;
|
||||
}
|
||||
for (JSONObject item : param) {
|
||||
String deviceCode = item.getString("device_code");
|
||||
String qty = item.getString("qty");
|
||||
deviceTab.update(MapOf.of("deviceinstor_qty",qty),"device_code = '"+deviceCode+"'");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void feedcachelineVe(JSONObject param) {
|
||||
WQLObject positionTab = WQLObject.getWQLObject("sch_cacheline_position");
|
||||
//{""cacheline_code":"xxx","param":"01_zj001,02_zj002,...""}
|
||||
if (param == null|| StringUtils.isEmpty(param.getString("cacheline_code")) || StringUtils.isEmpty(param.getString("param"))){
|
||||
return;
|
||||
}
|
||||
String cachelineCode = param.getString("cacheline_code");
|
||||
String cacheVehicle = param.getString("param");
|
||||
String[] collect = cacheVehicle.split(",");
|
||||
for (String positionVehicle : collect) {
|
||||
String[] s = positionVehicle.split("_");
|
||||
positionTab.update(MapOf.of("position_code",s[0],"Vehicle_code",s[1]),"cacheline_code = '"+cachelineCode+"'");
|
||||
}
|
||||
//更新缓存线及缓存线载具表对应关系
|
||||
cacheLineHandService.cacheLineMaterSync(param.getString("cacheline_code"));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> feedOrderRealQty(String string) {
|
||||
JSONObject result = new JSONObject();
|
||||
|
||||
@@ -44,7 +44,7 @@ public class AgvInstService {
|
||||
WQLObject basePoint = WQLObject.getWQLObject("sch_base_point");
|
||||
WQLObject cacheLineSearch = WQLObject.getWQLObject("SCH_cacheLine_region_relation");
|
||||
try {
|
||||
String workorder = param.getString("workorder_code");
|
||||
String workorder = param.getString("workorder_code");//
|
||||
String point_code = param.getString("point_code");
|
||||
String quantity = param.getString("quantity");
|
||||
//1.PDM_produce_workOrder
|
||||
|
||||
@@ -3,31 +3,35 @@ package org.nl.wms.ext.acs.service.impl;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.nl.common.anno.Log;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.utils.AcsUtil;
|
||||
import org.nl.common.utils.MapOf;
|
||||
import org.nl.wms.ext.acs.service.WmsToAcsService;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
public class WmsToAcsServiceImpl implements WmsToAcsService {
|
||||
public class WmsToAcsServiceImpl implements WmsToAcsService{
|
||||
@Override
|
||||
public Map<String, Object> issueTaskToAcs(JSONArray arr) {
|
||||
JSONArray form = new JSONArray();
|
||||
for (Object o : arr) {
|
||||
JSONObject task = (JSONObject) o;
|
||||
JSONObject param = new JSONObject(MapOf.of("task_id", task.getString("task_id")
|
||||
, "task_type", task.getString("task_type")
|
||||
, "acs_task_type", task.getString("acs_task_type")
|
||||
, "start_point_code", task.getString("point_code1")
|
||||
, "next_point_code", task.getString("point_code2")
|
||||
, "return_point_code", task.getString("point_code3")
|
||||
, "task_group_id", task.getString("task_group_id")
|
||||
, "priority", task.getString("priority")
|
||||
, "task_group_id", task.getString("is_send")
|
||||
, "vehicle_code", task.getString("vehicle_code")
|
||||
, "agv_system_type", task.getString("agv_system_type")
|
||||
));
|
||||
form.add(param);
|
||||
}
|
||||
|
||||
@@ -220,9 +220,9 @@ public class ProduceWorkorderServiceImpl implements ProduceWorkorderService {
|
||||
if (param == null || param.size()==0){
|
||||
return;
|
||||
}
|
||||
String sql = param.stream().collect(Collectors.joining("','"));
|
||||
String currentUserId = SecurityUtils.getCurrentUserId();
|
||||
String nickName = SecurityUtils.getCurrentNickName();
|
||||
String sql = param.stream().collect(Collectors.joining("','"));
|
||||
WQLObject wo = WQLObject.getWQLObject("PDM_produce_workOrder");
|
||||
wo.update(MapOf.of("workorder_status", WorkerOrderEnum.SEND.getCode()
|
||||
,"update_id", currentUserId,"update_name"
|
||||
|
||||
@@ -14,7 +14,7 @@ public class CachelineVehileMaterialDto implements Serializable{
|
||||
/**
|
||||
* 载具库存标识
|
||||
*/
|
||||
private String vehmaterial_uuid;
|
||||
private String vehmaterial_id;
|
||||
/**
|
||||
* 缓存线位置编码
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package org.nl.wms.pda.rest;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
@@ -12,6 +13,7 @@ import org.nl.common.utils.api.CommonResult;
|
||||
import org.nl.common.utils.api.RestBusinessTemplate;
|
||||
import org.nl.common.utils.api.ResultCode;
|
||||
import org.nl.modules.common.exception.BizCoreException;
|
||||
import org.nl.wms.pda.dto.MaterialDto;
|
||||
import org.nl.wms.pda.service.CacheLineHandService;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
@@ -19,10 +21,12 @@ import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 海亮缓存线手持服务
|
||||
* 返回数据CommonResult,code,desc,result是因为原有对接文档给前端返回格式,要求保留,所以就包了一层。
|
||||
*
|
||||
* @author gbx
|
||||
* @since 2023/3/22
|
||||
@@ -39,47 +43,64 @@ public class CacheLineHandController{
|
||||
@PostMapping("/materialQuery")
|
||||
@Log("物料查询")
|
||||
@ApiOperation("物料查询")
|
||||
public CommonResult<Object> materialQuery(@RequestBody JSONObject form) {
|
||||
public CommonResult<List<MaterialDto>> materialQuery(@RequestBody JSONObject form) {
|
||||
String params = form.getString("search_bar");
|
||||
//任务类型和任务ID校验,instruct_uuid为前端参数命名,本来应为task_id
|
||||
if(StringUtils.isNotEmpty(params)) {
|
||||
//限制查询参数过短,模糊力度大
|
||||
int length = params.length();
|
||||
if(length < 3) {
|
||||
throw new BizCoreException("您输入的条件匹配的范围太大,请重新输入稍长一点的内容。");
|
||||
}
|
||||
}
|
||||
log.info("海亮缓存线手持服务 [查询物料] 接口被请求, 请求参数-{}", form);
|
||||
return RestBusinessTemplate.execute(() -> cacheLineHandService.materialQuery(form.getString("search_bar")));
|
||||
return RestBusinessTemplate.execute(() -> cacheLineHandService.materialQuery(params));
|
||||
}
|
||||
|
||||
@PostMapping("/queryMaterial")
|
||||
@Log("物料模糊查询")
|
||||
@ApiOperation("物料模糊查询")
|
||||
public CommonResult<JSONArray> queryMaterial(@RequestBody JSONObject form) {
|
||||
log.info("海亮缓存线手持服务 [查询物料] 接口被请求, 请求参数-{}", form);
|
||||
return RestBusinessTemplate.execute(() -> cacheLineHandService.queryMaterial(form.getString("search_bar")));
|
||||
}
|
||||
|
||||
@PostMapping("/semiMaterialSpecQuery")
|
||||
@Log("规格下拉框查询")
|
||||
@ApiOperation("规格下拉框查询")
|
||||
public CommonResult<Object> semiMaterialSpecQuery(@RequestBody JSONObject form) {
|
||||
public CommonResult<JSONArray> semiMaterialSpecQuery(@RequestBody JSONObject form) {
|
||||
log.info("海亮缓存线手持服务 [规格下拉框查询] 接口被请求, 请求参数-{}", form);
|
||||
return RestBusinessTemplate.execute(() -> cacheLineHandService.semiMaterialSpecQuery(form.getString("form")));
|
||||
return RestBusinessTemplate.execute(() -> cacheLineHandService.semiMaterialSpecQuery(form.getString("search_bar")));
|
||||
}
|
||||
|
||||
@PostMapping("/workProcedureQuery")
|
||||
@PostMapping("/workprocedureQuery")
|
||||
@Log("工序下拉框查询")
|
||||
@ApiOperation("工序下拉框查询")
|
||||
public CommonResult<Object> workProcedureQuery(@RequestBody JSONObject form) {
|
||||
public CommonResult<JSONArray> workProcedureQuery(@RequestBody JSONObject form) {
|
||||
log.info("海亮缓存线手持服务 [工序下拉框查询] 接口被请求, 请求参数-{}", form);
|
||||
return RestBusinessTemplate.execute(() -> cacheLineHandService.workProcedureQuery(form.getString("form")));
|
||||
return RestBusinessTemplate.execute(() -> cacheLineHandService.workProcedureQuery(form.getString("search_bar")));
|
||||
}
|
||||
|
||||
@PostMapping("/deviceQuery")
|
||||
@Log("缓存线设备下拉框查询")
|
||||
@ApiOperation("缓存线设备下拉框查询")
|
||||
public CommonResult<Object> deviceQuery(@RequestBody JSONObject form) {
|
||||
public CommonResult<JSONArray> deviceQuery(@RequestBody JSONObject form) {
|
||||
log.info("海亮缓存线手持服务 [缓存线设备下拉框查询] 接口被请求, 请求参数-{}", form);
|
||||
return RestBusinessTemplate.execute(() -> cacheLineHandService.deviceQuery(form.getString("form")));
|
||||
return RestBusinessTemplate.execute(() -> cacheLineHandService.deviceQuery(form.getString("search_bar")));
|
||||
}
|
||||
|
||||
@PostMapping("/instStatusQuery")
|
||||
@Log("指令状态下拉框查询")
|
||||
@ApiOperation("指令状态下拉框查询")
|
||||
public CommonResult<Object> instStatusQuery(@RequestBody JSONObject form) {
|
||||
public CommonResult<JSONArray> instStatusQuery(@RequestBody JSONObject form) {
|
||||
log.info("海亮缓存线手持服务 [指令状态下拉框查询] 接口被请求, 请求参数-{}", form);
|
||||
return RestBusinessTemplate.execute(() -> cacheLineHandService.instStatusQuery(form.getString("form")));
|
||||
return RestBusinessTemplate.execute(() -> cacheLineHandService.instStatusQuery(form.getString("search_bar")));
|
||||
}
|
||||
|
||||
@PostMapping("/instPageQuery")
|
||||
@Log("任务分页查询")
|
||||
@ApiOperation("任务分页数据")
|
||||
public CommonResult<Object> instPageQuery(@RequestBody Map param, Pageable page) {
|
||||
public CommonResult<Map<String,Object>> instPageQuery(@RequestBody Map<String,String> param, Pageable page) {
|
||||
log.info("海亮缓存线手持服务 [任务分页查询] 接口被请求, 请求参数-{}", param);
|
||||
return RestBusinessTemplate.execute(() -> {
|
||||
if(null == param) {
|
||||
@@ -92,22 +113,193 @@ public class CacheLineHandController{
|
||||
@PostMapping("/cacheLineMaterCheck")
|
||||
@Log("缓存线物料盘点")
|
||||
@ApiOperation("缓存线物料盘点")
|
||||
public CommonResult<Object> cacheLineMaterCheck(@RequestBody JSONObject param) {
|
||||
public CommonResult<JSONArray> cacheLineMaterCheck(@RequestBody JSONObject param) {
|
||||
log.info("海亮缓存线手持服务 [缓存线物料盘点] 接口被请求, 请求参数-{}", param);
|
||||
return RestBusinessTemplate.execute(cacheLineHandService::cacheLineMaterCheck);
|
||||
return null;
|
||||
}
|
||||
|
||||
@PostMapping("/instOperation")
|
||||
@Log("任务操作")
|
||||
@ApiOperation("任务操作")
|
||||
public CommonResult<Void> instOperation(@RequestBody JSONObject param) {
|
||||
public CommonResult<String> instOperation(@RequestBody JSONObject param) {
|
||||
log.info("海亮缓存线手持服务 [任务操作] 接口被请求, 请求参数-{}", param);
|
||||
return RestBusinessTemplate.execute(() -> {
|
||||
//任务类型和任务ID校验,instruct_uuid为前端参数命名,本来应为task_id
|
||||
if(StringUtils.isEmpty(param.getString("instruct_uuid")) || StringUtils.isEmpty(param.getString("opt_type"))) {
|
||||
throw new BizCoreException(ResultCode.MISS_PARAMETER);
|
||||
}
|
||||
cacheLineHandService.instOperation(param);
|
||||
return cacheLineHandService.instOperation(param);
|
||||
});
|
||||
}
|
||||
|
||||
@PostMapping("/cacheLineOutBoxExceptionQuery")
|
||||
@Log("缓存线出入箱异常-查询")
|
||||
@ApiOperation("缓存线出入箱异常-查询")
|
||||
public CommonResult<JSONArray> cacheLineOutBoxExceptionQuery(@RequestBody JSONObject param) {
|
||||
log.info("海亮缓存线手持服务 [缓存线出入箱异常-查询] 接口被请求, 请求参数-{}", param);
|
||||
//参数校验
|
||||
if(StringUtils.isEmpty(param.getString("wcsdevice_code")) || StringUtils.isEmpty(param.getString("position_code"))) {
|
||||
throw new BizCoreException(ResultCode.MISS_PARAMETER);
|
||||
}
|
||||
return RestBusinessTemplate.execute(() -> cacheLineHandService.cacheLineOutBoxExceptionQuery(param));
|
||||
}
|
||||
|
||||
@PostMapping("/cacheLineOutBoxExceptionConfirm")
|
||||
@Log("缓存线出入箱异常-确认")
|
||||
@ApiOperation("缓存线出入箱异常-确认")
|
||||
public CommonResult<String> cacheLineOutBoxExceptionConfirm(@RequestBody JSONObject param) {
|
||||
log.info("海亮缓存线手持服务 [缓存线出箱异常-确认] 接口被请求, 请求参数-{}", param);
|
||||
//参数校验
|
||||
if(StringUtils.isEmpty(param.getString("wcsdevice_code")) || StringUtils.isEmpty(param.getString("position_code")) || StringUtils.isEmpty(param.getString("vehicle_code"))) {
|
||||
throw new BizCoreException(ResultCode.MISS_PARAMETER);
|
||||
}
|
||||
return RestBusinessTemplate.execute(() -> cacheLineHandService.cacheLineOutBoxExceptionConfirm(param));
|
||||
}
|
||||
|
||||
@PostMapping("/cacheLineMaterInfoQuery")
|
||||
@Log("缓存线料箱条码查询料箱信息")
|
||||
@ApiOperation("缓存线料箱条码查询料箱信息")
|
||||
public CommonResult<JSONArray> cacheLineMaterInfoQuery(@RequestBody JSONObject param) {
|
||||
log.info("海亮缓存线手持服务 [缓存线料箱条码查询料箱信息] 接口被请求, 请求参数-{}", param);
|
||||
return RestBusinessTemplate.execute(() -> cacheLineHandService.cacheLineMaterInfoQuery(param));
|
||||
}
|
||||
|
||||
@PostMapping("/inOutEmptyBox")
|
||||
@Log("空箱初始化--出入空箱")
|
||||
@ApiOperation("空箱初始化--出入空箱")
|
||||
public CommonResult<String> inOutEmptyBox(@RequestBody JSONObject param) {
|
||||
log.info("海亮缓存线手持服务 [空箱初始化--出入空箱] 接口被请求, 请求参数-{}", param);
|
||||
//参数校验
|
||||
if(StringUtils.isEmpty(param.getString("inOut_type")) || StringUtils.isEmpty(param.getString("wcsdevice_code")) || StringUtils.isEmpty(param.getString("vehicle_code"))) {
|
||||
throw new BizCoreException(ResultCode.MISS_PARAMETER);
|
||||
}
|
||||
return RestBusinessTemplate.execute(() -> cacheLineHandService.inOutEmptyBox(param));
|
||||
}
|
||||
|
||||
@PostMapping("/inOutExceptionInstQuery")
|
||||
@Log("缓存线出入箱异常指令查询")
|
||||
@ApiOperation("缓存线出入箱异常指令查询")
|
||||
public CommonResult<JSONArray> inOutExceptionInstQuery(@RequestBody JSONObject param) {
|
||||
log.info("海亮缓存线手持服务 [缓存线出入箱异常指令查询] 接口被·请求, 请求参数-{}", param);
|
||||
return RestBusinessTemplate.execute(() -> cacheLineHandService.inOutExceptionInstQuery(param));
|
||||
}
|
||||
|
||||
@PostMapping("/inOutExceptionInstConfirm")
|
||||
@Log("缓存线出入箱异常指令确认")
|
||||
@ApiOperation("缓存线出入箱异常指令确认")
|
||||
public CommonResult<String> inOutExceptionInstConfirm(@RequestBody JSONObject param) {
|
||||
log.info("海亮缓存线手持服务 [缓存线出入箱异常指令确认] 接口被请求, 请求参数-{}", param);
|
||||
//参数校验
|
||||
if(StringUtils.isEmpty(param.getString("instruct_uuid")) || StringUtils.isEmpty(param.getString("inOut_type")) || StringUtils.isEmpty(param.getString("wcsdevice_code")) || StringUtils.isEmpty(param.getString("vehicle_code"))) {
|
||||
throw new BizCoreException(ResultCode.MISS_PARAMETER);
|
||||
}
|
||||
return RestBusinessTemplate.execute(() -> cacheLineHandService.inOutExceptionInstConfirm(param));
|
||||
}
|
||||
|
||||
@PostMapping("/setfullBox")
|
||||
@Log("设置满框")
|
||||
@ApiOperation("设置满框")
|
||||
public CommonResult<Void> setfullBox(@RequestBody JSONObject param) {
|
||||
log.info("海亮缓存线手持服务 [设置满框] 接口被请求, 请求参数-{}", param);
|
||||
return RestBusinessTemplate.execute(() -> cacheLineHandService.setfullBox(param));
|
||||
}
|
||||
|
||||
@PostMapping("/setEmptyBox")
|
||||
@Log("设置空框")
|
||||
@ApiOperation("设置空框")
|
||||
public CommonResult<Void> setEmptyBox(@RequestBody JSONObject param) {
|
||||
log.info("海亮缓存线手持服务 [设置空框] 接口被请求, 请求参数-{}", param);
|
||||
return RestBusinessTemplate.execute(() -> cacheLineHandService.setEmptyBox(param));
|
||||
}
|
||||
|
||||
@PostMapping("/deleteBox")
|
||||
@Log("删除箱子")
|
||||
@ApiOperation("删除箱子")
|
||||
public CommonResult<Void> deleteBox(@RequestBody JSONObject param) {
|
||||
log.info("海亮缓存线手持服务 [设置空框] 接口被请求, 请求参数-{}", param);
|
||||
return RestBusinessTemplate.execute(() -> cacheLineHandService.deleteBox(param));
|
||||
}
|
||||
|
||||
@PostMapping("/agvInBoxExceptionQuery")
|
||||
@Log("AGV入箱异常-查询")
|
||||
@ApiOperation("AGV入箱异常-查询")
|
||||
public CommonResult<JSONArray> agvInBoxExceptionQuery(@RequestBody JSONObject param) {
|
||||
log.info("海亮缓存线手持服务 [AGV入箱异常-查询] 接口被请求, 请求参数-{}", param);
|
||||
return RestBusinessTemplate.execute(() -> cacheLineHandService.agvInBoxExceptionQuery(param));
|
||||
}
|
||||
|
||||
@PostMapping("/agvInBoxExceptionConfirm")
|
||||
@Log("AGV入箱异常-确认")
|
||||
@ApiOperation("AGV入箱异常-确认")
|
||||
public CommonResult<Void> agvInBoxExceptionConfirm(@RequestBody JSONObject param) {
|
||||
log.info("海亮缓存线手持服务 [AGV入箱异常-确认] 接口被请求, 请求参数-{}", param);
|
||||
return RestBusinessTemplate.execute(() -> cacheLineHandService.agvInBoxExceptionConfirm(param));
|
||||
}
|
||||
|
||||
@PostMapping("/agvOutBoxExceptionQuery")
|
||||
@Log("AGV出箱异常-查询")
|
||||
@ApiOperation("AGV出箱异常-查询")
|
||||
public CommonResult<JSONArray> agvOutBoxExceptionQuery(@RequestBody JSONObject param) {
|
||||
log.info("海亮缓存线手持服务 [AGV出箱异常-查询] 接口被请求, 请求参数-{}", param);
|
||||
return RestBusinessTemplate.execute(() -> cacheLineHandService.agvOutBoxExceptionQuery(param));
|
||||
}
|
||||
|
||||
@PostMapping("/agvOutBoxExceptionConfirm")
|
||||
@Log("AGV出箱异常-确认")
|
||||
@ApiOperation("AGV出箱异常-确认")
|
||||
public CommonResult<Void> agvOutBoxExceptionConfirm(@RequestBody JSONObject param) {
|
||||
log.info("海亮缓存线手持服务 [AGV出箱异常-确认] 接口被请求, 请求参数-{}", param);
|
||||
return RestBusinessTemplate.execute(() -> cacheLineHandService.agvOutBoxExceptionConfirm(param));
|
||||
}
|
||||
|
||||
@PostMapping("/setBlankPos")
|
||||
@Log("设置缓存线货位为空位置")
|
||||
@ApiOperation("设置缓存线货位为空位置")
|
||||
public CommonResult<Void> setBlankPos(@RequestBody JSONObject param) {
|
||||
log.info("海亮缓存线手持服务 [设置缓存线货位为空位置] 接口被请求, 请求参数-{}", param);
|
||||
return RestBusinessTemplate.execute(() -> cacheLineHandService.setBlankPos(param));
|
||||
}
|
||||
|
||||
@PostMapping("/cacheLineExcepOpt")
|
||||
@Log("缓存线异常处理")
|
||||
@ApiOperation("缓存线异常处理")
|
||||
public CommonResult<String> cacheLineExcepOpt(@RequestBody JSONObject param) {
|
||||
log.info("海亮缓存线手持服务 [缓存线异常处理] 接口被请求, 请求参数-{}", param);
|
||||
//参数校验
|
||||
if(StringUtils.isEmpty(param.getString("wcsdevice_code")) || StringUtils.isEmpty(param.getString("opt_type"))) {
|
||||
throw new BizCoreException(ResultCode.MISS_PARAMETER);
|
||||
}
|
||||
return RestBusinessTemplate.execute(() -> cacheLineHandService.cacheLineExcepOpt(param));
|
||||
}
|
||||
|
||||
@PostMapping("/pourMaterial")
|
||||
@Log("倒料操作")
|
||||
@ApiOperation("倒料操作")
|
||||
public CommonResult<Void> pourMaterial(@RequestBody JSONObject param) {
|
||||
log.info("海亮缓存线手持服务 [倒料操作] 接口被请求, 请求参数-{}", param);
|
||||
return RestBusinessTemplate.execute(() -> cacheLineHandService.pourMaterial(param));
|
||||
}
|
||||
|
||||
@PostMapping("/getCacheLine")
|
||||
@Log("缓存线下拉框")
|
||||
@ApiOperation("缓存线下拉框")
|
||||
public CommonResult<JSONArray> getCacheLine(@RequestBody JSONObject param) {
|
||||
log.info("海亮缓存线手持服务 [缓存线盘点-缓存线下拉框] 接口被请求, 请求参数-{}", param);
|
||||
return RestBusinessTemplate.execute(() -> cacheLineHandService.getCacheLine(param));
|
||||
}
|
||||
|
||||
@PostMapping("/getProductArea")
|
||||
@Log("获取生产区域下拉框")
|
||||
@ApiOperation("获取生产区域下拉框")
|
||||
public CommonResult<JSONArray> getProductArea() {
|
||||
return RestBusinessTemplate.execute(cacheLineHandService::getProductArea);
|
||||
}
|
||||
|
||||
@PostMapping("/getCacheLineMaterialInfo")
|
||||
@Log("缓存线物料信息盘点")
|
||||
@ApiOperation("缓存线物料信息盘点")
|
||||
public CommonResult<JSONArray> getCacheLineMaterialInfo(@RequestBody JSONObject param) {
|
||||
log.info("海亮缓存线手持服务 [缓存线盘点-缓存线物料信息盘点] 接口被请求, 请求参数-{}", param);
|
||||
return RestBusinessTemplate.execute(() -> cacheLineHandService.getCacheLineMaterialInfo(param));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,8 +18,9 @@ public interface CacheLineHandService{
|
||||
/**
|
||||
* 下拉框列表查询
|
||||
*
|
||||
* @Param: form 查询条件
|
||||
* @return: 下拉框列表
|
||||
* @return 下拉框列表
|
||||
* @Param form 查询条件
|
||||
* @Param type 下拉框类型
|
||||
* @author gbx
|
||||
* @date 2023/3/22
|
||||
*/
|
||||
@@ -35,6 +36,16 @@ public interface CacheLineHandService{
|
||||
*/
|
||||
List<MaterialDto> materialQuery(String param);
|
||||
|
||||
/**
|
||||
* 物料模糊查询
|
||||
*
|
||||
* @Param: param 查询条件
|
||||
* @return: 物料列表
|
||||
* @author gbx
|
||||
* @date 2023/3/25
|
||||
*/
|
||||
JSONArray queryMaterial(String param);
|
||||
|
||||
/**
|
||||
* 规格下拉框查询
|
||||
*
|
||||
@@ -75,6 +86,53 @@ public interface CacheLineHandService{
|
||||
*/
|
||||
JSONArray instStatusQuery(String param);
|
||||
|
||||
/**
|
||||
* 任务分页查询
|
||||
*
|
||||
* @return 分页列表
|
||||
* @Param form 任务参数
|
||||
* @author gbx
|
||||
* @date 2023/3/23
|
||||
*/
|
||||
Map<String,Object> instPageQuery(Map<String,String> param, Pageable page);
|
||||
|
||||
/**
|
||||
* 缓存线位置关系同步
|
||||
*
|
||||
* @author gbx
|
||||
* @date 2023/3/24
|
||||
*/
|
||||
void cacheLineMaterSync(String cachelineCode);
|
||||
|
||||
/**
|
||||
* 缓存线料箱条码查询料箱信息
|
||||
*
|
||||
* @param param 请求参数
|
||||
* @return 返回结果
|
||||
* @author gbx
|
||||
* @date 2023/3/24
|
||||
*/
|
||||
JSONArray cacheLineMaterInfoQuery(JSONObject param);
|
||||
|
||||
/**
|
||||
* 缓存线出入箱异常指令查询
|
||||
*
|
||||
* @param param 查询参数 1 扫码异常-入箱扫码 2 扫码异常-出箱扫码
|
||||
* @return 返回结果集
|
||||
* @author gbx
|
||||
* @date 2023/3/24
|
||||
*/
|
||||
JSONArray inOutExceptionInstQuery(JSONObject param);
|
||||
|
||||
/**
|
||||
* 缓存线出入箱异常指令确认
|
||||
*
|
||||
* @param param 查询参数 1 扫码异常-入箱扫码 2 扫码异常-出箱扫码
|
||||
* @author gbx
|
||||
* @date 2023/3/24
|
||||
*/
|
||||
String inOutExceptionInstConfirm(JSONObject param);
|
||||
|
||||
/**
|
||||
* 任务操作
|
||||
*
|
||||
@@ -83,192 +141,148 @@ public interface CacheLineHandService{
|
||||
* @author gbx
|
||||
* @date 2023/3/23
|
||||
*/
|
||||
void instOperation(JSONObject param);
|
||||
String instOperation(JSONObject param);
|
||||
|
||||
/**
|
||||
* 任务分页查询
|
||||
*
|
||||
* @Param: form 任务参数
|
||||
* @return: 分页列表
|
||||
* @author gbx
|
||||
* @date 2023/3/23
|
||||
*/
|
||||
Map<String,Object> instPageQuery(Map<String,String> param, Pageable page);
|
||||
|
||||
/**
|
||||
* 缓存线盘点
|
||||
* 缓存线出箱异常-确认
|
||||
*
|
||||
* @param param 查询参数
|
||||
* @return String 处理结果
|
||||
* @author gbx
|
||||
* @date 2023/3/24
|
||||
*/
|
||||
Object cacheLineMaterCheck();
|
||||
|
||||
/**
|
||||
* 缓存线料箱条码查询料箱信息
|
||||
*
|
||||
* @param param
|
||||
* @return
|
||||
* @author gbx
|
||||
* @date 2023/3/24
|
||||
*/
|
||||
Object cachelineMaterInfoQuery(JSONObject param);
|
||||
String cacheLineOutBoxExceptionConfirm(JSONObject param);
|
||||
|
||||
/**
|
||||
* 空箱初始化--出入空箱
|
||||
*
|
||||
* @param param 查询参数 inOut_type:1 入空箱 2 出空箱 vehicle_code:载具编码
|
||||
* @return
|
||||
* @author gbx
|
||||
* @date 2023/3/24
|
||||
*/
|
||||
Object inOutEmptyBox(JSONObject param);
|
||||
String inOutEmptyBox(JSONObject param);
|
||||
|
||||
/**
|
||||
* 缓存线出入箱异常指令查询
|
||||
* 设置满框
|
||||
*
|
||||
* @param param 查询参数 1 扫码异常-入箱扫码 2 扫码异常-出箱扫码
|
||||
* @return
|
||||
* @param param 查询参数
|
||||
* @author gbx
|
||||
* @date 2023/3/24
|
||||
*/
|
||||
Object inOutExceptionInstQuery(JSONObject param);
|
||||
|
||||
/**
|
||||
* 缓存线出入箱异常指令确认
|
||||
*
|
||||
* @param param 查询参数 1 扫码异常-入箱扫码 2 扫码异常-出箱扫码
|
||||
* @return
|
||||
* @author gbx
|
||||
* @date 2023/3/24
|
||||
*/
|
||||
Object inOutExceptionInstConfirm(JSONObject param);
|
||||
|
||||
/**
|
||||
* 设置满匡
|
||||
*
|
||||
* @param param
|
||||
* @return
|
||||
* @author gbx
|
||||
* @date 2023/3/24
|
||||
*/
|
||||
Object setfullBox(JSONObject param);
|
||||
void setfullBox(JSONObject param);
|
||||
|
||||
/**
|
||||
* 设置空框
|
||||
*
|
||||
* @param param
|
||||
* @return
|
||||
* @param param 查询参数
|
||||
* @author gbx
|
||||
* @date 2023/3/24
|
||||
*/
|
||||
Object setEmptyBox(JSONObject param);
|
||||
void setEmptyBox(JSONObject param);
|
||||
|
||||
/**
|
||||
* AGV入箱异常-查询
|
||||
*
|
||||
* @param param
|
||||
* @return
|
||||
* @param param 查询参数
|
||||
* @return 返回结果集
|
||||
* @author gbx
|
||||
* @date 2023/3/24
|
||||
*/
|
||||
Object agvInBoxExceptionQuery(JSONObject param);
|
||||
JSONArray agvInBoxExceptionQuery(JSONObject param);
|
||||
|
||||
/**
|
||||
* AGV入箱异常-确认
|
||||
*
|
||||
* @param param
|
||||
* @return
|
||||
* @param param 查询参数
|
||||
* @author gbx
|
||||
* @date 2023/3/24
|
||||
*/
|
||||
Object agvInBoxExceptionConfirm(JSONObject param);
|
||||
void agvInBoxExceptionConfirm(JSONObject param);
|
||||
|
||||
/**
|
||||
* AGV出箱异常-查询
|
||||
*
|
||||
* @param param
|
||||
* @return
|
||||
* @param param 查询参数
|
||||
* @return 返回结果集
|
||||
* @author gbx
|
||||
* @date 2023/3/24
|
||||
*/
|
||||
Object agvOutBoxExceptionQuery(JSONObject param);
|
||||
JSONArray agvOutBoxExceptionQuery(JSONObject param);
|
||||
|
||||
/**
|
||||
* AGV出箱异常-确认
|
||||
*
|
||||
* @param param
|
||||
* @return
|
||||
* @param param 查询参数
|
||||
* @author gbx
|
||||
* @date 2023/3/24
|
||||
*/
|
||||
Object agvOutBoxExceptionConfirm(JSONObject param);
|
||||
|
||||
/**
|
||||
* 缓存线出箱异常-查询
|
||||
*
|
||||
* @param param
|
||||
* @return
|
||||
* @author gbx
|
||||
* @date 2023/3/24
|
||||
*/
|
||||
Object cacheLineOutBoxExceptionQuery(String account_uuid, JSONObject param);
|
||||
|
||||
/**
|
||||
* 缓存线出箱异常-确认
|
||||
*
|
||||
* @param param
|
||||
* @return
|
||||
* @author gbx
|
||||
* @date 2023/3/24
|
||||
*/
|
||||
Object cacheLineOutBoxExceptionConfirm(
|
||||
String account_uuid, JSONObject param);
|
||||
void agvOutBoxExceptionConfirm(JSONObject param);
|
||||
|
||||
/**
|
||||
* 设置缓存线货位为空位置
|
||||
*
|
||||
* @param param
|
||||
* @return
|
||||
* @param param 查询参数
|
||||
* @author gbx
|
||||
* @date 2023/3/24
|
||||
*/
|
||||
Object setBlankPos(JSONObject param);
|
||||
void setBlankPos(JSONObject param);
|
||||
|
||||
/**
|
||||
* @param param
|
||||
* @return
|
||||
* 缓存线出入箱异常-查询
|
||||
*
|
||||
* @param param 查询参数
|
||||
* @return 返回结果集
|
||||
* @author gbx
|
||||
* @date 2023/3/24
|
||||
*/
|
||||
Object cacheLineOutBoxExceptionQuery(
|
||||
JSONObject param);
|
||||
|
||||
/**
|
||||
* @param param
|
||||
* @return
|
||||
* @author gbx
|
||||
* @date 2023/3/24
|
||||
*/
|
||||
Object cacheLineOutBoxExceptionConfirm(
|
||||
JSONObject param);
|
||||
JSONArray cacheLineOutBoxExceptionQuery(JSONObject param);
|
||||
|
||||
/**
|
||||
* 缓存线异常处理
|
||||
*
|
||||
* @param param
|
||||
* @return
|
||||
* @param param 查询参数
|
||||
* @return String 处理结果
|
||||
* @author gbx
|
||||
* @date 2023/3/24
|
||||
*/
|
||||
Object cacheLineExcepOpt(JSONObject param);
|
||||
String cacheLineExcepOpt(JSONObject param);
|
||||
|
||||
/**
|
||||
* 倒料操作
|
||||
*
|
||||
* @param param
|
||||
* @return
|
||||
* @param param 查询参数
|
||||
* @author gbx
|
||||
* @date 2023/3/24
|
||||
*/
|
||||
Object pourMaterial(JSONObject param);
|
||||
void pourMaterial(JSONObject param);
|
||||
|
||||
/**
|
||||
* 缓存线下拉框
|
||||
*
|
||||
* @param param
|
||||
* @return
|
||||
*/
|
||||
JSONArray getCacheLine(JSONObject param);
|
||||
|
||||
/**
|
||||
* 缓存线物料信息盘点
|
||||
*
|
||||
* @param param
|
||||
* @return
|
||||
*/
|
||||
JSONArray getCacheLineMaterialInfo(JSONObject param);
|
||||
|
||||
/**
|
||||
* 获取生产区域下拉框
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
JSONArray getProductArea();
|
||||
|
||||
/**
|
||||
* 删除箱子
|
||||
*
|
||||
* @param param
|
||||
*/
|
||||
void deleteBox(JSONObject param);
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -15,6 +15,16 @@
|
||||
#################################################
|
||||
输入.flag TYPEAS s_string
|
||||
输入.condition TYPEAS s_string
|
||||
输入.cacheLine_code TYPEAS s_string
|
||||
输入.product_area TYPEAS s_string
|
||||
输入.status TYPEAS s_string
|
||||
输入.inst_num TYPEAS s_string
|
||||
输入.start_point TYPEAS s_string
|
||||
输入.end_point TYPEAS s_string
|
||||
输入.start_date TYPEAS s_string
|
||||
输入.end_date TYPEAS s_string
|
||||
输入.task_id TYPEAS s_string
|
||||
|
||||
|
||||
|
||||
[临时表]
|
||||
@@ -49,7 +59,7 @@
|
||||
WHERE
|
||||
is_delete = '0'
|
||||
OPTION 输入.condition <> ""
|
||||
material_spec LIKE CONCAT ( '%', 输入.condition, '%' )
|
||||
material_spec LIKE CONCAT ('%', 输入.condition, '%')
|
||||
ENDOPTION
|
||||
GROUP BY material_spec
|
||||
ENDSELECT
|
||||
@@ -59,7 +69,7 @@
|
||||
IF 输入.flag = "2"
|
||||
QUERY
|
||||
SELECT
|
||||
workprocedure_id value,
|
||||
workprocedure_id `value`,
|
||||
workprocedure_name text,
|
||||
workprocedure_code
|
||||
FROM
|
||||
@@ -67,8 +77,8 @@
|
||||
WHERE
|
||||
is_used = '1'
|
||||
OPTION 输入.condition <> ""
|
||||
workprocedure_code LIKE CONCAT ( '%', 输入.condition, '%' )
|
||||
OR workprocedure_name LIKE CONCAT ( '%', 输入.condition, '%' )
|
||||
workprocedure_code LIKE CONCAT ('%', 输入.condition, '%')
|
||||
OR workprocedure_name LIKE CONCAT ('%', 输入.condition, '%')
|
||||
ENDOPTION
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
@@ -77,14 +87,14 @@
|
||||
IF 输入.flag = "3"
|
||||
QUERY
|
||||
SELECT
|
||||
dict_id value,
|
||||
dict_id `value`,
|
||||
label text
|
||||
FROM
|
||||
sys_dict
|
||||
WHERE
|
||||
CODE = 'task_status'
|
||||
OPTION 输入.condition <> ""
|
||||
label LIKE CONCAT ( '%', 输入.condition, '%' )
|
||||
label LIKE CONCAT ('%', 输入.condition, '%')
|
||||
ENDOPTION
|
||||
ORDER BY dict_sort
|
||||
ENDSELECT
|
||||
@@ -94,14 +104,14 @@
|
||||
IF 输入.flag = "4"
|
||||
QUERY
|
||||
SELECT
|
||||
device_code value,
|
||||
device_code `value`,
|
||||
device_name text
|
||||
FROM
|
||||
`pdm_bi_device`
|
||||
WHERE
|
||||
is_delete = '0'
|
||||
OPTION 输入.condition <> ""
|
||||
device_name LIKE CONCAT ( '%', 输入.condition, '%' )
|
||||
device_name LIKE CONCAT ('%', 输入.condition, '%')
|
||||
ENDOPTION
|
||||
ORDER BY device_code DESC
|
||||
ENDSELECT
|
||||
@@ -111,22 +121,159 @@
|
||||
IF 输入.flag = "5"
|
||||
QUERY
|
||||
SELECT
|
||||
mb.material_id,
|
||||
mb.material_code,
|
||||
mb.material_spec,
|
||||
mb.material_name,
|
||||
class.class_name
|
||||
MB.MATERIAL_ID,
|
||||
MB.MATERIAL_CODE,
|
||||
MB.MATERIAL_SPEC,
|
||||
MB.MATERIAL_NAME,
|
||||
CLASS.CLASS_NAME
|
||||
FROM
|
||||
md_me_materialbase mb
|
||||
LEFT JOIN MD_PB_ClassStandard class ON class.class_id = mb.material_type_id
|
||||
MD_ME_MATERIALBASE MB
|
||||
LEFT JOIN MD_PB_CLASSSTANDARD CLASS ON CLASS.CLASS_ID = MB.MATERIAL_TYPE_ID
|
||||
WHERE
|
||||
mb.is_delete = '0'
|
||||
MB.IS_DELETE = '0'
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
|
||||
|
||||
|
||||
IF 输入.flag = "6"
|
||||
QUERY
|
||||
SELECT
|
||||
mb.material_id,
|
||||
mb.material_code,
|
||||
mb.material_spec,
|
||||
mb.material_name,
|
||||
class.class_name
|
||||
FROM
|
||||
md_me_materialbase mb
|
||||
LEFT JOIN MD_PB_ClassStandard class ON class.class_id = mb.material_type_id
|
||||
WHERE
|
||||
mb.is_delete = '0'
|
||||
ORDER BY
|
||||
mb.material_id desc
|
||||
LIMIT 1000
|
||||
OPTION 输入.condition <> ""
|
||||
mb.material_name LIKE CONCAT ('%', 输入.condition, '%')
|
||||
OR mb.material_code LIKE CONCAT ('%', 输入.condition, '%')
|
||||
OR mb.material_spec LIKE CONCAT ('%', 输入.condition, '%')
|
||||
OR class.class_name LIKE CONCAT ('%', 输入.condition, '%')
|
||||
ENDOPTION
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
IF 输入.flag = "7"
|
||||
QUERY
|
||||
SELECT
|
||||
p.point_code as value,
|
||||
p.point_name as text
|
||||
FROM
|
||||
sch_base_point p
|
||||
WHERE
|
||||
p.region_code = 'A1_HCX'
|
||||
OPTION 输入.product_area <> ""
|
||||
p.product_area = 输入.product_area
|
||||
ENDOPTION
|
||||
ORDER BY
|
||||
p.point_code
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
IF 输入.flag = "8"
|
||||
QUERY
|
||||
SELECT
|
||||
sch_cacheline_position.cacheLine_code as wcsdevice_code,
|
||||
sch_cacheline_position.position_code,
|
||||
sch_cacheline_position.position_name,
|
||||
sch_cacheline_position.vehicle_code,
|
||||
sch_cacheline_position.layer_num,
|
||||
sch_cacheline_position.positionorder_no as seat_order_num,
|
||||
sch_cacheline_vehilematerial.workprocedure_code,
|
||||
sch_cacheline_vehilematerial.workprocedure_name,
|
||||
sch_cacheline_vehilematerial.material_uuid,
|
||||
sch_cacheline_vehilematerial.material_code,
|
||||
sch_cacheline_vehilematerial.material_name,
|
||||
sch_cacheline_vehilematerial.material_spec,
|
||||
sch_cacheline_vehilematerial.quantity,
|
||||
sch_cacheline_vehilematerial.weight,
|
||||
IF(length(sch_cacheline_position.vehicle_code) > 0, IFNULL(sch_cacheline_vehilematerial.vehicle_status, 4), 5) AS vehicle_status
|
||||
FROM
|
||||
sch_cacheline_position
|
||||
LEFT JOIN sch_cacheline_vehilematerial ON sch_cacheline_position.vehicle_code = sch_cacheline_vehilematerial.vehicle_code
|
||||
WHERE
|
||||
1 = 1
|
||||
OPTION 输入.product_area <> ""
|
||||
sch_cacheline_position.product_area = 输入.product_area
|
||||
ENDOPTION
|
||||
OPTION 输入.cacheLine_code <> ""
|
||||
sch_cacheline_position.cacheLine_code = 输入.cacheLine_code
|
||||
ENDOPTION
|
||||
ORDER BY
|
||||
sch_cacheline_position.cacheLine_code
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
IF 输入.flag = "9"
|
||||
QUERY
|
||||
SELECT
|
||||
d.value,
|
||||
d.label as text
|
||||
FROM
|
||||
sys_dict d
|
||||
WHERE
|
||||
code = 'product_area'
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
|
||||
IF 输入.flag = "10"
|
||||
PAGEQUERY
|
||||
SELECT
|
||||
task.task_id as instruct_uuid,
|
||||
task.task_code as instructoperate_num,
|
||||
task.task_name as mes_no,
|
||||
task.vehicle_code as invehicle_code,
|
||||
task.vehicle_code2 as outvehicle_code,
|
||||
task.create_time,
|
||||
dict.label as status_name,
|
||||
mater.material_code as processmaterial_code,
|
||||
point1.point_name as startpoint_code,
|
||||
point2.point_name as nextpoint_code,
|
||||
point3.point_name as nextpoint_code2
|
||||
FROM
|
||||
sch_base_task task
|
||||
left join sch_base_point point1 on task.point_code1 = point1.point_code
|
||||
left join sch_base_point point2 on task.point_code2 = point2.point_code
|
||||
left join sch_base_point point3 on task.point_code3 = point3.point_code
|
||||
left join md_me_materialbase mater on task.material_id = mater.material_id
|
||||
left join sys_dict dict on dict.`value` = task.task_status
|
||||
and dict.`code` = 'task_status'
|
||||
WHERE task.is_delete = '0'
|
||||
OPTION 输入.status <> ""
|
||||
find_in_set(task.task_status,输入.status)
|
||||
ENDOPTION
|
||||
OPTION 输入.inst_num <> ""
|
||||
(task.task_code like CONCAT ('%', 输入.inst_num, '%'))
|
||||
ENDOPTION
|
||||
OPTION 输入.vehicle_code <> ""
|
||||
(task.vehicle_code like CONCAT ('%', 输入.vehicle_code, '%'))
|
||||
ENDOPTION
|
||||
OPTION 输入.start_point <> ""
|
||||
(task.point_code1 like CONCAT ('%', 输入.start_point, '%'))
|
||||
ENDOPTION
|
||||
OPTION 输入.task_id <> ""
|
||||
(task.task_id = 输入.task_id )
|
||||
ENDOPTION
|
||||
OPTION 输入.end_point <> ""
|
||||
(task.point_code2 like CONCAT ('%', 输入.end_point, '%'))
|
||||
ENDOPTION
|
||||
OPTION 输入.start_date <> ""
|
||||
task.create_time >= 输入.start_date
|
||||
ENDOPTION
|
||||
OPTION 输入.end_date <> ""
|
||||
task.create_time <= 输入.end_date
|
||||
ENDOPTION
|
||||
ENDSELECT
|
||||
ENDPAGEQUERY
|
||||
ENDIF
|
||||
|
||||
|
||||
|
||||
|
||||
Binary file not shown.
@@ -16,6 +16,8 @@ import lombok.extern.slf4j.Slf4j;
|
||||
*/
|
||||
@Slf4j
|
||||
public abstract class AbstractAcsTask {
|
||||
|
||||
|
||||
private static final String OPT_NAME = "acs回调#";
|
||||
|
||||
public abstract void updateTaskStatus(JSONObject taskObj,String status);
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package org.nl.wms.sch.rest;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@@ -79,5 +80,12 @@ public class RegionController {
|
||||
return new ResponseEntity<>(regionService.getPointTypeSelectByCode(region_code), HttpStatus.CREATED);
|
||||
}
|
||||
|
||||
@PostMapping("/getRegionSelect")
|
||||
@Log("获取区域下拉框")
|
||||
@ApiOperation("获取区域下拉框")
|
||||
public ResponseEntity<Object> getRegionSelect(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(regionService.getRegionSelect(whereJson), HttpStatus.CREATED);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package org.nl.wms.sch.service;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.nl.wms.sch.service.dto.RegionDto;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
|
||||
@@ -74,4 +75,11 @@ public interface RegionService {
|
||||
* @return
|
||||
*/
|
||||
JSONArray getPointTypeSelectByCode(String region_code);
|
||||
|
||||
/**
|
||||
* 获取区域类型下拉框
|
||||
* @param
|
||||
* @return JSONObject
|
||||
*/
|
||||
JSONObject getRegionSelect(JSONObject whereJson);
|
||||
}
|
||||
|
||||
@@ -245,7 +245,7 @@ public class PointServiceImpl implements PointService {
|
||||
@Override
|
||||
public JSONArray getPoint(Map wherJson) {
|
||||
String area_type = (String) wherJson.get("area_type");
|
||||
JSONArray point_rows = WQLObject.getWQLObject("sch_base_point").query("area_type IN (" + area_type + ") AND is_used = '1' AND is_delete = '0' order by point_code").getResultJSONArray(0);
|
||||
JSONArray point_rows = WQLObject.getWQLObject("sch_base_point").query("region_code = '"+area_type+"' and is_used = '1' and is_delete = '0'").getResultJSONArray(0);
|
||||
return point_rows;
|
||||
}
|
||||
|
||||
|
||||
@@ -166,4 +166,38 @@ public class RegionServiceImpl implements RegionService {
|
||||
return res;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject getRegionSelect(JSONObject whereJson) {
|
||||
String stor_id = whereJson.getString("stor_id");
|
||||
JSONArray prodArr = WQL.getWO("QSCH_REGION_01").addParam("flag", "2").addParam("value",stor_id).process().getResultJSONArray(0);
|
||||
|
||||
JSONArray new_ja = new JSONArray();
|
||||
for (int i = 0; i < prodArr.size(); i++) {
|
||||
JSONObject json = prodArr.getJSONObject(i);
|
||||
|
||||
JSONObject jsonMst = new JSONObject();
|
||||
jsonMst.put("value",json.getString("value"));
|
||||
jsonMst.put("label",json.getString("label"));
|
||||
|
||||
// 查询子类
|
||||
JSONArray DtlArr = WQL.getWO("QSCH_REGION_01").addParam("flag", "3").addParam("product_area", json.getString("value")).process().getResultJSONArray(0);
|
||||
if (DtlArr.size() > 0) {
|
||||
JSONArray sect_ja = new JSONArray();
|
||||
|
||||
for (int j = 0; j < DtlArr.size(); j++) {
|
||||
JSONObject json2 = DtlArr.getJSONObject(j);
|
||||
JSONObject sect_cas = new JSONObject();
|
||||
sect_cas.put("value", json2.getString("region_code"));
|
||||
sect_cas.put("label", json2.getString("region_name"));
|
||||
sect_ja.add(sect_cas);
|
||||
}
|
||||
jsonMst.put("children", sect_ja);
|
||||
}
|
||||
new_ja.add(jsonMst);
|
||||
}
|
||||
JSONObject jo = new JSONObject();
|
||||
jo.put("content", new_ja);
|
||||
return jo;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -17,9 +17,13 @@ import org.nl.modules.wql.core.bean.WQLObject;
|
||||
import org.nl.modules.wql.util.WqlUtil;
|
||||
import org.nl.wms.basedata.master.service.ClassstandardService;
|
||||
import org.nl.wms.basedata.master.service.dto.ClassstandardDto;
|
||||
import org.nl.wms.ext.acs.service.AcsToWmsService;
|
||||
import org.nl.wms.ext.acs.service.impl.AcsToWmsServiceImpl;
|
||||
import org.nl.wms.ext.acs.service.impl.WmsToAcsServiceImpl;
|
||||
import org.nl.wms.sch.manage.TaskStatusEnum;
|
||||
import org.nl.wms.sch.service.TaskService;
|
||||
import org.nl.wms.sch.service.dto.TaskDto;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@@ -36,11 +40,13 @@ import java.util.Map;
|
||||
* @date 2021-08-19
|
||||
**/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
public class TaskServiceImpl implements TaskService {
|
||||
|
||||
private final ClassstandardService classstandardService;
|
||||
@Autowired
|
||||
private ClassstandardService classstandardService;
|
||||
@Autowired
|
||||
private AcsToWmsService acsToWmsService;
|
||||
|
||||
@Override
|
||||
public Map<String, Object> queryAll(Map form, Pageable page) {
|
||||
@@ -176,55 +182,35 @@ public class TaskServiceImpl implements TaskService {
|
||||
|
||||
@Override
|
||||
public void operation(Map<String, Object> map) {
|
||||
WmsToAcsServiceImpl wms = new WmsToAcsServiceImpl();
|
||||
String task_id = MapUtil.getStr(map, "task_id");
|
||||
String method_name = MapUtil.getStr(map, "method_name");
|
||||
JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0);
|
||||
if (taskObj.getString("task_status").equals(TaskStatusEnum.FINISHED.getCode())) throw new BadRequestException("任务已完成!");
|
||||
// 任务处理类
|
||||
String processing_class = taskObj.getString("handle_class");
|
||||
String message = "";
|
||||
// 根据任务类型获取对应的任务操作类
|
||||
try {
|
||||
Class<?> clz = Class.forName(processing_class);
|
||||
Object obj = clz.newInstance();
|
||||
// 调用每个任务类的method_name()强制结束方法
|
||||
Method m;
|
||||
JSONObject result;
|
||||
if (method_name.equals("immediateNotifyAcs")) { // 立即下发不需要参数
|
||||
m = obj.getClass().getMethod(method_name);
|
||||
result = (JSONObject) m.invoke(obj);
|
||||
} else {
|
||||
m = obj.getClass().getMethod(method_name, String.class);
|
||||
result = (JSONObject) m.invoke(obj, task_id);
|
||||
}
|
||||
if (ObjectUtil.isEmpty(result)) return;
|
||||
JSONArray arr = result.getJSONArray("errArr");
|
||||
WQLObject wo = WQLObject.getWQLObject("sch_base_task");
|
||||
if (ObjectUtil.isNotEmpty(arr)) {
|
||||
for (int i = 0; i < arr.size(); i++) {
|
||||
JSONObject json = arr.getJSONObject(i);
|
||||
JSONObject param = new JSONObject();
|
||||
param.put("task_id", json.getString("task_id"));
|
||||
param.put("remark", json.getString("message"));
|
||||
wo.update(param);
|
||||
}
|
||||
throw new BadRequestException("任务操作失败!");
|
||||
} else {
|
||||
JSONObject param = new JSONObject();
|
||||
param.put("task_id", task_id);
|
||||
param.put("remark", "操作成功");
|
||||
wo.update(param);
|
||||
}
|
||||
} catch (InvocationTargetException e) {
|
||||
if (ObjectUtil.isNull(e.getTargetException().getMessage())) {
|
||||
message = e.getTargetException().toString();
|
||||
} else {
|
||||
message = e.getTargetException().getMessage();
|
||||
}
|
||||
throw new BadRequestException(message);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
throw new BadRequestException("任务操作失败!");
|
||||
|
||||
switch (method_name) { // forceFinish, cancel
|
||||
case "immediateNotifyAcs":
|
||||
JSONArray array = new JSONArray();
|
||||
array.add(taskObj);
|
||||
wms.issueTaskToAcs(array);
|
||||
break;
|
||||
case "forceFinish":
|
||||
JSONArray finish = new JSONArray();
|
||||
JSONObject res = new JSONObject();
|
||||
res.put("task_id", task_id);
|
||||
res.put("task_status", "2");
|
||||
finish.add(res);
|
||||
acsToWmsService.receiveTaskStatusAcs(JSON.toJSONString(finish));
|
||||
break;
|
||||
case "cancel":
|
||||
JSONArray cancel = new JSONArray();
|
||||
JSONObject res2 = new JSONObject();
|
||||
res2.put("task_id", task_id);
|
||||
res2.put("task_status", "1");
|
||||
cancel.add(res2);
|
||||
acsToWmsService.receiveTaskStatusAcs(JSON.toJSONString(cancel));
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ import org.nl.modules.system.util.CodeUtil;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.modules.wql.core.bean.WQLObject;
|
||||
import org.nl.wms.sch.manage.AbstractAcsTask;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
|
||||
import java.util.HashMap;
|
||||
@@ -24,6 +24,7 @@ import java.util.Map;
|
||||
* 专机任务
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class SpeMachineryTask extends AbstractAcsTask {
|
||||
private final Map<String,SpeStatusHandler > SpeHandles= new HashMap<>();
|
||||
private static String OPT_NAME = "ACS回调# ";
|
||||
@@ -52,8 +53,8 @@ public class SpeMachineryTask extends AbstractAcsTask {
|
||||
|
||||
@Override
|
||||
public String createTask(JSONObject form) {
|
||||
String start_point_code = form.getString("start_point_code");
|
||||
String next_point_code = form.getString("next_point_code");
|
||||
String start_point_code = form.getString("point_code1");
|
||||
String next_point_code = form.getString("point_code2");
|
||||
String vehicle_code = form.getString("vehicle_code");
|
||||
String type = form.getString("type");
|
||||
if (StrUtil.isEmpty(start_point_code)) {
|
||||
@@ -67,7 +68,6 @@ public class SpeMachineryTask extends AbstractAcsTask {
|
||||
}
|
||||
String taskdtl_id = IdUtil.getSnowflake(1, 1).nextId() + "";
|
||||
JSONObject task = new JSONObject();
|
||||
task.put("taskdtl_id", taskdtl_id);
|
||||
task.put("task_id", taskdtl_id);
|
||||
task.put("task_code", CodeUtil.getNewCode("TASK_CODE"));
|
||||
task.put("task_type", type);
|
||||
@@ -116,8 +116,6 @@ public class SpeMachineryTask extends AbstractAcsTask {
|
||||
case STATUS_START:
|
||||
taskTable.update(MapOf.of("task_status",StatusEnum.TASK_RUNNING.getCode(),"update_name","acs","update_time", DateUtil.now()),"task_id = '"+task.getString("task_id")+"'");
|
||||
break;
|
||||
case STATUS_RUNDING:
|
||||
break;
|
||||
case STATUS_FINISH:
|
||||
taskTable.update(MapOf.of("task_status",StatusEnum.TASK_FINISH.getCode(),"update_name","acs","update_time", DateUtil.now()),"task_id = '"+task.getString("task_id")+"'");
|
||||
//到专机:更新设备上料位物料数量
|
||||
@@ -146,8 +144,6 @@ public class SpeMachineryTask extends AbstractAcsTask {
|
||||
switch (status){
|
||||
case STATUS_START:
|
||||
taskTable.update(MapOf.of("task_status",StatusEnum.TASK_RUNNING.getCode(),"update_name","acs","update_time", DateUtil.now()),"task_id = '"+task.getString("task_id")+"'");
|
||||
break;
|
||||
case STATUS_RUNDING:
|
||||
cacheVehTable.delete("vehicle_code = '" + outboxtxm + "'");
|
||||
break;
|
||||
case STATUS_FINISH:
|
||||
|
||||
@@ -38,13 +38,14 @@ public class TaskScheduleService {
|
||||
private ReentrantLock lock = new ReentrantLock();
|
||||
private final WmsToAcsService wmsToAcsService;
|
||||
|
||||
@Scheduled(cron = "0/10 * * * * ?")
|
||||
@Scheduled(cron = "0/30 * * * * ?")
|
||||
public void taskPublish(){
|
||||
boolean islock = lock.tryLock();
|
||||
try {
|
||||
if (islock){
|
||||
WQLObject taskTable = WQLObject.getWQLObject("sch_base_task");
|
||||
JSONArray all = taskTable.query("task_type < '" + StatusEnum.TASK_PUBLISH + "'").getResultJSONArray(0);
|
||||
//查询所有自动下发的任务
|
||||
JSONArray all = taskTable.query("is_auto_issue = '1' and task_type < '" + StatusEnum.TASK_PUBLISH + "'").getResultJSONArray(0);
|
||||
//分区域:不同区域调用不同acs接口
|
||||
log.info("TaskScheduleService#taskPublish all_task:{}",all.size());
|
||||
Map<String, List<Object>> areaCollent = all.stream().collect(Collectors.groupingBy(o -> ((JSONObject) o).getString("product_area")));
|
||||
@@ -65,8 +66,10 @@ public class TaskScheduleService {
|
||||
String taskGroupId = IdUtil.getStringId();
|
||||
JSONObject task = (JSONObject) o;
|
||||
String taskId = task.getString("task_id");
|
||||
task.put("is_send","1");
|
||||
if (taskGroupMap.get(taskId) != null){
|
||||
task.put("task_group_id",taskGroupMap.get(taskId));
|
||||
task.put("is_send","0");
|
||||
continue;
|
||||
}
|
||||
String start = task.getString("point_code1");
|
||||
@@ -96,10 +99,15 @@ public class TaskScheduleService {
|
||||
String waitingTaskId = waitingTask.stream().map(a -> ((JSONObject) a).getString("task_id")).collect(Collectors.joining(","));
|
||||
String MergeId = Merge.stream().map(a -> ((JSONObject) a).getString("task_id")).collect(Collectors.joining(","));
|
||||
log.info("TaskScheduleService#taskPublish notMerge:{},waitingTask:{},merge:{}",notMergeID,waitingTaskId,MergeId);
|
||||
//下发任务:一次暂时下发十条:同一个区域任务不超过10条
|
||||
JSONArray form = new JSONArray();
|
||||
Merge.addAll(notMerge);
|
||||
JSONArray jsonArray = new JSONArray(Merge);
|
||||
//批量更新任务状态,is_send,task_group_id
|
||||
for (Object task : Merge) {
|
||||
JSONObject task1 = (JSONObject) task;
|
||||
task1.put("task_type",StatusEnum.TASK_PUBLISH.getCode());
|
||||
taskTable.update(task1,"task_id = '"+task1.getString("task_id")+"'");
|
||||
}
|
||||
//缓存线任务待确认是否生成多个
|
||||
wmsToAcsService.issueTaskToAcs(jsonArray);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
输入.flag TYPEAS s_string
|
||||
输入.region_code TYPEAS s_string
|
||||
输入.product_area TYPEAS s_string
|
||||
输入.value TYPEAS s_string
|
||||
|
||||
[临时表]
|
||||
--这边列出来的临时表就会在运行期动态创建
|
||||
@@ -57,3 +58,35 @@
|
||||
ENDSELECT
|
||||
ENDPAGEQUERY
|
||||
ENDIF
|
||||
|
||||
IF 输入.flag = "2"
|
||||
QUERY
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
sys_dict
|
||||
WHERE
|
||||
code = 'product_area'
|
||||
|
||||
OPTION 输入.value <> ""
|
||||
value = 输入.value
|
||||
ENDOPTION
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
|
||||
IF 输入.flag = "3"
|
||||
QUERY
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
sch_base_region
|
||||
WHERE
|
||||
1=1
|
||||
|
||||
OPTION 输入.product_area <> ""
|
||||
product_area = 输入.product_area
|
||||
ENDOPTION
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
@@ -61,7 +61,7 @@
|
||||
FROM
|
||||
sch_base_task task
|
||||
LEFT JOIN md_pb_classstandard md ON task.task_type = md.class_code
|
||||
LEFT JOIN sys_dict_detail dict ON dict.`value` = task.task_status AND dict.`name` = 'task_status'
|
||||
LEFT JOIN SYS_DICT DICT ON DICT.`VALUE` = TASK.TASK_STATUS AND DICT.`CODE` = 'TASK_STATUS'
|
||||
LEFT JOIN SCH_BASE_Region reg1 ON reg1.region_code = (
|
||||
SELECT p1.region_code FROM SCH_BASE_Point p1 WHERE p1.point_code = task.point_code1
|
||||
)
|
||||
|
||||
Binary file not shown.
@@ -0,0 +1,204 @@
|
||||
package org.nl.wms.st.in.rest;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
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.st.in.service.ProductInService;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@Api(tags = "成品入库")
|
||||
@RequestMapping("/api/in/productIn")
|
||||
@Slf4j
|
||||
public class ProductInController {
|
||||
|
||||
private final ProductInService productInService;
|
||||
|
||||
@GetMapping
|
||||
@Log("查询入库单据")
|
||||
@ApiOperation("查询入库单据")
|
||||
public ResponseEntity<Object> query(@RequestParam Map whereJson, Pageable page) {
|
||||
return new ResponseEntity<>(productInService.pageQuery(whereJson, page), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@Log("删除出入库单")
|
||||
@ApiOperation("删除出入库单")
|
||||
@DeleteMapping
|
||||
public ResponseEntity<Object> delete(@RequestBody Long[] ids) {
|
||||
productInService.deleteAll(ids);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
@GetMapping("/getBillDtl")
|
||||
@Log("查询入库单来源")
|
||||
@ApiOperation("查询入库单来源")
|
||||
public ResponseEntity<Object> getBillDtl(@RequestParam Map whereJson, Pageable page) {
|
||||
return new ResponseEntity<>(productInService.getBillDtl(whereJson, page), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping()
|
||||
@Log("新增入库单")
|
||||
@ApiOperation("新增入库单")
|
||||
public ResponseEntity<Object> insertDtl(@RequestBody JSONObject whereJson) {
|
||||
productInService.insertDtl(whereJson);
|
||||
return new ResponseEntity<>(HttpStatus.CREATED);
|
||||
}
|
||||
|
||||
@PutMapping
|
||||
@Log("修改入库单")
|
||||
@ApiOperation("修改入库单")
|
||||
public ResponseEntity<Object> update(@RequestBody JSONObject whereJson) {
|
||||
productInService.update(whereJson);
|
||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||
}
|
||||
|
||||
@PostMapping("/queryStor")
|
||||
@Log("查询仓库")
|
||||
@ApiOperation("查询仓库")
|
||||
public ResponseEntity<Object> queryStor() {
|
||||
return new ResponseEntity<>(productInService.queryStor(), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/getIODtl")
|
||||
@Log("查询出入库单明细")
|
||||
@ApiOperation("查询出入库单明细")
|
||||
public ResponseEntity<Object> getIODtl(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(productInService.getIODtl(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/commit")
|
||||
@Log("出入单提交")
|
||||
@ApiOperation("出入单提交")
|
||||
public ResponseEntity<Object> commit(@RequestBody Map whereJson) {
|
||||
productInService.commit(whereJson);
|
||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||
}
|
||||
|
||||
@PostMapping("/getDisDtl")
|
||||
@Log("查询入库分配明细")
|
||||
@ApiOperation("查询入库分配明细")
|
||||
public ResponseEntity<Object> getDisDtl(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(productInService.getDisDtl(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/divStruct")
|
||||
@Log("分配货位")
|
||||
@ApiOperation("分配货位")
|
||||
public ResponseEntity<Object> divStruct(@RequestBody Map whereJson) {
|
||||
productInService.divStruct(whereJson);
|
||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||
}
|
||||
|
||||
@PostMapping("/unDivStruct")
|
||||
@Log("取消分配货位")
|
||||
@ApiOperation("取消分配货位")
|
||||
public ResponseEntity<Object> unDivStruct(@RequestBody Map whereJson) {
|
||||
productInService.unDivStruct(whereJson);
|
||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||
}
|
||||
|
||||
@PostMapping("/divPoint")
|
||||
@Log("设置起点")
|
||||
@ApiOperation("设置起点")
|
||||
public ResponseEntity<Object> divPoint(@RequestBody Map whereJson) {
|
||||
productInService.divPoint(whereJson);
|
||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||
}
|
||||
|
||||
@PostMapping("/queryTask")
|
||||
@Log("查询任务")
|
||||
@ApiOperation("查询任务")
|
||||
public ResponseEntity<Object> queryTask(@RequestBody Map whereJson) {
|
||||
return new ResponseEntity<>(productInService.queryTask(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/delDis")
|
||||
@Log("删除分配")
|
||||
@ApiOperation("删除分配")
|
||||
public ResponseEntity<Object> delDis(@RequestBody JSONObject whereJson) {
|
||||
productInService.delDis(whereJson);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/queryBoxMater")
|
||||
@Log("查询箱内子卷")
|
||||
@ApiOperation("查询箱内子卷")
|
||||
public ResponseEntity<Object> queryBoxMater(@RequestBody JSONArray whereJson) {
|
||||
|
||||
return new ResponseEntity<>(productInService.queryBoxMater(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/updateTask")
|
||||
@Log("变更任务")
|
||||
@ApiOperation("变更任务")
|
||||
public ResponseEntity<Object> updateTask(@RequestBody Map whereJson) {
|
||||
productInService.updateTask(whereJson);
|
||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||
}
|
||||
|
||||
@PostMapping("/delTask")
|
||||
@Log("删除任务")
|
||||
@ApiOperation("删除任务")
|
||||
public ResponseEntity<Object> delTask(@RequestBody Map whereJson) {
|
||||
productInService.delTask(whereJson);
|
||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||
}
|
||||
|
||||
@PostMapping("/reIssueTask")
|
||||
@Log("下发")
|
||||
@ApiOperation("下发")
|
||||
public ResponseEntity<Object> reIssueTask(@RequestBody Map whereJson) {
|
||||
productInService.reIssueTask(whereJson);
|
||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||
}
|
||||
|
||||
@PostMapping("/confirmTask")
|
||||
@Log("完成任务")
|
||||
@ApiOperation("完成任务")
|
||||
public ResponseEntity<Object> confirmTask(@RequestBody Map whereJson) {
|
||||
productInService.confirmTask(whereJson);
|
||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||
}
|
||||
|
||||
@PostMapping("/cancelTask")
|
||||
@Log("取消完成任务")
|
||||
@ApiOperation("取消完成任务")
|
||||
public ResponseEntity<Object> cancelTask(@RequestBody Map whereJson) {
|
||||
productInService.cancelTask(whereJson);
|
||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||
}
|
||||
|
||||
@PostMapping("/confirm")
|
||||
@Log("完成单据")
|
||||
@ApiOperation("完成单据")
|
||||
public ResponseEntity<Object> confirm(@RequestBody Map whereJson) {
|
||||
productInService.confirm(whereJson);
|
||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||
}
|
||||
|
||||
@PostMapping("/backConfirm")
|
||||
@Log("完成入库负单")
|
||||
@ApiOperation("完成入库负单")
|
||||
public ResponseEntity<Object> backConfirm(@RequestBody Map whereJson) {
|
||||
productInService.backConfirm(whereJson);
|
||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||
}
|
||||
|
||||
@PostMapping("/autoDis")
|
||||
@Log("自动分配")
|
||||
@ApiOperation("自动分配")
|
||||
public ResponseEntity<Object> autoDis(@RequestBody JSONObject whereJson) {
|
||||
productInService.autoDis(whereJson);
|
||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,91 @@
|
||||
package org.nl.wms.st.in.service;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public interface ProductInService {
|
||||
/**
|
||||
* 查询数据分页
|
||||
*
|
||||
* @param whereJson 条件
|
||||
* @param page 分页参数
|
||||
* @return Map<String, Object>
|
||||
*/
|
||||
Map<String, Object> pageQuery(Map whereJson, Pageable page);
|
||||
|
||||
Map<String, Object> getBillDtl(Map whereJson,Pageable page);
|
||||
|
||||
/**
|
||||
* 新增单据
|
||||
* @param whereJson /
|
||||
* @return iostorinv_id
|
||||
*/
|
||||
String insertDtl (JSONObject whereJson);
|
||||
|
||||
/**
|
||||
* 删除单据
|
||||
* @param ids /
|
||||
*/
|
||||
void deleteAll(Long[] ids);
|
||||
|
||||
void delDis(JSONObject whereJson);
|
||||
|
||||
JSONArray queryBoxMater(JSONArray rows);
|
||||
|
||||
/**
|
||||
* 修改单据
|
||||
* @param whereJson /
|
||||
*/
|
||||
void update(JSONObject whereJson);
|
||||
|
||||
void commit(Map whereJson);
|
||||
|
||||
/**
|
||||
* 查询出入库单明细
|
||||
* @param whereJson /
|
||||
* @return JSONArray
|
||||
*/
|
||||
JSONArray getIODtl(JSONObject whereJson);
|
||||
|
||||
void divStruct(Map whereJson);
|
||||
|
||||
void unDivStruct(Map whereJson);
|
||||
|
||||
void divPoint(Map whereJson);
|
||||
|
||||
void updateTask(Map whereJson);
|
||||
|
||||
void delTask(Map whereJson);
|
||||
|
||||
void reIssueTask(Map whereJson);
|
||||
|
||||
void confirmTask(Map whereJson);
|
||||
|
||||
void cancelTask(Map whereJson);
|
||||
|
||||
void confirm(Map whereJson);
|
||||
|
||||
void backConfirm(Map whereJson);
|
||||
|
||||
/**
|
||||
* 查询入库分配明细
|
||||
* @param whereJson /
|
||||
* @return JSONArray
|
||||
*/
|
||||
JSONArray getDisDtl(JSONObject whereJson);
|
||||
|
||||
JSONArray queryTask(Map whereJson);
|
||||
|
||||
JSONObject autoDis(JSONObject whereJson);
|
||||
|
||||
JSONObject autoDisMove(JSONObject whereJson);
|
||||
|
||||
/**
|
||||
* 查询仓库
|
||||
* @return JSONArray
|
||||
*/
|
||||
JSONArray queryStor();
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,134 @@
|
||||
[交易说明]
|
||||
交易名: 成品入库分页查询
|
||||
所属模块:
|
||||
功能简述:
|
||||
版权所有:
|
||||
表引用:
|
||||
版本经历:
|
||||
|
||||
[数据库]
|
||||
--指定数据库,为空采用默认值,默认为db.properties中列出的第一个库
|
||||
|
||||
[IO定义]
|
||||
#################################################
|
||||
## 表字段对应输入参数
|
||||
#################################################
|
||||
输入.flag TYPEAS s_string
|
||||
输入.stor_id TYPEAS s_string
|
||||
输入.begin_time TYPEAS s_string
|
||||
输入.end_time TYPEAS s_string
|
||||
输入.bill_status TYPEAS s_string
|
||||
输入.bill_type TYPEAS s_string
|
||||
输入.bill_code TYPEAS s_string
|
||||
输入.iostorinvdtl_id TYPEAS s_string
|
||||
|
||||
|
||||
[临时表]
|
||||
--这边列出来的临时表就会在运行期动态创建
|
||||
|
||||
[临时变量]
|
||||
--所有中间过程变量均可在此处定义
|
||||
|
||||
[业务过程]
|
||||
|
||||
##########################################
|
||||
# 1、输入输出检查 #
|
||||
##########################################
|
||||
|
||||
|
||||
##########################################
|
||||
# 2、主过程前处理 #
|
||||
##########################################
|
||||
|
||||
|
||||
##########################################
|
||||
# 3、业务主过程 #
|
||||
##########################################
|
||||
|
||||
IF 输入.flag = "1"
|
||||
PAGEQUERY
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
ST_IVT_IOStorInv
|
||||
WHERE
|
||||
io_type = '0'
|
||||
AND is_delete = '0'
|
||||
|
||||
OPTION 输入.stor_id <> ""
|
||||
stor_id = 输入.stor_id
|
||||
ENDOPTION
|
||||
|
||||
OPTION 输入.begin_time <> ""
|
||||
input_time <= 输入.begin_time
|
||||
ENDOPTION
|
||||
|
||||
OPTION 输入.end_time <> ""
|
||||
input_time >= 输入.end_time
|
||||
ENDOPTION
|
||||
|
||||
OPTION 输入.bill_status <> ""
|
||||
bill_status = 输入.bill_status
|
||||
ENDOPTION
|
||||
|
||||
OPTION 输入.bill_type <> ""
|
||||
bill_type = 输入.bill_type
|
||||
ENDOPTION
|
||||
|
||||
OPTION 输入.bill_code <> ""
|
||||
bill_code LIKE 输入.bill_code
|
||||
ENDOPTION
|
||||
|
||||
ENDSELECT
|
||||
ENDPAGEQUERY
|
||||
ENDIF
|
||||
|
||||
IF 输入.flag = "2"
|
||||
QUERY
|
||||
SELECT
|
||||
dtl.*,
|
||||
mater.material_code,
|
||||
mater.material_name,
|
||||
mater.material_spec
|
||||
FROM
|
||||
ST_IVT_IOStorInvDtl dtl
|
||||
LEFT JOIN ST_IVT_IOStorInv mst ON mst.iostorinv_id = dtl.iostorinv_id
|
||||
LEFT JOIN md_me_materialbase mater ON mater.material_id = dtl.material_id
|
||||
WHERE
|
||||
mst.io_type = '0'
|
||||
AND mst.is_delete = '0'
|
||||
|
||||
OPTION 输入.bill_code <> ""
|
||||
mst.bill_code = 输入.bill_code
|
||||
ENDOPTION
|
||||
|
||||
order by dtl.seq_no ASC
|
||||
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
|
||||
IF 输入.flag = "3"
|
||||
QUERY
|
||||
SELECT
|
||||
dis.*,
|
||||
mater.material_code,
|
||||
mater.material_name,
|
||||
mater.material_spec,
|
||||
point.point_code
|
||||
FROM
|
||||
ST_IVT_IOStorInvDis dis
|
||||
LEFT JOIN sch_base_point point ON point.point_id = dis.point_id
|
||||
LEFT JOIN md_me_materialbase mater ON mater.material_id = dis.material_id
|
||||
WHERE
|
||||
IFNULL(dis.task_id,'') = ''
|
||||
|
||||
OPTION 输入.iostorinvdtl_id <> ""
|
||||
dis.iostorinvdtl_id = 输入.iostorinvdtl_id
|
||||
ENDOPTION
|
||||
|
||||
order by dis.seq_no ASC
|
||||
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
@@ -73,6 +73,16 @@ spring:
|
||||
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:
|
||||
# 登录缓存
|
||||
|
||||
@@ -0,0 +1,201 @@
|
||||
server:
|
||||
port: 8011
|
||||
#配置数据源
|
||||
spring:
|
||||
data:
|
||||
elasticsearch:
|
||||
repositories:
|
||||
enabled: true
|
||||
client:
|
||||
reactive:
|
||||
#endpoints: 172.31.185.110:9200,172.31.154.9:9200 #内网
|
||||
# endpoints: 47.96.133.178:8200 #外网
|
||||
endpoints: http://47.96.133.178:8200 #外网
|
||||
elasticsearch:
|
||||
rest:
|
||||
#uris: 172.31.185.110:9200,172.31.154.9:9200 #内网
|
||||
# uris: 47.96.133.178:8200 #外网
|
||||
uris: http://47.96.133.178:8200 #外网
|
||||
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:localhost}:${DB_PORT:3306}/${DB_NAME:hl_one_mes}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false
|
||||
#url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.81.252}:${DB_PORT:3306}/${DB_NAME:hl_one_mes}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false
|
||||
username: ${DB_USER:shenhua}
|
||||
#password: ${DB_PWD:P@ssw0rd}
|
||||
#password: ${DB_PWD:root}
|
||||
#password: ${DB_PWD:Root.123456}
|
||||
password: ${DB_PWD:123456789}
|
||||
# 初始连接数
|
||||
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:
|
||||
|
||||
#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
|
||||
@@ -43,7 +43,7 @@ rsa:
|
||||
private_key: MIIBUwIBADANBgkqhkiG9w0BAQEFAASCAT0wggE5AgEAAkEA0vfvyTdGJkdbHkB8mp0f3FE0GYP3AYPaJF7jUd1M0XxFSE2ceK3k2kw20YvQ09NJKk+OMjWQl9WitG9pB6tSCQIDAQABAkA2SimBrWC2/wvauBuYqjCFwLvYiRYqZKThUS3MZlebXJiLB+Ue/gUifAAKIg1avttUZsHBHrop4qfJCwAI0+YRAiEA+W3NK/RaXtnRqmoUUkb59zsZUBLpvZgQPfj1MhyHDz0CIQDYhsAhPJ3mgS64NbUZmGWuuNKp5coY2GIj/zYDMJp6vQIgUueLFXv/eZ1ekgz2Oi67MNCk5jeTF2BurZqNLR3MSmUCIFT3Q6uHMtsB9Eha4u7hS31tj1UWE+D+ADzp59MGnoftAiBeHT7gDMuqeJHPL4b+kC+gzV4FGTfhR9q3tTbklZkD2A==
|
||||
logging:
|
||||
file:
|
||||
path: E:\logs\nlwms\
|
||||
path: D:\logs\nlwms\
|
||||
demo:
|
||||
monitor:
|
||||
server-url: https://www.demo-monitor.com
|
||||
|
||||
Reference in New Issue
Block a user