This commit is contained in:
18188916393
2022-08-22 10:26:54 +08:00
parent 7c7ed6f1b1
commit 006198d39f
27 changed files with 649 additions and 206 deletions

View File

@@ -0,0 +1,63 @@
package org.nl.wms.common;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.nl.exception.BadRequestException;
import org.nl.wql.WQL;
import org.nl.wql.core.bean.WQLObject;
public class SortingUtil {
//记录分拣 木托盘对应钢托盘
public static void record(JSONObject whereJson) {
String device_code = (String) whereJson.get("device_code");
String vehicle_code = (String) whereJson.get("vehicle_code");
//木托盘对应刚托盘记录主表【st_buss_vehicleRelaRecord】
WQLObject ehicleRelaRecordmst = WQLObject.getWQLObject("st_buss_vehicleRelaRecord");
//木托盘对应刚托盘记录明细【st_buss_vehicleRelaRecordtl】
WQLObject ehicleRelaRecordmstdtl = WQLObject.getWQLObject("st_buss_vehicleRelaRecordtl");
//st_buss_vehiclegroup
WQLObject groupTable = WQLObject.getWQLObject("st_buss_vehicleRelaRecordtl");
JSONObject mstObj = ehicleRelaRecordmst.query("vehicle_code='" + vehicle_code + "'").uniqueResult(0);
String record_id = IdUtil.getSnowflake(1, 1).nextIdStr();
if (ObjectUtil.isEmpty(mstObj)) {
mstObj.put("record_id", record_id);
mstObj.put("vehicle_code", vehicle_code);
ehicleRelaRecordmst.insert(mstObj);
}
JSONArray pointArr = new JSONArray();
//假如是分拣机械手3则去查询分拣机械手3下料位置的托盘号码
if (StrUtil.equals(device_code, "FJJXSSLW301") || StrUtil.equals("FJJXSSLW302", device_code)) {
pointArr = WQL.getWO("WMSTOJN_001").addParam("flag", "4").process().getResultJSONArray(0);
} else {
pointArr = WQL.getWO("WMSTOJN_001").addParam("flag", "5").process().getResultJSONArray(0);
}
for (int i = 0; i < pointArr.size(); i++) {
JSONObject jo = pointArr.getJSONObject(i);
String Sl_vehicle_code = jo.getString("vehicle_code");
record_id = mstObj.getString("record_id");
JSONObject dtljo = ehicleRelaRecordmstdtl.query("record_id='" + record_id + "' and vehicle_code ='" + Sl_vehicle_code + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(dtljo)) {
JSONObject groupObj = groupTable.query("vehicle_code='" + Sl_vehicle_code + "'", "create_time desc").uniqueResult(0);
if (ObjectUtil.isEmpty(groupObj)) {
throw new BadRequestException("未找到托盘编号为'" + vehicle_code + "'");
}
dtljo.put("recordtl_id", IdUtil.getSnowflake(1, 1).nextId());
dtljo.put("record_id", record_id);
dtljo.put("vehicle_code", Sl_vehicle_code);
dtljo.put("producetask_id", groupObj.get("producetask_id"));
dtljo.put("material_move_id", groupObj.get("material_move_id"));
mstObj.put("material_id", groupObj.get("material_id"));
ehicleRelaRecordmst.update(mstObj);
ehicleRelaRecordmstdtl.insert(dtljo);
}
}
}
}

View File

@@ -109,7 +109,7 @@ IF 输入.flag = "3"
point.vehicle_code,
ivt.canuse_qty,
ivt.workprocedure_id,
ivt.qty_unit_id,
ivt.producetask_id,
ruledis.out_seq_no
FROM
st_ivt_structivt ivt
@@ -274,8 +274,6 @@ IF 输入.flag = "9"
point.point_name AS struct_name,
point.vehicle_code,
ivt.canuse_qty,
ivt.workprocedure_id,
ivt.qty_unit_id,
ruledis.out_seq_no,
material.material_id,
material.material_code,

View File

@@ -90,7 +90,7 @@ public class MaterialDto implements Serializable {
/**
* 是否人工打包
*/
private String is_manmade;
private String is_auto_package;
/**
* 码垛数量
@@ -106,6 +106,10 @@ public class MaterialDto implements Serializable {
* 外部标识
*/
private String ext_id;
/**
* 打印模板
*/
private String print_model;
/**
* 静止时间

View File

@@ -2,6 +2,8 @@
package org.nl.wms.ext.acs.rest;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
@@ -106,7 +108,7 @@ public class AcsToWmsController {
@PostMapping("/status")
@Log("ACS给WMS反馈任务状态")
@ApiOperation("ACS给WMS反馈任务状态")
public ResponseEntity<Object> receiveTaskStatusAcs(@RequestBody String string) {
return new ResponseEntity<>(acsToWmsService.receiveTaskStatusAcs(string), HttpStatus.OK);
public ResponseEntity<Object> receiveTaskStatusAcs(@RequestBody String material_code) {
return new ResponseEntity<>(acsToWmsService.receiveTaskStatusAcs(material_code), HttpStatus.OK);
}
}

View File

@@ -72,4 +72,5 @@ public class WmsToAcsController {
return new ResponseEntity<>(wmsToAcsService.queryPointStatus(arr), HttpStatus.OK);
}
}

View File

@@ -44,7 +44,35 @@ public class WmsToJnController {
return new ResponseEntity<>(WmsToJnService.synchroMaterial(whereJson), HttpStatus.OK);
}
@PostMapping("/feedBackStatus")
@Log("反馈设备状态")
@ApiOperation("反馈设备状态")
public ResponseEntity<Object> feedBackStatus(@RequestBody Map whereJson) {
return new ResponseEntity<>(WmsToJnService.feedBackStatus(whereJson), HttpStatus.OK);
}
@PostMapping("/feedBackCarryRecord")
@Log("反馈搬运记录")
@ApiOperation("反馈搬运记录")
public ResponseEntity<Object> feedBackCarryRecord(@RequestBody Map whereJson) {
return new ResponseEntity<>(WmsToJnService.feedBackCarryRecord(whereJson), HttpStatus.OK);
}
@PostMapping("/feedBackInKiln")
@Log("反馈进窑信息")
@ApiOperation("反馈进窑信息")
public ResponseEntity<Object> feedBackInKiln(@RequestBody Map whereJson) {
return new ResponseEntity<>(WmsToJnService.feedBackInKiln(whereJson), HttpStatus.OK);
}
@PostMapping("/feedBackOutKiln")
@Log("反馈出窑信息")
@ApiOperation("反馈出窑信息")
public ResponseEntity<Object> feedBackOutKiln(@RequestBody Map whereJson) {
return new ResponseEntity<>(WmsToJnService.feedBackOutKiln(whereJson), HttpStatus.OK);
}
@PostMapping("/feedBackPackage")
@Log("反馈包装信息")
@ApiOperation("反馈包装信息")
public ResponseEntity<Object> feedBackPackage(@RequestBody Map whereJson) {
return new ResponseEntity<>(WmsToJnService.feedBackPackage(whereJson), HttpStatus.OK);
}
}

View File

@@ -86,10 +86,19 @@ public interface AcsToWmsService {
* ACS客户端--->WMS服务端
* ACS向WMS反馈任务状态
*
* @param jsonObject 条件
* @param string 条件
* @return Map<String, Object>
*/
Map<String, Object> receiveTaskStatusAcs(String string);
/**
* ACS客户端--->WMS服务端
* 根据物料编码获取垛形参数
*
* @param string 条件 物料条码
* @return Map<String, Object>
*/
Map<String, Object> CribbingInfoByCode(String material_code);
}

View File

@@ -32,14 +32,7 @@ public interface WmsToJnService {
*/
Map<String, Object> feedBackStatus(Map whereJson);
/**
* WMS 反馈物料托盘参数信息
*
* @param
* @return Map<String, Object>
*/
Map<String, Object> feedBackGroup(Map whereJson);
/**
* WMS 反馈搬运记录
*
@@ -49,6 +42,33 @@ public interface WmsToJnService {
Map<String, Object> feedBackCarryRecord(Map whereJson);
/**
* WMS 反馈进窑信息
*
* @param
* @return Map<String, Object>
*/
Map<String, Object> feedBackInKiln(Map whereJson);
/**
* WMS 反馈出窑信息
*
* @param
* @return Map<String, Object>
*/
Map<String, Object> feedBackOutKiln(Map whereJson);
/**
* WMS 反馈包装信息
*
* @param
* @return Map<String, Object>
*/
Map<String, Object> feedBackPackage(Map whereJson);
}

View File

@@ -9,7 +9,6 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.checkerframework.checker.units.qual.K;
import org.nl.exception.BadRequestException;
import org.nl.modules.system.util.CodeUtil;
import org.nl.utils.SecurityUtils;
@@ -81,7 +80,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
throw new BadRequestException("托盘是否满托不能为空!");
}
String material_code = (String) jsonObject.get("material_code");
String pcsn = (String) jsonObject.get("pcsn");
String producetask_id = (String)jsonObject.get("producetask_id");
String material_id = "";
JSONObject materialObj = WQLObject.getWQLObject("md_me_material").query("material_code ='" + material_code + "'").uniqueResult(0);
if (StrUtil.isEmpty(material_code) && (!StrUtil.equals(device_code, "CYSSX101"))) {
@@ -101,18 +100,15 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
throw new BadRequestException("为找到载具号为'" + vehicle_code + "'的组盘信息!");
}
material_id = vehicleObj.getString("material_id");
pcsn = vehicleObj.getString("pcsn");
jsonObject.put("qty", vehicleObj.getString("qty"));
jsonObject.put("vehicle_code", vehicle_code);
}
jsonObject.put("pcsn", pcsn);
jsonObject.put("producetask_id",producetask_id);
jsonObject.put("create_mode", "01");
jsonObject.put("material_id", material_id);
JSONObject materiralObj = WQLObject.getWQLObject("md_me_material").query("material_id = '" + material_id + "'").uniqueResult(0);
Double stewing_time = materiralObj.getDouble("stewing_time");
jsonObject.put("stewing_time", stewing_time);
jsonObject.put("producetask_id", produceInfoByCode.getString("producetask_id"));
//假如是压制下料的几个位置,则要考虑是入输送线 还是入立体库
String area_type = pointTable.query("point_code ='" + device_code + "'").uniqueResult(0).getString("area_type");
if (StrUtil.equals(area_type, AreaEnum.YZQY.getCode()) && stewing_time <= 0) {
@@ -262,7 +258,6 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
JSONObject groubObj = new JSONObject();
String group_id = IdUtil.getSnowflake(1, 1).nextId() + "";
groubObj.put("group_id", group_id);
groubObj.put("material_id", material_id);
groubObj.put("material_code", materialObj.getString("material_code"));
groubObj.put("material_name", materialObj.getString("material_name"));
@@ -330,11 +325,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
groubObj.put("create_id", SecurityUtils.getCurrentUserId());
groubObj.put("create_name", SecurityUtils.getNickName());
groubObj.put("create_time", DateUtil.now());
String is_autopackage = "1";
if (StrUtil.equals(device_code, "MDJXS601")) {
is_autopackage = "0";
}
groubObj.put("is_autopackage", is_autopackage);
//去自动码垛还是人工码垛从物料信息里面去取
groubObj.put("is_autopackage", materialObj.getString("is_auto_package"));
//假如是分拣机械手,并且托盘为空,则托盘从点位上取
if ((StrUtil.equals(device_code, "FJJXSXLW201") ||
StrUtil.equals(device_code, "FJJXSXLW202") ||
@@ -349,6 +341,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
WQLObject.getWQLObject("st_buss_vehiclegroup").insert(groubObj);
jsonObject.put("type", "1");
jsonObject.put("group_id", group_id);
jsonObject.put("producetask_id", producetask_id);
this.receiveTaskFromAcs(jsonObject);
JSONObject result = new JSONObject();
result.put("status", HttpStatus.OK.value());
@@ -574,10 +567,10 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
}
//根据设备去找设备id
JSONObject deviceObj = WQLObject.getWQLObject("PDM_BASE_DEVICE").query("device_code='" + device_code + "'").uniqueResult(0);
String device_id = WQLObject.getWQLObject("sch_base_point").query("point_code='" + device_code + "'").uniqueResult(0).getString("device_id");
//根据物料code 去找物料id
JSONObject materiObj = WQLObject.getWQLObject("MD_ME_Material").query("material_code='" + material_code + "'").uniqueResult(0);
if (!StrUtil.equals(deviceObj.getString("device_id"), taskObj.getString("device_id"))) {
if (!StrUtil.equals(device_id, taskObj.getString("device_id"))) {
throw new BadRequestException("设备标识不一样!");
}
if (!StrUtil.equals(materiObj.getString("material_id"), taskObj.getString("material_id"))) {
@@ -687,6 +680,22 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
}
}
@Override
public Map<String, Object> CribbingInfoByCode(String material_code) {
if (StrUtil.isEmpty(material_code)) {
throw new BadRequestException("物料条码不能为空!");
}
JSONObject returnjo = WQLObject.getWQLObject("MD_ME_CribbingInfo").query("material_code='" + material_code + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(returnjo)) {
throw new BadRequestException("未找到物料编码为'" + material_code + "'的垛形参数信息!");
}
JSONObject result = new JSONObject();
result.put("status", HttpStatus.OK.value());
result.put("message", "任务状态反馈成功!");
result.put("data", returnjo);
return result;
}
private JSONObject getProduceInfoByCode(String code) {
//根据 设备点位去找生产任务信息
//1 根据点位去找设备,去找对应的设备信息
@@ -694,7 +703,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
String device_id = pointObj.getString("device_id");
//2 根据设备去找对应的生产任务
JSONObject productTaskObj = WQLObject.getWQLObject("PDM_MG_produceTask")
.query("device_id ='" + device_id + "' and producetask_status in ('03','02','04')", "seq_no")
.query("device_id ='" + device_id + "' and producetask_status in ('03','02','04')")
.uniqueResult(0);
if (ObjectUtil.isEmpty(productTaskObj)) {
throw new BadRequestException("未找到点位为'" + code + "'的生产任务!");

View File

@@ -9,12 +9,19 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.formula.functions.T;
import org.nl.exception.BadRequestException;
import org.nl.modules.system.util.CodeUtil;
import org.nl.utils.SecurityUtils;
import org.nl.wms.ext.acs.service.WmsToAcsService;
import org.nl.wms.ext.acs.service.WmsToJnService;
import org.nl.wms.sch.AcsUtil;
import org.nl.wql.WQL;
import org.nl.wql.core.bean.WQLObject;
import org.nl.wql.core.engine.object.WO;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.Map;
@@ -25,106 +32,206 @@ import java.util.Map;
public class WmsToJnServiceImpl implements WmsToJnService {
private String URL = "192.168.23.32";
final static int timeout = 3000;
private String today = DateUtil.today();
@Override
public Map<String, Object> synchroDaySchedule(Map whereJson) {
String today = DateUtil.today();
//同步日计划
JSONObject obj = new JSONObject();
obj.put("date", today);
obj.put("startdate", whereJson.get("startdate"));
obj.put("enddate", whereJson.get("enddate"));
String resultMsg = HttpRequest.post(URL)
.body(String.valueOf(obj)).timeout(timeout)
.execute().body();
JSONObject result = JSONObject.parseObject(resultMsg);
String code = result.getString("code");
if (StrUtil.isNotEmpty(code) && code.equals("200")) {
log.info("wms同步嘉耐日计划成功!");
String status = result.getString("status");
if (StrUtil.isNotEmpty(status) && status.equals("1")) {
log.info("wms同步嘉耐工单成功!");
} else {
log.info("wms同步嘉耐日计划失败!");
log.info("wms同步嘉耐工单失败!");
}
WQLObject dayScheduleTable = WQLObject.getWQLObject("pdm_bi_dayschedule");
JSONArray dayScheduleArr = result.getJSONArray("data");
WQLObject produceTaskTable = WQLObject.getWQLObject("PDM_MG_produceTask");
WQLObject material_table = WQLObject.getWQLObject("md_me_materialbase");
WQLObject device_Table = WQLObject.getWQLObject("PDM_BASE_DEVICE");
JSONArray dayScheduleArr = result.getJSONObject("returnData").getJSONArray("Table");
for (int i = 0; i < dayScheduleArr.size(); i++) {
JSONObject dayScheduleObj = dayScheduleArr.getJSONObject(i);
JSONObject scheduleObj = dayScheduleTable.query("ext_dayschedule_code='" + dayScheduleObj.getString("ext_dayschedule_code") + "'").uniqueResult(0);
//计划单号
String SHOPORDERNO = dayScheduleObj.getString("SHOPORDERNO");
//物料代码
String ITEMCODE = dayScheduleObj.getString("ITEMCODE");
//压机编号
String SBDM = dayScheduleObj.getString("SBDM");
JSONObject materialObj = material_table.query("material_code ='" + ITEMCODE + "'").uniqueResult(0);
JSONObject deviceObj = device_Table.query("ext_device_code='" + SBDM + "'").uniqueResult(0);
JSONObject scheduleObj = produceTaskTable.query("ext_shoporder_no='" + SHOPORDERNO + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(scheduleObj)) {
JSONObject jo = new JSONObject();
jo.put("dayschedule_id", IdUtil.getSnowflake(1, 1).nextId());
jo.put("ext_dayschedule_code", scheduleObj.getString("ext_dayschedule_code"));
jo.put("date", today);
jo.put("ext_dayschedule_code", scheduleObj.getString("ext_dayschedule_code"));
jo.put("ext_device_code", scheduleObj.getString("ext_device_code"));
jo.put("device_id", scheduleObj.getString("device_id"));
jo.put("device_code", scheduleObj.getString("device_code"));
jo.put("material_id", scheduleObj.getString("material_id"));
jo.put("material_code", scheduleObj.getString("material_code"));
jo.put("material_name", scheduleObj.getString("material_name"));
jo.put("material_spec", scheduleObj.getString("material_spec"));
jo.put("single_weight", scheduleObj.getString("single_weight"));
jo.put("qty", scheduleObj.getString("qty"));
jo.put("qty_unit_id", scheduleObj.getString("qty_unit_id"));
jo.put("label", scheduleObj.getString("label"));
jo.put("is_delete", "1");
dayScheduleTable.insert(jo);
jo.put("producetask_id", IdUtil.getSnowflake(1, 1).nextId());
jo.put("producetask_code", CodeUtil.getNewCode("PRODUCE_CODE"));
jo.put("producetask_status", "01");
jo.put("material_id", materialObj.getString("material_id"));
jo.put("device_id", deviceObj.getString("device_id"));
jo.put("plan_qty", deviceObj.getString("REQQTY"));
jo.put("vehicle_type", deviceObj.getString("STOCKTYPE"));
jo.put("plan_date", deviceObj.getString("PLANSTARTDATE"));
jo.put("classes", deviceObj.getString("BANCI"));
jo.put("ext_shoporder_no", deviceObj.getString("SHOPORDERNO"));
jo.put("print_type", deviceObj.getString("PRINTTYPE"));
jo.put("print_dm", deviceObj.getString("PRINTDM"));
jo.put("print_name", deviceObj.getString("PRINTNAME"));
jo.put("print_gg", deviceObj.getString("PRINTGG"));
jo.put("print_pc", deviceObj.getString("PRINTPC"));
jo.put("yh_name", deviceObj.getString("YHNAME"));
jo.put("is_export", "1");
jo.put("is_export", deviceObj.getString("STOCKTYPE"));
jo.put("create_id", SecurityUtils.getCurrentUserId());
jo.put("create_name", SecurityUtils.getNickName());
jo.put("create_time", DateUtil.now());
produceTaskTable.insert(jo);
}
}
return null;
JSONObject returnjo = new JSONObject();
returnjo.put("status", HttpStatus.OK.value());
returnjo.put("message", "任务状态反馈成功!");
return result;
}
@Override
@Transactional(rollbackFor = Exception.class)
public Map<String, Object> synchroMaterial(Map whereJson) {
String material_code = (String) whereJson.get("material_code");
String material_name = (String) whereJson.get("material_name");
String material_spec = (String) whereJson.get("material_spec");
String ext_id = (String) whereJson.get("ext_id");
WQLObject materialTable = WQLObject.getWQLObject("md_me_material");
String methon = "getItems";
/**
* DM: "物料代码",
* NAME: "物料名称",
* GG: "规格型号",
* JLDWNAME: "计量单位",
* PRINTTYPE: "打印模板编码"
* WAITTIME:”静止时间(分钟)”,
* ISAUTO:”是否自动码垛” 0-否 1-是
*/
WQLObject material_table = WQLObject.getWQLObject("MD_ME_Material");
JSONObject obj = new JSONObject();
obj.put("material_code", material_code);
obj.put("material_spec", material_spec);
String resultMsg = HttpRequest.post(URL)
.body(String.valueOf(obj)).timeout(timeout)
.execute().body();
JSONObject result = JSONObject.parseObject(resultMsg);
String code = result.getString("code");
if (StrUtil.isNotEmpty(code) && code.equals("200")) {
String status = result.getString("status");
if (StrUtil.isNotEmpty(status) && status.equals("1")) {
log.info("wms同步嘉耐物料成功");
} else {
log.info("wms同步嘉耐物料失败");
}
JSONArray materialarr = result.getJSONArray("data");
JSONArray Table = new JSONArray();
JSONObject param = new JSONObject();
JSONArray materialarr = result.getJSONArray("Table");
for (int i = 0; i < materialarr.size(); i++) {
JSONObject materialjo = materialarr.getJSONObject(i);
JSONObject materialObj = new JSONObject();
materialObj.put("material_id", IdUtil.getSnowflake(1, 1).nextId());
materialObj.put("material_code", materialjo.getString("material_code"));
materialObj.put("material_name", materialjo.getString("material_name"));
materialObj.put("material_spec", materialjo.getString("material_spec"));
materialObj.put("material_model", materialjo.getString("material_name"));
materialObj.put("create_id", "1");
materialObj.put("create_time", DateUtil.now());
materialObj.put("create_name", "qinx");
materialObj.put("is_used", "1");
materialObj.put("is_manmade", "1");
materialObj.put("ext_id", materialjo.getString("ext_id"));
materialObj.put("stewing_time", 0);
materialTable.insert(materialjo);
String DM = materialjo.getString("DM");
param.put("ITEMCODE", DM);
Table.add(param);
JSONObject materialObj = material_table.query("material_code='" + DM + "'").uniqueResult(0);
//如果有就更新,没有就插入
if (ObjectUtil.isEmpty(materialObj)) {
materialObj.put("material_name", materialjo.getString("NAME"));
materialObj.put("material_spec", materialjo.getString("GG"));
materialObj.put("material_model", materialjo.getString("GG"));
materialObj.put("english_name", materialjo.getString("NAME"));
materialObj.put("stewing_time", materialjo.getString("WAITTIME"));
materialObj.put("print_model", materialjo.getString("PRINTTYPE"));
materialObj.put("is_auto_package", materialjo.getString("ISAUTO"));
materialObj.put("is_used", "1");
materialObj.put("update_optid", SecurityUtils.getCurrentUserId());
materialObj.put("update_optname", SecurityUtils.getNickName());
materialObj.put("update_time", DateUtil.now());
material_table.update(materialObj);
} else {
materialObj.put("material_id", IdUtil.getSnowflake(1, 1).nextId());
materialObj.put("material_name", materialjo.getString("NAME"));
materialObj.put("material_code", materialjo.getString("GG"));
materialObj.put("material_model", materialjo.getString("GG"));
materialObj.put("english_name", materialjo.getString("NAME"));
materialObj.put("print_model", materialjo.getString("PRINTTYPE"));
materialObj.put("is_auto_package", materialjo.getString("ISAUTO"));
materialObj.put("is_used", "1");
materialObj.put("create_id", SecurityUtils.getCurrentUserId());
materialObj.put("create_name", SecurityUtils.getNickName());
materialObj.put("create_time", DateUtil.now());
materialObj.put("update_optid", SecurityUtils.getCurrentUserId());
materialObj.put("update_optname", SecurityUtils.getNickName());
materialObj.put("update_time", DateUtil.now());
material_table.insert(materialObj);
}
}
return null;
//调用接口告诉wms 调用已经同步该物料
String returnResultMsg = HttpRequest.post(URL)
.body(String.valueOf(obj)).timeout(timeout)
.execute().body();
JSONObject returnResult = JSONObject.parseObject(returnResultMsg);
String returnStatus = returnResult.getString("status");
if (StrUtil.isNotEmpty(returnStatus) && returnStatus.equals("1")) {
log.info("wms反馈嘉耐物料成功");
} else {
log.info("wms反馈嘉耐物料失败");
}
JSONObject returnjo = new JSONObject();
returnjo.put("status", HttpStatus.OK.value());
returnjo.put("message", "任务状态反馈成功!");
return result;
}
@Override
public Map<String, Object> feedBackStatus(Map whereJson) {
return null;
}
@Override
public Map<String, Object> feedBackGroup(Map whereJson) {
return null;
}
@Override
public Map<String, Object> feedBackCarryRecord(Map whereJson) {
String value = WQLObject.getWQLObject("sys_param").query("code='IS_CONNECT_JN'").uniqueResult(0).getString("value");
//如果连接了嘉耐 则反馈搬运记录
if (StrUtil.equals(value, "1")) {
String task_id = (String) whereJson.get("task_id");
JSONObject jsonObject = WQL.getWO("WMSTOJN_001").addParam("flag", "1").addParam("task_id", task_id).process().uniqueResult(0);
String returnResultMsg = HttpRequest.post(URL)
.body(String.valueOf(jsonObject)).timeout(timeout)
.execute().body();
}
return null;
}
@Override
public Map<String, Object> feedBackInKiln(Map whereJson) {
String vehicle_code = (String) whereJson.get("vehicle_code");
JSONObject jsonObject = WQL.getWO("WMSTOJN_001").addParam("flag", "2").addParam("vehicle_code", vehicle_code).process().uniqueResult(0);
String returnResultMsg = HttpRequest.post(URL)
.body(String.valueOf(jsonObject)).timeout(timeout)
.execute().body();
return null;
}
@Override
public Map<String, Object> feedBackOutKiln(Map whereJson) {
String vehicle_code = (String) whereJson.get("vehicle_code");
JSONObject jsonObject = WQL.getWO("WMSTOJN_001").addParam("flag", "3").addParam("vehicle_code", vehicle_code).process().uniqueResult(0);
String returnResultMsg = HttpRequest.post(URL)
.body(String.valueOf(jsonObject)).timeout(timeout)
.execute().body();
return null;
}
@Override
public Map<String, Object> feedBackPackage(Map whereJson) {
//木托盘号码
String vehicle_code = (String) whereJson.get("vehicle_code");
return null;
}
}

View File

@@ -0,0 +1,121 @@
[交易说明]
交易名: wms给嘉耐发请求
所属模块:
功能简述:
版权所有:
表引用:
版本经历:
[数据库]
--指定数据库为空采用默认值默认为db.properties中列出的第一个库
[IO定义]
#################################################
## 表字段对应输入参数
#################################################
输入.flag TYPEAS s_string
输入.task TYPEAS s_string
[临时表]
--这边列出来的临时表就会在运行期动态创建
[临时变量]
--所有中间过程变量均可在此处定义
[业务过程]
##########################################
# 1、输入输出检查 #
##########################################
##########################################
# 2、主过程前处理 #
##########################################
##########################################
# 3、业务主过程 #
##########################################
IF 输入.flag = "1"
QUERY
SELECT
vehicle_group.material_move_id AS ID,
device.ext_device_code AS SBDM,
task.car_no AS AGVNO,
producetask.ext_shoporder_no AS SHOPORDERNO,
vehicle_group.material_code AS ITEMCODE,
task.create_time AS STARTDATE,
task.update_time AS WAITDATE,
task.vehicle_code AS STOCKNO,
vehicle_group.qty AS QTY
FROM
sch_base_task task
LEFT JOIN st_buss_vehiclegroup vehicle_group ON vehicle_group.material_move_id = task.task_id
LEFT JOIN sch_base_point point ON point.point_code = task.start_point_code
LEFT JOIN pdm_base_device device ON device.device_id = point.device_id
LEFT JOIN pdm_mg_producetask producetask ON producetask.producetask_id = vehicle_group.producetask_id
OPTION 输入.task_id <> ""
task.task_id = 输入.task_id
ENDOPTION
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "2"
QUERY
SELECT
vehicle_group.vehicle_code,
vehicle_group.material_move_id AS ID,
kiln.in_time AS INDATE
FROM
pdm_bi_kilnrecord kiln
LEFT JOIN st_buss_vehiclegroup vehicle_group ON kiln.vehicle_code = vehicle_group.vehicle_code
OPTION 输入.vehicle_code <> ""
kiln.vehicle_code = 输入.vehicle_code
ENDOPTION
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "3"
QUERY
SELECT
vehicle_group.vehicle_code,
vehicle_group.material_move_id AS ID,
kiln.out_time AS OUTDATE
FROM
pdm_bi_kilnrecord kiln
LEFT JOIN st_buss_vehiclegroup vehicle_group ON kiln.vehicle_code = vehicle_group.vehicle_code
OPTION 输入.vehicle_code <> ""
kiln.vehicle_code = 输入.vehicle_code
ENDOPTION
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "4"
QUERY
SELECT
*
FROM
sch_base_point point
WHERE
point.point_code IN ( 'FJJXSXLW301', 'FJJXSXLW302' )
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "5"
QUERY
SELECT
*
FROM
sch_base_point point
WHERE
point.point_code IN ( 'FJJXSXLW201', 'FJJXSXLW202' )
ENDSELECT
ENDQUERY
ENDIF

View File

@@ -98,4 +98,18 @@ public class ProducetaskDto implements Serializable {
/** 静置时间 */
private BigDecimal stewing_time;
/**
* 计划日期
*/
private String ext_shoporder_no;
private String print_type;
private String print_dm;
private String print_name;
private String print_gg;
private String print_pc;
private String yh_name;
private String plan_date;
private String classes;
}

View File

@@ -51,14 +51,14 @@
device.workprocedure_id,
device.device_name,
material.material_name,
cust.cust_name,
produceline.produceline_name
FROM
PDM_MG_produceTask task
left join md_me_material material on task.material_id = material.material_id
left join pdm_base_device device on task.device_id = device.device_id
left join pdm_base_produceline produceline on task.produceline_id = produceline.produceline_id
left join MD_CS_CustomerBase cust on task.cust_id = cust.cust_id
WHERE
task.is_delete = '0'
OPTION 输入.search <> ""
@@ -76,9 +76,7 @@
OPTION 输入.produceline_id <> ""
(task.produceline_id = 输入.produceline_id)
ENDOPTION
OPTION 输入.cust_id <> ""
(task.cust_id = 输入.cust_id)
ENDOPTION
ENDSELECT
ENDPAGEQUERY
ENDIF
@@ -90,14 +88,14 @@
task.*,
device.device_name,
material.material_name,
cust.cust_name,
produceline.produceline_name
FROM
PDM_MG_produceTask task
left join md_me_material material on task.material_id = material.material_id
left join pdm_base_device device on task.device_id = device.device_id
left join pdm_base_produceline produceline on task.produceline_id = produceline.produceline_id
left join MD_CS_CustomerBase cust on task.cust_id = cust.cust_id
WHERE
task.is_delete = '0' and task.device_id = 输入.device_id and task.producetask_status = '01'
ENDSELECT
@@ -108,19 +106,19 @@
IF 输入.flag = "3"
QUERY
SELECT
point.point_code AS device_code,
task.*,
device.device_code,
device.device_name,
material.material_code,
material.material_name,
material.material_spec,
material.material_model
FROM
pdm_mg_producetask task
LEFT JOIN pdm_base_device device ON task.device_id = device.device_id
LEFT JOIN sch_base_point point ON point.device_id = task.device_id
AND point.point_code <> 'MDJXS102'
LEFT JOIN md_me_material material ON material.material_id = task.material_id
WHERE
1=1
1 =1
OPTION 输入.producetask_id <> ""
(task.producetask_id = 输入.producetask_id)
ENDOPTION

View File

@@ -51,6 +51,14 @@ public abstract class AbstractAcsTask {
taskDto.setExt_task_uuid(json.getString("task_id"));
taskDto.setTask_code(json.getString("task_code"));
taskDto.setTask_type("1");
//如果起点是码垛机械手的下料位置,终点是货架type要给2
JSONObject stratrObj = WQLObject.getWQLObject("sch_base_point").query("point_code='" + json.getString("start_point_code") + "'").uniqueResult(0);
JSONObject nextObj = WQLObject.getWQLObject("sch_base_point").query("point_code='" + json.getString("next_point_code") + "'").uniqueResult(0);
if (StrUtil.equals(stratrObj.getString("area_type"), AreaEnum.YZQY.getCode()) &&
StrUtil.equals(nextObj.getString("area_type"), AreaEnum.RYHCHJ.getCode())
) {
taskDto.setTask_type("2");
}
taskDto.setRoute_plan_code("normal");
taskDto.setStart_device_code(json.getString("start_point_code"));
taskDto.setNext_device_code(json.getString("next_point_code"));
@@ -117,12 +125,19 @@ public abstract class AbstractAcsTask {
taskDto.setExt_task_uuid(json.getString("task_id"));
taskDto.setTask_code(json.getString("task_code"));
taskDto.setTask_type("1");
//如果起点是码垛机械手的下料位置,终点是货架type要给2
JSONObject stratrObj = WQLObject.getWQLObject("sch_base_point").query("point_code='" + json.getString("start_point_code") + "'").uniqueResult(0);
JSONObject nextObj = WQLObject.getWQLObject("sch_base_point").query("point_code='" + json.getString("next_point_code") + "'").uniqueResult(0);
if (StrUtil.equals(stratrObj.getString("area_type"), AreaEnum.YZQY.getCode()) &&
StrUtil.equals(nextObj.getString("area_type"), AreaEnum.RYHCHJ.getCode())
) {
taskDto.setTask_type("2");
}
taskDto.setRoute_plan_code("normal");
taskDto.setStart_device_code(json.getString("start_point_code"));
taskDto.setNext_device_code(json.getString("next_point_code"));
taskDto.setVehicle_code(json.getString("vehicle_code"));
jsonArray.add(JSONObject.parse(JSON.toJSONString(taskDto)));
}
return AcsUtil.notifyAcs("api/wms/task", jsonArray);
}

View File

@@ -310,6 +310,7 @@ public class CallMaterialTask extends AbstractAcsTask {
iosObj.put("ivt_workprocedure_id", ivt_workprocedure_id);
iosObj.put("material_id", material_id);
iosObj.put("vehicle_code", outStructObj.getString("vehicle_code"));
iosObj.put("producetask_id", outStructObj.getString("producetask_id"));
iosObj.put("qty", qty);
iosObj.put("qty_unit_id", qty_unit_id);
//默认是分配状态
@@ -322,8 +323,8 @@ public class CallMaterialTask extends AbstractAcsTask {
iosObj.put("create_mode", create_mode);
iosObj.put("task_id", task_id);
iosObj.put("pcsn", pcsn);
iosObj.put("create_id",SecurityUtils.getCurrentUserId());
iosObj.put("create_name", SecurityUtils.getNickName());
iosObj.put("create_id","1");
iosObj.put("create_name", "管理员");
iosObj.put("create_time", DateUtil.now());
WQLObject.getWQLObject("ST_IVT_workProcedureIOS").insert(iosObj);
//将组盘里面的task_id改为当前的任务
@@ -370,8 +371,8 @@ public class CallMaterialTask extends AbstractAcsTask {
taskObj.put("vehicle_code", vehicle_code);
taskObj.put("handle_class", THIS_CLASS);
taskObj.put("is_auto_issue", "1");
taskObj.put("create_name", SecurityUtils.getNickName());
taskObj.put("create_id", SecurityUtils.getCurrentUserId());
taskObj.put("create_name", "管理员");
taskObj.put("create_id", "1");
taskObj.put("create_time", DateUtil.now());
taskObj.put("is_delete", "0");
taskTable.insert(taskObj);

View File

@@ -15,6 +15,7 @@ import org.nl.utils.SpringContextHolder;
import org.nl.wms.BussConstant;
import org.nl.wms.WorkProcedureEnum;
import org.nl.wms.common.StructFindUtil;
import org.nl.wms.ext.acs.service.WmsToJnService;
import org.nl.wms.sch.manage.AbstractAcsTask;
import org.nl.wms.sch.manage.AreaEnum;
import org.nl.wms.sch.manage.BillTypeEnum;
@@ -36,21 +37,23 @@ import java.util.HashMap;
@Slf4j
public class SendMaterialTask extends AbstractAcsTask {
private final String THIS_CLASS = SendMaterialTask.class.getName();
private final WmsToJnService wmsToJnService;
@Override
@Transactional
public void updateTaskStatus(JSONObject taskObj, String status) {
/**
*改变任务状态
*改变任务状态2
**/
String task_id = taskObj.getString("task_id");
String car_no = taskObj.getString("car_no");
WQLObject taskTab = WQLObject.getWQLObject("sch_base_task");
JSONObject jsonTask = taskTab.query("task_id='" + task_id + "'").uniqueResult(0);
if (TaskStatusEnum.EXECUTING.getCode().equals(status)) {
//更新任务状态为执行中
jsonTask.put("task_status", TaskStatusEnum.EXECUTING.getCode());
jsonTask.put("update_time", DateUtil.now());
jsonTask.put("car_no", car_no);
taskTab.update(jsonTask);
HashMap map = new HashMap();
map.put("update_optid", SecurityUtils.getCurrentUserId());
@@ -188,6 +191,7 @@ public class SendMaterialTask extends AbstractAcsTask {
String pcsn = form.getString("pcsn");
String vehicle_code = form.getString("vehicle_code");
String group_id = form.getString("group_id");
String print_pc = form.getString("print_pc");
WQLObject taskTable = WQLObject.getWQLObject("SCH_BASE_Task");
if (StrUtil.isEmpty(start_point_code)) {
throw new BadRequestException("起点不能为空!");
@@ -288,6 +292,7 @@ public class SendMaterialTask extends AbstractAcsTask {
iosObj.put("stewing_time", stewing_time);
iosObj.put("qty", qty);
iosObj.put("qty_unit_id", qty_unit_id);
iosObj.put("print_pc", print_pc);
//默认是分配状态
iosObj.put("bill_status", "20");
iosObj.put("start_point_code", start_point_code);
@@ -341,8 +346,13 @@ public class SendMaterialTask extends AbstractAcsTask {
JSONObject groupInfo = groupTable.query("group_id='" + group_id + "'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(groupInfo)) {
groupInfo.put("task_id", task_id);
groupInfo.put("material_move_id", task_id);
groupTable.update(groupInfo);
}
//调用接口反馈给嘉耐 搬运任务
JSONObject param = new JSONObject();
param.put("task_id", task_id);
wmsToJnService.feedBackCarryRecord(param);
}
return task_id;
}

View File

@@ -15,6 +15,7 @@ import org.nl.utils.SpringContextHolder;
import org.nl.wms.BussConstant;
import org.nl.wms.WorkProcedureEnum;
import org.nl.wms.common.StructFindUtil;
import org.nl.wms.ext.acs.service.WmsToJnService;
import org.nl.wms.sch.manage.AbstractAcsTask;
import org.nl.wms.sch.manage.AreaEnum;
import org.nl.wms.sch.manage.BillTypeEnum;
@@ -36,6 +37,7 @@ import java.util.HashMap;
@Slf4j
public class ToConveyorTask extends AbstractAcsTask {
private final String THIS_CLASS = ToConveyorTask.class.getName();
private final WmsToJnService wmsToJnService;
@Override
@@ -45,11 +47,13 @@ public class ToConveyorTask extends AbstractAcsTask {
*改变任务状态
**/
String task_id = taskObj.getString("task_id");
String car_no = taskObj.getString("car_no");
WQLObject taskTab = WQLObject.getWQLObject("sch_base_task");
JSONObject jsonTask = taskTab.query("task_id='" + task_id + "'").uniqueResult(0);
if (TaskStatusEnum.EXECUTING.getCode().equals(status)) {
//更新任务状态为执行中
jsonTask.put("task_status", TaskStatusEnum.EXECUTING.getCode());
jsonTask.put("car_no", car_no);
jsonTask.put("update_time", DateUtil.now());
taskTab.update(jsonTask);
HashMap map = new HashMap();
@@ -67,6 +71,10 @@ public class ToConveyorTask extends AbstractAcsTask {
jsonTask.put("update_time", DateUtil.now());
jsonTask.put("remark", "任务执行完成");
taskTab.update(jsonTask);
//调用接口反馈给嘉耐 搬运任务
JSONObject param = new JSONObject();
param.put("task_id", task_id);
wmsToJnService.feedBackCarryRecord(param);
}
}
@@ -77,7 +85,8 @@ public class ToConveyorTask extends AbstractAcsTask {
}
@Override
public void findNextPoint() {}
public void findNextPoint() {
}
@Override
@Transactional
@@ -96,7 +105,7 @@ public class ToConveyorTask extends AbstractAcsTask {
if (StrUtil.isEmpty(start_point_code)) {
throw new BadRequestException("起点不能为空!");
}
if (StrUtil.isEmpty(next_point_code)){
if (StrUtil.isEmpty(next_point_code)) {
throw new BadRequestException("终点不能为空!");
}
//判断起点有没有未完成的指令
@@ -112,10 +121,11 @@ public class ToConveyorTask extends AbstractAcsTask {
}
String task_id = IdUtil.getSnowflake(1, 1).nextId() + "";
JSONObject materialObj = WQLObject.getWQLObject("md_me_material").query("material_id='" + material_id + "'").uniqueResult(0);
//更新组盘信息将task_id 更新
//更新组盘信息将task_id 更新
WQLObject groupTable = WQLObject.getWQLObject("st_buss_vehiclegroup");
JSONObject groupInfo =groupTable.query("group_id='"+group_id+"'").uniqueResult(0);
groupInfo.put("task_id",task_id);
JSONObject groupInfo = groupTable.query("group_id='" + group_id + "'").uniqueResult(0);
groupInfo.put("task_id", task_id);
groupInfo.put("material_move_id", task_id);
groupTable.update(groupInfo);
PointService pointService = SpringContextHolder.getBean(PointService.class);

View File

@@ -13,6 +13,7 @@ import org.nl.wms.sch.manage.buss.CallMaterialTask;
import org.nl.wql.WQL;
import org.nl.wql.core.bean.WQLObject;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
@Slf4j
@@ -26,7 +27,7 @@ public class AutoOutStructTask {
this.doExecute();
}
@Transactional(rollbackFor = Exception.class)
private void doExecute() {
WQLObject param_Table = WQLObject.getWQLObject("sys_param");
int num = param_Table.query("code='stewing_num' ").uniqueResult(0).getInteger("value");

View File

@@ -44,7 +44,7 @@ import cn.hutool.core.util.ObjectUtil;
@Slf4j
public class WorkprocedureiosServiceImpl implements WorkprocedureiosService {
private final String THIS_CLASS = SendMaterialTask.class.getName();
private SendMaterialTask sendMaterialTask;
@Override
public Map<String, Object> queryAll(Map whereJson, Pageable page) {
@@ -265,7 +265,6 @@ public class WorkprocedureiosServiceImpl implements WorkprocedureiosService {
form.put("is_full",is_full);
form.put("ivt_workprocedure_id",ivt_workprocedure_id);
form.put("iostorinv_id",iostorinv_id);
SendMaterialTask sendMaterialTask = new SendMaterialTask();
String task_id = sendMaterialTask.createTask(form);
JSONObject json = new JSONObject();
json.put("task_id", task_id);

View File

@@ -54,7 +54,6 @@ public class StructivtServiceImpl implements StructivtService {
map.put("stor_uuid", stor_uuid);
map.put("material_name", material_name);
map.put("storagevehicle_code", storagevehicle_code);
map.put("pcsn", pcsn);
map.put("struct_name", struct_name);
JSONObject json = WQL.getWO("QIVT_001").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "struct_code");
JSONArray jsonArray = json.getJSONArray("content");

View File

@@ -57,15 +57,11 @@
material.material_id,
material.material_code,
material.material_name,
ivt.pcsn,
ivt.canuse_qty,
ivt.ivt_qty,
ivt.frozen_qty,
ivt.is_full,
ivt.mix_seq,
ivt.stewing_time,
unitqty.unit_code,
unitqty.unit_name,
ivt.instorage_time,
sect.sect_name,
workprocedure.workprocedure_name
@@ -73,7 +69,6 @@
st_ivt_structivt ivt
LEFT JOIN sch_base_point point ON point.point_id = ivt.struct_id
LEFT JOIN md_me_material material ON material.material_id = ivt.material_id
LEFT JOIN md_pb_measureunit unitqty ON unitqty.unit_id = ivt.qty_unit_id
left join st_ivt_structattr struct on struct.struct_id = ivt.struct_id
left join ST_IVT_SectAttr sect on struct.sect_id = sect.sect_id
left join pdm_base_workprocedure workprocedure on workprocedure.workprocedure_id = ivt.workprocedure_id
@@ -83,9 +78,7 @@
(material.material_name like "%"输入.material_name"%" or
material.material_code like "%"输入.material_name"%")
ENDOPTION
OPTION 输入.pcsn <> ""
ivt.pcsn like "%"输入.pcsn"%"
ENDOPTION
OPTION 输入.struct_name <> ""
(point.point_code like "%"输入.struct_name"%" or
point.point_name like "%"输入.struct_name"%")