迦南新需求更新(手持、驱动同步产品信息)

This commit is contained in:
pangshenghao
2023-08-10 16:04:31 +08:00
parent b19777e7f0
commit 2c642ec8bb
26 changed files with 596 additions and 397 deletions

View File

@@ -67,7 +67,7 @@ public class TokenFilter extends GenericFilterBean {
HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
String token = resolveToken(httpServletRequest);
// 对于 Token 为空的不需要去查 Redis
if (StrUtil.isNotBlank(token)) {
if (StrUtil.isNotBlank(token)&&!"/api/pda/handlogin".equals(httpServletRequest.getServletPath())) {
OnlineUserDto onlineUserDto = null;
boolean cleanUserCache = false;
try {

View File

@@ -153,6 +153,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
WQLObject taskTab = WQLObject.getWQLObject("sch_base_task");// 空载具作业记录表
WQLObject regionTab = WQLObject.getWQLObject("ST_IVT_regionIO"); // 区域出入库表
WQLObject veQtyTab = WQLObject.getWQLObject("PDM_BI_vehicleQty"); // 托盘对应数量表
WQLObject ivtTab = WQLObject.getWQLObject("st_ivt_structivt"); // 仓位库存表
/*
@@ -165,6 +166,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
* 6.一楼空盘入库 (有载具号)
* 7.油漆线->输送线
* 8.豪凯自动线下料入库
* 9.同步混料区产品信息
*/
JSONObject resuft = new JSONObject();
try {
@@ -409,6 +411,19 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
} else {
throw new BadRequestException(jsonObject.getString("message"));
}
} else if (StrUtil.equals(type, "9")) {
//todo
String device_code=whereJson.getString("device_code");
JSONObject param = new JSONObject();
JSONObject jsonIvt = ivtTab.query("struct_code = '" + device_code + "'").uniqueResult(0);
jsonIvt.put("weight",whereJson.getString("weight"));
jsonIvt.put("product_code",whereJson.getString("product_code"));
jsonIvt.put("batch_code",whereJson.getString("batch_code"));
jsonIvt.put("product_specifications",whereJson.getString("product_specifications"));
jsonIvt.put("time",whereJson.getString("time"));
ivtTab.update(jsonIvt);
resuft.put("status", "200");
resuft.put("message", "");
}
} catch (Exception e) {
resuft.put("status", ((BadRequestException) e).getStatus());

View File

@@ -28,76 +28,96 @@ public class EmptyAndQtyServiceImpl implements EmptyAndQtyService {
public JSONObject confirm(JSONObject whereJSON) {
// 返回值
JSONObject resultJSON = new JSONObject();
// 参数校验
String pointId = whereJSON.getString("point_id");
if (StrUtil.isEmpty(pointId)) {
resultJSON.put("code", "0");
resultJSON.put("desc", "点位不能为空");
return resultJSON;
}
String pointStatus = whereJSON.getString("point_status");
if (StrUtil.isEmpty(pointStatus)) {
resultJSON.put("code", "0");
resultJSON.put("desc", "点位状态不能为空");
return resultJSON;
}
String qualityScode = whereJSON.getString("quality_scode");
if (StrUtil.equals(pointStatus, "03") && StrUtil.isEmpty(qualityScode)) {
resultJSON.put("code", "0");
resultJSON.put("desc", "质量不能为空");
return resultJSON;
}
// 查询点位
WQLObject pointTable = WQLObject.getWQLObject("sch_base_point");
JSONObject point = pointTable
.query("point_id = " + pointId)
.uniqueResult(0);
// 判断点位是否有为完成的指令
String pointCode = point.getString("point_code");
JSONObject task = WQLObject
.getWQLObject("sch_base_task")
.query("(start_point_code = '" + pointCode + "' OR next_point_code = '" + pointCode + "') AND is_delete = '0' AND task_status <> '" + TaskStatusEnum.FINISHED.getCode() + "'")
.uniqueResult(0);
if (ObjectUtil.isNotEmpty(task)) {
resultJSON.put("code", "0");
resultJSON.put("desc", "当前点位存在未完成的指令");
return resultJSON;
}
// 修改点位
point.put("point_status", pointStatus);
pointTable.update(point);
if (StrUtil.equals(pointStatus, "03") && StrUtil.equals(point.getString("point_type"), "01")) {
// 如果是有料桶且是仓位(待检区),则需要修改库存表
WQLObject structTable = WQLObject.getWQLObject("st_ivt_structivt");
JSONObject struct = structTable
.query("struct_id = " + pointId)
.uniqueResult(0);
if (ObjectUtil.isEmpty(struct)) {
// 当前库存为空,则添加库存
struct = new JSONObject();
struct.put("stockrecord_id", IdUtil.getSnowflake(1L, 1L).nextId());
struct.put("struct_id", pointId);
struct.put("struct_code", point.get("point_code"));
struct.put("struct_name", point.get("point_name"));
struct.put("region_id", point.get("region_id"));
struct.put("quality_scode", qualityScode);
structTable.insert(struct);
} else {
// 当前存在库存,则更新库存
struct.put("quality_scode", qualityScode);
structTable.update(struct);
String point_id=whereJSON.getString("point_id");
int type=whereJSON.getIntValue("type");
String quality_scode=whereJSON.getString("quality_scode");
WQLObject ivtTab = WQLObject.getWQLObject("st_ivt_structivt");
JSONObject ivt_json = ivtTab.query("struct_id ='" + point_id + "'").uniqueResult(0);
if(ObjectUtil.isNotEmpty(ivt_json)) {
if (type == 1) {
ivt_json.put("quality_scode", quality_scode);
} else if (type == 2) {
ivt_json.put("quality_scode", null);
}
ivtTab.update(ivt_json);
}
// 返回
resultJSON.put("code", "1");
resultJSON.put("desc", "绑定成功");
resultJSON.put("desc", "更新成功");
return resultJSON;
// // 返回值
// JSONObject resultJSON = new JSONObject();
//
// // 参数校验
// String pointId = whereJSON.getString("point_id");
// if (StrUtil.isEmpty(pointId)) {
// resultJSON.put("code", "0");
// resultJSON.put("desc", "点位不能为空");
// return resultJSON;
// }
// String pointStatus = whereJSON.getString("point_status");
// if (StrUtil.isEmpty(pointStatus)) {
// resultJSON.put("code", "0");
// resultJSON.put("desc", "点位状态不能为空");
// return resultJSON;
// }
// String qualityScode = whereJSON.getString("quality_scode");
// if (StrUtil.equals(pointStatus, "03") && StrUtil.isEmpty(qualityScode)) {
// resultJSON.put("code", "0");
// resultJSON.put("desc", "质量不能为空");
// return resultJSON;
// }
//
// // 查询点位
// WQLObject pointTable = WQLObject.getWQLObject("sch_base_point");
// JSONObject point = pointTable
// .query("point_id = " + pointId)
// .uniqueResult(0);
//
// // 判断点位是否有为完成的指令
// String pointCode = point.getString("point_code");
// JSONObject task = WQLObject
// .getWQLObject("sch_base_task")
// .query("(start_point_code = '" + pointCode + "' OR next_point_code = '" + pointCode + "') AND is_delete = '0' AND task_status <> '" + TaskStatusEnum.FINISHED.getCode() + "'")
// .uniqueResult(0);
// if (ObjectUtil.isNotEmpty(task)) {
// resultJSON.put("code", "0");
// resultJSON.put("desc", "当前点位存在未完成的指令");
// return resultJSON;
// }
//
// // 修改点位
// point.put("point_status", pointStatus);
// pointTable.update(point);
//
// if (StrUtil.equals(pointStatus, "03") && StrUtil.equals(point.getString("point_type"), "01")) {
// // 如果是有料桶且是仓位(待检区),则需要修改库存表
// WQLObject structTable = WQLObject.getWQLObject("st_ivt_structivt");
// JSONObject struct = structTable
// .query("struct_id = " + pointId)
// .uniqueResult(0);
//
// if (ObjectUtil.isEmpty(struct)) {
// // 当前库存为空,则添加库存
// struct = new JSONObject();
// struct.put("stockrecord_id", IdUtil.getSnowflake(1L, 1L).nextId());
// struct.put("struct_id", pointId);
// struct.put("struct_code", point.get("point_code"));
// struct.put("struct_name", point.get("point_name"));
// struct.put("region_id", point.get("region_id"));
// struct.put("quality_scode", qualityScode);
// structTable.insert(struct);
// } else {
// // 当前存在库存,则更新库存
// struct.put("quality_scode", qualityScode);
// structTable.update(struct);
// }
// }
//
// // 返回
// resultJSON.put("code", "1");
// resultJSON.put("desc", "绑定成功");
// return resultJSON;
}
}

View File

@@ -28,11 +28,18 @@ public class SendMaterialController {
*
* @return 双层数组,外层区域,内层点位
*/
@PostMapping("/queryRegion")
@Log("查询区域点位")
@ApiOperation("查询区域点位")
public ResponseEntity<JSONObject> queryRegion() {
return new ResponseEntity<>(sendMaterialService.queryRegion(), HttpStatus.OK);
}
@PostMapping("/queryPoint")
@Log("查询区域点位")
@ApiOperation("查询区域点位")
public ResponseEntity<JSONObject> queryPoint() {
return new ResponseEntity<>(sendMaterialService.queryPoint(), HttpStatus.OK);
public ResponseEntity<Object> queryPoint(@RequestBody JSONObject whereJson) {
return new ResponseEntity<>(sendMaterialService.queryPoint(whereJson), HttpStatus.OK);
}
@PostMapping("/confirm")

View File

@@ -9,7 +9,13 @@ public interface SendMaterialService {
*
* @return 双层数组,外层区域,内层点位
*/
JSONObject queryPoint();
JSONObject queryRegion();
/**
* 查询区域点位
* @return json
*/
JSONObject queryPoint(JSONObject whereJson);
/**
* 送料确定

View File

@@ -27,7 +27,7 @@ public class SendMaterialServiceImpl implements SendMaterialService {
private final SendMaterialTask sendMaterialTask;
@Override
public JSONObject queryPoint() {
public JSONObject queryRegion() {
// 返回值
JSONObject resultJSON = new JSONObject();
@@ -56,83 +56,45 @@ public class SendMaterialServiceImpl implements SendMaterialService {
return resultJSON;
}
@Override
public JSONObject queryPoint(JSONObject whereJson) {
// 返回值
JSONObject resultJSON = new JSONObject();
// 查询所有区域
JSONArray result = WQL
.getWO("PDA_SENDMATERIAL_01")
.addParam("flag", "3")
.addParam("region_id", whereJson.getString("region_id"))
.process()
.getResultJSONArray(0);
resultJSON.put("pointArr", result);
resultJSON.put("code", "1");
resultJSON.put("desc", "查询成功");
return resultJSON;
}
@Transactional(rollbackFor = Exception.class)
@Override
public JSONObject confirm(JSONObject param) {
// 返回值
JSONObject resultJSON = new JSONObject();
// 参数校验
String startRegionId = param.getString("start_region_id");
if (StrUtil.isEmpty(startRegionId)) {
resultJSON.put("code", "0");
resultJSON.put("desc", "起点区域不能为空");
return resultJSON;
}
String startPointCode = param.getString("start_point_code");
if (StrUtil.isEmpty(startPointCode)) {
resultJSON.put("code", "0");
resultJSON.put("desc", "起点不能为空");
return resultJSON;
}
String nextRegionId = param.getString("next_region_id");
if (StrUtil.isEmpty(nextRegionId)) {
resultJSON.put("code", "0");
resultJSON.put("desc", "终点区域不能为空");
return resultJSON;
}
String nextPointCode = param.getString("next_point_code");
if (StrUtil.isEmpty(nextPointCode)) {
resultJSON.put("code", "0");
resultJSON.put("desc", "终点不能为空");
return resultJSON;
}
WQLObject regionIOTable = WQLObject.getWQLObject("st_ivt_regionio");
long id = IdUtil.getSnowflake(1, 1).nextId();
try {
// 创建搬运记录
RegionioDto dto = new RegionioDto();
Long currentUserId = SecurityUtils.getCurrentUserId();
String nickName = SecurityUtils.getNickName();
String now = DateUtil.now();
dto.setIostorinv_id(id);
dto.setBill_code(CodeUtil.getNewCode("IN_STORE_CODE"));
dto.setIo_type("0");
dto.setBill_status("10");
dto.setStart_region_id(startRegionId);
dto.setStart_point_code(startPointCode);
dto.setEnd_region_id(nextRegionId);
dto.setEnd_point_code(nextPointCode);
dto.setCreate_mode("02");
dto.setCreate_id(currentUserId);
dto.setCreate_name(nickName);
dto.setUpdate_optid(currentUserId);
dto.setUpdate_optname(nickName);
dto.setUpdate_time(now);
dto.setCreate_time(now);
regionIOTable.insert(JSONObject.parseObject(JSON.toJSONString(dto)));
// 创建任务并自动下发
String taskId = sendMaterialTask.createTask(param);
// 创建并下发成功后更新搬运记录
JSONObject json = new JSONObject();
json.put("task_id", taskId);
json.put("bill_status", "20");
regionIOTable.update(json, "iostorinv_id = " + id);
} catch (Exception e) {
// 手动回滚事务
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
resultJSON.put("code", "0");
resultJSON.put("desc", e.getMessage());
return resultJSON;
String point_id=param.getString("point_id");
int type=param.getIntValue("type");
String quality_scode=param.getString("quality_scode");
WQLObject ivtTab = WQLObject.getWQLObject("st_ivt_structivt");
JSONObject ivt_json = ivtTab.query("struct_id ='" + point_id + "'").uniqueResult(0);
if (type==1) {
ivt_json.put("quality_scode",quality_scode);
}else if (type==2){
ivt_json.put("quality_scode",null);
}
ivtTab.update(ivt_json);
// 返回
resultJSON.put("code", "1");
resultJSON.put("desc", "搬运任务已生成");
resultJSON.put("desc", "更新成功");
return resultJSON;
}
}

View File

@@ -68,4 +68,33 @@
ENDOPTION
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "3"
QUERY
SELECT
P.point_id,
P.point_code,
P.point_name,
P.point_status,
S.quality_scode,
S.product_code,
S.batch_code,
S.product_specifications,
S.weight,
S.time
FROM
sch_base_point p
LEFT JOIN
st_ivt_StructIvt s
ON
p.point_code = s.struct_code
WHERE
p.is_used = '1'
OPTION 输入.region_id <> ""
p.region_id = 输入.region_id
ENDOPTION
ENDSELECT
ENDQUERY
ENDIF

View File

@@ -0,0 +1,49 @@
package org.nl.wms.sch.service.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class VehicleDto implements Serializable {
/** 组盘标识 */
private String group_id;
/** 载具编码 */
private String vehicle_code;
/** 重量 */
private String weight;
/** 产品名称 */
private String product_code;
/** 批次号 */
private String batch_code;
/** 产品规格 */
private String product_specifications;
/** 时间 */
private String time;
/** 是否合格 */
private String qualityScode;
/** 是否删除 */
private Integer is_delete;
/** 创建人 */
private String create_name;
/** 创建时间 */
private String create_time;
/** 修改人 */
private Long update_optid;
/** 修改人 */
private String update_optname;
/** 修改时间 */
private String update_time;
}

View File

@@ -1,8 +1,8 @@
ENV = 'development'
# 接口地址
VUE_APP_BASE_API = 'http://localhost:8010'
VUE_APP_WS_API = 'ws://localhost:8010'
VUE_APP_BASE_API = 'http://127.0.0.1:8011'
VUE_APP_WS_API = 'ws://127.0.0.1:8011'
# 是否启用 babel-plugin-dynamic-import-node插件
VUE_CLI_BABEL_TRANSPILE_MODULES = true

View File

@@ -25,7 +25,7 @@ export default {
},
data() {
return {
title: '永裕家居LMS系统',
title: '迦南LMS系统',
logo: Logo
}
}