This commit is contained in:
2023-01-12 09:50:29 +08:00
parent 78d8f9df42
commit 4c375145e3
14 changed files with 291 additions and 90 deletions

View File

@@ -4,6 +4,7 @@ package org.nl.wms.ext.acs.rest;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@@ -95,5 +96,12 @@ public class WmsToAcsController {
return new ResponseEntity<>(wmsToAcsService.updateTask(arr), HttpStatus.OK); return new ResponseEntity<>(wmsToAcsService.updateTask(arr), HttpStatus.OK);
} }
@PostMapping("/putPlusPullAction")
@Log("给ACS下发修改PLC的值")
@ApiOperation("给ACS下发修改PLC的值")
public ResponseEntity<Object> putPlusPullAction(@RequestBody JSONObject jo) {
return new ResponseEntity<>(wmsToAcsService.putPlusPullAction(jo), HttpStatus.OK);
}
} }

View File

@@ -69,4 +69,13 @@ public interface WmsToAcsService {
* @return JSONObject * @return JSONObject
*/ */
JSONObject action(JSONArray arr); JSONObject action(JSONArray arr);
/**
* 下发拔轴机构任务
* @param jo /
* @return JSONObject
*/
JSONObject putPlusPullAction(JSONObject jo);
} }

View File

@@ -59,6 +59,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
*/ */
@Override @Override
public Map<String, Object> receiveTaskStatusAcs(String string) { public Map<String, Object> receiveTaskStatusAcs(String string) {
log.info("receiveTaskStatusAcs请求参数--------------------------------------"+string);
JSONArray array = JSONArray.parseArray(string); JSONArray array = JSONArray.parseArray(string);
//返回处理失败的任务 //返回处理失败的任务
JSONArray errArr = new JSONArray(); JSONArray errArr = new JSONArray();
@@ -179,9 +180,9 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
} }
@Override @Override
@LokiLog(type = LokiLogType.ACS_TO_LMS)
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public JSONObject apply(JSONObject whereJson) { public JSONObject apply(JSONObject whereJson) {
log.info("apply请求参数---------------------------------------------"+whereJson.toString());
String type = whereJson.getString("type"); String type = whereJson.getString("type");
String device_code = whereJson.getString("device_code"); String device_code = whereJson.getString("device_code");
String vehicle_code = whereJson.getString("vehicle_code"); String vehicle_code = whereJson.getString("vehicle_code");
@@ -409,6 +410,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
@Override @Override
public JSONObject deviceApply(JSONObject whereJson) { public JSONObject deviceApply(JSONObject whereJson) {
log.info("deviceApply请求参数---------------------------------------------"+whereJson.toString());
String vehicle_code = whereJson.getString("vehicle_code"); String vehicle_code = whereJson.getString("vehicle_code");
String type = whereJson.getString("type"); String type = whereJson.getString("type");
if (StrUtil.isEmpty(type)) { if (StrUtil.isEmpty(type)) {
@@ -482,6 +484,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
@Override @Override
public JSONObject process(JSONObject whereJson) { public JSONObject process(JSONObject whereJson) {
log.info("process请求参数---------------------------------------------"+whereJson.toString());
String vehicle_code = whereJson.getString("vehicle_code"); String vehicle_code = whereJson.getString("vehicle_code");
String ext_task_id = whereJson.getString("ext_task_id"); String ext_task_id = whereJson.getString("ext_task_id");
String srcLocation = whereJson.getString("srcLocation"); String srcLocation = whereJson.getString("srcLocation");

View File

@@ -1,11 +1,17 @@
package org.nl.wms.ext.acs.service.impl; package org.nl.wms.ext.acs.service.impl;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpRequest;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.wql.util.SpringContextHolder;
import org.nl.system.service.param.impl.SysParamServiceImpl;
import org.nl.wms.ext.acs.service.WmsToAcsService; import org.nl.wms.ext.acs.service.WmsToAcsService;
import org.nl.wms.sch.AcsUtil; import org.nl.wms.sch.AcsUtil;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Map; import java.util.Map;
@@ -66,4 +72,43 @@ public class WmsToAcsServiceImpl implements WmsToAcsService {
return AcsUtil.notifyAcs(api, whereJson); return AcsUtil.notifyAcs(api, whereJson);
} }
@Override
public JSONObject putPlusPullAction(JSONObject whereJson) {
String api = "api/wms/putPlusPullAction";
//判断是否连接ACS系统
String isConnect = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("is_connect_acs").getValue();
JSONObject result = new JSONObject();
if (StrUtil.equals("0", isConnect)) {
result.put("status", HttpStatus.OK.value());
result.put("message", "下发成功但未连接ACS!");
result.put("data", new JSONObject());
return result;
}
//ACS地址127.0.0.1:8010
String acsUrl = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("acs_url").getValue();
String url = acsUrl + api;
try {
String resultMsg = HttpRequest.post(url)
.body(String.valueOf(whereJson))
.execute().body();
result = JSONObject.parseObject(resultMsg);
} catch (Exception e) {
String msg = e.getMessage();
//ConnectException: Connection refused: connect
//网络不通
System.out.println(msg);
result.put("status", HttpStatus.BAD_REQUEST);
result.put("message", "网络不通,操作失败!");
result.put("data", new JSONObject());
}
//acs抛异常这里
if (!StrUtil.equals(result.getString("status"), "200")) {
throw new BadRequestException("下发失败:"+result.getString("message"));
}
return result;
}
} }

View File

@@ -160,25 +160,22 @@ public class CasingServiceImpl implements CasingService {
throw new BadRequestException("气涨轴未启用!"); throw new BadRequestException("气涨轴未启用!");
} }
String storagevehicle_type = qzz_jo.getString("storagevehicle_type"); String storagevehicle_type = qzz_jo.getString("storagevehicle_type");
String to_command = ""; String to_size = "";
if (storagevehicle_type.equals("000101")){ if (storagevehicle_type.equals("000101")){
to_command = "1"; to_size = "3";
} }
if (storagevehicle_type.equals("000102")){ if (storagevehicle_type.equals("000102")){
to_command = "2"; to_size = "6";
} }
if (StrUtil.isEmpty(to_command)){ if (StrUtil.isEmpty(to_size)){
throw new BadRequestException("未查询到该气涨轴对应的类型!"); throw new BadRequestException("未查询到该气涨轴对应的类型!");
} }
JSONArray rows = new JSONArray(); JSONObject device_jo = new JSONObject();
JSONObject jo = new JSONObject(); device_jo.put("device_code",whereJson.getString("point_code"));
jo.put("device_code",whereJson.getString("point_code")); device_jo.put("type","1");
jo.put("code","to_command"); device_jo.put("size",to_size);
jo.put("value",to_command); new WmsToAcsServiceImpl().putPlusPullAction(device_jo);
rows.add(jo);
new WmsToAcsServiceImpl().action(rows);
//下发ACS拔轴机构 //下发ACS拔轴机构
JSONObject result = new JSONObject(); JSONObject result = new JSONObject();
@@ -205,24 +202,22 @@ public class CasingServiceImpl implements CasingService {
throw new BadRequestException("气涨轴未启用!"); throw new BadRequestException("气涨轴未启用!");
} }
String storagevehicle_type = qzz_jo.getString("storagevehicle_type"); String storagevehicle_type = qzz_jo.getString("storagevehicle_type");
String to_command = ""; String to_size = "";
if (storagevehicle_type.equals("000101")){ if (storagevehicle_type.equals("000101")){
to_command = "1"; to_size = "3";
} }
if (storagevehicle_type.equals("000102")){ if (storagevehicle_type.equals("000102")){
to_command = "2"; to_size = "6";
} }
if (StrUtil.isEmpty(to_command)){ if (StrUtil.isEmpty(to_size)){
throw new BadRequestException("未查询到该气涨轴对应的类型!"); throw new BadRequestException("未查询到该气涨轴对应的类型!");
} }
JSONArray rows = new JSONArray(); JSONObject device_jo = new JSONObject();
JSONObject jo = new JSONObject(); device_jo.put("device_code",whereJson.getString("point_code"));
jo.put("device_code",whereJson.getString("point_code")); device_jo.put("type","0");
jo.put("code","to_command"); device_jo.put("size",to_size);
jo.put("value",to_command); new WmsToAcsServiceImpl().putPlusPullAction(device_jo);
rows.add(jo);
new WmsToAcsServiceImpl().action(rows);
//下发ACS拔轴机构 //下发ACS拔轴机构

View File

@@ -38,7 +38,7 @@ public class PointStatusServiceImpl implements PointStatusService {
} }
//查询该编码是否属于母卷 //查询该编码是否属于母卷
JSONObject raw_jo = WQLObject.getWQLObject("pdm_bi_rawfoilworkorder").query("container_name = '"+container_name+"' AND is_delete = '0'").uniqueResult(0); JSONObject raw_jo = WQLObject.getWQLObject("pdm_bi_rawfoilworkorder").query("container_name = '" + container_name + "' AND is_delete = '0'").uniqueResult(0);
//查询该点对应的是什么位置 //查询该点对应的是什么位置
JSONObject cut_point = WQLObject.getWQLObject("ST_IVT_CutPointIvt").query("full_point_code = '" + point_code + "'").uniqueResult(0); JSONObject cut_point = WQLObject.getWQLObject("ST_IVT_CutPointIvt").query("full_point_code = '" + point_code + "'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(cut_point)) { if (ObjectUtil.isNotEmpty(cut_point)) {
@@ -46,7 +46,7 @@ public class PointStatusServiceImpl implements PointStatusService {
if (StrUtil.isNotEmpty(now_container_name)) { if (StrUtil.isNotEmpty(now_container_name)) {
throw new BadRequestException("该点位上已存在母卷,不能进行绑定!"); throw new BadRequestException("该点位上已存在母卷,不能进行绑定!");
} }
if (ObjectUtil.isEmpty(raw_jo)){ if (ObjectUtil.isEmpty(raw_jo)) {
throw new BadRequestException("请输入正确的母卷号!"); throw new BadRequestException("请输入正确的母卷号!");
} }
cut_point.put("container_name", container_name); cut_point.put("container_name", container_name);
@@ -58,32 +58,50 @@ public class PointStatusServiceImpl implements PointStatusService {
if (StrUtil.isNotEmpty(empty_vehicle_code)) { if (StrUtil.isNotEmpty(empty_vehicle_code)) {
throw new BadRequestException("该点位上已存在空轴,不能进行绑定!"); throw new BadRequestException("该点位上已存在空轴,不能进行绑定!");
} }
if (ObjectUtil.isNotEmpty(raw_jo)){ if (ObjectUtil.isNotEmpty(raw_jo)) {
throw new BadRequestException("请输入正确的空轴号!"); throw new BadRequestException("请输入正确的空轴号!");
} }
cut_point.put("empty_vehicle_code", container_name); cut_point.put("empty_vehicle_code", container_name);
cut_point.put("empty_point_status", "02"); cut_point.put("empty_point_status", "02");
} else { } else {
throw new BadRequestException("未查询到对应的分切点!"); //查询烘箱对接位的点位状态
JSONObject point_jo = WQLObject.getWQLObject("sch_base_point").query("point_code = '" + point_code + "'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(point_jo)) {
String material_code = point_jo.getString("material_code");
if (StrUtil.isNotEmpty(material_code)) {
throw new BadRequestException("该点位上已存在空轴,不能进行绑定!");
}
if (ObjectUtil.isEmpty(raw_jo)) {
throw new BadRequestException("请输入正确的母卷号!");
}
point_jo.put("material_code", container_name);
point_jo.put("point_status", "2");
WQLObject.getWQLObject("sch_base_point").update(point_jo);
} else {
throw new BadRequestException("未查询到对应的分切机点位或烘箱对接位!!");
}
} }
} }
WQLObject.getWQLObject("ST_IVT_CutPointIvt").update(cut_point);
if (ObjectUtil.isNotEmpty(cut_point)) {
WQLObject.getWQLObject("ST_IVT_CutPointIvt").update(cut_point);
}
JSONObject cut_jo = WQLObject.getWQLObject("PDM_BI_SlittingProductionPlan").query("parent_container_name = '"+container_name+"' AND IFNULL(is_parent_ok,'0') = '0'").uniqueResult(0); JSONObject cut_jo = WQLObject.getWQLObject("PDM_BI_SlittingProductionPlan").query("parent_container_name = '" + container_name + "' AND IFNULL(is_parent_ok,'0') = '0'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(cut_jo)){ if (ObjectUtil.isNotEmpty(cut_jo)) {
//更新该母卷对应分切计划的状态 //更新该母卷对应分切计划的状态
HashMap<String,String> map = new HashMap<>(); HashMap<String, String> map = new HashMap<>();
map.put("is_parent_ok","1"); map.put("is_parent_ok", "1");
WQLObject.getWQLObject("PDM_BI_SlittingProductionPlan").update(map,"parent_container_name = '"+container_name+"'"); WQLObject.getWQLObject("PDM_BI_SlittingProductionPlan").update(map, "parent_container_name = '" + container_name + "'");
//回传MES //回传MES
JSONObject mom_jo = new JSONObject(); JSONObject mom_jo = new JSONObject();
mom_jo.put("contain_name",container_name); mom_jo.put("contain_name", container_name);
mom_jo.put("warehouse","1"); mom_jo.put("warehouse", "1");
//判断该接口是否需要回传 //判断该接口是否需要回传
JSONObject back_jo = WQLObject.getWQLObject("MD_PB_InterfaceBack").query("interface_name = 'momRollSemiFGInboundComplete'").uniqueResult(0); JSONObject back_jo = WQLObject.getWQLObject("MD_PB_InterfaceBack").query("interface_name = 'momRollSemiFGInboundComplete'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(back_jo) && back_jo.getString("is_back").equals("1")){ if (ObjectUtil.isNotEmpty(back_jo) && back_jo.getString("is_back").equals("1")) {
lmsToMesService.cutPlanMomRollDeliveryComplete(mom_jo); lmsToMesService.cutPlanMomRollDeliveryComplete(mom_jo);
} }
} }
@@ -101,10 +119,21 @@ public class PointStatusServiceImpl implements PointStatusService {
cut_point.put("empty_vehicle_code", ""); cut_point.put("empty_vehicle_code", "");
cut_point.put("empty_point_status", "01"); cut_point.put("empty_point_status", "01");
} else { } else {
throw new BadRequestException("未查询到对应的分切点!"); //查询烘箱对接位的点位状态
JSONObject point_jo = WQLObject.getWQLObject("sch_base_point").query("point_code = '" + point_code + "'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(point_jo)) {
point_jo.put("material_code", "");
point_jo.put("point_status", "1");
WQLObject.getWQLObject("sch_base_point").update(point_jo);
} else {
throw new BadRequestException("未查询到对应的分切机点位或烘箱对接位!");
}
} }
} }
WQLObject.getWQLObject("ST_IVT_CutPointIvt").update(cut_point); if (ObjectUtil.isNotEmpty(cut_point)) {
WQLObject.getWQLObject("ST_IVT_CutPointIvt").update(cut_point);
}
} }
JSONObject jo = new JSONObject(); JSONObject jo = new JSONObject();
@@ -125,14 +154,14 @@ public class PointStatusServiceImpl implements PointStatusService {
cut_point = WQLObject.getWQLObject("ST_IVT_CutPointIvt").query("empty_point_code = '" + point_code + "'").uniqueResult(0); cut_point = WQLObject.getWQLObject("ST_IVT_CutPointIvt").query("empty_point_code = '" + point_code + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(cut_point)) { if (ObjectUtil.isEmpty(cut_point)) {
//查询烘箱对接位的点位状态 //查询烘箱对接位的点位状态
JSONObject point_jo = WQLObject.getWQLObject("sch_base_point").query("point_code = '"+point_code+"'").uniqueResult(0); JSONObject point_jo = WQLObject.getWQLObject("sch_base_point").query("point_code = '" + point_code + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(point_jo)){ if (ObjectUtil.isEmpty(point_jo)) {
throw new BadRequestException("未查询到对应的分切机点位或烘箱对接位!!"); throw new BadRequestException("未查询到对应的分切机点位或烘箱对接位!!");
} }
vehicle_code = point_jo.getString("material_code"); vehicle_code = point_jo.getString("material_code");
if (StrUtil.isNotEmpty(vehicle_code)){ if (StrUtil.isNotEmpty(vehicle_code)) {
have_goods = "02"; have_goods = "02";
}else { } else {
have_goods = "01"; have_goods = "01";
} }
} else { } else {
@@ -145,9 +174,9 @@ public class PointStatusServiceImpl implements PointStatusService {
} }
JSONObject jo = new JSONObject(); JSONObject jo = new JSONObject();
jo.put("container_name", vehicle_code); jo.put("container_name", vehicle_code);
if (have_goods.equals("01")){ if (have_goods.equals("01")) {
have_goods = ""; have_goods = "";
}else { } else {
have_goods = ""; have_goods = "";
} }
jo.put("have_goods", have_goods); jo.put("have_goods", have_goods);

View File

@@ -5,17 +5,24 @@ import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpRequest;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.modules.wql.util.SpringContextHolder; import org.nl.modules.wql.util.SpringContextHolder;
import org.nl.system.service.param.impl.SysParamServiceImpl; import org.nl.system.service.param.impl.SysParamServiceImpl;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import java.util.HashMap;
/** /**
* ACS连接工具类: * ACS连接工具类:
*/ */
@Slf4j
public class AcsUtil { public class AcsUtil {
public static JSONObject notifyAcs(String api, JSONArray list) { public static JSONObject notifyAcs(String api, JSONArray list) {
log.info("下发ACS参数----------------------------------------+"+api+",---"+list.toString());
//判断是否连接ACS系统 //判断是否连接ACS系统
String isConnect = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("is_connect_acs").getValue(); String isConnect = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("is_connect_acs").getValue();
JSONObject result = new JSONObject(); JSONObject result = new JSONObject();
@@ -35,6 +42,7 @@ public class AcsUtil {
.body(String.valueOf(list)) .body(String.valueOf(list))
.execute().body(); .execute().body();
result = JSONObject.parseObject(resultMsg); result = JSONObject.parseObject(resultMsg);
log.info("ACS相应参数----------------------------------------+"+api+",---"+result.toString());
} catch (Exception e) { } catch (Exception e) {
String msg = e.getMessage(); String msg = e.getMessage();
@@ -48,6 +56,16 @@ public class AcsUtil {
//acs抛异常这里 //acs抛异常这里
if (!StrUtil.equals(result.getString("status"), "200")) { if (!StrUtil.equals(result.getString("status"), "200")) {
throw new BadRequestException("下发失败:"+result.getString("message")); throw new BadRequestException("下发失败:"+result.getString("message"));
}else {
//如果向ACS下发任务变更任务状态为下发
if (api.equals("api/wms/task")){
for (int i = 0; i < list.size(); i++) {
JSONObject task_jo = list.getJSONObject(i);
HashMap<String,String> map = new HashMap<>();
map.put("task_status", TaskStatusEnum.ISSUE.getCode());
WQLObject.getWQLObject("SCH_BASE_Task").update(map,"task_id = '"+task_jo.getString("ext_task_id")+"'");
}
}
} }
return result; return result;
} }

View File

@@ -230,11 +230,13 @@ public class CutConveyorTask extends AbstractAcsTask {
String point_code2 = form.getString("point_code2"); String point_code2 = form.getString("point_code2");
JSONObject point1_jo = WQLObject.getWQLObject("sch_base_point").query("point_code = '" + point_code1 + "'").uniqueResult(0); JSONObject point1_jo = WQLObject.getWQLObject("sch_base_point").query("point_code = '" + point_code1 + "'").uniqueResult(0);
JSONObject point2_jo = WQLObject.getWQLObject("sch_base_point").query("point_code = '" + point_code2 + "'").uniqueResult(0); JSONObject point2_jo = WQLObject.getWQLObject("sch_base_point").query("point_code = '" + point_code2 + "'").uniqueResult(0);
if (isSingleTask(point_code1) && !point1_jo.getString("point_type").equals("6") && !point1_jo.getString("point_type").equals("7")) { if (!form.getString("task_type").equals("010507")){
throw new BadRequestException("点位:" + point_code1 + "存在未完成的任务!"); if (isSingleTask(point_code1) && !point1_jo.getString("point_type").equals("6") && !point1_jo.getString("point_type").equals("7")) {
} throw new BadRequestException("点位:" + point_code1 + "存在未完成的任务!");
if (isSingleTask(point_code2) && !point2_jo.getString("point_type").equals("6") && !point2_jo.getString("point_type").equals("7")) { }
throw new BadRequestException("点位:" + point_code2 + "存在未完成的任务!"); if (isSingleTask(point_code2) && !point2_jo.getString("point_type").equals("6") && !point2_jo.getString("point_type").equals("7")) {
throw new BadRequestException("点位:" + point_code2 + "存在未完成的任务!");
}
} }
JSONObject json = new JSONObject(); JSONObject json = new JSONObject();
json.put("task_id", IdUtil.getSnowflake(1, 1).nextId()); json.put("task_id", IdUtil.getSnowflake(1, 1).nextId());

View File

@@ -97,8 +97,14 @@ public class HandMoveStorAcsTask extends AbstractAcsTask {
}else if("2".equals(status)){ }else if("2".equals(status)){
HandMoveStorServiceImpl handMoveStorServiceImpl = SpringContextHolder.getBean(HandMoveStorServiceImpl.class); HandMoveStorServiceImpl handMoveStorServiceImpl = SpringContextHolder.getBean(HandMoveStorServiceImpl.class);
handMoveStorServiceImpl.finishTask(task); handMoveStorServiceImpl.finishTask(task);
}else if("3".equals(status)){ }else if("0".equals(status)){
map.put("work_status","01");
wo_dtl.update(map,"task_id='"+task_id+"'");
map.put("is_delete","1");
map.put("update_optid",currentUserId+"");
map.put("update_optname",nickName);
map.put("update_time",now);
wo_Task.update(map,"task_id='"+task_id+"'");
}else{ }else{
throw new BadRequestException("任务状态更新异常!"); throw new BadRequestException("任务状态更新异常!");
} }
@@ -141,10 +147,14 @@ public class HandMoveStorAcsTask extends AbstractAcsTask {
/** /**
* *
* @param taskdtl_id * @param task_id
*/ */
@Override @Override
public void cancel(String taskdtl_id) { public void cancel(String task_id) {
JSONObject task_jo = WQLObject.getWQLObject("sch_base_task").query("task_id = '"+task_id+"'").uniqueResult(0);
if (!task_jo.getString("task_status").equals(TaskStatusEnum.START_AND_POINT)){
throw new BadRequestException("只能对未生成状态的任务进行删除!");
}
this.updateTaskStatus(task_jo, "0");
} }
} }

View File

@@ -146,6 +146,8 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService {
jo_mst.put("upload_mes", "1"); jo_mst.put("upload_mes", "1");
jo_mst.put("is_upload", "1"); jo_mst.put("is_upload", "1");
jo_mst.put("upload_optid", SecurityUtils.getCurrentUserId());
jo_mst.put("upload_time", DateUtil.now());
WQLObject.getWQLObject("ST_IVT_IOStorInv").update(jo_mst); WQLObject.getWQLObject("ST_IVT_IOStorInv").update(jo_mst);
} }
@@ -170,6 +172,8 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService {
jo_mst.put("upload_mes", "1"); jo_mst.put("upload_mes", "1");
jo_mst.put("is_upload", "1"); jo_mst.put("is_upload", "1");
jo_mst.put("upload_optid", SecurityUtils.getCurrentUserId());
jo_mst.put("upload_time", DateUtil.now());
WQLObject.getWQLObject("ST_IVT_IOStorInv").update(jo_mst); WQLObject.getWQLObject("ST_IVT_IOStorInv").update(jo_mst);
} }
@@ -206,6 +210,8 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService {
jo_mst.put("upload_mes", "1"); jo_mst.put("upload_mes", "1");
if (jo_mst.getString("upload_sap").equals("1")) { if (jo_mst.getString("upload_sap").equals("1")) {
jo_mst.put("is_upload", "1"); jo_mst.put("is_upload", "1");
jo_mst.put("upload_optid", SecurityUtils.getCurrentUserId());
jo_mst.put("upload_time", DateUtil.now());
} }
WQLObject.getWQLObject("ST_IVT_IOStorInv").update(jo_mst); WQLObject.getWQLObject("ST_IVT_IOStorInv").update(jo_mst);
} }
@@ -242,6 +248,8 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService {
jo_mst.put("upload_mes", "1"); jo_mst.put("upload_mes", "1");
jo_mst.put("is_upload", "1"); jo_mst.put("is_upload", "1");
jo_mst.put("upload_optid", SecurityUtils.getCurrentUserId());
jo_mst.put("upload_time", DateUtil.now());
WQLObject.getWQLObject("ST_IVT_IOStorInv").update(jo_mst); WQLObject.getWQLObject("ST_IVT_IOStorInv").update(jo_mst);
} }
@@ -263,6 +271,8 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService {
jo_mst.put("upload_mes", "1"); jo_mst.put("upload_mes", "1");
if (jo_mst.getString("upload_sap").equals("1")) { if (jo_mst.getString("upload_sap").equals("1")) {
jo_mst.put("is_upload", "1"); jo_mst.put("is_upload", "1");
jo_mst.put("upload_optid", SecurityUtils.getCurrentUserId());
jo_mst.put("upload_time", DateUtil.now());
} }
WQLObject.getWQLObject("ST_IVT_IOStorInv").update(jo_mst); WQLObject.getWQLObject("ST_IVT_IOStorInv").update(jo_mst);
} }
@@ -357,6 +367,8 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService {
jo_mst.put("upload_sap", "1"); jo_mst.put("upload_sap", "1");
jo_mst.put("is_upload", "1"); jo_mst.put("is_upload", "1");
jo_mst.put("upload_optid", SecurityUtils.getCurrentUserId());
jo_mst.put("upload_time", DateUtil.now());
WQLObject.getWQLObject("ST_IVT_IOStorInv").update(jo_mst); WQLObject.getWQLObject("ST_IVT_IOStorInv").update(jo_mst);
} }
@@ -498,6 +510,8 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService {
jo_mst.put("upload_sap", "1"); jo_mst.put("upload_sap", "1");
if (jo_mst.getString("upload_mes").equals("1") || is_productstore.equals("0")) { if (jo_mst.getString("upload_mes").equals("1") || is_productstore.equals("0")) {
jo_mst.put("is_upload", "1"); jo_mst.put("is_upload", "1");
jo_mst.put("upload_optid", SecurityUtils.getCurrentUserId());
jo_mst.put("upload_time", DateUtil.now());
} }
WQLObject.getWQLObject("ST_IVT_IOStorInv").update(jo_mst); WQLObject.getWQLObject("ST_IVT_IOStorInv").update(jo_mst);
} }
@@ -559,6 +573,8 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService {
jo_mst.put("upload_sap", "1"); jo_mst.put("upload_sap", "1");
if (jo_mst.getString("upload_mes").equals("1")) { if (jo_mst.getString("upload_mes").equals("1")) {
jo_mst.put("is_upload", "1"); jo_mst.put("is_upload", "1");
jo_mst.put("upload_optid", SecurityUtils.getCurrentUserId());
jo_mst.put("upload_time", DateUtil.now());
} }
WQLObject.getWQLObject("ST_IVT_IOStorInv").update(jo_mst); WQLObject.getWQLObject("ST_IVT_IOStorInv").update(jo_mst);
} }
@@ -790,6 +806,8 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService {
jo_mst.put("upload_mes", "1"); jo_mst.put("upload_mes", "1");
jo_mst.put("is_upload", "1"); jo_mst.put("is_upload", "1");
jo_mst.put("upload_optid", SecurityUtils.getCurrentUserId());
jo_mst.put("upload_time", DateUtil.now());
WQLObject.getWQLObject("ST_IVT_IOStorInv").update(jo_mst); WQLObject.getWQLObject("ST_IVT_IOStorInv").update(jo_mst);
} }
@@ -886,6 +904,8 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService {
jo_mst.put("upload_mes", "1"); jo_mst.put("upload_mes", "1");
jo_mst.put("is_upload", "1"); jo_mst.put("is_upload", "1");
jo_mst.put("upload_optid", SecurityUtils.getCurrentUserId());
jo_mst.put("upload_time", DateUtil.now());
WQLObject.getWQLObject("ST_IVT_IOStorInv").update(jo_mst); WQLObject.getWQLObject("ST_IVT_IOStorInv").update(jo_mst);
} }
@@ -987,6 +1007,8 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService {
jo_mst.put("upload_mes", "1"); jo_mst.put("upload_mes", "1");
} }
jo_mst.put("is_upload", "1"); jo_mst.put("is_upload", "1");
jo_mst.put("upload_optid", SecurityUtils.getCurrentUserId());
jo_mst.put("upload_time", DateUtil.now());
WQLObject.getWQLObject("ST_IVT_IOStorInv").update(jo_mst); WQLObject.getWQLObject("ST_IVT_IOStorInv").update(jo_mst);
} }
@@ -1039,6 +1061,8 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService {
jo_mst.put("upload_mes", "1"); jo_mst.put("upload_mes", "1");
jo_mst.put("is_upload", "1"); jo_mst.put("is_upload", "1");
jo_mst.put("upload_optid", SecurityUtils.getCurrentUserId());
jo_mst.put("upload_time", DateUtil.now());
WQLObject.getWQLObject("ST_IVT_IOStorInv").update(jo_mst); WQLObject.getWQLObject("ST_IVT_IOStorInv").update(jo_mst);
} }
@@ -1074,6 +1098,8 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService {
jo_mst.put("upload_mes", "1"); jo_mst.put("upload_mes", "1");
jo_mst.put("is_upload", "1"); jo_mst.put("is_upload", "1");
jo_mst.put("upload_optid", SecurityUtils.getCurrentUserId());
jo_mst.put("upload_time", DateUtil.now());
WQLObject.getWQLObject("ST_IVT_IOStorInv").update(jo_mst); WQLObject.getWQLObject("ST_IVT_IOStorInv").update(jo_mst);
} }

View File

@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<included>
<springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logs"/>
<property name="LOG_HOME" value="${logPath}"/>
<!-- 按照每天生成日志文件 -->
<appender name="FILE5" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${LOG_HOME}/ACSToMes/%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<!--日志文件保留天数-->
<maxHistory>15</maxHistory>
<!--单个日志最大容量 至少10MB才能看得出来-->
<maxFileSize>200MB</maxFileSize>
<!--所有日志最多占多大容量-->
<totalSizeCap>20GB</totalSizeCap>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期%thread表示线程名%-5level级别从左显示5个字符宽度%msg日志消息%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
<charset>${log.charset}</charset>
</encoder>
</appender>
<logger name="org.nl.wms.ext.acs.service.impl.AcsToWmsServiceImpl" level="info" additivity="false">
<appender-ref ref="FILE5"/>
</logger>
<!-- 打印sql -->
</included>

View File

@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<included>
<springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logs"/>
<property name="LOG_HOME" value="${logPath}"/>
<!-- 按照每天生成日志文件 -->
<appender name="FILE6" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${LOG_HOME}/MesToACS/%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<!--日志文件保留天数-->
<maxHistory>15</maxHistory>
<!--单个日志最大容量 至少10MB才能看得出来-->
<maxFileSize>200MB</maxFileSize>
<!--所有日志最多占多大容量-->
<totalSizeCap>20GB</totalSizeCap>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期%thread表示线程名%-5level级别从左显示5个字符宽度%msg日志消息%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
<charset>${log.charset}</charset>
</encoder>
</appender>
<logger name="org.nl.wms.sch.AcsUtil" level="info" additivity="false">
<appender-ref ref="FILE6"/>
</logger>
<!-- 打印sql -->
</included>

View File

@@ -24,6 +24,8 @@ https://juejin.cn/post/6844903775631572999
<include resource="log/LmsToSap.xml"/> <include resource="log/LmsToSap.xml"/>
<include resource="log/MesToLms.xml"/> <include resource="log/MesToLms.xml"/>
<include resource="log/SapToLms.xml"/> <include resource="log/SapToLms.xml"/>
<include resource="log/ACSToMes.xml"/>
<include resource="log/MesToACS.xml"/>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder> <encoder>

View File

@@ -14,7 +14,7 @@
<span class="el-dialog__title2">入库分配</span> <span class="el-dialog__title2">入库分配</span>
<span class="crud-opts-right2"> <span class="crud-opts-right2">
<!--左侧插槽--> <!--左侧插槽-->
<slot name="left" /> <slot name="left"/>
<el-button slot="left" type="info" @click="dialogVisible = false">关闭</el-button> <el-button slot="left" type="info" @click="dialogVisible = false">关闭</el-button>
</span> </span>
</div> </div>
@@ -51,19 +51,19 @@
</el-select> </el-select>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column show-overflow-tooltip prop="box_no" width="250" label="木箱号" align="center" /> <el-table-column show-overflow-tooltip prop="box_no" width="250" label="木箱号" align="center"/>
<el-table-column show-overflow-tooltip prop="material_code" label="物料编码" align="center" /> <el-table-column show-overflow-tooltip prop="material_code" label="物料编码" align="center"/>
<el-table-column show-overflow-tooltip prop="material_name" label="物料名称" align="center" /> <el-table-column show-overflow-tooltip prop="material_name" label="物料名称" align="center"/>
<el-table-column show-overflow-tooltip prop="pcsn" label="子卷号" align="center" /> <el-table-column show-overflow-tooltip prop="pcsn" label="子卷号" align="center"/>
<el-table-column show-overflow-tooltip prop="sap_pcsn" label="SAP批次" align="center" /> <el-table-column show-overflow-tooltip prop="sap_pcsn" label="SAP批次" align="center"/>
<el-table-column show-overflow-tooltip prop="plan_qty" :formatter="crud.formatNum3" label="重量" align="center" /> <el-table-column show-overflow-tooltip prop="plan_qty" :formatter="crud.formatNum3" label="重量" align="center"/>
<!-- <el-table-column show-overflow-tooltip prop="assign_qty" :formatter="crud.formatNum3" label="已分配数量" <!-- <el-table-column show-overflow-tooltip prop="assign_qty" :formatter="crud.formatNum3" label="已分配数量"
align="center"/> align="center"/>
<el-table-column show-overflow-tooltip prop="unassign_qty" :formatter="crud.formatNum3" label="未分配数量" <el-table-column show-overflow-tooltip prop="unassign_qty" :formatter="crud.formatNum3" label="未分配数量"
align="center"/>--> align="center"/>-->
<el-table-column show-overflow-tooltip prop="qty_unit_name" label="单位" align="center" /> <el-table-column show-overflow-tooltip prop="qty_unit_name" label="单位" align="center"/>
<el-table-column show-overflow-tooltip prop="source_bill_type_name" label="源单类型" align="center" /> <el-table-column show-overflow-tooltip prop="source_bill_type_name" label="源单类型" align="center"/>
<el-table-column show-overflow-tooltip prop="source_bill_code" label="源单编号" align="center" /> <el-table-column show-overflow-tooltip prop="source_bill_code" label="源单编号" align="center"/>
</el-table> </el-table>
</el-card> </el-card>
<el-card class="box-card" shadow="never" :body-style="{padding:'20px 20px 0 20px'}"> <el-card class="box-card" shadow="never" :body-style="{padding:'20px 20px 0 20px'}">
@@ -132,7 +132,7 @@
</div> </div>
<span class="crud-opts-right2"> <span class="crud-opts-right2">
<!--左侧插槽--> <!--左侧插槽-->
<slot name="left" /> <slot name="left"/>
<!--<el-button <!--<el-button
slot="left" slot="left"
class="filter-item" class="filter-item"
@@ -196,15 +196,15 @@
border border
:header-cell-style="{background:'#f5f7fa',color:'#606266'}" :header-cell-style="{background:'#f5f7fa',color:'#606266'}"
> >
<el-table-column show-overflow-tooltip type="index" label="序号" align="center" /> <el-table-column show-overflow-tooltip type="index" label="序号" align="center"/>
<el-table-column show-overflow-tooltip prop="box_no" width="250" label="木箱号" align="center" /> <el-table-column show-overflow-tooltip prop="box_no" width="250" label="木箱号" align="center"/>
<el-table-column show-overflow-tooltip prop="material_code" label="物料编码" align="center" /> <el-table-column show-overflow-tooltip prop="material_code" label="物料编码" align="center"/>
<el-table-column show-overflow-tooltip prop="material_name" label="物料名称" align="center" /> <el-table-column show-overflow-tooltip prop="material_name" label="物料名称" align="center"/>
<el-table-column show-overflow-tooltip prop="pcsn" label="子卷号" align="center" /> <el-table-column show-overflow-tooltip prop="pcsn" label="子卷号" align="center"/>
<el-table-column show-overflow-tooltip prop="sap_pcsn" label="SAP批次" align="center" /> <el-table-column show-overflow-tooltip prop="sap_pcsn" label="SAP批次" align="center"/>
<el-table-column show-overflow-tooltip prop="plan_qty" :formatter="crud.formatNum3" label="重量" align="center" /> <el-table-column show-overflow-tooltip prop="plan_qty" :formatter="crud.formatNum3" label="重量" align="center"/>
<el-table-column show-overflow-tooltip prop="point_code" label="入库点" align="center" /> <el-table-column show-overflow-tooltip prop="point_code" label="入库点" align="center"/>
<el-table-column show-overflow-tooltip prop="struct_code" label="货位" align="center" /> <el-table-column show-overflow-tooltip prop="struct_code" label="货位" align="center"/>
<!--<el-table-column align="center" label="操作" width="190" fixed="right"> <!--<el-table-column align="center" label="操作" width="190" fixed="right">
<template slot-scope="scope"> <template slot-scope="scope">
<el-popover v-model="scope.row.pop" placement="top" width="180" trigger="manual"> <el-popover v-model="scope.row.pop" placement="top" width="180" trigger="manual">
@@ -220,7 +220,8 @@
</el-table> </el-table>
</el-card> </el-card>
<StructDiv ref="child" :stor-id="storId" :dialog-show.sync="structShow" :sect-prop="sectProp" @tableChanged="tableChanged" /> <StructDiv ref="child" :stor-id="storId" :dialog-show.sync="structShow" :sect-prop="sectProp"
@tableChanged="tableChanged"/>
</el-dialog> </el-dialog>
</template> </template>
@@ -297,7 +298,7 @@ export default {
}, },
methods: { methods: {
open() { open() {
crudUserStor.getSect({ 'stor_id': this.storId}).then(res => { crudUserStor.getSect({ 'stor_id': this.storId }).then(res => {
this.sects = res.content this.sects = res.content
}) })
@@ -547,20 +548,15 @@ export default {
return return
} }
// 如果勾选了,直接跳后台 // 如果勾选了,直接跳后台
if (this.form.checked) { crudRawAssist.unDivStruct(this.form).then(res => {
crudRawAssist.unDivStruct(this.form).then(res => { crudRawAssist.getIODtl({ 'bill_code': this.form.dtl_row.bill_code, 'open_flag': '1' }).then(res => {
crudRawAssist.getIODtl({ 'bill_code': this.form.dtl_row.bill_code, 'open_flag': '1' }).then(res => { this.openParam = res
this.openParam = res
})
crudRawAssist.getDisDtl(this.form.dtl_row).then(res => {
this.form.tableMater = res
this.crud.notify('取消分配成功!', CRUD.NOTIFICATION_TYPE.SUCCESS)
})
}) })
} else { crudRawAssist.getDisDtl(this.form.dtl_row).then(res => {
this.structShow = true this.form.tableMater = res
this.$refs.child.getMsg(false) this.crud.notify('取消分配成功!', CRUD.NOTIFICATION_TYPE.SUCCESS)
} })
})
}, },
dialogBucket() { dialogBucket() {
if (!this.form.dtl_row) { if (!this.form.dtl_row) {