add: 新增物料展示,去外协物料打印,导出任务数据,导入载具号功能
This commit is contained in:
@@ -30,10 +30,57 @@
|
||||
<jna.version>5.9.0</jna.version>
|
||||
<lucene.version>8.2.0</lucene.version>
|
||||
<configuration.version>1.9</configuration.version>
|
||||
<commons-csv.version>1.8</commons-csv.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
|
||||
<!--导出CSV相关-->
|
||||
<dependency>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-csv</artifactId>
|
||||
<version>${commons-csv.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.spire</groupId>
|
||||
<artifactId>office</artifactId>
|
||||
<version>5.3.1</version>
|
||||
<scope>system</scope>
|
||||
<systemPath>${project.basedir}/../nlsso-server/src/main/resources/lib/spire.office.free-5.3.1.jar</systemPath>
|
||||
</dependency>
|
||||
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.logging.log4j</groupId>
|
||||
<artifactId>log4j-api</artifactId>
|
||||
<version>2.17.1</version> <!-- 请使用最新版本 -->
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.logging.log4j</groupId>
|
||||
<artifactId>log4j-core</artifactId>
|
||||
<version>2.17.1</version> <!-- 请使用最新版本 -->
|
||||
</dependency>
|
||||
|
||||
<!--word模板数据解析-->
|
||||
<dependency>
|
||||
<groupId>com.deepoove</groupId>
|
||||
<artifactId>poi-tl</artifactId>
|
||||
<version>1.9.0-beta</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.luhuiguo</groupId>
|
||||
<artifactId>aspose-pdf</artifactId>
|
||||
<version>23.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.google.zxing</groupId>
|
||||
<artifactId>core</artifactId>
|
||||
<version>3.3.0</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.samba.jcifs</groupId>
|
||||
<artifactId>jcifs</artifactId>
|
||||
@@ -283,21 +330,22 @@
|
||||
<artifactId>easyexcel</artifactId>
|
||||
<version>2.1.6</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.poi</groupId>
|
||||
<artifactId>poi-ooxml-schemas</artifactId>
|
||||
<version>3.17</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.poi</groupId>
|
||||
<artifactId>poi</artifactId>
|
||||
<version>3.17</version>
|
||||
<version>5.2.3</version> <!-- 请使用最新版本 -->
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.poi</groupId>
|
||||
<artifactId>poi-ooxml</artifactId>
|
||||
<version>3.17</version>
|
||||
<version>5.2.3</version> <!-- 请使用最新版本 -->
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.poi</groupId>
|
||||
<artifactId>poi-ooxml-schemas</artifactId>
|
||||
<version>4.1.2</version> <!-- 请使用最新版本 -->
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>xerces</groupId>
|
||||
<artifactId>xercesImpl</artifactId>
|
||||
|
||||
@@ -45,6 +45,7 @@ import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch.task_manage.AbstractTask;
|
||||
import org.nl.wms.sch.task_manage.GeneralDefinition;
|
||||
import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum;
|
||||
import org.nl.wms.sch.task_manage.task.ConnectorUtil;
|
||||
import org.nl.wms.sch.task_manage.task.TaskFactory;
|
||||
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
||||
import org.nl.wms.sch.task_manage.task.tasks.mapper.PointMapper;
|
||||
@@ -554,16 +555,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
if (ObjectUtil.isEmpty(mdBaseMaterial)) {
|
||||
//TODO:物料不存在
|
||||
}
|
||||
SchBaseVehiclematerialgroup schBaseVehiclematerialgroup = new SchBaseVehiclematerialgroup();
|
||||
schBaseVehiclematerialgroup.setGroup_id(connectorDto.getID());
|
||||
schBaseVehiclematerialgroup.setVehicle_code(connectorDto.getVehicle_code());
|
||||
schBaseVehiclematerialgroup.setJob_name(connectorDto.getJobname());
|
||||
schBaseVehiclematerialgroup.setMaterial_id(connectorDto.getProductID());
|
||||
schBaseVehiclematerialgroup.setMaterial_qty(connectorDto.getCurrentqty());
|
||||
schBaseVehiclematerialgroup.setRegion_code(connectorDto.getNextOperation());
|
||||
schBaseVehiclematerialgroup.setExtend(JSON.toJSONString(connectorDto));
|
||||
schBaseVehiclematerialgroup.setOrder_code(connectorDto.getProductionOrder());
|
||||
schBaseVehiclematerialgroup.setCreate_name("Connector");
|
||||
connectorDto.setCreate_name("Connector");
|
||||
SchBaseVehiclematerialgroup schBaseVehiclematerialgroup = ConnectorUtil.createObject(connectorDto);
|
||||
iSchBaseVehiclematerialgroupService.create(schBaseVehiclematerialgroup);
|
||||
if ("Y".equals(connectorDto.getFinished())) {
|
||||
jobName = connectorDto.getJobname();
|
||||
|
||||
@@ -93,4 +93,14 @@ public class ConnectorDto {
|
||||
*/
|
||||
@SerializedName("dueDate")
|
||||
private String DueDate;
|
||||
/**
|
||||
* 交期时间
|
||||
*/
|
||||
private String due_date;
|
||||
/**
|
||||
* 优先级
|
||||
*/
|
||||
private String priority;
|
||||
|
||||
private String create_name;
|
||||
}
|
||||
|
||||
@@ -26,6 +26,7 @@ import org.nl.wms.sch.task.service.ISchBaseTaskService;
|
||||
import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch.task_manage.AbstractTask;
|
||||
import org.nl.wms.sch.task_manage.GeneralDefinition;
|
||||
import org.nl.wms.sch.task_manage.task.ConnectorUtil;
|
||||
import org.nl.wms.sch.task_manage.task.TaskFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -135,18 +136,10 @@ public class ConnectorToWmsServiceImpl implements ConnectorToWmsService {
|
||||
.eq(SchBaseVehiclematerialgroup::getGroup_id, connectorDto.getID()));
|
||||
if (ObjectUtil.isNotNull(one)) {
|
||||
log.info("id:" + connectorDto.getID() + "," + "该物料信息已存在!");
|
||||
throw new BadRequestException("id:" + connectorDto.getID() + "," + "该物料信息已存在!");
|
||||
continue;
|
||||
}
|
||||
SchBaseVehiclematerialgroup schBaseVehiclematerialgroup = new SchBaseVehiclematerialgroup();
|
||||
schBaseVehiclematerialgroup.setGroup_id(connectorDto.getID());
|
||||
schBaseVehiclematerialgroup.setVehicle_code(connectorDto.getVehicle_code());
|
||||
schBaseVehiclematerialgroup.setJob_name(connectorDto.getJobname());
|
||||
schBaseVehiclematerialgroup.setMaterial_id(connectorDto.getProductID());
|
||||
schBaseVehiclematerialgroup.setMaterial_qty(connectorDto.getCurrentqty());
|
||||
schBaseVehiclematerialgroup.setRegion_code(connectorDto.getNextOperation());
|
||||
schBaseVehiclematerialgroup.setExtend(JSON.toJSONString(connectorDto));
|
||||
schBaseVehiclematerialgroup.setOrder_code(connectorDto.getProductionOrder());
|
||||
schBaseVehiclematerialgroup.setCreate_name("Connector");
|
||||
connectorDto.setCreate_name("Connector");
|
||||
SchBaseVehiclematerialgroup schBaseVehiclematerialgroup = ConnectorUtil.createObject(connectorDto);
|
||||
iSchBaseVehiclematerialgroupService.create(schBaseVehiclematerialgroup);
|
||||
}
|
||||
return null;
|
||||
|
||||
@@ -1,10 +1,14 @@
|
||||
package org.nl.wms.ext.fab.service.dto;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class SendMaterVo {
|
||||
/**
|
||||
* 载具编码
|
||||
@@ -14,6 +18,7 @@ public class SendMaterVo {
|
||||
* 物料id
|
||||
*/
|
||||
public String material_id;
|
||||
public String material_code;
|
||||
/**
|
||||
* 订单号
|
||||
*/
|
||||
|
||||
@@ -35,6 +35,10 @@ public class SendVehicleVo {
|
||||
* 物料id
|
||||
*/
|
||||
private String material_id;
|
||||
/**
|
||||
* 物料号
|
||||
*/
|
||||
private String material_code;
|
||||
/**
|
||||
* 优先级
|
||||
*/
|
||||
|
||||
@@ -2,6 +2,7 @@ package org.nl.wms.ext.fab.service.impl;
|
||||
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
@@ -82,6 +83,10 @@ public class FabServiceImpl {
|
||||
case "cmt":
|
||||
Assert.noNullElements(new Object[]{form.getString("device_code"), form.getString("vehicle_code")}, "参数不能为空!");
|
||||
CallMaterVo callMaterVo = form.toJavaObject(CallMaterVo.class);
|
||||
SchBasePoint schBasePoint2 = iSchBasePointService.selectByPointCode(callMaterVo.getDevice_code());
|
||||
if (schBasePoint2.getPoint_status().equals(GoodsEnum.IN_STOCK.getValue())) {
|
||||
throw new BadRequestException("该点位已存在物料!");
|
||||
}
|
||||
param.put("device_code", callMaterVo.getDevice_code());
|
||||
param.put("config_code", "PcOperationCMTask");
|
||||
param.put("region_code", callMaterVo.getRegion_code());
|
||||
@@ -102,7 +107,7 @@ public class FabServiceImpl {
|
||||
if (ObjectUtil.isEmpty(schBasePoint1)) {
|
||||
throw new BadRequestException("点位不存在");
|
||||
}
|
||||
if (!schBasePoint1.getPoint_status().equals(GoodsEnum.OUT_OF_STOCK.getValue()) || schBasePoint1.getIs_lock()) {
|
||||
if (StrUtil.isNotEmpty(schBasePoint1.getVehicle_code())) {
|
||||
throw new BadRequestException("该点位不是空站点,请确认再呼叫");
|
||||
}
|
||||
param.put("device_code", callEmpVo.getDevice_code());
|
||||
|
||||
@@ -36,6 +36,7 @@ import org.nl.wms.sch.task_manage.GeneralDefinition;
|
||||
import org.nl.wms.sch.task_manage.task.TaskFactory;
|
||||
import org.nl.wms.sch.task_manage.task.core.TaskType;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Propagation;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@@ -75,8 +76,8 @@ public class HandheldServiceImpl implements HandheldService {
|
||||
|
||||
@Override
|
||||
public void emptyCageStorageTask(JSONObject param) {
|
||||
Assert.noNullElements(new Object[]{param.getString("device_code"), param.getString("vehicle_list")
|
||||
}, "参数不能为空!");
|
||||
Assert.noNullElements(new Object[]{param.getString("device_code"), param.getString("vehicle_list")},
|
||||
"参数不能为空!");
|
||||
String vehicle = param.getString("vehicle_list");
|
||||
String device_code = param.getString("device_code");
|
||||
String type = param.getString("type");
|
||||
@@ -101,10 +102,6 @@ public class HandheldServiceImpl implements HandheldService {
|
||||
|
||||
/**
|
||||
* 空载具送回货架
|
||||
*
|
||||
* @param vehicle
|
||||
* @param device_code
|
||||
* @param param
|
||||
*/
|
||||
private void applyDeliveryRacks(String vehicle, String device_code, JSONObject param) {
|
||||
SchBasePoint schBasePoint = iSchBasePointService.selectByPointCode(device_code);
|
||||
@@ -121,14 +118,7 @@ public class HandheldServiceImpl implements HandheldService {
|
||||
throw new BadRequestException("载具号已存在别的点位,请确认再下发");
|
||||
}
|
||||
// 准备参数:设备编码
|
||||
JSONObject jo = new JSONObject();
|
||||
jo.put("device_code", device_code);
|
||||
jo.put("config_code", "RACKTask");
|
||||
jo.put("create_mode", GeneralDefinition.AUTO_CREATION);
|
||||
jo.put("vehicle_code", vehicle);
|
||||
jo.put("vehicle_type", mdBaseVehicle.getVehicle_type());
|
||||
jo.put("ext_data", param);
|
||||
connectorTask.apply(jo);
|
||||
applyTask(param, vehicle, device_code, mdBaseVehicle, connectorTask);
|
||||
iSchBasePointService.update(Wrappers.lambdaUpdate(SchBasePoint.class)
|
||||
.eq(SchBasePoint::getPoint_code, schBasePoint.getPoint_code())
|
||||
.set(SchBasePoint::getIs_lock, true));
|
||||
@@ -136,10 +126,6 @@ public class HandheldServiceImpl implements HandheldService {
|
||||
|
||||
/**
|
||||
* 内部过道送托盘
|
||||
*
|
||||
* @param vehicle
|
||||
* @param device_code
|
||||
* @param param
|
||||
*/
|
||||
private void interiorAisle(String vehicle, String device_code, JSONObject param) {
|
||||
MdBaseVehicle mdBaseVehicle = iMdBaseVehicleService.selectByVehicleCode(vehicle);
|
||||
@@ -162,10 +148,6 @@ public class HandheldServiceImpl implements HandheldService {
|
||||
|
||||
/**
|
||||
* 空料架送回
|
||||
*
|
||||
* @param vehicle
|
||||
* @param device_code
|
||||
* @param param
|
||||
*/
|
||||
private void semiAutomaticBending(String vehicle, String device_code, JSONObject param) {
|
||||
MdBaseVehicle mdBaseVehicle = iMdBaseVehicleService.selectByVehicleCode(vehicle);
|
||||
@@ -174,26 +156,11 @@ public class HandheldServiceImpl implements HandheldService {
|
||||
&& !mdBaseVehicle.getVehicle_type().equals(VehicleTypeEnum.RACKS_S06.getVehicleCode())) {
|
||||
throw new BadRequestException("不是料架,生成搬运任务失败!");
|
||||
}
|
||||
SchBasePoint schBasePoint = iSchBasePointService.selectByPointCode(device_code);
|
||||
if (ObjectUtil.isEmpty(schBasePoint)) throw new BadRequestException("设备点位不存在!");
|
||||
AbstractTask connectorTask = taskFactory.getTask("RACKTask");
|
||||
// 准备参数:设备编码
|
||||
JSONObject jo = new JSONObject();
|
||||
jo.put("device_code", device_code);
|
||||
jo.put("config_code", "RACKTask");
|
||||
jo.put("create_mode", GeneralDefinition.AUTO_CREATION);
|
||||
jo.put("vehicle_code", vehicle);
|
||||
jo.put("vehicle_type", mdBaseVehicle.getVehicle_type());
|
||||
jo.put("ext_data", param);
|
||||
connectorTask.apply(jo);
|
||||
rackTask(param, vehicle, device_code, mdBaseVehicle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 空料框送回
|
||||
*
|
||||
* @param vehicle
|
||||
* @param device_code
|
||||
* @param param
|
||||
*/
|
||||
private void artificialBending(String vehicle, String device_code, JSONObject param) {
|
||||
String[] vehicle_list = null;
|
||||
@@ -230,7 +197,6 @@ public class HandheldServiceImpl implements HandheldService {
|
||||
throw new BadRequestException("托盘类型不匹配,,生成搬运任务失败!");
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
SchBasePoint schBasePoint = iSchBasePointService.selectByPointCode(device_code);
|
||||
if (ObjectUtil.isEmpty(schBasePoint)) throw new BadRequestException("设备点位不存在!");
|
||||
@@ -254,15 +220,14 @@ public class HandheldServiceImpl implements HandheldService {
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void cageBlankingTask(JSONObject param) {
|
||||
Assert.noNullElements(new Object[]{param.getString("device_code"), param.getString("vehicle_code")},
|
||||
"当前点位或载具号不能为空!");
|
||||
boolean allNotEmpty = ObjectUtil.isAllNotEmpty(param.getString("device_code"), param.getString("vehicle_code"), param.getString("type"));
|
||||
Assert.isTrue(allNotEmpty, "当前点位,载具号或类型不能为空!");
|
||||
SchBasePoint schBasePoint = iSchBasePointService.selectByPointCode(param.getString("device_code"));
|
||||
Assert.notNull(schBasePoint, "当前点位不存在!");
|
||||
SchBasePoint one = iSchBasePointService.getOne(Wrappers.lambdaQuery(SchBasePoint.class)
|
||||
.eq(SchBasePoint::getVehicle_code, param.getString("vehicle_code"))
|
||||
.ne(SchBasePoint::getPoint_code, param.getString("device_code")));
|
||||
if (ObjectUtil.isNotEmpty(one)) {
|
||||
throw new BadRequestException("载具号已存在别的点位,请确认再下发");
|
||||
}
|
||||
Assert.isNull(one, "载具号已存在别的点位,请确认再下发");
|
||||
String region_code = param.getString("region_code");
|
||||
String device_code = param.getString("device_code");
|
||||
String vehicle_code = param.getString("vehicle_code");
|
||||
@@ -288,13 +253,6 @@ public class HandheldServiceImpl implements HandheldService {
|
||||
|
||||
/**
|
||||
* connector下料入库
|
||||
*
|
||||
* @param
|
||||
* @param param
|
||||
* @param region_code
|
||||
* @param device_code
|
||||
* @param vehicle_code
|
||||
* @param connectorTask
|
||||
*/
|
||||
private void connectorBlanking(JSONObject param, String region_code, String device_code, String vehicle_code, AbstractTask connectorTask) {
|
||||
JSONObject jo = new JSONObject();
|
||||
@@ -314,15 +272,8 @@ public class HandheldServiceImpl implements HandheldService {
|
||||
|
||||
/**
|
||||
* 物料下料去货架
|
||||
*
|
||||
* @param param
|
||||
* @param region_code
|
||||
* @param device_code
|
||||
* @param vehicle_code
|
||||
* @param connectorTask
|
||||
*/
|
||||
private void goShelves(SchBasePoint schBasePoint, JSONObject param, String region_code, String device_code, String vehicle_code, AbstractTask connectorTask) {
|
||||
//TODO:是否需要加上是否有无货校验
|
||||
Assert.noNullElements(param.getJSONArray("material"), "参数不能为空!");
|
||||
JSONArray materials = param.getJSONArray("material");
|
||||
JSONObject jo = new JSONObject();
|
||||
@@ -338,7 +289,7 @@ public class HandheldServiceImpl implements HandheldService {
|
||||
if (StrUtil.isBlank(region_code)) {
|
||||
JSONObject json = new JSONObject();
|
||||
JSONArray jsonArray = new JSONArray();
|
||||
materials.stream().forEach(material2 -> {
|
||||
materials.forEach(material2 -> {
|
||||
boolean material_code = ObjectUtil.isEmpty(((LinkedHashMap) material2).get("material_code"));
|
||||
if (material_code) {
|
||||
((LinkedHashMap) material2).remove("material_code");
|
||||
@@ -353,7 +304,7 @@ public class HandheldServiceImpl implements HandheldService {
|
||||
json.put("region_code", schBasePoint.getRegion_code());
|
||||
json.put("materials", jsonArray);
|
||||
JSONObject json1 = wmsToConnectorService.applyRegionAndDueDate(json);
|
||||
if (ObjectUtil.isNotEmpty(json1) && json1.getInteger("status") == 200) {
|
||||
if (ObjectUtil.isNotEmpty(json1) && json1.getInteger("status") == HttpStatus.OK.value()) {
|
||||
JSONArray date = json1.getJSONArray("data");
|
||||
date.stream().map(date1 -> JSONObject.parseObject(StrUtil.toString(date1))).forEach(json2 -> {
|
||||
List<cn.hutool.json.JSONObject> updatedMaterials = materials.stream()
|
||||
@@ -363,10 +314,8 @@ public class HandheldServiceImpl implements HandheldService {
|
||||
jsonObject.putOpt("due_date", json2.getString("due_date"));
|
||||
jsonObject.putOpt("region_code", json2.getString("next_region_code"));
|
||||
jsonObject.putOpt("priority", json2.getString("priority"));
|
||||
return jsonObject; // 更新的对象
|
||||
} else {
|
||||
return jsonObject; // 其他对象保持不变
|
||||
}
|
||||
return jsonObject;
|
||||
})
|
||||
.collect(Collectors.toList());
|
||||
materials.clear();
|
||||
@@ -384,38 +333,18 @@ public class HandheldServiceImpl implements HandheldService {
|
||||
jo.put("config_code", "BLANKINGTask");
|
||||
jo.put("create_mode", GeneralDefinition.AUTO_CREATION);
|
||||
jo.put("vehicle_code", vehicle_code);
|
||||
param.put("region_code", region_code);
|
||||
param.put("materials",materials);
|
||||
jo.put("ext_data", param);
|
||||
iSchBasePointService.update(Wrappers.lambdaUpdate(SchBasePoint.class)
|
||||
.eq(SchBasePoint::getPoint_code, device_code)
|
||||
.set(SchBasePoint::getIs_lock, true));
|
||||
connectorTask.apply(jo);
|
||||
iSchBaseVehiclematerialgroupService.remove(Wrappers.lambdaQuery(SchBaseVehiclematerialgroup.class)
|
||||
.eq(SchBaseVehiclematerialgroup::getVehicle_code, vehicle_code));
|
||||
String finalRegion_code = region_code;
|
||||
materials.stream().forEach(material -> {
|
||||
cn.hutool.json.JSONObject jsonObject = JSONUtil.parseObj(material);
|
||||
SchBaseVehiclematerialgroup schBaseVehiclematerialgroup = new SchBaseVehiclematerialgroup();
|
||||
schBaseVehiclematerialgroup.setVehicle_code(vehicle_code);
|
||||
schBaseVehiclematerialgroup.setMaterial_qty(jsonObject.getInt("material_qty"));
|
||||
schBaseVehiclematerialgroup.setMaterial_code(jsonObject.getStr("material_code"));
|
||||
schBaseVehiclematerialgroup.setOrder_code(jsonObject.getStr("order_code"));
|
||||
schBaseVehiclematerialgroup.setDue_date(jsonObject.getStr("due_date"));
|
||||
schBaseVehiclematerialgroup.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
schBaseVehiclematerialgroup.setPriority(jsonObject.getStr("priority"));
|
||||
schBaseVehiclematerialgroup.setRegion_code(StrUtil.isBlank(finalRegion_code) ? jsonObject.getStr("region_code") : finalRegion_code);
|
||||
iSchBaseVehiclematerialgroupService.create(schBaseVehiclematerialgroup);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 物料下料去外协或内部加工区
|
||||
*
|
||||
* @param param
|
||||
* @param region_code
|
||||
* @param device_code
|
||||
* @param vehicle_code
|
||||
* @param connectorTask
|
||||
*/
|
||||
private void goWxOrNx(JSONObject param, String region_code, String device_code, String vehicle_code, AbstractTask connectorTask) {
|
||||
JSONObject jo = new JSONObject();
|
||||
@@ -426,14 +355,14 @@ public class HandheldServiceImpl implements HandheldService {
|
||||
MdBaseVehicle mdBaseVehicle = iMdBaseVehicleService.selectByVehicleCode(vehicle_code);
|
||||
if (mdBaseVehicle.getVehicle_type().equals(VehicleTypeEnum.TRAY.getVehicleCode()))
|
||||
throw new BadRequestException("钢托盘不能存放加工区!");
|
||||
param.put("region_code", region_code);
|
||||
jo.put("device_code", device_code);
|
||||
jo.put("config_code", "ProcessingSMTTask");
|
||||
jo.put("create_mode", GeneralDefinition.AUTO_CREATION);
|
||||
jo.put("vehicle_code", vehicle_code);
|
||||
jo.put("region_code", region_code);
|
||||
param.put("target_region_code", region_code);
|
||||
jo.put("ext_data", param);
|
||||
param.put("region_code", region_code);
|
||||
param.put("target_region_code", region_code);
|
||||
connectorTask.apply(jo);
|
||||
iSchBasePointService.update(Wrappers.lambdaUpdate(SchBasePoint.class)
|
||||
.eq(SchBasePoint::getPoint_code, device_code)
|
||||
@@ -478,7 +407,7 @@ public class HandheldServiceImpl implements HandheldService {
|
||||
if (StrUtil.equals(status, "0")) {
|
||||
iSchBaseTaskService.updateTaskStatusByPointCode(pointCodes);
|
||||
if (param.getJSONArray("pointCodes").size() > 0) {
|
||||
param.getJSONArray("pointCodes").stream().forEach(pointCode -> {
|
||||
param.getJSONArray("pointCodes").forEach(pointCode -> {
|
||||
cn.hutool.json.JSONObject jsonObject = JSONUtil.parseObj(pointCode);
|
||||
iSchBaseVehiclematerialgroupService.remove(Wrappers.lambdaQuery(SchBaseVehiclematerialgroup.class)
|
||||
.eq(SchBaseVehiclematerialgroup::getVehicle_code, jsonObject.get("vehicle_code")));
|
||||
@@ -537,10 +466,18 @@ public class HandheldServiceImpl implements HandheldService {
|
||||
|| !mdBaseVehicle.getVehicle_type().equals(VehicleTypeEnum.RACKS_S06.getVehicleCode())) {
|
||||
throw new BadRequestException("不是料架,生成搬运任务失败!");
|
||||
}
|
||||
rackTask(param, vehicle_code, device_code, mdBaseVehicle);
|
||||
}
|
||||
|
||||
private void rackTask(JSONObject param, String vehicle_code, String device_code, MdBaseVehicle mdBaseVehicle) {
|
||||
SchBasePoint schBasePoint = iSchBasePointService.selectByPointCode(device_code);
|
||||
if (ObjectUtil.isEmpty(schBasePoint)) throw new BadRequestException("设备点位不存在!");
|
||||
AbstractTask connectorTask = taskFactory.getTask("RACKTask");
|
||||
// 准备参数:设备编码
|
||||
applyTask(param, vehicle_code, device_code, mdBaseVehicle, connectorTask);
|
||||
}
|
||||
|
||||
private void applyTask(JSONObject param, String vehicle_code, String device_code, MdBaseVehicle mdBaseVehicle, AbstractTask connectorTask) {
|
||||
JSONObject jo = new JSONObject();
|
||||
jo.put("device_code", device_code);
|
||||
jo.put("config_code", "RACKTask");
|
||||
@@ -608,7 +545,7 @@ public class HandheldServiceImpl implements HandheldService {
|
||||
@Override
|
||||
public void updateRegionCodeByOrder(JSONArray json) {
|
||||
Assert.noNullElements(json, "参数不能为空!");
|
||||
json.stream().forEach(material -> {
|
||||
json.forEach(material -> {
|
||||
cn.hutool.json.JSONObject jsonObject = JSONUtil.parseObj(material);
|
||||
iSchBaseVehiclematerialgroupService.update(Wrappers.lambdaUpdate(SchBaseVehiclematerialgroup.class)
|
||||
.eq(SchBaseVehiclematerialgroup::getOrder_code, jsonObject.getStr("order_code"))
|
||||
@@ -626,7 +563,7 @@ public class HandheldServiceImpl implements HandheldService {
|
||||
if (ObjectUtil.isEmpty(username)) return null;
|
||||
List<String> list = JSONUtil.toList(username.getDevices(), String.class);
|
||||
List<JSONObject> jsonList = new ArrayList<>();
|
||||
list.stream().forEach(device -> {
|
||||
list.forEach(device -> {
|
||||
SchBasePoint schBasePoint = iSchBasePointService.selectByPointCode(device);
|
||||
if (ObjectUtil.isNotEmpty(schBasePoint)) {
|
||||
JSONObject map = new JSONObject();
|
||||
@@ -643,8 +580,8 @@ public class HandheldServiceImpl implements HandheldService {
|
||||
deviceInLogin(JSONObject json) {
|
||||
Assert.notNull(json.getString("device_code"), "登录参数不能为空");
|
||||
if (StrUtil.isNotEmpty(json.getString("device_code"))) {
|
||||
Object regin_code = redisUtils.get("mobile:" + json.getString("device_code"));
|
||||
if (regin_code != null) {
|
||||
Object region_code = redisUtils.get("mobile:" + json.getString("device_code"));
|
||||
if (region_code != null) {
|
||||
throw new BadRequestException("当前设备工序已经登陆,无法继续选择");
|
||||
} else {
|
||||
SysParamServiceImpl sysParamService = SpringContextHolder.getBean(SysParamServiceImpl.class);
|
||||
@@ -692,10 +629,7 @@ public class HandheldServiceImpl implements HandheldService {
|
||||
public boolean isLock() {
|
||||
SysParamServiceImpl sysParamService = SpringContextHolder.getBean(SysParamServiceImpl.class);
|
||||
Param isConnectConnector = sysParamService.findByCode(GeneralDefinition.ADD_ROUTE_DOOR);
|
||||
if (Integer.parseInt(isConnectConnector.getValue()) == 0) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
return Integer.parseInt(isConnectConnector.getValue()) != 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -26,6 +26,7 @@ import org.nl.wms.sch.point.service.ISchBasePointService;
|
||||
import org.nl.wms.sch.point.service.dao.SchBasePoint;
|
||||
import org.nl.wms.sch.point.service.dto.PointMaterialInfo;
|
||||
import org.nl.wms.sch.task_manage.AbstractTask;
|
||||
import org.nl.wms.sch.task_manage.task.ConnectorUtil;
|
||||
import org.nl.wms.sch.task_manage.task.TaskFactory;
|
||||
import org.nl.wms.sch.task_manage.task.tasks.sorting.SortingCMTTask;
|
||||
import org.nl.wms.sch.task_manage.task.tasks.sorting.SortingCNTTask;
|
||||
@@ -69,7 +70,8 @@ public class SortingServiceImpl implements SortingService {
|
||||
, jsonObject.getString("task_type"), jsonObject.getString("is_empty")}, "请求参数不能为空");
|
||||
JSONArray jsonArray = JSONUtil.parseArray(jsonObject.get("pallet_detail"));
|
||||
if (StrUtil.isNotEmpty(jsonObject.getString("is_rawdata")) && "1".equals(jsonObject.getString("is_rawdata"))) {
|
||||
createMaterial(jsonArray, jsonObject.getString("vehicle_code"));
|
||||
List<ConnectorDto> connectorDtos = BeanUtil.copyToList(jsonArray, ConnectorDto.class);
|
||||
createMaterial(connectorDtos, jsonObject.getString("vehicle_code"));
|
||||
} else {
|
||||
//任务号
|
||||
String task_code = jsonObject.getString("task_code");
|
||||
@@ -204,32 +206,15 @@ public class SortingServiceImpl implements SortingService {
|
||||
}
|
||||
}
|
||||
|
||||
private void createMaterial(JSONArray jsonArray, String vehicleCode) {
|
||||
private void createMaterial(List<ConnectorDto> connectorDtos, String vehicleCode) {
|
||||
iSchBaseVehiclematerialgroupService.remove(Wrappers.lambdaQuery(SchBaseVehiclematerialgroup.class)
|
||||
.eq(SchBaseVehiclematerialgroup::getVehicle_code, vehicleCode));
|
||||
for (Object o : jsonArray) {
|
||||
JSONObject jO = (JSONObject) JSONObject.toJSON(o);
|
||||
String workorder = jO.getString("ProductionOrder");
|
||||
String ProductID = jO.getString("ProductID");
|
||||
Integer qty = jO.getInteger("Currentqty");
|
||||
String Jobname = jO.getString("Jobname");
|
||||
String dueDate = jO.getString("DueDate");
|
||||
String region_code = jO.getString("NextOperation");
|
||||
SchBaseVehiclematerialgroup schBaseVehiclematerialgroup = new SchBaseVehiclematerialgroup();
|
||||
schBaseVehiclematerialgroup.setVehicle_code(vehicleCode);
|
||||
schBaseVehiclematerialgroup.setMaterial_id(ProductID);
|
||||
schBaseVehiclematerialgroup.setMaterial_qty(qty);
|
||||
schBaseVehiclematerialgroup.setRegion_code(region_code);
|
||||
schBaseVehiclematerialgroup.setOrder_code(workorder);
|
||||
schBaseVehiclematerialgroup.setJob_name(Jobname);
|
||||
if (StrUtil.isNotEmpty(dueDate) && isValidISO8601(dueDate)) {
|
||||
dueDate = parseDate(dueDate);
|
||||
}
|
||||
schBaseVehiclematerialgroup.setDue_date(dueDate);
|
||||
schBaseVehiclematerialgroup.setCreate_name("Sorting");
|
||||
schBaseVehiclematerialgroup.setExtend(JSON.toJSONString(jO));
|
||||
connectorDtos.forEach(connectorDto -> {
|
||||
connectorDto.setID(null);
|
||||
connectorDto.setCreate_name("Sorting");
|
||||
SchBaseVehiclematerialgroup schBaseVehiclematerialgroup = ConnectorUtil.createObject(connectorDto);
|
||||
iSchBaseVehiclematerialgroupService.create(schBaseVehiclematerialgroup);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public static String parseDate(String isoString) {
|
||||
|
||||
@@ -1,7 +1,16 @@
|
||||
package org.nl.wms.ext.wms.service;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
|
||||
/**
|
||||
* @author LENOVO
|
||||
*/
|
||||
public interface LmsToWmsService {
|
||||
|
||||
/**
|
||||
* 反馈物料状态
|
||||
* @param jsonObject3
|
||||
* @return
|
||||
*/
|
||||
JSONObject feedbackMaterialStatus(JSONObject jsonObject3);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
package org.nl.wms.ext.wms.service.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.nl.wms.ext.wms.service.LmsToWmsService;
|
||||
import org.nl.wms.sch.task_manage.task.ConnectorUtil;
|
||||
import org.nl.wms.sch.task_manage.task.WmsUtil;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
@@ -7,5 +11,13 @@ import org.springframework.stereotype.Service;
|
||||
* @author LENOVO
|
||||
*/
|
||||
@Service
|
||||
public class LmsToWmsServiceImpl {
|
||||
public class LmsToWmsServiceImpl implements LmsToWmsService {
|
||||
|
||||
|
||||
@Override
|
||||
public JSONObject feedbackMaterialStatus(JSONObject json) {
|
||||
String api = "/api/wms/sendMaterial";
|
||||
return WmsUtil.notifyWms(api, json);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.nl.wms.ext.fab.service.dto.SendVehicleVo;
|
||||
import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup;
|
||||
import org.nl.wms.sch.group.service.dto.SchBaseVehiclematerialgroupQuery;
|
||||
|
||||
@@ -106,4 +107,11 @@ public interface ISchBaseVehiclematerialgroupService extends IService<SchBaseVeh
|
||||
* @return
|
||||
*/
|
||||
String selectMaterialFile(String groupId);
|
||||
|
||||
/**
|
||||
* 根据载具号查询交期时间
|
||||
* @param sendVehicleVo
|
||||
* @return
|
||||
*/
|
||||
String selectDueDateByVehicleCode(SendVehicleVo sendVehicleVo);
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.wms.ext.fab.service.dto.SendVehicleVo;
|
||||
import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup;
|
||||
import org.nl.wms.sch.group.service.dto.SchBaseVehiclematerialgroupQuery;
|
||||
|
||||
@@ -29,4 +30,6 @@ public interface SchBaseVehiclematerialgroupMapper extends BaseMapper<SchBaseVeh
|
||||
IPage<SchBaseVehiclematerialgroup> selectAllByPage(IPage<SchBaseVehiclematerialgroup> page, @Param("query") SchBaseVehiclematerialgroupQuery query);
|
||||
|
||||
List<String> selectMaterialPathByIsEmpty();
|
||||
|
||||
String selectDueDateByVehicleCode(@Param("sendVehicle") SendVehicleVo sendVehicleVo);
|
||||
}
|
||||
|
||||
@@ -111,4 +111,11 @@
|
||||
FROM sch_base_vehiclematerialgroup sbv
|
||||
WHERE sbv.material_path is null
|
||||
</select>
|
||||
|
||||
<select id="selectDueDateByVehicleCode" resultType="java.lang.String">
|
||||
SELECT sbv.due_date
|
||||
FROM sch_base_vehiclematerialgroup sbv
|
||||
WHERE sbv.material_id = #{sendVehicle.material_code} AND sbv.order_code = #{sendVehicle.order_code} limit 1
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
||||
@@ -6,6 +6,8 @@ import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.http.HttpRequest;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
@@ -24,6 +26,7 @@ import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.wms.database.material.service.IMdBaseMaterialService;
|
||||
import org.nl.wms.database.material.service.dao.MdBaseMaterial;
|
||||
import org.nl.wms.ext.fab.service.dto.CallMaterVo;
|
||||
import org.nl.wms.ext.fab.service.dto.SendVehicleVo;
|
||||
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
|
||||
import org.nl.wms.sch.group.service.dao.mapper.SchBaseVehiclematerialgroupMapper;
|
||||
import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup;
|
||||
@@ -43,6 +46,8 @@ import javax.servlet.ServletOutputStream;
|
||||
import java.awt.*;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.*;
|
||||
import java.net.InetAddress;
|
||||
import java.net.UnknownHostException;
|
||||
import java.util.*;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
@@ -99,7 +104,6 @@ public class SchBaseVehiclematerialgroupServiceImpl extends ServiceImpl<SchBaseV
|
||||
.ne(SchBaseVehiclematerialgroup::getGroup_id, item.getGroup_id()));
|
||||
if (CollUtil.isNotEmpty(schBaseVehiclematerialgroups)) {
|
||||
item.setHasChildren(true);
|
||||
/*item.setChildren(schBaseVehiclematerialgroups);*/
|
||||
}
|
||||
item.setHas_work(true);
|
||||
});
|
||||
@@ -181,6 +185,7 @@ public class SchBaseVehiclematerialgroupServiceImpl extends ServiceImpl<SchBaseV
|
||||
orderList.put("region_code", order_code.get(0).getRegion_code());
|
||||
orderList.put("due_date", order_code.get(0).getDue_date());
|
||||
orderList.put("priority", order_code.get(0).getPriority());
|
||||
orderList.put("material_code", order_code.get(0).getMaterial_id());
|
||||
}
|
||||
});
|
||||
maps = maps.stream().sorted(Comparator.comparingLong(order -> {
|
||||
@@ -197,9 +202,9 @@ public class SchBaseVehiclematerialgroupServiceImpl extends ServiceImpl<SchBaseV
|
||||
List<SchBaseVehiclematerialgroup> schBaseVehiclematerialgroups = vehiclematerialgroupMapper.selectList(Wrappers.lambdaQuery(SchBaseVehiclematerialgroup.class)
|
||||
.eq(SchBaseVehiclematerialgroup::getVehicle_code, entity.getString("vehicle_code"))
|
||||
.ne(SchBaseVehiclematerialgroup::getGroup_id, entity.getString("group_id")));
|
||||
if(ObjectUtil.isNotEmpty(schBaseVehiclematerialgroups)){
|
||||
schBaseVehiclematerialgroups.forEach(item->{
|
||||
if(StrUtil.isEmpty(item.getRegion_code())){
|
||||
if (ObjectUtil.isNotEmpty(schBaseVehiclematerialgroups)) {
|
||||
schBaseVehiclematerialgroups.forEach(item -> {
|
||||
if (StrUtil.isEmpty(item.getRegion_code())) {
|
||||
item.setRegion_code("未知");
|
||||
}
|
||||
});
|
||||
@@ -231,7 +236,7 @@ public class SchBaseVehiclematerialgroupServiceImpl extends ServiceImpl<SchBaseV
|
||||
|
||||
@Override
|
||||
public List<String> selectMaterialPathIsEmpty() {
|
||||
List<String> materials = vehiclematerialgroupMapper.selectMaterialPathByIsEmpty();
|
||||
List<String> materials = vehiclematerialgroupMapper.selectMaterialPathByIsEmpty();
|
||||
return materials;
|
||||
}
|
||||
|
||||
@@ -240,21 +245,33 @@ public class SchBaseVehiclematerialgroupServiceImpl extends ServiceImpl<SchBaseV
|
||||
public String selectMaterialFile(String groupId) {
|
||||
SchBaseVehiclematerialgroup one = this.getOne(Wrappers.lambdaQuery(SchBaseVehiclematerialgroup.class)
|
||||
.eq(SchBaseVehiclematerialgroup::getGroup_id, groupId));
|
||||
if(ObjectUtil.isNotEmpty(one) && StrUtil.isNotEmpty(one.getMaterial_path())) {
|
||||
byte[] bytes = pdf2png(one.getMaterial_path(), "png");
|
||||
if (ObjectUtil.isNotEmpty(bytes)) {
|
||||
BASE64Encoder encoder = new BASE64Encoder();
|
||||
return "data:image/png;base64," + encoder.encode(bytes).replace("\r\n", "");
|
||||
if (ObjectUtil.isNotEmpty(one) && StrUtil.isNotEmpty(one.getMaterial_path())) {
|
||||
InetAddress localhost = null;
|
||||
try {
|
||||
localhost = InetAddress.getLocalHost();
|
||||
} catch (UnknownHostException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
String url = localhost.getHostAddress() + ":" + 8083 + "/api/file/selectFile";
|
||||
log.info("查询物料路径:{}",url);
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("path", one.getMaterial_path());
|
||||
return HttpRequest.post(url)
|
||||
.body(JSON.toJSONString(jsonObject))
|
||||
.execute().body();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String selectDueDateByVehicleCode(SendVehicleVo sendVehicleVo) {
|
||||
return vehiclematerialgroupMapper.selectDueDateByVehicleCode(sendVehicleVo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 使用pdfbox将整个pdf转换成图片
|
||||
*
|
||||
* @param fileAddress 文件地址 如:C:\\Users\\user\\Desktop\\test
|
||||
* @param filename PDF文件名不带后缀名
|
||||
* @param type 图片类型 png 和jpg
|
||||
*/
|
||||
public byte[] pdf2png(String fileAddress, String type) {
|
||||
|
||||
@@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.base.TableDataInfo;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
@@ -19,6 +20,8 @@ import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import sun.security.krb5.internal.PAData;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
/**
|
||||
@@ -27,6 +30,7 @@ import java.util.Set;
|
||||
**/
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@Api(tags = "任务管理管理")
|
||||
@RequestMapping("/api/schBaseTask")
|
||||
public class SchBaseTaskController {
|
||||
@@ -88,11 +92,11 @@ public class SchBaseTaskController {
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/upload")
|
||||
@GetMapping("/upload")
|
||||
@Log("导出数据")
|
||||
@ApiOperation("导出数据")
|
||||
public ResponseEntity<Object> upload(@RequestBody JSONObject json) {
|
||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||
public void upload(HttpServletResponse response,@RequestParam Map whereJson) {
|
||||
schBaseTaskService.downTask(schBaseTaskService.queryAll(whereJson),response);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
@@ -120,4 +121,18 @@ public interface ISchBaseTaskService extends IService<SchBaseTask> {
|
||||
* @param pointCodes
|
||||
*/
|
||||
void updateTaskStatusByPointCode(List<String> pointCodes);
|
||||
|
||||
/**
|
||||
* 导出任务
|
||||
* @param json
|
||||
* @param response
|
||||
*/
|
||||
void downTask(List<SchBaseTask> json, HttpServletResponse response);
|
||||
|
||||
/**
|
||||
* 创建数据不分页
|
||||
* @param whereJson
|
||||
* @return
|
||||
*/
|
||||
List<SchBaseTask> queryAll(Map whereJson);
|
||||
}
|
||||
|
||||
@@ -2,9 +2,14 @@ package org.nl.wms.sch.task.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.io.IoUtil;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.poi.excel.BigExcelWriter;
|
||||
import cn.hutool.poi.excel.ExcelUtil;
|
||||
import cn.hutool.poi.excel.ExcelWriter;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
@@ -14,6 +19,9 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.csv.CSVFormat;
|
||||
import org.apache.commons.csv.CSVPrinter;
|
||||
import org.apache.poi.xssf.streaming.SXSSFSheet;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
@@ -29,6 +37,11 @@ import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Propagation;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.servlet.ServletOutputStream;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.*;
|
||||
import java.net.URLEncoder;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -49,6 +62,8 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
|
||||
@Autowired
|
||||
private TaskFactory taskFactory;
|
||||
|
||||
public static final String SYS_TEM_DIR = System.getProperty("java.io.tmpdir") + File.separator;
|
||||
|
||||
@Override
|
||||
public IPage<SchBaseTask> queryAll(Map whereJson, PageQuery page) {
|
||||
String task_code = ObjectUtil.isNotEmpty(whereJson.get("task_code")) ? whereJson.get("task_code").toString() : null;
|
||||
@@ -329,4 +344,81 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void downTask(List<SchBaseTask> json, HttpServletResponse response) {
|
||||
ArrayList<List> jsonObjects = new ArrayList<>();
|
||||
json.forEach(item -> {
|
||||
List task = new ArrayList();
|
||||
task.add(item.getTask_id());
|
||||
task.add(item.getTask_code());
|
||||
task.add(item.getTask_status());
|
||||
task.add(item.getConfig_code());
|
||||
task.add(item.getVehicle_type());
|
||||
task.add(item.getVehicle_code());
|
||||
task.add(item.getRemark());
|
||||
task.add(item.getPoint_code1());
|
||||
task.add(item.getPoint_code2());
|
||||
task.add(item.getCreate_time());
|
||||
task.add(item.getUpdate_time());
|
||||
jsonObjects.add(task);
|
||||
});
|
||||
String[] tableHeaderArr = {"任务ID","任务编码","任务状态","配置编码","载具类型","载具号","提示信息", "起点", "终点", "创建时间", "修改时间"};
|
||||
String fileName = "导出文件.csv";
|
||||
byte[] bytes = writeExcelAfterToBytes(tableHeaderArr, jsonObjects);
|
||||
responseSetProperties(fileName, bytes, response);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SchBaseTask> queryAll(Map whereJson) {
|
||||
LambdaQueryWrapper<SchBaseTask> lam = new LambdaQueryWrapper<>();
|
||||
boolean more_task_status = StrUtil.toString(whereJson.get("more_task_status")).contains(",");
|
||||
String[] moreTaskStatuses = new String[5];
|
||||
if(more_task_status){
|
||||
moreTaskStatuses = StrUtil.toString(whereJson.get("more_task_status")).split(",");
|
||||
}else{
|
||||
moreTaskStatuses[0] = StrUtil.toString(whereJson.get("more_task_status"));
|
||||
}
|
||||
lam.eq(ObjectUtil.isNotEmpty(whereJson.get("task_code")), SchBaseTask::getTask_code, whereJson.get("task_code"))
|
||||
.eq(ObjectUtil.isNotEmpty(whereJson.get("vehicle_code")), SchBaseTask::getVehicle_code, whereJson.get("vehicle_code"))
|
||||
.eq(ObjectUtil.isNotEmpty(whereJson.get("point_code")), SchBaseTask::getPoint_code1, whereJson.get("point_code"))
|
||||
.eq(ObjectUtil.isNotEmpty(whereJson.get("point_code")), SchBaseTask::getPoint_code2, whereJson.get("point_code"))
|
||||
.ge(ObjectUtil.isNotEmpty(whereJson.get("begin_time")), SchBaseTask::getCreate_time, whereJson.get("begin_time"))
|
||||
.le(ObjectUtil.isNotEmpty(whereJson.get("end_time")), SchBaseTask::getCreate_time, whereJson.get("end_time"))
|
||||
.in(ObjectUtil.isNotEmpty(whereJson.get("more_task_status")), SchBaseTask::getTask_status, moreTaskStatuses)
|
||||
.orderByDesc(SchBaseTask::getCreate_time);
|
||||
return schBaseTaskMapper.selectList(lam);
|
||||
}
|
||||
|
||||
public static byte[] writeExcelAfterToBytes(String[] headers, ArrayList<List> cellList) {
|
||||
ExcelWriter writer = null;
|
||||
ByteArrayOutputStream outputStream = null;
|
||||
try {
|
||||
writer = ExcelUtil.getBigWriter();
|
||||
writer.writeHeadRow(Arrays.asList(headers));
|
||||
writer.write(cellList, true);
|
||||
outputStream = new ByteArrayOutputStream();
|
||||
writer.flush(outputStream);
|
||||
}catch (Exception e){
|
||||
log.error("writeExcelAfterToBytes error:{}", e.getMessage(), e);
|
||||
} finally {
|
||||
writer.close();
|
||||
}
|
||||
return outputStream.toByteArray();
|
||||
}
|
||||
|
||||
public static void responseSetProperties(String fileName, byte[] bytes, HttpServletResponse response) {
|
||||
try {
|
||||
fileName = URLEncoder.encode(fileName, StandardCharsets.UTF_8.name());
|
||||
response.setContentType("application/csv");
|
||||
response.setCharacterEncoding(StandardCharsets.UTF_8.name());
|
||||
response.setHeader("Pragma", "public");
|
||||
response.setHeader("Cache-Control", "max-age=30");
|
||||
response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
|
||||
OutputStream outputStream = response.getOutputStream();
|
||||
outputStream.write(bytes);
|
||||
outputStream.flush();
|
||||
} catch (IOException e) {
|
||||
log.error("iostream error:{}", e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,11 @@ package org.nl.wms.sch.task_manage;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.http.HttpRequest;
|
||||
import cn.hutool.json.JSONArray;
|
||||
import cn.hutool.json.JSONObject;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.jcraft.jsch.ChannelSftp;
|
||||
import com.jcraft.jsch.JSch;
|
||||
@@ -18,15 +23,16 @@ import org.nl.system.service.param.impl.SysParamServiceImpl;
|
||||
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
|
||||
import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup;
|
||||
import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum;
|
||||
import org.nl.wms.util.PrintUtil;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import sun.misc.BASE64Encoder;
|
||||
|
||||
import javax.imageio.ImageIO;
|
||||
import java.awt.*;
|
||||
import java.io.*;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.net.InetAddress;
|
||||
import java.nio.file.*;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Vector;
|
||||
@@ -43,126 +49,24 @@ public class AutoQueryFilePath {
|
||||
@Autowired
|
||||
private ISchBaseVehiclematerialgroupService iSchBaseVehiclematerialgroupService;
|
||||
|
||||
@Autowired
|
||||
private SysParamServiceImpl sysParamService;
|
||||
|
||||
@Autowired
|
||||
private ISysNoticeService noticeService;
|
||||
|
||||
private String materialUrl = null;
|
||||
|
||||
private File directory = null;
|
||||
|
||||
@SneakyThrows
|
||||
public void run() {
|
||||
List<String> materials = iSchBaseVehiclematerialgroupService.selectMaterialPathIsEmpty();
|
||||
|
||||
Param byCode = sysParamService.findByCode(GeneralDefinition.MATERIAL_URL);
|
||||
String materialUrl = byCode.getValue();
|
||||
directory = new File(materialUrl);
|
||||
if (ObjectUtil.isNotEmpty(directory) && !directory.exists()) {
|
||||
directory = new File(materialUrl);
|
||||
}
|
||||
if (ObjectUtil.isNotEmpty(directory) && CollUtil.isNotEmpty(materials)) {
|
||||
if (directory.exists() && directory.isDirectory()) {
|
||||
noticeService.createNotice("开始查询物料图片路径!", IdUtil.randomUUID(),
|
||||
NoticeTypeEnum.WARN.getCode());
|
||||
selectMaterialPath(directory, materials);
|
||||
noticeService.createNotice("结束查询物料图片路径!", IdUtil.randomUUID(),
|
||||
NoticeTypeEnum.WARN.getCode());
|
||||
} else {
|
||||
noticeService.createNotice("物料图片路径!" + directory.exists(), IdUtil.randomUUID(),
|
||||
NoticeTypeEnum.WARN.getCode());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void applyMaterialPath(String url) {
|
||||
System.setProperty("jcifs.smb.client.username", "");
|
||||
System.setProperty("jcifs.smb.client.password", "");
|
||||
System.setProperty("jcifs.smb.client.domain", "");
|
||||
ByteArrayOutputStream byteArrayOutputStream;
|
||||
InputStream inputStream;
|
||||
try {
|
||||
SmbFile smbFile = new SmbFile(url);
|
||||
if (ObjectUtil.isNotEmpty(smbFile) && (smbFile.isFile() || smbFile.isDirectory())) {
|
||||
noticeService.createNotice("物料图片路径:" + smbFile.isFile() + ":" + smbFile.isDirectory(), IdUtil.randomUUID(),
|
||||
NoticeTypeEnum.WARN.getCode());
|
||||
} else {
|
||||
noticeService.createNotice("物料图片路径", IdUtil.randomUUID(),
|
||||
NoticeTypeEnum.WARN.getCode());
|
||||
}
|
||||
} catch (Exception e) {
|
||||
noticeService.createNotice("报错:" + e.getMessage(), IdUtil.randomUUID(),
|
||||
NoticeTypeEnum.WARN.getCode());
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
// 设置远程计算机的 SMB URL
|
||||
String url = "smb://192.168.10.59/Users/Administrator/Desktop/9000/9002/9002_large.png";
|
||||
|
||||
// 设置用户名和密码(如果有域名也可以指定)
|
||||
String username = "Administrator";
|
||||
String password = "20001217";
|
||||
String domain = ""; // 如果没有域,可以为空字符串
|
||||
|
||||
// 配置 JCIFS 客户端的用户名、密码和域
|
||||
System.setProperty("jcifs.smb.client.username", username);
|
||||
System.setProperty("jcifs.smb.client.password", password);
|
||||
System.setProperty("jcifs.smb.client.domain", domain);
|
||||
|
||||
try {
|
||||
// 创建一个 SmbFile 对象,表示远程共享文件
|
||||
SmbFile smbFile = new SmbFile(url);
|
||||
|
||||
/*SmbFile[] smbFiles = smbFile.listFiles();
|
||||
for (int i = 0; i < Arrays.stream(smbFiles).count(); i++) {
|
||||
SmbFile smbFile1 = smbFiles[i];
|
||||
boolean directory = smbFile1.isDirectory();
|
||||
}*/
|
||||
|
||||
// 打开文件输入流
|
||||
InputStream inputStream = new SmbFileInputStream(smbFile);
|
||||
// 使用 ByteArrayOutputStream 收集数据
|
||||
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
|
||||
byte[] buffer = new byte[1024];
|
||||
int bytesRead;
|
||||
while ((bytesRead = inputStream.read(buffer)) != -1) {
|
||||
byteArrayOutputStream.write(buffer, 0, bytesRead);
|
||||
}
|
||||
// 将 ByteArrayOutputStream 转换为字节数组
|
||||
byte[] fileBytes = byteArrayOutputStream.toByteArray();
|
||||
BASE64Encoder encoder = new BASE64Encoder();
|
||||
System.out.println("data:image/png;base64," + encoder.encode(fileBytes).replace("\r\n", ""));
|
||||
// 关闭文件读取器
|
||||
byteArrayOutputStream.close();
|
||||
inputStream.close();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 查找物料图片路径
|
||||
*/
|
||||
public void selectMaterialPath(File directory, List<String> materials) {
|
||||
File[] files = directory.listFiles();
|
||||
if (files != null) {
|
||||
for (File file : files) {
|
||||
if (file.isDirectory()) {
|
||||
selectMaterialPath(file, materials);
|
||||
} else if (file.isFile() && CollUtil.contains(materials, file.getName().substring(0, file.getName().lastIndexOf('.')))) {
|
||||
String material = file.getName().substring(0, file.getName().lastIndexOf('.'));
|
||||
iSchBaseVehiclematerialgroupService.update(Wrappers.lambdaUpdate(SchBaseVehiclematerialgroup.class)
|
||||
.eq(SchBaseVehiclematerialgroup::getMaterial_id, material)
|
||||
.set(SchBaseVehiclematerialgroup::getMaterial_path, file.getPath()));
|
||||
}
|
||||
}
|
||||
}
|
||||
InetAddress localhost = InetAddress.getLocalHost();
|
||||
String url = localhost.getHostAddress() + ":" + 8083 + "//api/file/selectPath";
|
||||
log.info("查询物料路径:{}",url);
|
||||
String resultMsg = HttpRequest.post(url)
|
||||
.body(JSON.toJSONString(materials))
|
||||
.execute().body();
|
||||
log.info("物料路径查询结果:{}", resultMsg);
|
||||
JSONArray jsonArray = JSONUtil.parseArray(resultMsg);
|
||||
jsonArray.forEach(item -> {
|
||||
JSONObject jsonObject = JSONUtil.parseObj(item);
|
||||
iSchBaseVehiclematerialgroupService.update(Wrappers.lambdaUpdate(SchBaseVehiclematerialgroup.class)
|
||||
.eq(SchBaseVehiclematerialgroup::getMaterial_id, jsonObject.getStr("name"))
|
||||
.set(SchBaseVehiclematerialgroup::getMaterial_path, jsonObject.getStr("value"))
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -109,7 +109,14 @@ public class GeneralDefinition {
|
||||
* 是否连接
|
||||
*/
|
||||
public static final String IS_CONNECT_ACS = "is_connect_acs";
|
||||
/**
|
||||
* 是否连接connector
|
||||
*/
|
||||
public static final String IS_CONNECT_CONNECTOR = "is_connect_connector";
|
||||
/**
|
||||
* 是否连接wms
|
||||
*/
|
||||
public static final String IS_CONNECT_WMS = "is_connect_wms";
|
||||
/**
|
||||
* 外协区到冲床一自动门
|
||||
*/
|
||||
@@ -134,7 +141,14 @@ public class GeneralDefinition {
|
||||
* CONNECTOR路径
|
||||
*/
|
||||
public static final String CONNECTOR_URL = "connector_url";
|
||||
/**
|
||||
* Sorting路径
|
||||
*/
|
||||
public static final String SORTING_URL = "sorting_url";
|
||||
/**
|
||||
* wms路径
|
||||
*/
|
||||
public static final String WMS_URL = "wms_url";
|
||||
/**
|
||||
* 是否连接
|
||||
*/
|
||||
@@ -179,6 +193,18 @@ public class GeneralDefinition {
|
||||
* 物料图片路径
|
||||
*/
|
||||
public static final String MATERIAL_URL = "material_url";
|
||||
/**
|
||||
* 模板存放路径
|
||||
*/
|
||||
public static final String TEMPLATE_URL = "template_url";
|
||||
/**
|
||||
* 数据文件路径
|
||||
*/
|
||||
public static final String FILE_URL = "file_url";
|
||||
/**
|
||||
* 打印机名称
|
||||
*/
|
||||
public static final String PRINTER_NAME = "printer_ame";
|
||||
|
||||
public static final Map<String,List<String>> CYZZD01 = MapOf.of("CYZZD01", ListUtil.of("CYXLDJW01", "CYXLDJW02"));
|
||||
public static final Map<String,List<String>> CYZZD02 = MapOf.of("CYZZD02", ListUtil.of("CYXLDJW03", "CYXLDJW04"));
|
||||
|
||||
@@ -13,6 +13,8 @@ import org.nl.config.SpringContextHolder;
|
||||
import org.nl.system.service.param.dao.Param;
|
||||
import org.nl.system.service.param.impl.SysParamServiceImpl;
|
||||
import org.nl.wms.ext.acs.service.dto.to.wms.AcsResponse;
|
||||
import org.nl.wms.ext.connector.service.dto.ConnectorDto;
|
||||
import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup;
|
||||
import org.nl.wms.sch.task_manage.AcsTaskDto;
|
||||
import org.nl.wms.sch.task_manage.GeneralDefinition;
|
||||
import org.springframework.http.HttpStatus;
|
||||
@@ -26,44 +28,6 @@ import java.util.Map;
|
||||
*/
|
||||
@Slf4j
|
||||
public class ConnectorUtil {
|
||||
public static JSONObject notifyAcs(String api, List<AcsTaskDto> list) {
|
||||
//判断是否连接ACS系统
|
||||
String isConnect = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("is_connect_acs").getValue();
|
||||
// list转JSONArray
|
||||
String s = JSON.toJSONString(list);
|
||||
JSONObject result = new JSONObject();
|
||||
if (StrUtil.equals("0", isConnect)) {
|
||||
result.put("status", HttpStatus.BAD_REQUEST.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;
|
||||
log.info("下发acs任务的参数为:{}", list.toString());
|
||||
try {
|
||||
String resultMsg = HttpRequest.post(url)
|
||||
.body(s)
|
||||
.execute().body();
|
||||
result = JSONObject.parseObject(resultMsg);
|
||||
} catch (Exception e) {
|
||||
String msg = e.getMessage();
|
||||
//ConnectException: Connection refused: connect
|
||||
//网络不通
|
||||
log.error("连接失败:{}", msg);
|
||||
result.put("status", HttpStatus.BAD_REQUEST);
|
||||
result.put("message", "网络不通,操作失败!");
|
||||
result.put("data", new JSONObject());
|
||||
}
|
||||
//acs抛异常这里
|
||||
/* if (result.getString("status").equals(String.valueOf(HttpStatus.BAD_REQUEST.value())))
|
||||
throw new BadRequestException(result.getString("message"));*/
|
||||
// 如果下发完毕,就修改状态
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新的请求方式:对象中包含数组
|
||||
*
|
||||
@@ -197,4 +161,20 @@ public class ConnectorUtil {
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public static SchBaseVehiclematerialgroup createObject(ConnectorDto connectorDto) {
|
||||
SchBaseVehiclematerialgroup schBaseVehiclematerialgroup = new SchBaseVehiclematerialgroup();
|
||||
schBaseVehiclematerialgroup.setGroup_id(connectorDto.getID());
|
||||
schBaseVehiclematerialgroup.setVehicle_code(connectorDto.getVehicle_code());
|
||||
schBaseVehiclematerialgroup.setJob_name(connectorDto.getJobname());
|
||||
schBaseVehiclematerialgroup.setMaterial_id(connectorDto.getProductID());
|
||||
schBaseVehiclematerialgroup.setMaterial_qty(connectorDto.getCurrentqty());
|
||||
schBaseVehiclematerialgroup.setRegion_code(connectorDto.getNextOperation());
|
||||
schBaseVehiclematerialgroup.setExtend(JSON.toJSONString(connectorDto));
|
||||
schBaseVehiclematerialgroup.setOrder_code(connectorDto.getProductionOrder());
|
||||
schBaseVehiclematerialgroup.setDue_date(connectorDto.getDue_date());
|
||||
schBaseVehiclematerialgroup.setPriority(connectorDto.getPriority());
|
||||
schBaseVehiclematerialgroup.setCreate_name(connectorDto.getCreate_name());
|
||||
return schBaseVehiclematerialgroup;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
package org.nl.wms.sch.task_manage.task;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.http.HttpRequest;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.config.MapOf;
|
||||
import org.nl.config.SpringContextHolder;
|
||||
import org.nl.system.service.param.dao.Param;
|
||||
import org.nl.system.service.param.impl.SysParamServiceImpl;
|
||||
import org.nl.wms.ext.acs.service.dto.to.wms.AcsResponse;
|
||||
import org.nl.wms.sch.task_manage.GeneralDefinition;
|
||||
import org.springframework.http.HttpStatus;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* ACS连接工具类:
|
||||
*/
|
||||
@Slf4j
|
||||
public class WmsUtil {
|
||||
|
||||
/**
|
||||
* 新的请求方式:对象中包含数组
|
||||
*
|
||||
* @param api
|
||||
* @param object
|
||||
* @param <T>
|
||||
* @return
|
||||
*/
|
||||
public static <T> JSONObject notifyWms(String api, T object) {
|
||||
SysParamServiceImpl sysParamService = SpringContextHolder.getBean(SysParamServiceImpl.class);
|
||||
Param isConnectConnector = sysParamService.findByCode(GeneralDefinition.IS_CONNECT_WMS);
|
||||
if (ObjectUtil.isEmpty(isConnectConnector)) {
|
||||
log.info("参数表中:" + GeneralDefinition.IS_CONNECT_WMS + "不存在");
|
||||
return new JSONObject();
|
||||
}
|
||||
String isConnect = isConnectConnector.getValue();
|
||||
Param connectorUrlObj = sysParamService.findByCode(GeneralDefinition.WMS_URL);
|
||||
if (ObjectUtil.isEmpty(connectorUrlObj)) {
|
||||
log.info("参数表中:" + GeneralDefinition.WMS_URL + "不存在");
|
||||
return new JSONObject();
|
||||
}
|
||||
String connectorUrl = connectorUrlObj.getValue();
|
||||
JSONObject result;
|
||||
if (StrUtil.equals(GeneralDefinition.NO, isConnect)) {
|
||||
log.info("未连接Wms!");
|
||||
return new JSONObject();
|
||||
}
|
||||
String url = connectorUrl + api;
|
||||
log.info("反馈WMS物料送达到内部加工区:{},url:{}", JSON.toJSONString(object), url);
|
||||
try {
|
||||
String resultMsg = HttpRequest.post(url)
|
||||
.body(JSON.toJSONString(object))
|
||||
.execute().body();
|
||||
result = JSONObject.parseObject(resultMsg);
|
||||
log.info("反馈WMS物料送达到内部加工区的响应参数为:{}", result);
|
||||
} catch (Exception e) {
|
||||
String msg = e.getMessage();
|
||||
//网络不通
|
||||
log.error("连接失败:{}", msg);
|
||||
return JSONObject.parseObject(StrUtil.toString(AcsResponse.requestRefuse("网络不通,操作失败!")));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
@@ -2,14 +2,18 @@ package org.nl.wms.sch.task_manage.task.tasks.handheld;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import org.nl.common.enums.GoodsEnum;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.system.service.notice.ISysNoticeService;
|
||||
import org.nl.wms.database.vehicle.service.IMdBaseVehicleService;
|
||||
import org.nl.wms.database.vehicle.service.dao.MdBaseVehicle;
|
||||
import org.nl.wms.ext.acs.service.dto.to.BaseResponse;
|
||||
import org.nl.wms.ext.connector.service.dto.ConnectorDto;
|
||||
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
|
||||
import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup;
|
||||
import org.nl.wms.sch.point.service.ISchBasePointService;
|
||||
@@ -149,6 +153,25 @@ public class BlankingTask extends AbstractTask {
|
||||
.set(SchBasePoint::getPoint_status, GoodsEnum.IN_STOCK.getValue())
|
||||
.set(SchBasePoint::getIs_lock, false));
|
||||
}
|
||||
schBaseVehiclematerialgroupService.remove(Wrappers.lambdaQuery(SchBaseVehiclematerialgroup.class)
|
||||
.eq(SchBaseVehiclematerialgroup::getVehicle_code, taskObj.getVehicle_code()));
|
||||
String request_param = taskObj.getRequest_param();
|
||||
JSONObject jsonObject1 = JSONObject.parseObject(request_param);
|
||||
String finalRegion_code = jsonObject1.getString("region_code");
|
||||
JSONArray materials = jsonObject1.getJSONArray("materials");
|
||||
materials.forEach(material -> {
|
||||
cn.hutool.json.JSONObject jsonObject = JSONUtil.parseObj(material);
|
||||
SchBaseVehiclematerialgroup schBaseVehiclematerialgroup = new SchBaseVehiclematerialgroup();
|
||||
schBaseVehiclematerialgroup.setVehicle_code(taskObj.getVehicle_code());
|
||||
schBaseVehiclematerialgroup.setMaterial_qty(jsonObject.getInt("material_qty"));
|
||||
schBaseVehiclematerialgroup.setMaterial_id(jsonObject.getStr("material_code"));
|
||||
schBaseVehiclematerialgroup.setOrder_code(jsonObject.getStr("order_code"));
|
||||
schBaseVehiclematerialgroup.setDue_date(jsonObject.getStr("due_date"));
|
||||
schBaseVehiclematerialgroup.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
schBaseVehiclematerialgroup.setPriority(jsonObject.getStr("priority"));
|
||||
schBaseVehiclematerialgroup.setRegion_code(StrUtil.isBlank(finalRegion_code) ? jsonObject.getStr("region_code") : finalRegion_code);
|
||||
schBaseVehiclematerialgroupService.create(schBaseVehiclematerialgroup);
|
||||
});
|
||||
// 任务完成
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
taskObj.setRemark(GeneralDefinition.TASK_FINISH);
|
||||
|
||||
@@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
@@ -18,6 +19,8 @@ import org.nl.system.service.notice.ISysNoticeService;
|
||||
import org.nl.wms.ext.acs.service.dto.to.BaseResponse;
|
||||
import org.nl.wms.ext.fab.service.dto.CallEmpVo;
|
||||
import org.nl.wms.ext.fab.service.dto.SendMaterVo;
|
||||
import org.nl.wms.ext.fab.service.dto.SendVehicleVo;
|
||||
import org.nl.wms.ext.fab.service.dto.SendVehiclesVo;
|
||||
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
|
||||
import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup;
|
||||
import org.nl.wms.sch.point.service.ISchBasePointService;
|
||||
@@ -86,37 +89,6 @@ public class PcOperationSMTTask extends AbstractTask {
|
||||
NoticeTypeEnum.WARN.getCode());
|
||||
continue;
|
||||
}
|
||||
List<SendMaterVo> sendMaterVos = new ArrayList<>();
|
||||
if (CollUtil.isNotEmpty(sendMaterVo.getMaterial_info())) {
|
||||
sendMaterVo.getMaterial_info().stream().forEach(sendMater -> {
|
||||
JSONObject jsonObject = JSONObject.parseObject(sendMater);
|
||||
SendMaterVo sendMaterVo1 = new SendMaterVo();
|
||||
sendMaterVo1.setMaterial_qty(jsonObject.getInteger("material_qty"));
|
||||
sendMaterVo1.setOrder_code(jsonObject.getString("order_code"));
|
||||
sendMaterVo1.setDue_date(jsonObject.getString("due_date"));
|
||||
sendMaterVo1.setRegion_code(jsonObject.getString("region_code"));
|
||||
sendMaterVo1.setPriority(jsonObject.getString("priority"));
|
||||
sendMaterVos.add(sendMaterVo1);
|
||||
});
|
||||
}
|
||||
//删除组盘记录生成新的
|
||||
schBaseVehiclematerialgroupService.remove(new QueryWrapper<SchBaseVehiclematerialgroup>().eq("vehicle_code", sendMaterVo.getVehicle_code()));
|
||||
if (CollUtil.isNotEmpty(sendMaterVos)) {
|
||||
SchBasePoint finalSchBasePoint = schBasePoint;
|
||||
sendMaterVos.stream().forEach(smv -> {
|
||||
SchBaseVehiclematerialgroup schBaseVehiclematerialgroup = new SchBaseVehiclematerialgroup();
|
||||
schBaseVehiclematerialgroup.setVehicle_code(sendMaterVo.getVehicle_code());
|
||||
schBaseVehiclematerialgroup.setPoint_code(finalSchBasePoint.getPoint_code());
|
||||
schBaseVehiclematerialgroup.setMaterial_id(smv.getMaterial_id());
|
||||
schBaseVehiclematerialgroup.setMaterial_qty(smv.getMaterial_qty());
|
||||
schBaseVehiclematerialgroup.setRegion_code(smv.getRegion_code());
|
||||
schBaseVehiclematerialgroup.setOrder_code(smv.getOrder_code());
|
||||
schBaseVehiclematerialgroup.setDue_date(smv.getDue_date());
|
||||
schBaseVehiclematerialgroup.setHas_work(sendMaterVo.getHas_work());
|
||||
schBaseVehiclematerialgroup.setPriority(smv.getPriority());
|
||||
schBaseVehiclematerialgroupService.create(schBaseVehiclematerialgroup);
|
||||
});
|
||||
}
|
||||
// 设置终点并修改创建成功状态
|
||||
task.setPoint_code2(schBasePoint.getPoint_code());
|
||||
task.setVehicle_type(schBasePoint.getCan_vehicle_type());
|
||||
@@ -180,6 +152,27 @@ public class PcOperationSMTTask extends AbstractTask {
|
||||
.set(SchBasePoint::getPoint_status, GoodsEnum.IN_STOCK.getValue())
|
||||
.set(SchBasePoint::getIs_lock, false));
|
||||
}
|
||||
SendMaterVo sendMaterVo = JSONObject.parseObject(taskObj.getRequest_param(),SendMaterVo.class);
|
||||
List<SendMaterVo> sendMaterVos = new ArrayList<>();
|
||||
sendMaterVo.getMaterial_info().forEach(materVo -> {
|
||||
sendMaterVos.add(BeanUtil.copyProperties(JSONUtil.parseObj(materVo),SendMaterVo.class));
|
||||
});
|
||||
//删除组盘记录生成新的
|
||||
schBaseVehiclematerialgroupService.remove(new QueryWrapper<SchBaseVehiclematerialgroup>().eq("vehicle_code", sendMaterVo.getVehicle_code()));
|
||||
if (CollUtil.isNotEmpty(sendMaterVos)) {
|
||||
sendMaterVos.forEach(smv -> {
|
||||
SchBaseVehiclematerialgroup schBaseVehiclematerialgroup = new SchBaseVehiclematerialgroup();
|
||||
schBaseVehiclematerialgroup.setVehicle_code(sendMaterVo.getVehicle_code());
|
||||
schBaseVehiclematerialgroup.setPoint_code(schBasePoint.getPoint_code());
|
||||
schBaseVehiclematerialgroup.setMaterial_id(smv.getMaterial_code());
|
||||
schBaseVehiclematerialgroup.setMaterial_qty(smv.getMaterial_qty());
|
||||
schBaseVehiclematerialgroup.setRegion_code(smv.getRegion_code());
|
||||
schBaseVehiclematerialgroup.setOrder_code(smv.getOrder_code());
|
||||
schBaseVehiclematerialgroup.setDue_date(smv.getDue_date());
|
||||
schBaseVehiclematerialgroup.setPriority(smv.getPriority());
|
||||
schBaseVehiclematerialgroupService.create(schBaseVehiclematerialgroup);
|
||||
});
|
||||
}
|
||||
// 任务完成
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
taskObj.setRemark(GeneralDefinition.TASK_FINISH);
|
||||
|
||||
@@ -1,23 +1,35 @@
|
||||
package org.nl.wms.sch.task_manage.task.tasks.pcoperation;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.json.JSONArray;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.aspose.pdf.Document;
|
||||
import com.aspose.pdf.TextAbsorber;
|
||||
import com.aspose.pdf.TextFragment;
|
||||
import com.aspose.pdf.TextFragmentAbsorber;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.common.enums.GoodsEnum;
|
||||
import org.nl.common.enums.region.RegionEnum;
|
||||
import org.nl.common.enums.wms.PointStatusEnum;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.system.service.notice.ISysNoticeService;
|
||||
import org.nl.system.service.param.dao.Param;
|
||||
import org.nl.system.service.param.impl.SysParamServiceImpl;
|
||||
import org.nl.wms.database.vehicle.service.IMdBaseVehicleService;
|
||||
import org.nl.wms.database.vehicle.service.dao.MdBaseVehicle;
|
||||
import org.nl.wms.ext.acs.service.dto.to.BaseResponse;
|
||||
import org.nl.wms.ext.fab.service.dto.SendMaterVo;
|
||||
import org.nl.wms.ext.fab.service.dto.SendVehicleVo;
|
||||
import org.nl.wms.ext.wms.service.LmsToWmsService;
|
||||
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
|
||||
import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup;
|
||||
import org.nl.wms.sch.point.service.ISchBasePointService;
|
||||
@@ -31,11 +43,17 @@ import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum;
|
||||
import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum;
|
||||
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
||||
import org.nl.wms.util.PointUtils;
|
||||
import org.nl.wms.util.PrintUtil;
|
||||
import org.nl.wms.util.TaskUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.io.*;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
/**
|
||||
* 物料下料转运在外协内部加工区
|
||||
@@ -60,6 +78,10 @@ public class ProcessingSMTTask extends AbstractTask {
|
||||
private ISchBaseVehiclematerialgroupService schBaseVehiclematerialgroupService;
|
||||
@Autowired
|
||||
private IMdBaseVehicleService mdBaseVehicleService;
|
||||
@Autowired
|
||||
private LmsToWmsService lmsToWmsService;
|
||||
@Autowired
|
||||
private SysParamServiceImpl sysParamService;
|
||||
|
||||
@Override
|
||||
protected void create() throws BadRequestException {
|
||||
@@ -79,7 +101,6 @@ public class ProcessingSMTTask extends AbstractTask {
|
||||
NoticeTypeEnum.WARN.getCode());
|
||||
continue;
|
||||
}
|
||||
//TODO: 分配逻辑
|
||||
SchBasePoint schBasePoint = schBasePointService.selectGroundByRegionCode(targetRegionCode, GoodsEnum.OUT_OF_STOCK.getValue());
|
||||
if (ObjectUtil.isEmpty(schBasePoint)) {
|
||||
task.setRemark("未找到所需点位!");
|
||||
@@ -89,8 +110,6 @@ public class ProcessingSMTTask extends AbstractTask {
|
||||
NoticeTypeEnum.WARN.getCode());
|
||||
continue;
|
||||
}
|
||||
//删除组盘记录生成新的
|
||||
//schBaseVehiclematerialgroupService.remove(new QueryWrapper<SchBaseVehiclematerialgroup>().eq("vehicle_code", sendMaterVo.getVehicle_code()));
|
||||
// 设置终点并修改创建成功状态
|
||||
task.setPoint_code2(schBasePoint.getPoint_code());
|
||||
task.setVehicle_type(schBasePoint.getCan_vehicle_type());
|
||||
@@ -166,27 +185,64 @@ public class ProcessingSMTTask extends AbstractTask {
|
||||
.set(SchBasePoint::getPoint_status, point_status)
|
||||
.set(SchBasePoint::getIs_lock, false));
|
||||
}
|
||||
schBaseVehiclematerialgroupService.remove(new QueryWrapper<SchBaseVehiclematerialgroup>().eq("vehicle_code", taskObj.getVehicle_code()));
|
||||
cn.hutool.json.JSONObject jsonObject2 = JSONUtil.parseObj(taskObj.getRequest_param());
|
||||
JSONArray materials = jsonObject2.getJSONArray("mater");
|
||||
materials.stream().forEach(material -> {
|
||||
String replace = StrUtil.replace(StrUtil.toString(material), "=", ":");
|
||||
replace = replace.replaceAll("material_code:,", "");
|
||||
cn.hutool.json.JSONObject jsonObject1 = JSONUtil.parseObj(replace);
|
||||
if (replace.contains("OR")) {
|
||||
Object materialCode = jsonObject1.get("order_code");
|
||||
jsonObject1.put("order_code", materialCode.toString());
|
||||
replace = jsonObject1.toString();
|
||||
String region_code = jsonObject2.getStr("region_code");
|
||||
JSONArray materials = jsonObject2.getJSONArray("material");
|
||||
if (CollUtil.isEmpty(materials)) {
|
||||
materials = jsonObject2.getJSONArray("mater");
|
||||
}
|
||||
List<SendVehicleVo> sendVehicleVos = BeanUtil.copyToList(materials, SendVehicleVo.class);
|
||||
sendVehicleVos.forEach(sendVehicleVo -> {
|
||||
String dueDate = schBaseVehiclematerialgroupService.selectDueDateByVehicleCode(sendVehicleVo);
|
||||
sendVehicleVo.setDue_date(dueDate);
|
||||
});
|
||||
if (region_code.equals(RegionEnum.NBJG.getRegion_code())) {
|
||||
JSONObject jsonObject3 = new JSONObject();
|
||||
jsonObject3.put("vehicle_code", taskObj.getVehicle_code());
|
||||
jsonObject3.put("id", taskObj.getTask_code());
|
||||
JSONArray jsonArray = new JSONArray();
|
||||
sendVehicleVos.forEach(sendVehicleVo -> {
|
||||
JSONObject jsonObject4 = new JSONObject();
|
||||
jsonObject4.put("product_id", sendVehicleVo.getMaterial_code());
|
||||
jsonObject4.put("current_qty", sendVehicleVo.getMaterial_qty());
|
||||
jsonObject4.put("production_order", sendVehicleVo.getOrder_code());
|
||||
jsonObject4.put("due_date", sendVehicleVo.getDue_date());
|
||||
jsonArray.add(jsonObject4);
|
||||
});
|
||||
jsonObject3.put("materials", jsonArray);
|
||||
lmsToWmsService.feedbackMaterialStatus(jsonObject3);
|
||||
} else if (region_code.equals(RegionEnum.WXJG.getRegion_code())) {
|
||||
Param byCode = sysParamService.findByCode(GeneralDefinition.TEMPLATE_URL);
|
||||
Param filePath = sysParamService.findByCode(GeneralDefinition.FILE_URL);
|
||||
Param printerName = sysParamService.findByCode(GeneralDefinition.PRINTER_NAME);
|
||||
if (ObjectUtil.isEmpty(byCode) || ObjectUtil.isEmpty(filePath) || ObjectUtil.isEmpty(printerName)) {
|
||||
throw new BadRequestException("请先配置模板或存放文件地址,或打印机名称");
|
||||
}
|
||||
JSONObject jsonObject = JSONObject.parseObject(replace);
|
||||
JSONObject json = new JSONObject();
|
||||
json.put("vehicleCode", taskObj.getVehicle_code());
|
||||
JSONArray jsonArray = new JSONArray();
|
||||
sendVehicleVos.forEach(sendVehicleVo -> {
|
||||
JSONObject jsonObject4 = new JSONObject();
|
||||
jsonObject4.put("number", sendVehicleVo.getMaterial_code());
|
||||
jsonObject4.put("qty", sendVehicleVo.getMaterial_qty());
|
||||
jsonObject4.put("orderCode", sendVehicleVo.getOrder_code());
|
||||
jsonObject4.put("dueDate", StrUtil.isNotEmpty(sendVehicleVo.getDue_date()) ? sendVehicleVo.getDue_date() : "2024-12-17 12:00:00");
|
||||
jsonObject4.put("next", StrUtil.isNotEmpty(sendVehicleVo.getRegion_code()) ? sendVehicleVo.getRegion_code() : "111-10");
|
||||
jsonArray.add(jsonObject4);
|
||||
});
|
||||
json.put("data", jsonArray);
|
||||
PrintUtil.printWord(byCode.getValue(), json, filePath.getValue(), printerName.getValue());
|
||||
}
|
||||
schBaseVehiclematerialgroupService.remove(new QueryWrapper<SchBaseVehiclematerialgroup>().eq("vehicle_code", taskObj.getVehicle_code()));
|
||||
sendVehicleVos.forEach(sendVehicleVo -> {
|
||||
SchBaseVehiclematerialgroup schBaseVehiclematerialgroup = new SchBaseVehiclematerialgroup();
|
||||
schBaseVehiclematerialgroup.setVehicle_code(taskObj.getVehicle_code());
|
||||
schBaseVehiclematerialgroup.setMaterial_qty(jsonObject.getInteger("material_qty"));
|
||||
schBaseVehiclematerialgroup.setMaterial_code(jsonObject.getString("material_code"));
|
||||
schBaseVehiclematerialgroup.setOrder_code(jsonObject.getString("order_code"));
|
||||
schBaseVehiclematerialgroup.setDue_date(jsonObject.getString("due_date"));
|
||||
schBaseVehiclematerialgroup.setMaterial_qty(sendVehicleVo.getMaterial_qty());
|
||||
schBaseVehiclematerialgroup.setMaterial_id(sendVehicleVo.getMaterial_code());
|
||||
schBaseVehiclematerialgroup.setOrder_code(sendVehicleVo.getOrder_code());
|
||||
schBaseVehiclematerialgroup.setDue_date(sendVehicleVo.getDue_date());
|
||||
schBaseVehiclematerialgroup.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
schBaseVehiclematerialgroup.setRegion_code(schBasePoint2.getPoint_code());
|
||||
//schBaseVehiclematerialgroup.setRegion_code(schBasePoint2.getPoint_code());
|
||||
schBaseVehiclematerialgroupService.create(schBaseVehiclematerialgroup);
|
||||
});
|
||||
// 任务完成
|
||||
@@ -197,6 +253,7 @@ public class ProcessingSMTTask extends AbstractTask {
|
||||
taskService.updateById(taskObj);
|
||||
}
|
||||
|
||||
|
||||
public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) {
|
||||
// 获取参数
|
||||
SchBasePoint schBasePoint1 = schBasePointService.selectByPointCode(taskObj.getPoint_code2());
|
||||
@@ -211,11 +268,6 @@ public class ProcessingSMTTask extends AbstractTask {
|
||||
PointUtils.setUpdateByAcs(schBasePoint);
|
||||
schBasePointService.updateById(schBasePoint);
|
||||
}
|
||||
if (StrUtil.isNotEmpty(taskObj.getVehicle_code())) {
|
||||
schBaseVehiclematerialgroupService.remove(Wrappers.lambdaQuery(SchBaseVehiclematerialgroup.class)
|
||||
.eq(SchBaseVehiclematerialgroup::getVehicle_code, taskObj.getVehicle_code()));
|
||||
}
|
||||
|
||||
taskObj.setRemark(GeneralDefinition.TASK_CANCEL);
|
||||
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
|
||||
taskObj.setFinished_type(taskFinishedType.getCode());
|
||||
|
||||
@@ -1,17 +1,24 @@
|
||||
package org.nl.wms.sch.vehicle.controller;
|
||||
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.nl.common.base.TableDataInfo;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.common.logging.annotation.Log;
|
||||
import org.nl.wms.sch.vehicle.service.IBmVehicleInfoService;
|
||||
import org.nl.wms.sch.vehicle.service.dao.BmVehicleInfo;
|
||||
import org.nl.wms.sch.vehicle.service.dto.VehicleQuery;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
@@ -38,7 +45,10 @@ public class BmVehicleInfoController {
|
||||
@GetMapping
|
||||
@Log("查询载具")
|
||||
public ResponseEntity<Object> query(VehicleQuery query, PageQuery page) {
|
||||
return new ResponseEntity<>(TableDataInfo.build(vehicleInfoService.page(page.build(), query.build())), HttpStatus.OK);
|
||||
return new ResponseEntity<>(TableDataInfo.build(vehicleInfoService.page(page.build(), Wrappers.lambdaQuery(BmVehicleInfo.class)
|
||||
.like(StrUtil.isNotEmpty(query.getVehicle_code()),BmVehicleInfo::getVehicle_code, query.getVehicle_code())
|
||||
.eq(StrUtil.isNotEmpty(query.getVehicle_type()),BmVehicleInfo::getVehicle_type, query.getVehicle_type())
|
||||
.orderByDesc(BmVehicleInfo::getCreate_time))), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping
|
||||
@@ -56,7 +66,7 @@ public class BmVehicleInfoController {
|
||||
|
||||
@Log("删除载具")
|
||||
@DeleteMapping
|
||||
public ResponseEntity<Object> delete(@RequestBody Long[] ids) {
|
||||
public ResponseEntity<Object> delete(@RequestBody String[] ids) {
|
||||
vehicleInfoService.deleteAll(ids);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
@@ -80,5 +90,12 @@ public class BmVehicleInfoController {
|
||||
vehicleInfoService.updateVehicleMaterial(form);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/excelImport")
|
||||
@Log("excel导入")
|
||||
public ResponseEntity<Object> excelImport(MultipartFile file, HttpServletRequest request) {
|
||||
vehicleInfoService.excelImport(file, request);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -7,7 +7,9 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.wms.sch.vehicle.service.dao.BmVehicleInfo;
|
||||
import org.nl.wms.sch.vehicle.service.dto.VehicleQuery;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@@ -75,7 +77,7 @@ public interface IBmVehicleInfoService extends IService<BmVehicleInfo> {
|
||||
* 多选删除
|
||||
* @param ids /
|
||||
*/
|
||||
void deleteAll(Long[] ids);
|
||||
void deleteAll(String[] ids);
|
||||
|
||||
/**
|
||||
* 多修改启用状态
|
||||
@@ -88,4 +90,6 @@ public interface IBmVehicleInfoService extends IService<BmVehicleInfo> {
|
||||
* @param code /
|
||||
*/
|
||||
JSONObject getVehicle(String code);
|
||||
|
||||
void excelImport(MultipartFile file, HttpServletRequest request);
|
||||
}
|
||||
|
||||
@@ -2,7 +2,11 @@ package org.nl.wms.sch.vehicle.service.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.map.MapUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.poi.excel.ExcelReader;
|
||||
import cn.hutool.poi.excel.ExcelUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
@@ -23,7 +27,10 @@ import org.nl.wms.sch.vehicle.service.dto.VehicleQuery;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.io.InputStream;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -42,6 +49,9 @@ public class BmVehicleInfoServiceImpl extends ServiceImpl<BmVehicleInfoMapper, B
|
||||
@Autowired
|
||||
private ISysDictService dictService;
|
||||
|
||||
@Autowired
|
||||
private BmVehicleInfoMapper baseMapper;
|
||||
|
||||
@Override
|
||||
public BmVehicleInfo vehileInfo(String vehicle_code) {
|
||||
return this.getOne(new QueryWrapper<BmVehicleInfo>().eq("vehicle_code", vehicle_code));
|
||||
@@ -55,7 +65,7 @@ public class BmVehicleInfoServiceImpl extends ServiceImpl<BmVehicleInfoMapper, B
|
||||
throw new BadRequestException("此载具已存在");
|
||||
}
|
||||
//转编码类型:
|
||||
Dict dict = dictService.getOne(new QueryWrapper<Dict>().eq("value", map.getString("vehicle_type")));
|
||||
Dict dict = dictService.getOne(new QueryWrapper<Dict>().eq("code", "can_vehicle_type").eq("value", map.getString("vehicle_type")));
|
||||
if (dict == null) {
|
||||
throw new BadRequestException("此载具类型" + map.getString("vehicle_type") + "没有配置字典值");
|
||||
}
|
||||
@@ -134,11 +144,11 @@ public class BmVehicleInfoServiceImpl extends ServiceImpl<BmVehicleInfoMapper, B
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteAll(Long[] ids) {
|
||||
public void deleteAll(String[] ids) {
|
||||
if (ids.length > 0) {
|
||||
Arrays.stream(ids).forEach(id -> {
|
||||
this.remove(Wrappers.lambdaQuery(BmVehicleInfo.class)
|
||||
.eq(BmVehicleInfo::getVehicle_code,String.valueOf(id)));
|
||||
.eq(BmVehicleInfo::getVehicle_code, id));
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -158,4 +168,45 @@ public class BmVehicleInfoServiceImpl extends ServiceImpl<BmVehicleInfoMapper, B
|
||||
json.put("value", CodeUtil.getNewCode(code));
|
||||
return json;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void excelImport(MultipartFile file, HttpServletRequest request) {
|
||||
if (file.isEmpty()) {
|
||||
throw new BadRequestException("文件为空,请添加数据后重新导入");
|
||||
}
|
||||
InputStream inputStream = null;
|
||||
try {
|
||||
inputStream = file.getInputStream();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
ExcelReader excelReader = ExcelUtil.getReader(inputStream);
|
||||
// 从第二行开始获取数据 excelReader.read的结果是一个2纬的list,外层是行,内层是行对应的所有列
|
||||
List<List<Object>> read = excelReader.read(1, excelReader.getRowCount());
|
||||
// 循环获取的数据
|
||||
for (int i = 0; i < read.size(); i++) {
|
||||
List list = read.get(i);
|
||||
JSONObject param = new JSONObject();
|
||||
String vehicleCode = list.get(0).toString();
|
||||
String vehicleType = list.get(1).toString();
|
||||
if (StrUtil.isEmpty(vehicleCode) || StrUtil.isEmpty(vehicleType)) {
|
||||
throw new BadRequestException("载具号或载具类型为空!");
|
||||
}
|
||||
BmVehicleInfo one = getOne(Wrappers.lambdaQuery(BmVehicleInfo.class).eq(BmVehicleInfo::getVehicle_code, vehicleCode));
|
||||
if(ObjectUtil.isNotEmpty(one)){
|
||||
continue;
|
||||
}
|
||||
Dict dict = dictService.getOne(new QueryWrapper<Dict>().eq("code", "can_vehicle_type").eq("value", vehicleType));
|
||||
//按照列获取
|
||||
BmVehicleInfo entity = new BmVehicleInfo();
|
||||
entity.setVehicle_code(vehicleCode);
|
||||
entity.setVehicle_name(dict.getLabel());
|
||||
entity.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
entity.setCreate_time(DateUtil.now());
|
||||
entity.setUpdate_name(SecurityUtils.getCurrentNickName());
|
||||
entity.setUpdate_time(DateUtil.now());
|
||||
entity.setVehicle_type(dict.getValue());
|
||||
this.save(entity);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,157 @@
|
||||
package org.nl.wms.util;
|
||||
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.deepoove.poi.XWPFTemplate;
|
||||
import com.deepoove.poi.config.Configure;
|
||||
import com.deepoove.poi.exception.RenderException;
|
||||
import com.deepoove.poi.policy.HackLoopTableRenderPolicy;
|
||||
import com.spire.doc.Document;
|
||||
import com.spire.ms.Printing.PrinterSettings;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.system.service.param.impl.SysParamServiceImpl;
|
||||
import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.io.*;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author
|
||||
* @version 1.0
|
||||
* @date 2024-04-01 19:59
|
||||
* @description
|
||||
*/
|
||||
@Slf4j
|
||||
public class PrintUtil {
|
||||
|
||||
|
||||
public static void printWord(String templatePath, JSONObject json, String filePath, String printerName) {
|
||||
XWPFTemplate template = null;
|
||||
try {
|
||||
FileInputStream fileInputStream = new FileInputStream(new File(templatePath));
|
||||
//设置占位符:
|
||||
Configure config = Configure.builder()
|
||||
.buildGramer("${", "}")
|
||||
.setValidErrorHandler(new Configure.AbortHandler())
|
||||
.bind("data", new HackLoopTableRenderPolicy())
|
||||
.build();
|
||||
template = XWPFTemplate.compile(fileInputStream, config).render(json);
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd_HHmmss");
|
||||
String formattedDateTime = now.format(formatter);
|
||||
filePath = filePath + "\\template_" + formattedDateTime + ".docx";
|
||||
template.writeToFile(filePath);
|
||||
Document document = new Document();
|
||||
document.loadFromFile(filePath);
|
||||
PrinterSettings printerSettings = new PrinterSettings();
|
||||
printerSettings.setPrinterName(printerName); // "NPI269576"
|
||||
printerSettings.setCopies((short) 1);
|
||||
printerSettings.setFromPage(2);
|
||||
printerSettings.setToPage(4);
|
||||
printerSettings.setFromPage(1);
|
||||
printerSettings.setToPage(document.getPageCount());
|
||||
document.getPrintDocument().setPrinterSettings(printerSettings);
|
||||
document.getPrintDocument().print();
|
||||
} catch (RenderException | IOException ex) {
|
||||
log.info("打印word的报错:{}", ex.getMessage());
|
||||
ex.printStackTrace();
|
||||
} finally {
|
||||
try {
|
||||
if (template != null) {
|
||||
template.close();
|
||||
}
|
||||
} catch (IOException ignored) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args) throws IOException {
|
||||
//加载Word文档
|
||||
Document document = new Document();
|
||||
// document.loadFromFile("D:\\znxj\\downloadPath\\中.docx");
|
||||
document.loadFromFile("C:\\Users\\LENOVO\\Desktop\\1.docx");
|
||||
//创建PrinterSettings对象
|
||||
PrinterSettings printerSettings = new PrinterSettings();
|
||||
//指定物理打印机名称
|
||||
printerSettings.setPrinterName("NPI269576");
|
||||
//设置打印份数
|
||||
printerSettings.setCopies((short) 1);
|
||||
//设置打印范围
|
||||
printerSettings.setFromPage(2);
|
||||
printerSettings.setToPage(4);
|
||||
// 设置打印的起始页和结束页为文档的第一页和最后一页
|
||||
printerSettings.setFromPage(1);
|
||||
printerSettings.setToPage(document.getPageCount());
|
||||
//应用打印设置
|
||||
document.getPrintDocument().setPrinterSettings(printerSettings);
|
||||
//执行打印
|
||||
document.getPrintDocument().print();
|
||||
|
||||
/*XWPFTemplate template = null;
|
||||
ByteArrayOutputStream wordOut = new ByteArrayOutputStream(1024);
|
||||
try {
|
||||
File file = new File("C:\\Users\\LENOVO\\Desktop\\2.docx");
|
||||
FileInputStream fileInputStream = new FileInputStream(file);
|
||||
//设置占位符:
|
||||
Configure config = Configure.builder()
|
||||
.buildGramer("${", "}") //设置模板中的占位符${}, 默认是{{}}
|
||||
.setValidErrorHandler(new Configure.AbortHandler()) //若模板中占位符与填充属性不对应,则报错;
|
||||
.bind("list", new HackLoopTableRenderPolicy()) //设置模板中表格的参数属性
|
||||
.build();
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("vehicleCode","G001");
|
||||
List<JSONObject> jsonObjectList = new ArrayList<>();
|
||||
JSONObject jsonObject1 = new JSONObject();
|
||||
jsonObject1.put("orderCode","23451y4967");
|
||||
jsonObject1.put("number","328458732");
|
||||
jsonObject1.put("qty","22");
|
||||
jsonObject1.put("next","111-11");
|
||||
jsonObject1.put("dueDate","2023-12-12 04:00:00");
|
||||
jsonObject1.put("index","1");
|
||||
JSONObject jsonObject2 = new JSONObject();
|
||||
jsonObject2.put("orderCode","23451y496");
|
||||
jsonObject2.put("number","32845873");
|
||||
jsonObject2.put("qty","23");
|
||||
jsonObject2.put("next","111-12");
|
||||
jsonObject2.put("dueDate","2023-12-12 05:00:00");
|
||||
jsonObject2.put("index","2");
|
||||
jsonObjectList.add(jsonObject1);
|
||||
jsonObjectList.add(jsonObject2);
|
||||
jsonObject.put("list",jsonObjectList);
|
||||
//填充文本域:
|
||||
template = XWPFTemplate.compile(fileInputStream, config).render(jsonObject);
|
||||
// template.write(wordOut);
|
||||
template.writeToFile("C:\\Users\\LENOVO\\Desktop\\1.docx");
|
||||
}catch (RenderException | IOException ex){
|
||||
throw ex;
|
||||
} finally {
|
||||
try {
|
||||
if (template != null){
|
||||
template.close();
|
||||
}
|
||||
} catch (IOException ex) {
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
|
||||
public static File getFile(String filePath) {
|
||||
File file = new File(filePath);
|
||||
if (file.exists()) {
|
||||
log.info("是文件:{}", Arrays.toString(file.list()));
|
||||
return file;
|
||||
}
|
||||
log.info("不是文件");
|
||||
return file;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Binary file not shown.
@@ -0,0 +1,34 @@
|
||||
<?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}"/>
|
||||
<!--<define name="DEVICECODE" class="org.nl.common.logging.DeviceCodeDir"/>-->
|
||||
<!-- 按照每天生成日志文件 -->
|
||||
<appender name="FILE_14" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||
<!--日志文件输出的文件名-->
|
||||
<FileNamePattern>${LOG_HOME}/LmsToWms/%d{yyyy-MM-dd}.%i.log</FileNamePattern>
|
||||
<!--日志文件保留天数-->
|
||||
<maxHistory>15</maxHistory>
|
||||
<!--单个日志最大容量 至少10MB才能看得出来-->
|
||||
<maxFileSize>200MB</maxFileSize>
|
||||
<!--所有日志最多占多大容量-->
|
||||
<totalSizeCap>2GB</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.start.Init" level="info" additivity="false">
|
||||
<appender-ref ref="FILE3"/>
|
||||
</logger>-->
|
||||
|
||||
<!-- 打印sql -->
|
||||
<logger name="org.nl.wms.sch.task_manage.task.WmsUtil" level="info" additivity="false">
|
||||
<appender-ref ref="FILE_14"/>
|
||||
</logger>
|
||||
</included>
|
||||
@@ -21,6 +21,7 @@
|
||||
<include resource="log/ConnectorAndSorting.xml"/>
|
||||
<include resource="log/ConnectorToWmsServiceImpl.xml"/>
|
||||
<include resource="log/SortingToWms.xml"/>
|
||||
<include resource="log/LmsToWms.xml"/>
|
||||
<!-- 按照每天生成日志文件 -->
|
||||
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||
|
||||
Reference in New Issue
Block a user