diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java index 1896d19..78db202 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java @@ -167,6 +167,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { * 5.油漆线空盘入库 * 6.一楼空盘入库 (有载具号) * 7.油漆线->输送线 + * 8.豪凯自动线下料入库 */ JSONObject resuft = new JSONObject(); try { @@ -331,13 +332,19 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { } else if (StrUtil.equals(type, "6")) { // 6.一楼空盘入库 (有载具号): 调用空托盘入库处理类创建任务 if (ObjectUtil.isEmpty(vehicle_code)) throw new BadRequestException("载具号不能为空"); - // 查询载具号对应的数量 - JSONObject jsonVeQty = veQtyTab.query("vehicle_code = '" + vehicle_code + "' and is_task = '0' order by create_time DESC").uniqueResult(0); - if (ObjectUtil.isEmpty(jsonVeQty)) throw new BadRequestException("请先手持扫码"); - JSONObject param = new JSONObject(); - param.put("start_point_code", point_code); + + // 查询载具号对应的数量 + JSONObject jsonVeQty = new JSONObject(); + if (ObjectUtil.isEmpty(qty)) { + jsonVeQty = veQtyTab.query("vehicle_code = '" + vehicle_code + "' and is_task = '0' order by create_time DESC").uniqueResult(0); + if (ObjectUtil.isEmpty(jsonVeQty)) throw new BadRequestException("请先手持扫码"); + } else { + jsonVeQty.put("qty", qty); + } + param.put("qty", jsonVeQty.getString("qty")); + param.put("start_point_code", point_code); param.put("vehicle_code", vehicle_code); // 创建任务 SendEmpVehicleTask taskBean = SpringContextHolder.getBean(SendEmpVehicleTask.class); @@ -372,6 +379,39 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { resuft.put("status", "200"); resuft.put("message", ""); + } else if (StrUtil.equals(type, "8")) { + // 8.豪凯自动线下料入库 + JSONObject param = new JSONObject(); + param.put("start_point_code", point_code); + SendMaterialTask taskBean = SpringContextHolder.getBean(SendMaterialTask.class); + String task_id = taskBean.createTask(param); + + JSONObject jsonTask = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0); + // 插入区域出入库表 + param.put("next_point_code", jsonTask.getString("next_point_code")); + if (ObjectUtil.isEmpty(qty)) { + param.put("qty", "1"); // 为空先写死1 + } else { + param.put("qty", qty); + } + param.put("task_id", task_id); + param.put("io_type", "0"); + JSONObject json = this.inCreateRegion(param); + // 回显任务载具类型 + jsonTask.put("vehicle_type", json.getString("vehicle_type")); + taskTab.update(jsonTask); + + // 下发 + JSONObject jsonObject = taskBean.renotifyAcs(task_id); + if (StrUtil.equals(jsonObject.getString("status"), "200")) { + // 成功返回 更新任务状态 + resuft.put("status", "200"); + resuft.put("message", ""); + jsonTask.put("task_status", "05"); + taskTab.update(jsonTask); + } else { + throw new BadRequestException(jsonObject.getString("message")); + } } } catch (Exception e) { resuft.put("status", ((BadRequestException) e).getStatus()); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/callmaterial/rest/CallMaterialController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/callmaterial/rest/CallMaterialController.java new file mode 100644 index 0000000..2fed835 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/callmaterial/rest/CallMaterialController.java @@ -0,0 +1,39 @@ +package org.nl.wms.pda.callmaterial.rest; + +import com.alibaba.fastjson.JSONObject; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.annotation.Log; +import org.nl.wms.pda.callmaterial.service.CallMaterialService; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequiredArgsConstructor +@Api(tags = "手持叫料") +@RequestMapping("api/pda/callMaterial") +@Slf4j +public class CallMaterialController { + + private final CallMaterialService callMaterialService; + + @PostMapping("/queryPoint") + @Log("查询区域点位") + @ApiOperation("查询区域点位") + public ResponseEntity queryPoint() { + return new ResponseEntity<>(callMaterialService.queryPoint(), HttpStatus.OK); + } + + @PostMapping("/confirm") + @Log("叫料确定") + @ApiOperation("叫料确定") + public ResponseEntity confirm(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(callMaterialService.confirm(whereJson), HttpStatus.OK); + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/callmaterial/service/CallMaterialService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/callmaterial/service/CallMaterialService.java new file mode 100644 index 0000000..e85a64b --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/callmaterial/service/CallMaterialService.java @@ -0,0 +1,19 @@ +package org.nl.wms.pda.callmaterial.service; + +import com.alibaba.fastjson.JSONObject; + +public interface CallMaterialService { + + /** + * 查询区域点位 + * @return json + */ + JSONObject queryPoint(); + + /** + * 叫料确定 + * @param whereJson / + * @return JSONObject + */ + JSONObject confirm(JSONObject whereJson); +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/callmaterial/service/impl/CallMaterialServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/callmaterial/service/impl/CallMaterialServiceImpl.java new file mode 100644 index 0000000..5f17db7 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/callmaterial/service/impl/CallMaterialServiceImpl.java @@ -0,0 +1,60 @@ +package org.nl.wms.pda.callmaterial.service.impl; + +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.wms.ext.acs.service.AcsToWmsService; +import org.nl.wms.pda.callmaterial.service.CallMaterialService; +import org.nl.wql.WQL; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@RequiredArgsConstructor +@Slf4j +public class CallMaterialServiceImpl implements CallMaterialService { + private final AcsToWmsService acsToWmsService; + + @Override + public JSONObject queryPoint() { + JSONObject result = new JSONObject(); + // 1.查询区域:油漆区域 YQQY01 + JSONArray regionArr = WQL.getWO("PDA_CALLMATERIAL_01").addParam("flag", "1").process().getResultJSONArray(0); + // 2.根据区域查询对应的物料上料位 + JSONObject resultJson = new JSONObject(); + for (int i = 0; i < regionArr.size(); i++) { + JSONObject jsonRegion = regionArr.getJSONObject(i); + JSONArray pointArr = WQL.getWO("PDA_CALLMATERIAL_01").addParam("flag", "2").addParam("region_id", jsonRegion.getString("region_id")).process().getResultJSONArray(0); + jsonRegion.put("pointArr", pointArr); + } + resultJson.put("regionja", regionArr); + result.put("result", resultJson); + result.put("code", "1"); + result.put("desc", "查询成功"); + return result; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public JSONObject confirm(JSONObject whereJson) { + JSONObject result = new JSONObject(); + // 1、准备参数:point_code、type = 4 + JSONObject param = new JSONObject(); + param.put("type","4"); + param.put("point_code",whereJson.getString("point_code")); + // 2、调用接口 + JSONObject json = acsToWmsService.apply(param); + if (StrUtil.equals(json.getString("status"), "200")) { + result.put("result", ""); + result.put("code", "1"); + result.put("desc", "操作成功"); + } else { + result.put("result", ""); + result.put("code", "0"); + result.put("desc", "操作失败:"+json.getString("message")); + } + return result; + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/callmaterial/wql/PDA_CALLMATERIAL_01.wql b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/callmaterial/wql/PDA_CALLMATERIAL_01.wql new file mode 100644 index 0000000..3c39c5e --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/callmaterial/wql/PDA_CALLMATERIAL_01.wql @@ -0,0 +1,77 @@ +[交易说明] + 交易名: 手持叫料查询 + 所属模块: + 功能简述: + 版权所有: + 表引用: + 版本经历: + +[数据库] + --指定数据库,为空采用默认值,默认为db.properties中列出的第一个库 + +[IO定义] + ################################################# + ## 表字段对应输入参数 + ################################################# + 输入.flag TYPEAS s_string + 输入.region_id TYPEAS s_string + +[临时表] + --这边列出来的临时表就会在运行期动态创建 + +[临时变量] + --所有中间过程变量均可在此处定义 + +[业务过程] + + ########################################## + # 1、输入输出检查 # + ########################################## + + + ########################################## + # 2、主过程前处理 # + ########################################## + + + ########################################## + # 3、业务主过程 # + ########################################## + + IF 输入.flag = "1" + QUERY + SELECT + region_id, + region_code, + region_name + FROM + sch_base_region + WHERE + is_used = '1' + AND region_code = 'YQQY01' + + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "2" + QUERY + SELECT + point_id, + point_code, + point_name + FROM + sch_base_point + WHERE + is_used = '1' + AND is_delete = '0' + AND is_host = '0' + AND device_point_type = '3' + + OPTION 输入.region_id <> "" + region_id = 输入.region_id + ENDOPTION + + ENDSELECT + ENDQUERY + ENDIF \ No newline at end of file diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/callvehicle/rest/CallVehicleController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/callvehicle/rest/CallVehicleController.java new file mode 100644 index 0000000..f94232a --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/callvehicle/rest/CallVehicleController.java @@ -0,0 +1,40 @@ +package org.nl.wms.pda.callvehicle.rest; + +import com.alibaba.fastjson.JSONObject; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.annotation.Log; +import org.nl.wms.pda.callvehicle.service.CallVehicleService; +import org.nl.wms.pda.sendmaterial.service.SendMaterialService; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequiredArgsConstructor +@Api(tags = "手持呼叫空托盘") +@RequestMapping("api/pda/callEmpty") +@Slf4j +public class CallVehicleController { + + private final CallVehicleService callVehicleService; + + @PostMapping("/queryPoint") + @Log("查询区域点位") + @ApiOperation("查询区域点位") + public ResponseEntity queryPoint() { + return new ResponseEntity<>(callVehicleService.queryPoint(), HttpStatus.OK); + } + + @PostMapping("/confirm") + @Log("呼叫空托盘确定") + @ApiOperation("呼叫空托盘确定") + public ResponseEntity confirm(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(callVehicleService.confirm(whereJson), HttpStatus.OK); + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/callvehicle/service/CallVehicleService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/callvehicle/service/CallVehicleService.java new file mode 100644 index 0000000..66d4c7b --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/callvehicle/service/CallVehicleService.java @@ -0,0 +1,19 @@ +package org.nl.wms.pda.callvehicle.service; + +import com.alibaba.fastjson.JSONObject; + +public interface CallVehicleService { + + /** + * 查询区域点位 + * @return JSONObject + */ + JSONObject queryPoint(); + + /** + * 呼叫空托盘确定 + * @param whereJson / + * @return JSONObject + */ + JSONObject confirm(JSONObject whereJson); +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/callvehicle/service/impl/CallVehicleServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/callvehicle/service/impl/CallVehicleServiceImpl.java new file mode 100644 index 0000000..ebb0fb4 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/callvehicle/service/impl/CallVehicleServiceImpl.java @@ -0,0 +1,69 @@ +package org.nl.wms.pda.callvehicle.service.impl; + +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.wms.ext.acs.service.AcsToWmsService; +import org.nl.wms.pda.callvehicle.service.CallVehicleService; +import org.nl.wql.WQL; +import org.nl.wql.core.bean.WQLObject; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@RequiredArgsConstructor +@Slf4j +public class CallVehicleServiceImpl implements CallVehicleService { + + private final AcsToWmsService acsToWmsService; + + @Override + public JSONObject queryPoint() { + JSONObject result = new JSONObject(); + // 1.查询区域:油漆区域 YQQY01、共挤区域 GJQY01 + JSONArray regionArr = WQL.getWO("PDA_CALLVEHICLE_01").addParam("flag", "1").process().getResultJSONArray(0); + // 2.根据区域查询对应的物料上料位 + JSONObject resultJson = new JSONObject(); + for (int i = 0; i < regionArr.size(); i++) { + JSONObject jsonRegion = regionArr.getJSONObject(i); + JSONArray pointArr = WQL.getWO("PDA_CALLVEHICLE_01").addParam("flag", "2").addParam("region_id", jsonRegion.getString("region_id")).process().getResultJSONArray(0); + jsonRegion.put("pointArr", pointArr); + } + resultJson.put("regionja", regionArr); + result.put("result", resultJson); + result.put("code", "1"); + result.put("desc", "查询成功"); + return result; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public JSONObject confirm(JSONObject whereJson) { + JSONObject result = new JSONObject(); + // 1、准备参数:point_code、type:1为共挤区域,3为油漆区域 + JSONObject param = new JSONObject(); + + String region_id = whereJson.getString("region_id"); + JSONObject jsonObject = WQLObject.getWQLObject("sch_base_region").query("region_id ='" + region_id + "'").uniqueResult(0); + String region_code = jsonObject.getString("region_code"); + if (StrUtil.equals(region_code, "GJQY01")) param.put("type","1"); + if (StrUtil.equals(region_code, "YQQY01")) param.put("type","3"); + + param.put("point_code",whereJson.getString("point_code")); + param.put("vehicle_num",whereJson.getString("qty")); + // 2、调用接口 + JSONObject json = acsToWmsService.apply(param); + if (StrUtil.equals(json.getString("status"), "200")) { + result.put("result", ""); + result.put("code", "1"); + result.put("desc", "操作成功"); + } else { + result.put("result", ""); + result.put("code", "0"); + result.put("desc", "操作失败:"+json.getString("message")); + } + return result; + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/callvehicle/wql/PDA_CALLVEHICLE_01.wql b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/callvehicle/wql/PDA_CALLVEHICLE_01.wql new file mode 100644 index 0000000..339dd16 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/callvehicle/wql/PDA_CALLVEHICLE_01.wql @@ -0,0 +1,77 @@ +[交易说明] + 交易名: 手持呼叫空托盘查询 + 所属模块: + 功能简述: + 版权所有: + 表引用: + 版本经历: + +[数据库] + --指定数据库,为空采用默认值,默认为db.properties中列出的第一个库 + +[IO定义] + ################################################# + ## 表字段对应输入参数 + ################################################# + 输入.flag TYPEAS s_string + 输入.region_id TYPEAS s_string + +[临时表] + --这边列出来的临时表就会在运行期动态创建 + +[临时变量] + --所有中间过程变量均可在此处定义 + +[业务过程] + + ########################################## + # 1、输入输出检查 # + ########################################## + + + ########################################## + # 2、主过程前处理 # + ########################################## + + + ########################################## + # 3、业务主过程 # + ########################################## + + IF 输入.flag = "1" + QUERY + SELECT + region_id, + region_code, + region_name + FROM + sch_base_region + WHERE + is_used = '1' + AND region_code in ('YQQY01','GJQY01') + + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "2" + QUERY + SELECT + point_id, + point_code, + point_name + FROM + sch_base_point + WHERE + is_used = '1' + AND is_delete = '0' + AND is_host = '0' + AND device_point_type = '1' + + OPTION 输入.region_id <> "" + region_id = 输入.region_id + ENDOPTION + + ENDSELECT + ENDQUERY + ENDIF \ No newline at end of file diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/emptyandqty/rest/EmptyAndQtyController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/emptyandqty/rest/EmptyAndQtyController.java new file mode 100644 index 0000000..01d0c6e --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/emptyandqty/rest/EmptyAndQtyController.java @@ -0,0 +1,32 @@ +package org.nl.wms.pda.emptyandqty.rest; + +import com.alibaba.fastjson.JSONObject; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.annotation.Log; +import org.nl.wms.pda.emptyandqty.service.EmptyAndQtyService; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequiredArgsConstructor +@Api(tags = "手持空托盘与数量绑定") +@RequestMapping("api/pda/emptyAndQty") +@Slf4j +public class EmptyAndQtyController { + + private final EmptyAndQtyService emptyAndQtyService; + + @PostMapping("/confirm") + @Log("绑定") + @ApiOperation("绑定") + public ResponseEntity confirm(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(emptyAndQtyService.confirm(whereJson), HttpStatus.OK); + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/emptyandqty/service/EmptyAndQtyService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/emptyandqty/service/EmptyAndQtyService.java new file mode 100644 index 0000000..70a1bd8 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/emptyandqty/service/EmptyAndQtyService.java @@ -0,0 +1,13 @@ +package org.nl.wms.pda.emptyandqty.service; + +import com.alibaba.fastjson.JSONObject; + +public interface EmptyAndQtyService { + + /** + * 绑定 + * @param whereJson / + * @return JSONObject + */ + JSONObject confirm(JSONObject whereJson); +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/emptyandqty/service/impl/EmptyAndQtyServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/emptyandqty/service/impl/EmptyAndQtyServiceImpl.java new file mode 100644 index 0000000..6525b33 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/emptyandqty/service/impl/EmptyAndQtyServiceImpl.java @@ -0,0 +1,51 @@ +package org.nl.wms.pda.emptyandqty.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.utils.SecurityUtils; +import org.nl.utils.SpringContextHolder; +import org.nl.wms.basedata.master.service.StoragevehicleinfoService; +import org.nl.wms.basedata.master.service.dto.StoragevehicleinfoDto; +import org.nl.wms.ext.acs.service.AcsToWmsService; +import org.nl.wms.pda.emptyandqty.service.EmptyAndQtyService; +import org.nl.wql.core.bean.WQLObject; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@RequiredArgsConstructor +@Slf4j +public class EmptyAndQtyServiceImpl implements EmptyAndQtyService { + + @Override + @Transactional(rollbackFor = Exception.class) + public JSONObject confirm(JSONObject whereJson) { + String vehicle_code = whereJson.getString("vehicle_code"); + String qty = whereJson.getString("qty"); + + WQLObject vqTab = WQLObject.getWQLObject("PDM_BI_vehicleQty"); + StoragevehicleinfoDto byCode = SpringContextHolder.getBean(StoragevehicleinfoService.class).findByCode(vehicle_code); + + // 插入记录 + JSONObject json = new JSONObject(); + json.put("vehicleqty_id", IdUtil.getSnowflake(1, 1).nextId()); + json.put("vehicle_id", byCode.getStoragevehicle_id()); + json.put("vehicle_code", vehicle_code); + json.put("qty", qty); + json.put("is_task", "0"); + json.put("create_id", SecurityUtils.getCurrentUserId()); + json.put("create_name", SecurityUtils.getNickName()); + json.put("create_time", DateUtil.now()); + vqTab.insert(json); + // 返回成功 + JSONObject result = new JSONObject(); + result.put("srb", ""); + result.put("code", "1"); + result.put("desc", "操作成功"); + return result; + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/login/rest/HandLoginController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/login/rest/HandLoginController.java similarity index 97% rename from mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/login/rest/HandLoginController.java rename to mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/login/rest/HandLoginController.java index 24789fa..02e61c3 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/login/rest/HandLoginController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/login/rest/HandLoginController.java @@ -1,14 +1,14 @@ -package org.nl.wms.ext.login.rest; +package org.nl.wms.pda.login.rest; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import com.alibaba.fastjson.JSONObject; import org.nl.annotation.Log; import org.nl.config.RsaProperties; import org.nl.exception.BadRequestException; @@ -18,10 +18,9 @@ import org.nl.modules.security.service.OnlineUserService; import org.nl.modules.security.service.dto.JwtUserDto; import org.nl.modules.system.service.UserService; import org.nl.modules.system.service.dto.UserDto; - import org.nl.utils.RsaUtils; import org.nl.utils.SecurityUtils; -import org.nl.wms.ext.login.service.HandLoginService; +import org.nl.wms.pda.login.service.HandLoginService; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; @@ -45,7 +44,7 @@ import java.util.Map; @RestController @RequiredArgsConstructor @Api(tags = "手持登陆") -@RequestMapping("api/bigScreenScreen") +@RequestMapping("api/pda") @Slf4j public class HandLoginController { private final HandLoginService handLoginService; @@ -56,7 +55,7 @@ public class HandLoginController { private final TokenProvider tokenProvider; private final OnlineUserService onlineUserService; - @PostMapping("/login") + @PostMapping("/handlogin") @Log("手持登陆验证") @ApiOperation("手持登陆验证") public ResponseEntity handlogin(@RequestBody Map whereJson, HttpServletRequest request) { diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/login/service/HandLoginService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/login/service/HandLoginService.java similarity index 92% rename from mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/login/service/HandLoginService.java rename to mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/login/service/HandLoginService.java index a1d5dd8..a397669 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/login/service/HandLoginService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/login/service/HandLoginService.java @@ -1,4 +1,4 @@ -package org.nl.wms.ext.login.service; +package org.nl.wms.pda.login.service; import java.util.Map; diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/login/service/impl/HandLoginServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/login/service/impl/HandLoginServiceImpl.java similarity index 82% rename from mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/login/service/impl/HandLoginServiceImpl.java rename to mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/login/service/impl/HandLoginServiceImpl.java index 34dfd72..357d385 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/login/service/impl/HandLoginServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/login/service/impl/HandLoginServiceImpl.java @@ -1,11 +1,11 @@ -package org.nl.wms.ext.login.service.impl; +package org.nl.wms.pda.login.service.impl; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; import org.nl.config.RsaProperties; import org.nl.modules.security.config.bean.SecurityProperties; import org.nl.modules.security.security.TokenProvider; @@ -15,7 +15,7 @@ import org.nl.modules.system.service.UserService; import org.nl.modules.system.service.dto.UserDto; import org.nl.utils.RsaUtils; import org.nl.utils.SecurityUtils; -import org.nl.wms.ext.login.service.HandLoginService; +import org.nl.wms.pda.login.service.HandLoginService; import org.nl.wql.WQL; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.Authentication; @@ -44,22 +44,6 @@ public class HandLoginServiceImpl implements HandLoginService { JSONObject resultJson = new JSONObject(); String user = jsonObject.get("user"); String password = jsonObject.get("password"); - String device_id = jsonObject.get("device_id"); - if (StrUtil.isEmpty("user")) { - resultJson.put("code", "0"); - resultJson.put("desc", "用户不能为空"); - return resultJson; - } - if (StrUtil.isEmpty("device_id")) { - resultJson.put("code", "0"); - resultJson.put("desc", "设备不能为空"); - return resultJson; - } - if (StrUtil.isEmpty("password")) { - resultJson.put("code", "0"); - resultJson.put("desc", "密码不能为空!"); - return resultJson; - } boolean is_match = false; Long account_id = 0L; try { @@ -86,7 +70,6 @@ public class HandLoginServiceImpl implements HandLoginService { final JwtUserDto jwtUserDto = (JwtUserDto) authentication.getPrincipal(); // 保存在线信息 onlineUserService.save(jwtUserDto, token, null); - JSONObject jo = new JSONObject(); jo.put("user_name", user); jo.put("token", properties.getTokenStartWith() + token); @@ -109,17 +92,19 @@ public class HandLoginServiceImpl implements HandLoginService { JSONObject result = WQL.getWO("QPADSTSETSERVICE").addParam("flag", "4").addParam("accountId", accountId).addParam("component", "0").process().uniqueResult(0); //查询二级 - JSONArray SecondResults = WQL.getWO("QPADSTSETSERVICE").addParam("flag", "4").addParam("accountId", accountId).addParam("component", "1").process().getResultJSONArray(0); + //JSONArray SecondResults = WQL.getWO("QPADSTSETSERVICE").addParam("flag", "4").addParam("accountId", accountId).addParam("component", "1").process().getResultJSONArray(0); //查询三级 - JSONArray roleTree = new JSONArray(); + /* JSONArray roleTree = new JSONArray(); for (int i = 0; i < SecondResults.size(); i++) { JSONObject row = SecondResults.getJSONObject(i); String menu_id = row.getString("menu_id"); JSONArray ThirdResults = WQL.getWO("QPADSTSETSERVICE").addParam("flag", "4").addParam("accountId", accountId).addParam("component", "2").addParam("pid", menu_id).process().getResultJSONArray(0); row.put("sonTree", ThirdResults); roleTree.add(row); - } - result.put("sonTree", roleTree); + }*/ + JSONArray ThirdResults = WQL.getWO("QPADSTSETSERVICE").addParam("flag", "4").addParam("accountId", accountId).addParam("component", "2").process().getResultJSONArray(0); + + result.put("sonTree", ThirdResults); returnjo.put("code", "1"); returnjo.put("desc", "查询成功!"); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/login/wql/QPADSTSETSERVICE.wql b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/login/wql/QPADSTSETSERVICE.wql new file mode 100644 index 0000000..a2aece6 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/login/wql/QPADSTSETSERVICE.wql @@ -0,0 +1,492 @@ +[交易说明] + 交易名: 库区分页查询 + 所属模块: + 功能简述: + 版权所有: + 表引用: + 版本经历: + +[数据库] + --指定数据库,为空采用默认值,默认为db.properties中列出的第一个库 + +[IO定义] + ################################################# + ## 表字段对应输入参数 + ################################################# + 输入.flag TYPEAS s_string + 输入.searchbar TYPEAS s_string + 输入.option_type TYPEAS s_string + 输入.bag_id TYPEAS s_string + 输入.bucketunique TYPEAS s_string + 输入.class_code TYPEAS s_string + 输入.component TYPEAS s_string + 输入.pid TYPEAS s_string + 输入.accountId TYPEAS s_string + 输入.workprocedure_code TYPEAS s_string + 输入.dict_type TYPEAS s_string + + + + + +[临时表] + --这边列出来的临时表就会在运行期动态创建 + +[临时变量] + --所有中间过程变量均可在此处定义 + +[业务过程] + + ########################################## + # 1、输入输出检查 # + ########################################## + + + ########################################## + # 2、主过程前处理 # + ########################################## + + + ########################################## + # 3、业务主过程 # + ########################################## + + IF 输入.flag = "1" + PAGEQUERY + SELECT + class.class_name, + class.class_code, + base.material_id, + base.material_code, + base.material_name, + base.material_spec, + base.material_type_id, + class.class_desc AS material_dtl_scode_name, + base.base_unit_id, + unit.unit_name AS base_unit_id_name, + ext.standard_weight as standard_weight1 , + "50" as standard_weight + FROM + MD_ME_MaterialBase base + LEFT JOIN md_pb_classstandard class ON class.class_id = base.material_type_id + LEFT JOIN MD_PB_MeasureUnit unit ON unit.measure_unit_id = base.base_unit_id + LEFT JOIN MD_ME_ProducMaterialExt ext ON ext.material_id = base.material_id + WHERE + 1 = 1 + OPTION 输入.searchbar <> "" + (base.material_code like "%" 输入.searchbar "%" + OR + base.material_name like "%" 输入.searchbar "%") + ENDOPTION + OPTION 输入.class_code <> "" + class.class_code = 输入.class_code + ENDOPTION + ENDSELECT + ENDPAGEQUERY + ENDIF + + + IF 输入.flag = "2" + QUERY + SELECT + bag.bagrecord_id, + bag.bag_id, + bag.material_id, + material.material_code as material_code , + material.material_name as material_name, + bag.pcsn, + bag.qty_unit_id, + bag.qty_unit_name, + bag.storage_qty, + bag.return_person, + bag.status, + case bag.status when '01' then '生成' + when '02' then '组桶' + when '03' then '清洗' + else '' end as status_name, + bag.waste_type, + dictdtl.label as waste_type_name + FROM + MD_PB_BagRecord AS bag + LEFT JOIN MD_ME_MaterialBase material ON material.material_id = bag.material_id + left join sys_dict_detail dictdtl on dictdtl.value =bag.waste_type and dictdtl.dict_id='46' + WHERE + 1 =1 + OPTION 输入.bag_id <> "" + bag.bag_id = 输入.bag_id + ENDOPTION + ENDSELECT + ENDQUERY + ENDIF + + + IF 输入.flag = "3" + QUERY + SELECT + curdate( ) AS create_date, + bag.bagrecord_id, + bag.bag_id, + bag.material_id, + ext_id, + material.material_code, + material.material_name, + bag.print_type, + bag.return_person, + bag.pcsn, + bag.storage_qty, + bag.print_times, + DATE_FORMAT( bag.input_time, '%Y-%m-%d' ) as input_time + FROM + MD_PB_BagRecord AS bag + LEFT JOIN md_me_materialbase AS material ON material.material_id = bag.material_id + where 1=1 + OPTION 输入.bag_id <> "" + bag.bag_id = 输入.bag_id + ENDOPTION + ENDSELECT + ENDQUERY + ENDIF + + + IF 输入.flag = "4" + QUERY + SELECT + max( sys_user.user_id )as accountId, + max( sys_user.username ) as username, + max( sys_roles_menus.menu_id ) as menu_id, + max( sys_menu.component ) as component, + max( sys_menu.path ) as path, + max( sys_menu.NAME ) as name + FROM + sys_user AS sys_user + LEFT JOIN sys_users_roles AS sys_users_roles ON sys_users_roles.user_id = sys_user.user_id + LEFT JOIN sys_role AS sys_role ON sys_role.role_id = sys_users_roles.role_id + LEFT JOIN sys_roles_menus AS sys_roles_menus ON sys_roles_menus.role_id = sys_role.role_id + LEFT JOIN sys_menu AS sys_menu ON sys_menu.menu_id = sys_roles_menus.menu_id + WHERE + sys_menu.path LIKE 'RF%' + AND sys_menu.hidden = 1 + OPTION 输入.accountId <> "" + sys_user.user_id = 输入.accountId + ENDOPTION + OPTION 输入.component <> "" + sys_menu.component = 输入.component + ENDOPTION + OPTION 输入.pid <> "" + sys_menu.pid = 输入.pid + ENDOPTION + + GROUP BY + sys_menu.menu_id, + sys_menu.title, + sys_menu.component, + sys_menu.path, + sys_menu.NAME, + sys_menu.menu_sort + ORDER BY sys_menu.menu_sort + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "5" + QUERY + SELECT + bucket.bucket_record_id, + bucket.bucketunique, + bucket.material_id, + bucket.print_type, + material_code, + material_name, + bucket.pcsn, + bucket.qty_unit_id, + bucket.qty_unit_name, + bucket.storage_qty, + bucket.STATUS, + bucket.record_order, + DATE_FORMAT( bucket.create_time, '%Y-%m-%d' ) AS date, + DATE_FORMAT( bucket.create_time, '%Y-%m-%d' ) as input_time, + ext_id, + bucket.record_order, + bucket.is_active, + "否" as is_new_name, + "0" as is_new, + case bucket.status when '01' then '生成' + when '02' then '组盘' + when '03' then '入库' + when '04' then '出库' + when '05' then '入立库' + else '' end as status_name + FROM + md_pb_bucketrecord bucket + LEFT JOIN md_me_materialbase material ON material.material_id = bucket.material_id + where 1=1 + OPTION 输入.bucketunique <> "" + bucket.bucketunique = 输入.bucketunique + ENDOPTION + ENDSELECT + ENDQUERY + ENDIF + + + IF 输入.flag = "6" + QUERY + SELECT + bag.bag_id, + bag.material_id, + material.material_code, + material.material_name, + bag.print_type, + bag.storage_qty , + "否" as is_new_name, + "0" as is_new, + bag.pcsn, + bag.return_person, + DATE_FORMAT( bag.input_time, '%Y-%m-%d' ) AS date, + DATE_FORMAT( bag.input_time, '%Y-%m-%d' ) AS input_time, + bag.bucketunique, + ext_id + FROM + MD_PB_BagRecord AS bag + LEFT JOIN md_me_materialbase AS material ON material.material_id = bag.material_id + where 1=1 + OPTION 输入.bucketunique <> "" + bag.bucketunique = 输入.bucketunique + ENDOPTION + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "7" + QUERY + SELECT + bag.bag_id, + bag.material_id, + material.material_code, + material.material_name, + bag.print_type, + bag.storage_qty, + bag.pcsn, + "是" as is_new_name, + "1" as is_new, + bag.bucketunique + FROM + MD_PB_BagRecord AS bag + LEFT JOIN md_me_materialbase AS material ON material.material_id = bag.material_id + where 1=1 + OPTION 输入.bag_id <> "" + bag.bag_id = 输入.bag_id + ENDOPTION + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "8" + QUERY + SELECT + curdate( ) AS create_date, + DATE_FORMAT( bucket.create_time, '%Y-%m-%d' ) as input_time, + ext_id, + bucket.bucket_record_id, + bucket.record_order, + bucket.is_active, + bucket.bucketunique, + bucket.material_id, + material_code, + material_name, + bucket.pcsn, + bucket.qty_unit_id, + bucket.qty_unit_name, + bucket.storage_qty, + bucket.print_type + FROM + md_pb_bucketrecord bucket + LEFT JOIN md_me_materialbase material ON material.material_id = bucket.material_id + WHERE + 1 =1 + OPTION 输入.bucketunique <> "" + bucket.bucketunique = 输入.bucketunique + ENDOPTION + ENDSELECT + ENDQUERY + ENDIF + + + IF 输入.flag = "9" + QUERY + SELECT + bucket.bucket_record_id, + bucket.bucketunique, + bucket.material_id, + material_code, + material_name, + bucket.pcsn, + bucket.qty_unit_id, + bucket.qty_unit_name, + bucket.storage_qty, + bucket.STATUS, + case bucket.status when '01' then '生成' + when '02' then '组盘' + when '03' then '入库' + when '04' then '出库' + when '05' then '入立库' + else '' end as status_name + FROM + md_pb_bucketrecord bucket + LEFT JOIN md_me_materialbase material ON material.material_id = bucket.material_id + where 1=1 + OPTION 输入.bucketunique <> "" + bucket.bucketunique = 输入.bucketunique + ENDOPTION + ENDSELECT + ENDQUERY + ENDIF + + + IF 输入.flag = "10" + QUERY + SELECT + dtl.VALUE AS waste_type, + dtl.label AS waste_type_name + FROM + sys_dict dict + LEFT JOIN sys_dict_detail dtl ON dict.dict_id = dtl.dict_id + WHERE + dict.NAME = 'MD_MATERIAL_WASTE_TYPE' + ENDSELECT + ENDQUERY + ENDIF + + + IF 输入.flag = "11" + PAGEQUERY + SELECT + device.device_id, + device.device_code, + device.device_name, + device.device_model, + device.device_specification, + device.workprocedure_id, + device.workprocedure_code, + device.workprocedure_name + FROM + em_bi_deviceinfo device + WHERE + 1 = 1 + OPTION 输入.searchbar <> "" + (device.device_code like "%" 输入.searchbar "%" + OR + device.device_name like "%" 输入.searchbar "%") + ENDOPTION + OPTION 输入.workprocedure_code <> "" + device.workprocedure_code = 输入.workprocedure_code + ENDOPTION + ENDSELECT + ENDPAGEQUERY + ENDIF + + IF 输入.flag = "12" + QUERY + SELECT + bucket.bucket_record_id, + bucket.bucketunique, + bucket.material_id, + material_code, + material_name, + bucket.pcsn, + bucket.qty_unit_id, + bucket.qty_unit_name, + bucket.storage_qty, + bucket.STATUS, + bucket.record_order, + case bucket.status when '01' then '生成' + when '02' then '组盘' + when '03' then '入库' + when '04' then '出库' + when '05' then '入立库' + when '06' then '线下处理' + else '' end as status_name, + case bucket.status when '06' then '1' + else '0' end as is_offline_hand + FROM + md_pb_bucketrecord bucket + LEFT JOIN md_me_materialbase material ON material.material_id = bucket.material_id + where 1=1 + and bucket.status in(01,02,03,06) + OPTION 输入.bucketunique <> "" + bucket.bucketunique = 输入.bucketunique + ENDOPTION + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "13" + QUERY + SELECT + bucket.*, + mb.material_code, + mb.ext_id, + mb.material_name, + DATE_FORMAT( bucket.create_time, '%Y-%m-%d' ) as input_time + FROM + pdm_bi_formulabucketrecord bucket + LEFT JOIN md_me_materialbase mb ON mb.material_id = bucket.material_id + WHERE + 1=1 + AND + bucket.bucketunique = 输入.bucketunique + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "14" + QUERY + SELECT + bucket.*, + mb.material_code, + mb.material_name, + mb.ext_id, + DATE_FORMAT( bucket.create_time, '%Y-%m-%d' ) as input_time + FROM + md_pb_bucketrecord bucket + LEFT JOIN md_me_materialbase mb ON mb.material_id = bucket.material_id + WHERE + 1=1 + AND + bucket.bucketunique = 输入.bucketunique + AND + bucket.status IN ('01','02','03') + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "15" + QUERY + SELECT + detaial.label, + detaial.`value` + FROM + sys_dict_detail detaial + LEFT JOIN sys_dict dict ON dict.dict_id = detaial.dict_id + WHERE + dict.`name` = 输入.dict_type + OPTION 输入.dict_type = "sch_area_type" + detaial.value IN ('22','23','24') + ENDOPTION + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "16" + QUERY + SELECT + point.point_id, + point.point_code, + point.point_name + FROM + sch_base_point point + WHERE + point_name LIKE '分拣机械手%' + and device_point_type='01' + ENDSELECT + ENDQUERY + ENDIF \ No newline at end of file diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/sendmaterial/rest/SendMaterialController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/sendmaterial/rest/SendMaterialController.java new file mode 100644 index 0000000..4da2622 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/sendmaterial/rest/SendMaterialController.java @@ -0,0 +1,39 @@ +package org.nl.wms.pda.sendmaterial.rest; + +import com.alibaba.fastjson.JSONObject; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.annotation.Log; +import org.nl.wms.pda.sendmaterial.service.SendMaterialService; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequiredArgsConstructor +@Api(tags = "手持送料") +@RequestMapping("api/pda/sendMaterial") +@Slf4j +public class SendMaterialController { + + private final SendMaterialService sendMaterialService; + + @PostMapping("/queryPoint") + @Log("查询区域点位") + @ApiOperation("查询区域点位") + public ResponseEntity queryPoint() { + return new ResponseEntity<>(sendMaterialService.queryPoint(), HttpStatus.OK); + } + + @PostMapping("/confirm") + @Log("送料确定") + @ApiOperation("送料确定") + public ResponseEntity confirm(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(sendMaterialService.confirm(whereJson), HttpStatus.OK); + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/sendmaterial/service/SendMaterialService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/sendmaterial/service/SendMaterialService.java new file mode 100644 index 0000000..8e00ec0 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/sendmaterial/service/SendMaterialService.java @@ -0,0 +1,19 @@ +package org.nl.wms.pda.sendmaterial.service; + +import com.alibaba.fastjson.JSONObject; + +public interface SendMaterialService { + + /** + * 查询区域点位 + * @return JSONObject + */ + JSONObject queryPoint(); + + /** + * 送料确定 + * @param whereJson / + * @return JSONObject + */ + JSONObject confirm(JSONObject whereJson); +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/sendmaterial/service/impl/SendMaterialServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/sendmaterial/service/impl/SendMaterialServiceImpl.java new file mode 100644 index 0000000..ecc44bc --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/sendmaterial/service/impl/SendMaterialServiceImpl.java @@ -0,0 +1,69 @@ +package org.nl.wms.pda.sendmaterial.service.impl; + +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.wms.ext.acs.service.AcsToWmsService; +import org.nl.wms.pda.sendmaterial.service.SendMaterialService; +import org.nl.wql.WQL; +import org.nl.wql.core.bean.WQLObject; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@RequiredArgsConstructor +@Slf4j +public class SendMaterialServiceImpl implements SendMaterialService { + + private final AcsToWmsService acsToWmsService; + + @Override + public JSONObject queryPoint() { + JSONObject result = new JSONObject(); + // 1.查询区域:豪凯区域 HKQY01、共挤区域 GJQY01 + JSONArray regionArr = WQL.getWO("PDA_SENDMATERIAL_01").addParam("flag", "1").process().getResultJSONArray(0); + // 2.根据区域查询对应的物料上料位 + JSONObject resultJson = new JSONObject(); + for (int i = 0; i < regionArr.size(); i++) { + JSONObject jsonRegion = regionArr.getJSONObject(i); + JSONArray pointArr = WQL.getWO("PDA_SENDMATERIAL_01").addParam("flag", "2").addParam("region_id", jsonRegion.getString("region_id")).process().getResultJSONArray(0); + jsonRegion.put("pointArr", pointArr); + } + resultJson.put("regionja", regionArr); + result.put("result", resultJson); + result.put("code", "1"); + result.put("desc", "查询成功"); + return result; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public JSONObject confirm(JSONObject whereJson) { + JSONObject result = new JSONObject(); + // 1、准备参数:point_code、type:2为共挤区域,8为豪凯区域 + JSONObject param = new JSONObject(); + + String region_id = whereJson.getString("region_id"); + JSONObject jsonObject = WQLObject.getWQLObject("sch_base_region").query("region_id ='" + region_id + "'").uniqueResult(0); + String region_code = jsonObject.getString("region_code"); + if (StrUtil.equals(region_code, "GJQY01")) param.put("type","2"); + if (StrUtil.equals(region_code, "HKQY01")) param.put("type","8"); + + param.put("point_code",whereJson.getString("point_code")); + param.put("qty",whereJson.getString("qty")); + // 2、调用接口 + JSONObject json = acsToWmsService.apply(param); + if (StrUtil.equals(json.getString("status"), "200")) { + result.put("result", ""); + result.put("code", "1"); + result.put("desc", "操作成功"); + } else { + result.put("result", ""); + result.put("code", "0"); + result.put("desc", "操作失败:"+json.getString("message")); + } + return result; + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/sendmaterial/wql/PDA_SENDMATERIAL_01.wql b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/sendmaterial/wql/PDA_SENDMATERIAL_01.wql new file mode 100644 index 0000000..5c5c7ce --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/sendmaterial/wql/PDA_SENDMATERIAL_01.wql @@ -0,0 +1,77 @@ +[交易说明] + 交易名: 手持送料查询 + 所属模块: + 功能简述: + 版权所有: + 表引用: + 版本经历: + +[数据库] + --指定数据库,为空采用默认值,默认为db.properties中列出的第一个库 + +[IO定义] + ################################################# + ## 表字段对应输入参数 + ################################################# + 输入.flag TYPEAS s_string + 输入.region_id TYPEAS s_string + +[临时表] + --这边列出来的临时表就会在运行期动态创建 + +[临时变量] + --所有中间过程变量均可在此处定义 + +[业务过程] + + ########################################## + # 1、输入输出检查 # + ########################################## + + + ########################################## + # 2、主过程前处理 # + ########################################## + + + ########################################## + # 3、业务主过程 # + ########################################## + + IF 输入.flag = "1" + QUERY + SELECT + region_id, + region_code, + region_name + FROM + sch_base_region + WHERE + is_used = '1' + AND region_code in ('HKQY01','GJQY01') + + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "2" + QUERY + SELECT + point_id, + point_code, + point_name + FROM + sch_base_point + WHERE + is_used = '1' + AND is_delete = '0' + AND is_host = '0' + AND device_point_type = '2' + + OPTION 输入.region_id <> "" + region_id = 输入.region_id + ENDOPTION + + ENDSELECT + ENDQUERY + ENDIF \ No newline at end of file diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/sendvehicle/rest/SendVehicleController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/sendvehicle/rest/SendVehicleController.java new file mode 100644 index 0000000..894c99f --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/sendvehicle/rest/SendVehicleController.java @@ -0,0 +1,41 @@ +package org.nl.wms.pda.sendvehicle.rest; + +import com.alibaba.fastjson.JSONObject; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.annotation.Log; +import org.nl.wms.pda.callvehicle.service.CallVehicleService; +import org.nl.wms.pda.sendmaterial.service.SendMaterialService; +import org.nl.wms.pda.sendvehicle.service.SendVehicleService; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequiredArgsConstructor +@Api(tags = "手持送空托盘") +@RequestMapping("api/pda/sendEmpty") +@Slf4j +public class SendVehicleController { + + private final SendVehicleService sendVehicleService; + + @PostMapping("/queryPoint") + @Log("查询区域点位") + @ApiOperation("查询区域点位") + public ResponseEntity queryPoint() { + return new ResponseEntity<>(sendVehicleService.queryPoint(), HttpStatus.OK); + } + + @PostMapping("/confirm") + @Log("送空托盘确定") + @ApiOperation("送空托盘确定") + public ResponseEntity confirm(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(sendVehicleService.confirm(whereJson), HttpStatus.OK); + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/sendvehicle/service/SendVehicleService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/sendvehicle/service/SendVehicleService.java new file mode 100644 index 0000000..f4d5ad0 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/sendvehicle/service/SendVehicleService.java @@ -0,0 +1,19 @@ +package org.nl.wms.pda.sendvehicle.service; + +import com.alibaba.fastjson.JSONObject; + +public interface SendVehicleService { + + /** + * 查询区域点位 + * @return JSONObject + */ + JSONObject queryPoint(); + + /** + * 送空托盘确定 + * @param whereJson / + * @return JSONObject + */ + JSONObject confirm(JSONObject whereJson); +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/sendvehicle/service/impl/SendVehicleServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/sendvehicle/service/impl/SendVehicleServiceImpl.java new file mode 100644 index 0000000..bba5b77 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/sendvehicle/service/impl/SendVehicleServiceImpl.java @@ -0,0 +1,77 @@ +package org.nl.wms.pda.sendvehicle.service.impl; + +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.wms.ext.acs.service.AcsToWmsService; +import org.nl.wms.pda.callvehicle.service.CallVehicleService; +import org.nl.wms.pda.sendvehicle.service.SendVehicleService; +import org.nl.wms.sch.tasks.RegionTypeEnum; +import org.nl.wql.WQL; +import org.nl.wql.core.bean.WQLObject; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@RequiredArgsConstructor +@Slf4j +public class SendVehicleServiceImpl implements SendVehicleService { + + private final AcsToWmsService acsToWmsService; + + @Override + public JSONObject queryPoint() { + JSONObject result = new JSONObject(); + // 1.查询区域:输送区域 SSX01、油漆区域 YQQY01 + JSONArray regionArr = WQL.getWO("PDA_SENDVEHICLE_01").addParam("flag", "1").process().getResultJSONArray(0); + // 2.根据区域查询对应的物料上料位 + JSONObject resultJson = new JSONObject(); + for (int i = 0; i < regionArr.size(); i++) { + JSONObject jsonRegion = regionArr.getJSONObject(i); + if (StrUtil.equals(jsonRegion.getString("region_id"), RegionTypeEnum.SSX.getId())) { + JSONArray pointArr = WQL.getWO("PDA_SENDVEHICLE_01").addParam("flag", "2").addParam("region_id", jsonRegion.getString("region_id")).process().getResultJSONArray(0); + jsonRegion.put("pointArr", pointArr); + } else { + JSONArray pointArr = WQL.getWO("PDA_SENDVEHICLE_01").addParam("flag", "3").addParam("region_id", jsonRegion.getString("region_id")).process().getResultJSONArray(0); + jsonRegion.put("pointArr", pointArr); + } + } + resultJson.put("regionja", regionArr); + result.put("result", resultJson); + result.put("code", "1"); + result.put("desc", "查询成功"); + return result; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public JSONObject confirm(JSONObject whereJson) { + JSONObject result = new JSONObject(); + // 1、准备参数:point_code、type:6为输送线区域,5为油漆区域 + JSONObject param = new JSONObject(); + + String region_id = whereJson.getString("region_id"); + JSONObject jsonObject = WQLObject.getWQLObject("sch_base_region").query("region_id ='" + region_id + "'").uniqueResult(0); + String region_code = jsonObject.getString("region_code"); + if (StrUtil.equals(region_code, "SSX01")) param.put("type","6"); + if (StrUtil.equals(region_code, "YQQY01")) param.put("type","5"); + + param.put("point_code",whereJson.getString("point_code")); + param.put("vehicle_code",whereJson.getString("vehicle_code")); + param.put("vehicle_num",whereJson.getString("qty")); + // 2、调用接口 + JSONObject json = acsToWmsService.apply(param); + if (StrUtil.equals(json.getString("status"), "200")) { + result.put("result", ""); + result.put("code", "1"); + result.put("desc", "操作成功"); + } else { + result.put("result", ""); + result.put("code", "0"); + result.put("desc", "操作失败:"+json.getString("message")); + } + return result; + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/sendvehicle/wql/PDA_SENDVEHICLE_01.wql b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/sendvehicle/wql/PDA_SENDVEHICLE_01.wql new file mode 100644 index 0000000..4c7fdef --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/sendvehicle/wql/PDA_SENDVEHICLE_01.wql @@ -0,0 +1,99 @@ +[交易说明] + 交易名: 手持送空托盘查询 + 所属模块: + 功能简述: + 版权所有: + 表引用: + 版本经历: + +[数据库] + --指定数据库,为空采用默认值,默认为db.properties中列出的第一个库 + +[IO定义] + ################################################# + ## 表字段对应输入参数 + ################################################# + 输入.flag TYPEAS s_string + 输入.region_id TYPEAS s_string + +[临时表] + --这边列出来的临时表就会在运行期动态创建 + +[临时变量] + --所有中间过程变量均可在此处定义 + +[业务过程] + + ########################################## + # 1、输入输出检查 # + ########################################## + + + ########################################## + # 2、主过程前处理 # + ########################################## + + + ########################################## + # 3、业务主过程 # + ########################################## + + IF 输入.flag = "1" + QUERY + SELECT + region_id, + region_code, + region_name + FROM + sch_base_region + WHERE + is_used = '1' + AND region_code in ('SSX01','YQQY01') + + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "2" + QUERY + SELECT + point_id, + point_code, + point_name + FROM + sch_base_point + WHERE + is_used = '1' + AND is_delete = '0' + AND is_host = '0' + AND device_point_type = '6' + + OPTION 输入.region_id <> "" + region_id = 输入.region_id + ENDOPTION + + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "3" + QUERY + SELECT + point_id, + point_code, + point_name + FROM + sch_base_point + WHERE + is_used = '1' + AND is_delete = '0' + AND is_host = '0' + AND device_point_type = '4' + + OPTION 输入.region_id <> "" + region_id = 输入.region_id + ENDOPTION + + ENDSELECT + ENDQUERY + ENDIF \ No newline at end of file diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/dto/PointDto.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/dto/PointDto.java index 3fc8fef..4e53a94 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/dto/PointDto.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/dto/PointDto.java @@ -120,4 +120,9 @@ public class PointDto implements Serializable { * 修改时间 */ private String update_time; + + /** + * 设备点位类型 + */ + private String device_point_type; } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/wql/QSCH_BASE_POINT.wql b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/wql/QSCH_BASE_POINT.wql index 3fed283..221d83b 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/wql/QSCH_BASE_POINT.wql +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/wql/QSCH_BASE_POINT.wql @@ -76,7 +76,8 @@ point.update_optname, point.update_time, point.vehicle_type, - point.is_host + point.is_host, + point.device_point_type FROM sch_base_point point LEFT JOIN SCH_BASE_Region region ON point.region_id = region.region_id diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/wql/sch.xls b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/wql/sch.xls index 281a5db..71b7df8 100644 Binary files a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/wql/sch.xls and b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/wql/sch.xls differ diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/RegionTypeEnum.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/RegionTypeEnum.java index d1f456e..3e17c10 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/RegionTypeEnum.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/RegionTypeEnum.java @@ -4,7 +4,7 @@ package org.nl.wms.sch.tasks; * 任务状态枚举 */ public enum RegionTypeEnum { - CPQY(1, "CPQY01", "成品区域","1557538851726168064"), + CPQYA(1, "CPQYA01", "成品区域A","1557538851726168064"), YSQA(2, "YSQA01", "养生A区","1557539288307077120"), YSQB(3, "YSQB01", "养生B区","1557539423292362752"), GJQY(4, "GJQY01", "共挤区","1557539744848678912"), @@ -12,7 +12,10 @@ public enum RegionTypeEnum { DPJQA(6, "DPJQA01", "叠盘架A区","1558015562792177664"), DPJQB(7, "DPJQB01", "叠盘架B区","1558015634472833024"), KTPHCQA(8, "KTPHCQA01", "空托盘缓存A区","1558015810096730112"), - KTPHCQB(8, "KTPHCQB01", "空托盘缓存B区","1558015870570205184"); + KTPHCQB(9, "KTPHCQB01", "空托盘缓存B区","1558015870570205184"), + HKQY(10, "HKQY01", "豪凯区域","1564862312702152704"), + CPQYB(11, "CPQYB01", "成品区域B","1564874102089584640"), + SSX(12, "SSX01", "输送线区域","1559374522581389312"); private int index; private String code; diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SendMaterialTask.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SendMaterialTask.java index c9e927d..4efa901 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SendMaterialTask.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SendMaterialTask.java @@ -295,8 +295,14 @@ public class SendMaterialTask extends AbstractAcsTask { if (ObjectUtil.isEmpty(jsonEndPoint)) throw new BadRequestException("仓位不足"); next_point_code = jsonEndPoint.getString("point_code"); - } else { - throw new BadRequestException("业务类型错误"); + } else if (StrUtil.equals(jsonStartRegion.getString("region_code"),RegionTypeEnum.HKQY.getCode())) { + JSONObject map = new JSONObject(); + map.put("flag", "2"); + map.put("region_code", RegionTypeEnum.CPQYA.getCode()); + JSONObject jsonEndPoint = WQL.getWO("ST_REGION_IN_01").addParamMap(map).process().uniqueResult(0); + + if (ObjectUtil.isEmpty(jsonEndPoint)) throw new BadRequestException("仓位不足"); + next_point_code = jsonEndPoint.getString("point_code"); } JSONObject resuft = new JSONObject(); diff --git a/mes/hd/nladmin-system/src/test/java/org/nl/Test3.java b/mes/hd/nladmin-system/src/test/java/org/nl/Test3.java index 6b21fdd..1b35e89 100644 --- a/mes/hd/nladmin-system/src/test/java/org/nl/Test3.java +++ b/mes/hd/nladmin-system/src/test/java/org/nl/Test3.java @@ -1241,7 +1241,7 @@ public class Test3 extends BaseTest { } JSONObject json = new JSONObject(); json.put("struct_id", IdUtil.getSnowflake(1,1).nextId()); - json.put("struct_code", code1+"01"+ code); + json.put("struct_code", "YA"+code1+"-01-"+ code); json.put("struct_name", String.valueOf(i) + "排" + "1 层" + String.valueOf(j) + "列"); json.put("simple_name",json.getString("struct_name")); json.put("region_id", "1557539288307077120"); @@ -1261,6 +1261,82 @@ public class Test3 extends BaseTest { System.out.println("创建成功"); } + @Test + public void createPoint2() { + WQLObject tab = WQLObject.getWQLObject("ST_IVT_StructAttr"); + // 成品A 4排 5层 46列 成品B 4排 5层16列 + for (int i = 1; i <=4; i++) { + String code1 = ""; + if (i<10) { + code1 = "0"+ String.valueOf(i); + } else { + code1 = String.valueOf(i); + } + for (int j = 1; j <= 5; j++) { + String code = ""; + if (j<10) { + code = "0"+ String.valueOf(j); + } else { + code = String.valueOf(j); + } + for (int k = 1; k <= 16; k++) { + String code3 = ""; + if (j<10) { + code3 = "0"+ String.valueOf(k); + } else { + code3 = String.valueOf(k); + } + JSONObject json = new JSONObject(); + json.put("struct_id", IdUtil.getSnowflake(1,1).nextId()); + json.put("struct_code", "CA"+code1+"-"+code+"-"+ code3); + json.put("struct_name", String.valueOf(i) + "排" + String.valueOf(j)+"层" + String.valueOf(k) + "列"); + json.put("simple_name",json.getString("struct_name")); + json.put("region_id", "1564874102089584640"); + json.put("region_code","CPQYB01"); + json.put("region_name","成品区域B"); + json.put("stor_id","1528627964823080960"); + json.put("stor_code","F103"); + json.put("stor_name","永裕仓库"); + json.put("stor_type","01"); + json.put("create_id","1"); + json.put("create_name","管理员"); + json.put("create_time", DateUtil.now()); + json.put("material_height_type", "1"); + tab.insert(json); + } + } + } + System.out.println("创建成功"); + } } + + +class A implements Runnable { + static A a = new A(); // 创建类变量 + + @Override + public void run() { + this.method(); + } + + public synchronized void method() { + System.out.println("我是线程" + Thread.currentThread().getName()); + try { + Thread.sleep(3000); + } catch (Exception e) { + e.printStackTrace(); + } + System.out.println(Thread.currentThread().getName() + "结束"); + } +} + +class B { + public static void main(String[] args) { + Thread thread1 = new Thread(A.a); + Thread thread2 = new Thread(A.a); + thread1.start(); + thread2.start(); + } +} diff --git a/mes/qd/src/views/wms/sch/point/index.vue b/mes/qd/src/views/wms/sch/point/index.vue index 69781bc..90664b1 100644 --- a/mes/qd/src/views/wms/sch/point/index.vue +++ b/mes/qd/src/views/wms/sch/point/index.vue @@ -129,9 +129,9 @@ :before-close="crud.cancelCU" :visible.sync="crud.status.cu > 0" :title="crud.status.title" - width="500px" + width="520px" > - + @@ -171,6 +171,21 @@ /> + + + + + @@ -289,10 +304,10 @@ import udOperation from '@crud/UD.operation' import pagination from '@crud/Pagination' /*import checkoutbill from '@/api/wms/st/core/outbill/checkoutbill'*/ -const defaultForm = { point_id: null, is_host: null, point_code: null, point_name: null, area_type: null, point_type: '00', point_status: '00', lock_type: '00', vehicle_code: null, source_id: null, remark: null, is_used: null, is_delete: null, create_id: null, create_name: null, create_time: null, update_optid: null, update_optname: null, update_time: null } +const defaultForm = { device_point_type: null, point_id: null, is_host: null, point_code: null, point_name: null, area_type: null, point_type: '00', point_status: '00', lock_type: '00', vehicle_code: null, source_id: null, remark: null, is_used: null, is_delete: null, create_id: null, create_name: null, create_time: null, update_optid: null, update_optname: null, update_time: null } export default { name: 'Point', - dicts: ['sch_point_type', 'sch_area_type', 'sch_point_status', 'is_used', 'd_lock_type', 'SCH_TASK_TYPE_DTL', 'storagevehicle_type', 'IS_HOST'], + dicts: ['sch_point_type', 'sch_area_type', 'sch_point_status', 'is_used', 'd_lock_type', 'SCH_TASK_TYPE_DTL', 'storagevehicle_type', 'IS_HOST', 'device_point_type'], components: { pagination, crudOperation, rrOperation, udOperation }, mixins: [presenter(), header(), form(defaultForm), crud()], cruds() {