Merge branch 'master_merge' of http://121.40.234.130:8899/root/lanzhouhailiang_one into master_merge

# Conflicts:
#	lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/service/dao/BstIvtBoxinfo.java
This commit is contained in:
2024-07-01 13:58:54 +08:00
21 changed files with 705 additions and 124 deletions

View File

@@ -26,6 +26,8 @@ import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService;
import org.nl.b_lms.sch.task.dao.SchBaseTask;
import org.nl.b_lms.sch.task.service.IschBaseTaskService;
import org.nl.b_lms.sch.tasks.TwoBoxExcepTask;
import org.nl.b_lms.sch.tasks.TwoExceptionInTask;
import org.nl.b_lms.sch.tasks.TwoOutHeapTask;
import org.nl.b_lms.sch.tasks.first_floor_area.MzhcwTask;
import org.nl.b_lms.sch.tasks.first_floor_area.SsxDjwTask;
import org.nl.b_lms.sch.tasks.slitter.service.SlitterService;
@@ -50,6 +52,7 @@ import org.nl.wms.pda.mps.service.CasingService;
import org.nl.wms.pda.mps.service.ShippingService;
import org.nl.wms.pda.mps.service.impl.BakingServiceImpl;
import org.nl.wms.pda.st.service.impl.PrintServiceImpl;
import org.nl.wms.sch.ComPareUtil;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.nl.wms.sch.tasks.CutConveyorTask;
import org.nl.wms.sch.tasks.EmptyVehicleTask;
@@ -295,7 +298,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
String type = whereJson.getString("type");
JSONObject result = new JSONObject();
RLock lock = redissonClient.getLock("acs_to_wms:" + type);
boolean tryLock = lock.tryLock(5,20, TimeUnit.SECONDS);
boolean tryLock = lock.tryLock(5, 20, TimeUnit.SECONDS);
try {
if (tryLock) {
String device_code = whereJson.getString("device_code");
@@ -554,8 +557,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
//判断是否开启了系统参数生成AGV搬运任务
String agv_transport = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("agv_transport").getValue();
//如果未开启AGV搬运则不创建从1016到发货区的任务
if (agv_transport.equals("0")){
log.info("未开启AGV搬运系统参数不生成AGV搬运["+vehicle_code+"]任务!");
if (agv_transport.equals("0")) {
log.info("未开启AGV搬运系统参数不生成AGV搬运[" + vehicle_code + "]任务!");
JSONArray sub_rows2 = WQLObject.getWQLObject("pdm_bi_subpackagerelation").query("package_box_sn = '" + vehicle_code + "'").getResultJSONArray(0);
for (int i = 0; i < sub_rows2.size(); i++) {
JSONObject sub_row = sub_rows2.getJSONObject(i);
@@ -735,7 +738,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
if (lock.isLocked() && lock.isHeldByCurrentThread()) {
try {
lock.unlock();
}catch (Exception ex){}
} catch (Exception ex) {
}
}
}
result.put("status", HttpStatus.BAD_REQUEST.value());
@@ -1438,9 +1442,9 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
ivt_shaftivt.update(point1_jo);
} else if ("010607".equals(point_type) || "010603".equals(point_type) || "010606".equals(point_type)) {
JSONObject point1_jo = ivt_shaftivt.query("point_code = '" + task_jo.getString("point_code1") + "'").uniqueResult(0);
if(point1_jo.getString("point_type").equals("1")){
if (point1_jo.getString("point_type").equals("1")) {
point1_jo.put("have_qzz", "0");
}else {
} else {
point1_jo.put("qzz_size", "");
point1_jo.put("qzz_generation", "");
point1_jo.put("have_qzz", "0");
@@ -1838,7 +1842,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
}
} else {
//如果满轴位没有可用的空点位,先创建一个桁架任务但是不下发,等这边空出来点位,判断是否有这种桁架任务然后补发;
List<SchBaseTask> existTaskList = getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"),containerName);
List<SchBaseTask> existTaskList = getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"), containerName);
//如果有就不创建,没有就创建
if (CollectionUtils.isEmpty(existTaskList)) {
//只确定起点NBJ1002
@@ -1978,8 +1982,33 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
if (whereJson.getIntValue("weight") <= 0) {
throw new BadRequestException("上报的重量不能为0!");
}
whereJson.put("bill_type", IOSEnum.IN_TYPE.code("生产入库"));
inBussManageService.inTask(whereJson);
JSONObject jsonObject = ComPareUtil.CompareWhight(whereJson);
if (jsonObject.getBoolean("compaer_result")) {
whereJson.put("bill_type", IOSEnum.IN_TYPE.code("生产入库"));
inBussManageService.inTask(whereJson);
} else {
JSONObject jsonTaskParam = new JSONObject();
//创建异常任务去异常入库口
//入库口
jsonTaskParam.put("point_code1", "RK1018");
//异常位
jsonTaskParam.put("point_code2", "RK1003");
jsonTaskParam.put("vehicle_code", jsonObject.getString("box_no"));
jsonTaskParam.put("vehicle_code2", whereJson.getString("vehicle_code"));
JSONObject request_param = new JSONObject();
if (whereJson.getString("vehicle_code").startsWith("A")) {
request_param.put("containerType", "2");
} else if (whereJson.getString("vehicle_code").startsWith("B")) {
request_param.put("containerType", "1");
} else {
throw new BadRequestException("托盘号有误,无法找到对应的托盘类型!");
}
jsonTaskParam.put("request_param", request_param);
TwoExceptionInTask bean = SpringContextHolder.getBean(TwoExceptionInTask.class);
bean.createTask(jsonTaskParam);
bean.immediateNotifyAcs(null);
}
} else if (type.equals(IOSEnum.ACSTOLMS_TYPE.code("空盘入库"))) {
// 2-空盘入库
whereJson.put("vehicle_type", whereJson.getString("container_type"));
@@ -2452,7 +2481,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
}
} catch (Exception e) {
log.info("1层空托盘区扩容失败"+e.getMessage());
log.info("1层空托盘区扩容失败" + e.getMessage());
return;
}
@@ -2461,15 +2490,16 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
jsonParam.put("sect_id", RegionTypeEnum.KTP01.getId());
jsonParam.put("sect_code", "KTP01");
jsonParam.put("sect_name", RegionTypeEnum.KTP01.getName());
attr.update(jsonParam,"sect_code = 'ZC01' AND block_num = '"+block_num+"' AND row_num = '"+row_num+"' AND layer_num = '1'");
attr.update(jsonParam, "sect_code = 'ZC01' AND block_num = '" + block_num + "' AND row_num = '" + row_num + "' AND layer_num = '1'");
// 更新点位为主存区域
jsonParam.put("region_id", RegionTypeEnum.KTP01.getId());
jsonParam.put("region_code", "KTP01");
jsonParam.put("region_name", RegionTypeEnum.KTP01.getName());
point.update(jsonParam,"region_code = 'ZC01' AND block_num = '"+block_num+"' AND row_num = '"+row_num+"' AND layer_num = '1'");
point.update(jsonParam, "region_code = 'ZC01' AND block_num = '" + block_num + "' AND row_num = '" + row_num + "' AND layer_num = '1'");
}
@Override
public JSONObject actionFinishRequest2(JSONObject param) {
return slitterService.acsActionFinishRequestToRelease(param);

View File

@@ -167,7 +167,7 @@ public class MesToLmsController {
@Log("MES传递给LMS入线边库或者入成品库、撤销入线边库、人工改变入线边还是包装")
@SaIgnore
public ResponseEntity<Object> changeSect(@RequestBody JSONObject jo) {
return new ResponseEntity<>(mesToLmsService.changeSect(jo), HttpStatus.OK);
return new ResponseEntity<>(mesToLmsService.sendTargetHouse(jo), HttpStatus.OK);
}
@PostMapping("/getWasteFoilWeight")

View File

@@ -80,8 +80,6 @@ public interface MesToLmsService {
JSONObject sendSubInfo(JSONObject param);
JSONObject changeSect(JSONObject param);
JSONObject getWasteFoilWeight(JSONObject param);
JSONObject WasteFoilSuccess(JSONObject param);

View File

@@ -23,6 +23,7 @@ import org.nl.b_lms.bst.ivt.scale.history.service.dao.BstIvtScalehistory;
import org.nl.b_lms.pdm.bi.slittingproductionplan.service.IPdmBiSlittingproductionplanService;
import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.PdmBiSlittingproductionplan;
import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelation;
import org.nl.b_lms.pdm.subpackagerelation.service.IpdmBiSubpackagerelationService;
import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService;
import org.nl.b_lms.sch.tasks.ProcessTask;
@@ -88,6 +89,9 @@ public class MesToLmsServiceImpl implements MesToLmsService {
@Resource
private IbstIvtPackageinfoivtService packageinfoivtService;
@Autowired
private IpdmBiSubpackagerelationService subpackagerelationService;
/**
* 生箔烘箱:
@@ -119,6 +123,9 @@ public class MesToLmsServiceImpl implements MesToLmsService {
String UpCoilerDate = param.getString("UpCoilerDate");
String IsReloadSend = param.getString("IsReloadSend");
String Attribute1 = param.getString("Attribute1");
if (StringUtils.isEmpty(Attribute1)) {
Attribute1 = "SF2";
}
WQLObject pointTab = WQLObject.getWQLObject("ST_IVT_SbPointIvt");
WQLObject orderTab = WQLObject.getWQLObject("PDM_BI_RawFoilWorkOrder");
@@ -171,8 +178,10 @@ public class MesToLmsServiceImpl implements MesToLmsService {
json.put("product_area", jsonPoint.getString("product_area"));
json.put("point_code", jsonPoint.getString("point_code"));
if (Attribute1.equals("SF1")) {
//标箔
json.put("order_type", "1");
} else if (Attribute1.equals("SF2")) {
//锂电
json.put("order_type", "2");
}
json.put("realstart_time", DateUtil.now());
@@ -217,6 +226,9 @@ public class MesToLmsServiceImpl implements MesToLmsService {
String ContainerName = param.getString("ContainerName");
String ResourceName = param.getString("ResourceName");
String Type = param.getString("Type");
if (StringUtils.isEmpty(Type)) {
Type = "Foil";
}
JSONObject raw_jo = new JSONObject();
if (Type.equals("TR")) {
raw_jo = WQLObject.getWQLObject("PDM_BI_SurProcessOrder").query("container_name ='" + ContainerName + "' AND resource_name = '" + ResourceName + "'").uniqueResult(0);
@@ -515,7 +527,9 @@ public class MesToLmsServiceImpl implements MesToLmsService {
String SplitBreadth = param.getString("SplitBreadth"); // 子卷幅宽
String SplitHeight = param.getString("SplitHeight"); // 子卷理论长度
String SplitWeight = param.getString("SplitWeight"); // 子卷理论重量
String Attribute2 = param.getString("Attribute2"); // 销售订单及行号
// String Attribute2 = param.getString("Attribute2"); // 销售订单及行号
String Attribute2 = param.getString("Attribute2"); // 上下轴
String Attribute3 = param.getString("Attribute3"); // 位置左右
WQLObject tab = WQLObject.getWQLObject("PDM_BI_SlittingProductionPlan");
@@ -585,6 +599,8 @@ public class MesToLmsServiceImpl implements MesToLmsService {
* 1.当管件类型为1纸筒时 PaperTubeMaterial 纸筒物料编码、PaperTubeDescription 纸筒物料描述、PaperTubeModel 纸筒规格 不能为空
* 2.当管件类型为2FRP管时 FRPMaterial FRP管物料编码、FRPDescription FRP管物料描述、FRPModel FRP管规格 不能为空
*/
String qzz_generation = "0";
String qzz_size = "0";
if (StrUtil.equals(PaperTubeOrFRP, "1")) {
if (ObjectUtil.isEmpty(param.getString("PaperTubeMaterial"))) {
throw new BadRequestException("纸筒物料编码不能为空");
@@ -595,6 +611,16 @@ public class MesToLmsServiceImpl implements MesToLmsService {
if (ObjectUtil.isEmpty(param.getString("PaperTubeModel"))) {
throw new BadRequestException("纸筒规格不能为空");
}
if (param.getString("PaperTubeDescription").contains("3.12")) {
qzz_generation = "4";
}
if (param.getString("PaperTubeDescription").contains("3.15")) {
qzz_generation = "5";
}
// 解析描述数组
String[] tubeArray = param.getString("PaperTubeDescription").split("\\|");
// 定义尺寸与长度
qzz_size = Character.toString(tubeArray[2].charAt(0));
} else {
if (ObjectUtil.isEmpty(param.getString("FRPMaterial"))) {
throw new BadRequestException("FRP管物料编码不能为空");
@@ -605,6 +631,16 @@ public class MesToLmsServiceImpl implements MesToLmsService {
if (ObjectUtil.isEmpty(param.getString("FRPModel"))) {
throw new BadRequestException("FRP管规格不能为空");
}
if (param.getString("FRPDescription").contains("3.12")) {
qzz_generation = "4";
}
if (param.getString("FRPDescription").contains("3.15")) {
qzz_generation = "5";
}
// 解析描述数组
String[] tubeArray = param.getString("FRPDescription").split("\\|");
// 定义尺寸与长度
qzz_size = Character.toString(tubeArray[2].charAt(0));
}
JSONObject json = new JSONObject();
@@ -632,9 +668,17 @@ public class MesToLmsServiceImpl implements MesToLmsService {
json.put("split_breadth", SplitBreadth);
json.put("split_height", SplitHeight);
json.put("split_weight", SplitWeight);
json.put("sale_order_name", Attribute2);
json.put("up_or_down", Attribute2);
json.put("left_or_right", Attribute3);
json.put("qzz_size", qzz_size);
if (ResourceName.startsWith("B5") || ResourceName.startsWith("B6")) {
json.put("is_paper_ok", "1");
}
// json.put("sale_order_name", Attribute2);
json.put("start_time", DateUtil.now());
json.put("status", "01");
json.put("qzz_generation", qzz_generation);
json.put("is_parent_ok", "0");
json.put("is_child_tz_ok", "0");
json.put("is_child_ps_ok", "0");
@@ -1280,7 +1324,7 @@ public class MesToLmsServiceImpl implements MesToLmsService {
JSONObject jsonStor = WQLObject.getWQLObject("st_ivt_bsrealstorattr").query("stor_code = '" + stor_code + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(jsonStor)) {
throw new BadRequestException("仓库不存在:"+stor_code);
throw new BadRequestException("仓库不存在:" + stor_code);
}
JSONArray rowsDtl = new JSONArray();
@@ -1711,7 +1755,7 @@ public class MesToLmsServiceImpl implements MesToLmsService {
log.info("sendTargetHouse输入参数为-------------------" + param.toString());
JSONObject resultParam = new JSONObject();
try {
String containerName = param.getString("sconds");
String containerName = param.getString("ContainerName");
String TargetHouse = param.getString("TargetHouse");
if (StringUtils.isBlank(containerName)) {
throw new BadRequestException("传入的母卷号不能为空!");
@@ -1871,17 +1915,44 @@ public class MesToLmsServiceImpl implements MesToLmsService {
public JSONObject containerNeedDown(JSONObject param) {
log.info("containerNeedDown输入参数为-------------------" + param.toString());
JSONObject resultParam = new JSONObject();
resultParam.put("RTYPE", "S");
resultParam.put("Code", "0");
resultParam.put("RTMSG", "操作成功!");
JSONObject result = new JSONObject();
return resultParam;
String OutsideContainerName = param.getString("OutsideContainerName");
String InsideContainerName = param.getString("InsideContainerName");
String CarrierStatus = param.getString("CarrierStatus");
if (StrUtil.isEmpty(OutsideContainerName)) {
throw new BadRequestException("外卷卷号不能为空!");
}
if (StrUtil.isEmpty(InsideContainerName)) {
throw new BadRequestException("内卷卷号不能为空!");
}
if (StrUtil.isEmpty(CarrierStatus)) {
throw new BadRequestException("是否需要下轴不能为空!");
}
try { // 返回成功
result.put("RTYPE", "S");
result.put("RTMSG", "操作成功!");
result.put("RTOAL", 1);
result.put("RTDAT", null);
} catch (Exception e) {
// 返回失败
result.put("RTYPE", "E");
result.put("RTMSG", "操作失败!" + e.getMessage());
result.put("RTOAL", 0);
result.put("RTDAT", null);
}
return result;
}
@Override
public JSONObject sendSubInfo(JSONObject param) {
log.info("sendSubInfo输入参数为-------------------" + param.toString());
/* {"ContainerName":"A1222211290105A3",
"SAPLotNumber":"A000000168",
"SaleOrderName":"100000022-100",
@@ -1899,6 +1970,7 @@ public class MesToLmsServiceImpl implements MesToLmsService {
"ETTensileStrengthLowerLimit":"300",
"TensileStrength":"1.0"}*/
JSONObject result = new JSONObject();
//子卷号
String ContainerName = param.getString("ContainerName");
//SAP批次
@@ -1940,47 +2012,45 @@ public class MesToLmsServiceImpl implements MesToLmsService {
//生产实际抗拉值
String TensileStrength = param.getString("TensileStrength");
PdmBiSubpackagerelation dto = new PdmBiSubpackagerelation();
dto.setContainer_name(ContainerName);
dto.setSap_pcsn(SAPLotNumber);
dto.setSale_order_name(SaleOrderName);
dto.setContainer_name(CustomerName);
dto.setCustomer_description(CustomerDescription);
dto.setWidth(Width);
dto.setThickness(Thickness);
dto.setMass_per_unit_area(MassPerUnitArea);
dto.setNet_weight(NetWeight);
dto.setLength(Length);
dto.setDate_of_production(DateOfProduction);
dto.setIs_un_plan_production(isUnPlanProduction);
dto.setUn_plan_product_property1(UnPlanProductProperty1);
dto.setUn_plan_product_property2(UnPlanProductProperty2);
dto.setUn_plan_product_property3(UnPlanProductProperty3);
dto.setDemand_limit(SOTensileStrengthLowerLimit);
dto.setStandard_limit(ETTensileStrengthLowerLimit);
dto.setActual_value(TensileStrength);
try {
PdmBiSubpackagerelation dto = new PdmBiSubpackagerelation();
dto.setContainer_name(ContainerName);
dto.setSap_pcsn(SAPLotNumber);
dto.setSale_order_name(SaleOrderName);
dto.setContainer_name(CustomerName);
dto.setCustomer_description(CustomerDescription);
dto.setWidth(Width);
dto.setThickness(Thickness);
dto.setMass_per_unit_area(MassPerUnitArea);
dto.setNet_weight(NetWeight);
dto.setLength(Length);
dto.setDate_of_production(DateOfProduction);
dto.setIs_un_plan_production(isUnPlanProduction);
dto.setUn_plan_product_property1(UnPlanProductProperty1);
dto.setUn_plan_product_property2(UnPlanProductProperty2);
dto.setUn_plan_product_property3(UnPlanProductProperty3);
dto.setDemand_limit(SOTensileStrengthLowerLimit);
dto.setStandard_limit(ETTensileStrengthLowerLimit);
dto.setActual_value(TensileStrength);
dto.setWidth_standard(WidthPlan);
dto.setThickness_request(ThicknessPlan);
dto.setWorkorder_id(IdUtil.getSnowflake(1, 1).nextId() + "");
subpackagerelationService.save(dto);
// 返回成功
result.put("RTYPE", "S");
result.put("RTMSG", "操作成功!");
result.put("RTOAL", 1);
result.put("RTDAT", null);
} catch (Exception e) {
// 返回失败
result.put("RTYPE", "E");
result.put("RTMSG", "操作失败!" + e.getMessage());
result.put("RTOAL", 0);
result.put("RTDAT", null);
}
log.info("sendSubInfo输入参数为-------------------" + param.toString());
JSONObject resultParam = new JSONObject();
resultParam.put("RTYPE", "S");
resultParam.put("Code", "0");
resultParam.put("RTMSG", "操作成功!");
return resultParam;
}
@Override
public JSONObject changeSect(JSONObject param) {
log.info("changeSect输入参数为-------------------" + param.toString());
JSONObject resultParam = new JSONObject();
resultParam.put("RTYPE", "S");
resultParam.put("Code", "0");
resultParam.put("RTMSG", "操作成功!");
return resultParam;
return result;
}
@Override

View File

@@ -0,0 +1,76 @@
package org.nl.wms.sch;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.apache.commons.lang3.StringUtils;
import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelation;
import org.nl.b_lms.pdm.subpackagerelation.service.IpdmBiSubpackagerelationService;
import org.nl.b_lms.storage_manage.database.service.IBstIvtBoxinfoService;
import org.nl.b_lms.storage_manage.database.service.dao.BstIvtBoxinfo;
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.system.service.param.impl.SysParamServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.List;
public class ComPareUtil {
public static JSONObject CompareWhight(JSONObject jsonObject) {
WQLObject subTab = WQLObject.getWQLObject("pdm_bi_subpackagerelation");
String vehicle_code = jsonObject.getString("vehicle_code");
// 处理子卷号
String material_barcode = jsonObject.getString("material_barcode");
if (ObjectUtil.isEmpty(material_barcode)) {
throw new BadRequestException("子卷号不能为空!");
}
List<String> pcsnList = Arrays.asList(material_barcode.split(","));
// 查询子卷包装关系
List<JSONObject> subList = subTab.query("container_name in ('" + String.join("','", pcsnList) + "') and status in ('0','1','99')")
.getResultJSONArray(0).toJavaList(JSONObject.class);
if (ObjectUtil.isEmpty(subList)) {
throw new BadRequestException("未查询到子卷包装信息!");
}
if (StringUtils.isBlank(subList.get(0).getString("package_box_sn"))) {
throw new BadRequestException("木箱号不能为空!");
}
//查询托盘重量
JSONObject vehicle_ext = WQLObject.getWQLObject("").query("storagevehicle_code = '" + vehicle_code + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(vehicle_ext)) {
throw new BadRequestException("未查询到托盘的扩展信息");
}
IpdmBiSubpackagerelationService ipdmBiSubpackagerelationService = SpringContextHolder.getBean(IpdmBiSubpackagerelationService.class);
List<PdmBiSubpackagerelation> list = ipdmBiSubpackagerelationService.list(new LambdaQueryWrapper<PdmBiSubpackagerelation>().eq(PdmBiSubpackagerelation::getPackage_box_sn, vehicle_ext.getString("pcsn")));
if (ObjectUtil.isEmpty(list)) {
throw new BadRequestException("未查询到对应的木箱包装关系!");
}
PdmBiSubpackagerelation sub = list.get(0);
double vehicle_weight = vehicle_ext.getDoubleValue("qty");
double current_weight = NumberUtil.sub(jsonObject.getDoubleValue("weight"), vehicle_weight);
double box_weight = sub.getBox_weight().doubleValue();
double weight_sys = Double.parseDouble(SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("weight_sys").getValue());
boolean compaer_result = true;
if (!(NumberUtil.sub(box_weight, weight_sys) <= current_weight && NumberUtil.add(box_weight, weight_sys) >= current_weight)) {
compaer_result = false;
}
JSONObject json = new JSONObject();
json.put("compaer_result", compaer_result);
json.put("box_no", sub.getPackage_box_sn());
return json;
}
}

View File

@@ -36,7 +36,7 @@ public class AutoQueryProudDayData {
@SneakyThrows
public void run() {
RLock lock = redissonClient.getLock(this.getClass().getName());
boolean tryLock = lock.tryLock(0,600, TimeUnit.SECONDS);
boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
try {
if (tryLock){
JSONObject param = new JSONObject();

View File

@@ -122,7 +122,7 @@ public class AutoSendIvtExcel {
ToolLocalStorage local = iToolLocalStorageService.getOne(new QueryWrapper<ToolLocalStorage>().eq("name","当天库存报表"));
if (ObjectUtil.isNotEmpty(local)){
local.setUpdate_time(DateUtil.now());
iToolLocalStorageService.save(local);
iToolLocalStorageService.update(local);
}else {
ToolLocalStorage localStorage = new ToolLocalStorage(
"当天库存报表.xls",

View File

@@ -96,12 +96,12 @@ public class TaskServiceImpl implements TaskService {
if (StrUtil.isNotEmpty(whereJson.getString("is_delete"))) {
map.put("is_delete", whereJson.getString("is_delete"));
}
//获取人员对应的区域
// UserAreaServiceImpl userAreaService = new UserAreaServiceImpl();
// String in_area_id = userAreaService.getInArea();
// if (ObjectUtil.isNotEmpty(in_area_id)) {
// map.put("in_area_id", in_area_id);
// }
// 获取人员对应的区域
UserAreaServiceImpl userAreaService = new UserAreaServiceImpl();
String in_area_id = userAreaService.getInArea();
if (ObjectUtil.isNotEmpty(in_area_id)) {
map.put("in_area_id", in_area_id);
}
JSONObject json = WQL.getWO("QSCH_TASK_01").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "update_time desc");
JSONArray content = json.getJSONArray("content");
JSONArray res = new JSONArray();
@@ -124,7 +124,7 @@ public class TaskServiceImpl implements TaskService {
RLock lock = redissonClient.getLock(task_id);
boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
try {
if (tryLock){
if (tryLock) {
String method_name = MapUtil.getStr(map, "method_name");
JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0);
if ("finish".equals(method_name)) {
@@ -184,10 +184,10 @@ public class TaskServiceImpl implements TaskService {
throw new BadRequestException(e.getMessage());
}
}
}else {
throw new BadRequestException("任务标识为:"+task_id+"的任务正在操作中!");
} else {
throw new BadRequestException("任务标识为:" + task_id + "的任务正在操作中!");
}
}finally {
} finally {
if (tryLock) {
lock.unlock();
}

View File

@@ -85,6 +85,71 @@ public class CutTrussTask extends AbstractAcsTask {
String task_id = taskObj.getString("task_id");
JSONObject jsonTask = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0);
if (StrUtil.equals(status, "0")) {
// 更新删除字段
jsonTask.put("is_delete", "1");
jsonTask.put("update_time", DateUtil.now());
taskTab.update(jsonTask);
//桁架标准任务
if ("010403".equals(jsonTask.getString("task_type"))) {
//更新入站气涨轴的分切计划状态
JSONArray plan_jo = WQLObject.getWQLObject("PDM_BI_SlittingProductionPlan").query("qzzno = '" + jsonTask.getString("vehicle_code") + "' AND is_child_tz_ok = '1' AND is_child_ps_ok = '1' AND is_delete = '0' AND status IN ('04','05')").getResultJSONArray(0);
if (ObjectUtil.isEmpty(plan_jo)) {
throw new BadRequestException("未查询到气涨轴:" + jsonTask.getString("vehicle_code") + "状态为:入站中或入站完成的分切计划!");
}
for (int i = 0; i < plan_jo.size(); i++) {
JSONObject plan_row = plan_jo.getJSONObject(i);
plan_row.put("status", "03");
plan_row.put("end_time", DateUtil.now());
WQLObject.getWQLObject("PDM_BI_SlittingProductionPlan").update(plan_row);
}
//更新出站气涨轴的分切计划状态
JSONArray plan_jo2 = WQLObject.getWQLObject("PDM_BI_SlittingProductionPlan").query("qzzno = '" + jsonTask.getString("vehicle_code2") + "' AND is_child_tz_ok = '1' AND is_child_ps_ok = '1' AND is_delete = '0' AND status = '06'").getResultJSONArray(0);
if (ObjectUtil.isEmpty(plan_jo2)) {
throw new BadRequestException("未查询到气涨轴:" + jsonTask.getString("vehicle_code2") + "状态为:出站中的分切计划!");
}
for (int i = 0; i < plan_jo2.size(); i++) {
JSONObject plan_row = plan_jo2.getJSONObject(i);
plan_row.put("status", "05");
plan_row.put("end_time", DateUtil.now());
WQLObject.getWQLObject("PDM_BI_SlittingProductionPlan").update(plan_row);
}
}
//分切>输送线 子卷出站
if ("010404".equals(jsonTask.getString("task_type"))) {
if (!jsonTask.getString("vehicle_code").contains("废箔")) {
//更新出站气涨轴的分切计划状态
JSONArray plan_jo2 = WQLObject.getWQLObject("PDM_BI_SlittingProductionPlan").query("qzzno = '" + jsonTask.getString("vehicle_code") + "' AND is_child_tz_ok = '1' AND is_child_ps_ok = '1' AND is_delete = '0' AND status = '06'").getResultJSONArray(0);
if (ObjectUtil.isEmpty(plan_jo2)) {
throw new BadRequestException("未查询到气涨轴:" + jsonTask.getString("vehicle_code") + "状态为:出站中的分切计划!");
}
for (int i = 0; i < plan_jo2.size(); i++) {
JSONObject plan_row = plan_jo2.getJSONObject(i);
plan_row.put("status", "05");
plan_row.put("end_time", DateUtil.now());
WQLObject.getWQLObject("PDM_BI_SlittingProductionPlan").update(plan_row);
}
}
}
//分切>输送线 子卷入站
if ("010405".equals(jsonTask.getString("task_type"))) {
//更新入站气涨轴的分切计划状态
JSONArray plan_jo = WQLObject.getWQLObject("PDM_BI_SlittingProductionPlan").query("qzzno = '" + jsonTask.getString("vehicle_code") + "' AND is_child_tz_ok = '1' AND is_child_ps_ok = '1' AND is_delete = '0' AND status IN ('04','05') ").getResultJSONArray(0);
if (ObjectUtil.isEmpty(plan_jo)) {
throw new BadRequestException("未查询到气涨轴:" + jsonTask.getString("vehicle_code") + "状态为:入站中或入站完成的分切计划!");
}
for (int i = 0; i < plan_jo.size(); i++) {
JSONObject plan_row = plan_jo.getJSONObject(i);
plan_row.put("status", "03");
plan_row.put("end_time", DateUtil.now());
WQLObject.getWQLObject("PDM_BI_SlittingProductionPlan").update(plan_row);
}
}
}
if (TaskStatusEnum.EXECUTING.getCode().equals(status)) {
// 更新任务状态为执行中
jsonTask.put("task_status", TaskStatusEnum.EXECUTING.getCode());
@@ -198,6 +263,84 @@ public class CutTrussTask extends AbstractAcsTask {
cutConveyorTask.createTask(form);
}
if ("010405".equals(jsonTask.getString("task_type"))) {
//更新输送线的气涨轴编码
JSONObject delivery_point = WQLObject.getWQLObject("ST_IVT_DeliveryPointIvt").query("point_code = '" + jsonTask.getString("point_code1") + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(delivery_point)) {
throw new BadRequestException("未查询到对应的输送线点位!");
}
delivery_point.put("qzzno", "");
delivery_point.put("point_status", "02");
WQLObject.getWQLObject("ST_IVT_DeliveryPointIvt").update(delivery_point);
//更新入站气涨轴的分切计划状态
JSONArray plan_jo = WQLObject.getWQLObject("PDM_BI_SlittingProductionPlan").query("qzzno = '" + jsonTask.getString("vehicle_code") + "' AND is_child_tz_ok = '1' AND is_child_ps_ok = '1' AND is_delete = '0' AND status IN ('04','05') ").getResultJSONArray(0);
if (ObjectUtil.isEmpty(plan_jo)) {
throw new BadRequestException("未查询到气涨轴:" + jsonTask.getString("vehicle_code") + "对应的分切计划!");
}
for (int i = 0; i < plan_jo.size(); i++) {
JSONObject plan_row = plan_jo.getJSONObject(i);
plan_row.put("status", "05");
plan_row.put("end_time", DateUtil.now());
WQLObject.getWQLObject("PDM_BI_SlittingProductionPlan").update(plan_row);
}
//如果桁架任务执行完,右侧的输送线上存在气涨轴,则生成一个输送出的任务,防止左侧空载具挡住右侧气涨轴进行横移
log.debug("如果桁架任务执行完,缓存位的输送线上存在气涨轴,则对上料位的空载具生成一个输送出的任务");
char dtl_type = jsonTask.getString("point_code1").charAt(jsonTask.getString("point_code1").length() - 1);
if (Integer.valueOf(String.valueOf(dtl_type)) % 2 != 0) {
String point_location = delivery_point.getString("point_location");
String product_area = delivery_point.getString("product_area");
String sort_seq = delivery_point.getString("sort_seq");
JSONObject right_point = WQL.getWO("PDA_02")
.addParam("point_location", point_location)
.addParam("point_code", jsonTask.getString("point_code1"))
.addParam("product_area", product_area)
.addParam("sort_seq", sort_seq)
.addParam("find_type", "3")
.addParam("flag", "17").process().uniqueResult(0);
if (ObjectUtil.isNotEmpty(right_point)) {
log.debug("生成一个输送线出库任务");
//生成一个输送线出库任务
JSONObject form = new JSONObject();
form.put("point_code1", jsonTask.getString("point_code1"));
JSONObject ss_jo = WQLObject.getWQLObject("sch_base_point").query("product_area = '" + delivery_point.getString("product_area") + "' AND point_type = '7'").uniqueResult(0);
form.put("point_code2", ss_jo.getString("point_code"));
if (StrUtil.isEmpty(delivery_point.getString("vehicle_code"))) {
throw new BadRequestException("点位:" + delivery_point.getString("point_code") + "载具号为空!");
}
form.put("vehicle_code2", delivery_point.getString("vehicle_code"));
//分切输送出
form.put("task_type", "010401");
form.put("product_area", delivery_point.getString("product_area"));
cutConveyorTask.createTask(form);
} else {
right_point = WQL.getWO("PDA_02")
.addParam("point_location", point_location)
.addParam("point_code", jsonTask.getString("point_code1"))
.addParam("product_area", product_area)
.addParam("sort_seq", sort_seq)
.addParam("find_type", "4")
.addParam("flag", "18").process().uniqueResult(0);
if (ObjectUtil.isNotEmpty(right_point)) {
//判断对应缓存位是否存在需要末次下卷或者废箔下卷的任务
JSONObject task_jo = WQLObject.getWQLObject("sch_base_task").query("vehicle_code2 = '" + right_point.getString("vehicle_code") + "' AND is_delete = '0' AND task_status = '02'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(task_jo)) {
if ("010404".equals(task_jo.getString("task_type"))) {
//出站
task_jo.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
task_jo.put("point_code2", jsonTask.getString("point_code1"));
task_jo.put("vehicle_code2", delivery_point.getString("vehicle_code"));
WQLObject.getWQLObject("sch_base_task").update(task_jo);
new CutTrussTask().immediateNotifyAcs(null);
}
}
}
}
}
}
}
}