no message
parent
a0f73cd299
commit
2c55aa09e6
|
|
@ -9,7 +9,7 @@ import org.springframework.stereotype.Component;
|
|||
|
||||
@Generated(
|
||||
value = "org.mapstruct.ap.MappingProcessor",
|
||||
date = "2024-04-16T16:48:50+0800",
|
||||
date = "2024-04-24T17:39:34+0800",
|
||||
comments = "version: 1.4.2.Final, compiler: javac, environment: Java 1.8.0_202 (Oracle Corporation)"
|
||||
)
|
||||
@Component
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ import org.springframework.stereotype.Component;
|
|||
|
||||
@Generated(
|
||||
value = "org.mapstruct.ap.MappingProcessor",
|
||||
date = "2024-04-16T16:48:50+0800",
|
||||
date = "2024-04-24T17:39:34+0800",
|
||||
comments = "version: 1.4.2.Final, compiler: javac, environment: Java 1.8.0_202 (Oracle Corporation)"
|
||||
)
|
||||
@Component
|
||||
|
|
|
|||
|
|
@ -87,7 +87,7 @@ public class ItemKey extends BaseEntity implements Serializable {
|
|||
private Dept dept;
|
||||
|
||||
@Column(name = "`order_number`")
|
||||
@ApiModelProperty(value = "工单号")
|
||||
@ApiModelProperty(value = "工单编号")
|
||||
private String orderNumber;
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ public class Task extends BaseEntity implements Serializable {
|
|||
private ItemKey itemKey;
|
||||
|
||||
@Column(name = "`bill_code`")
|
||||
@ApiModelProperty(value = "任务号")
|
||||
@ApiModelProperty(value = "送货单条码号")
|
||||
private String billCode;
|
||||
|
||||
@Column(name = "`task_type`")
|
||||
|
|
|
|||
|
|
@ -67,7 +67,30 @@ public class KMReSController {
|
|||
String containerCode = missionStateCallback.getContainerCode();//容器编号
|
||||
String missionStatus = missionStateCallback.getMissionStatus();//作业当前状态
|
||||
try {
|
||||
//料箱任务
|
||||
//料箱出库任务
|
||||
if(id.indexOf("XJ")!=-1){
|
||||
if(missionStatus.equals("CANCELED")){
|
||||
List<AgvTask> agvTaskList= agvTaskService.findByjobCode(id);
|
||||
for(AgvTask agvTask:agvTaskList){
|
||||
if(!agvTask.getStatus().equals(BizStatus.FINISH)){
|
||||
agvTask.setStatus(BizStatus.CANCEL);
|
||||
agvTask.setEndTime(new Timestamp(new Date().getTime()));
|
||||
agvTaskService.update(agvTask);
|
||||
}
|
||||
}
|
||||
}else {
|
||||
AgvTask agvTask= agvTaskService.findByjobCode(id,containerCode);
|
||||
agvTaskService.agvTaskCallback(agvTask,missionStatus,containerCode);
|
||||
List<Task> taskList = taskRepository.getAgvTaskList(agvTask.getId());
|
||||
Task task = taskList.get(0);
|
||||
if(task==null){
|
||||
return new ResponseEntity<>(ApiResult.fail(BAD_REQUEST.value(), "任务不存在!", ""), BAD_REQUEST);
|
||||
}
|
||||
returnIssue(task);//叫料结果回传
|
||||
}
|
||||
|
||||
}else{
|
||||
//入库
|
||||
AgvTaskDto agvTaskDto = agvTaskService.findById(Integer.parseInt(id));
|
||||
AgvTask agvTask = agvTaskService.toEntity(agvTaskDto);//转实体
|
||||
List<Task> taskList = taskRepository.getAgvTaskList(agvTask.getId());
|
||||
|
|
@ -76,12 +99,9 @@ public class KMReSController {
|
|||
}
|
||||
Task task = taskList.get(0);
|
||||
agvTaskService.agvTaskCallback(agvTask, task, missionStatus);
|
||||
//回传
|
||||
if (agvTask.getType().equals(BizStatus.ASN)) {
|
||||
returnMo(task.getItemKey().getOrderNumber());
|
||||
} else if (agvTask.getType().equals(BizStatus.PICK)) {
|
||||
returnIssue(task);
|
||||
returnMo(task.getBillCode());//回传MO信息
|
||||
}
|
||||
|
||||
return new ResponseEntity<>(ApiResult.success(OK.value(), "", ""), HttpStatus.OK);
|
||||
} catch (Exception e) {
|
||||
return new ResponseEntity<>(ApiResult.fail(BAD_REQUEST.value(), "KMReS接口回调异常", e.getMessage()), BAD_REQUEST);
|
||||
|
|
|
|||
|
|
@ -148,10 +148,26 @@ public interface AgvTaskService {
|
|||
*/
|
||||
void agvTaskCallback(AgvTask agvTask,Task task, String status);
|
||||
|
||||
boolean findByendSlotCode(String endSlotCode,String type,String jobType);
|
||||
void agvTaskCallback(AgvTask agvTask,String status,String containerCode);
|
||||
|
||||
|
||||
List<AgvTask> findById(List<Integer> ids);
|
||||
|
||||
double queryOrderNumberSum(String orderNumber);
|
||||
|
||||
/**
|
||||
*根据组号+料箱号招找到对应的AGV
|
||||
* @param jobForce-任务组号
|
||||
* @param containerCode-容器号
|
||||
* @return
|
||||
*/
|
||||
AgvTask findByjobCode(String jobForce,String containerCode);
|
||||
|
||||
/**
|
||||
*根据组号+找到对应的AGV集合
|
||||
* @param jobForce-任务组号
|
||||
* @return
|
||||
*/
|
||||
List<AgvTask> findByjobCode(String jobForce);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,9 +21,12 @@ import com.youchain.businessdata.service.dto.MoDto;
|
|||
import com.youchain.businessdata.service.dto.OrderDto;
|
||||
import com.youchain.businessdata.service.dto.OrderQueryCriteria;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.List;
|
||||
import java.io.IOException;
|
||||
import java.util.Set;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
/**
|
||||
|
|
@ -70,6 +73,8 @@ public interface OrderService {
|
|||
*/
|
||||
OrderDto findByBarcodeNumber(String barcodeNumber);
|
||||
|
||||
Map<String, Order> findByBarcodeNumbers(Set barcodeNumbers);
|
||||
|
||||
/**
|
||||
* 创建
|
||||
* @param resources /
|
||||
|
|
@ -77,6 +82,16 @@ public interface OrderService {
|
|||
*/
|
||||
OrderDto create(Order resources);
|
||||
|
||||
/**
|
||||
* 批量创建
|
||||
* @param orders 订单列表
|
||||
*/
|
||||
@Async
|
||||
void batchCreateOrders(List<Order> orders);
|
||||
|
||||
@Async
|
||||
void batchUpdateOrders(List<Order> orders);
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
* @param resources /
|
||||
|
|
|
|||
|
|
@ -37,6 +37,10 @@ public class MoQueryCriteria{
|
|||
@Query(type = Query.Type.INNER_LIKE)
|
||||
private String labelNo;
|
||||
|
||||
/** 工单编号 */
|
||||
@Query(type = Query.Type.INNER_LIKE)
|
||||
private String workOrderName;
|
||||
|
||||
@Query(joinName = "item", propName="code",type = Query.Type.INNER_LIKE)
|
||||
private long itemCode;
|
||||
|
||||
|
|
|
|||
|
|
@ -18,10 +18,12 @@ package com.youchain.businessdata.service.impl;
|
|||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.youchain.basicdata.domain.Box;
|
||||
import com.youchain.basicdata.domain.Point;
|
||||
import com.youchain.basicdata.domain.Stock;
|
||||
import com.youchain.basicdata.repository.StockRepository;
|
||||
import com.youchain.basicdata.service.PointService;
|
||||
import com.youchain.basicdata.service.impl.BoxServiceImpl;
|
||||
import com.youchain.businessdata.domain.*;
|
||||
import com.youchain.businessdata.repository.AsnDetailRepository;
|
||||
import com.youchain.businessdata.repository.TaskRepository;
|
||||
|
|
@ -461,11 +463,7 @@ public class AgvTaskServiceImpl implements AgvTaskService {
|
|||
@Override
|
||||
public void agvTaskCallback(AgvTask agvTask, Task task, String status) {
|
||||
|
||||
if (status.equals("ARRIVED")) {
|
||||
|
||||
} else if (status.equals("UP_CONTAINER")) {
|
||||
|
||||
} else if (status.equals("COMPLETED")) {
|
||||
if (status.equals("COMPLETED")) {
|
||||
//入库
|
||||
if (agvTask.getType().equals(BizStatus.ASN)) {
|
||||
//增加库存
|
||||
|
|
@ -489,15 +487,6 @@ public class AgvTaskServiceImpl implements AgvTaskService {
|
|||
inventory.setQuantity(task.getPlanQty());
|
||||
inventoryService.update(inventory);
|
||||
inventoryLogService.storeInventoryLog(BizStatus.RECEIVING_UP, BizStatus.ADD, null, task.getItemKey(), task.getSrcPoint(), task.getDstPoint(), task.getSrcStock(), task.getSrcStock(), task.getPlanQty(), task.getPlanQty(), BizStatus.ASN, ad.getId(), inventory.getId(), ad.getRemark());
|
||||
} else if (agvTask.getType().equals(BizStatus.PICK)) {
|
||||
//出库
|
||||
//扣除库存
|
||||
try {
|
||||
taskService.pickConfirm(task.getId(), task.getPlanQty());
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e.getMessage());
|
||||
}
|
||||
//回传
|
||||
}
|
||||
//任务完成
|
||||
agvTask.setStatus(BizStatus.FINISH);
|
||||
|
|
@ -512,15 +501,27 @@ public class AgvTaskServiceImpl implements AgvTaskService {
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean findByendSlotCode(String endSlotCode, String type, String jobType) {
|
||||
String hql = " from AgvTask agv " + " where agv.endSlotCode='" + endSlotCode + "' " + " and agv.type='" + type + "' " + " and agv.jobType='" + jobType + "' " + " and agv.status in ('ATCALL','UP_CONTAINER') ";
|
||||
public void agvTaskCallback(AgvTask agvTask, String status, String containerCode) {
|
||||
|
||||
if (status.equals("PICKER_RECEIVE")) {
|
||||
//小件:AGV把料箱放到料箱车上扣减库存
|
||||
|
||||
List<Task> taskList = taskRepository.getAgvTaskList(agvTask.getId());
|
||||
//扣除库存
|
||||
for (Task task : taskList) {
|
||||
try {
|
||||
taskService.pickConfirm(task.getId(), task.getPlanQty());
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
agvTask.setStatus(BizStatus.FINISH);
|
||||
agvTask.setEndTime(new Timestamp(new Date().getTime()));
|
||||
this.update(agvTask);
|
||||
|
||||
|
||||
Query query = entityMapper.createQuery(hql);
|
||||
List<AgvTask> agvTaskList = query.getResultList();
|
||||
if (agvTaskList.size() > 0) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -535,7 +536,7 @@ public class AgvTaskServiceImpl implements AgvTaskService {
|
|||
|
||||
@Override
|
||||
public double queryOrderNumberSum(String orderNumber) {
|
||||
String hql = "select sum(task.moveQty) from Task task where task.itemKey.orderNumber= :orderNumber";
|
||||
String hql = "select sum(task.moveQty) from Task task where task.billCode= :orderNumber";
|
||||
Query query = entityMapper.createQuery(hql);
|
||||
query.setParameter("orderNumber", orderNumber);
|
||||
List<Double> orderNumberSumList = query.getResultList();
|
||||
|
|
@ -546,4 +547,26 @@ public class AgvTaskServiceImpl implements AgvTaskService {
|
|||
|
||||
}
|
||||
|
||||
@Override
|
||||
public AgvTask findByjobCode(String jobForce, String containerCode) {
|
||||
String hql = " from AgvTask agv where agv.jobForce= :jobForce and agv.stockCode= :containerCode";
|
||||
Query query = entityMapper.createQuery(hql);
|
||||
query.setParameter("jobForce", jobForce);
|
||||
query.setParameter("containerCode", containerCode);
|
||||
List<AgvTask> agvTaskList = query.getResultList();
|
||||
if (agvTaskList.size() > 0) {
|
||||
return agvTaskList.get(0);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<AgvTask> findByjobCode(String jobForce) {
|
||||
String hql = " from AgvTask agv where agv.jobForce= :jobForce";
|
||||
Query query = entityMapper.createQuery(hql);
|
||||
query.setParameter("jobForce", jobForce);
|
||||
List<AgvTask> agvTaskList = query.getResultList();
|
||||
return agvTaskList;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@ import org.springframework.stereotype.Service;
|
|||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
|
|
@ -100,7 +101,6 @@ public class MlsServiceImpl implements MlsService {
|
|||
* @return
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void getOrderInfo(String resultJson) {
|
||||
if (StringUtils.isEmpty(resultJson)) {
|
||||
throw new RuntimeException("获取送货单接口失败!");
|
||||
|
|
@ -127,10 +127,48 @@ public class MlsServiceImpl implements MlsService {
|
|||
if (details == null || details.size() == 0) {
|
||||
throw new RuntimeException("没有获取到送货单数据!");
|
||||
}
|
||||
|
||||
List<Order> ordersToCreate = new ArrayList<>();//新增订单集合
|
||||
List<Order> ordersToUpdate = new ArrayList<>();//更新订单集合
|
||||
//获取所有送货单条码号
|
||||
Set<String> barcodeNumbers = details.stream()
|
||||
.map(detail -> ((JSONObject) detail).getString("barcodeNumber"))
|
||||
.collect(Collectors.toSet());
|
||||
//获取已存在的订单
|
||||
Map<String, Order> existingOrders = orderService.findByBarcodeNumbers(barcodeNumbers);
|
||||
//循环处理每个送货单
|
||||
log.info("送货单数量:" + details.size());
|
||||
for (int i = 0; i < details.size(); i++) {
|
||||
JSONObject detail = details.getJSONObject(i);
|
||||
String barcodeNumber = detail.getString("barcodeNumber");
|
||||
//判断是否已存在订单
|
||||
if (existingOrders.containsKey(barcodeNumber)) {
|
||||
Order existingOrder = existingOrders.get(barcodeNumber);
|
||||
//更新订单信息
|
||||
ordersToUpdate.add(updateOrder(existingOrder, detail));
|
||||
} else {
|
||||
//新增订单
|
||||
ordersToCreate.add(createOrder(detail));
|
||||
}
|
||||
}
|
||||
//批量新增订单
|
||||
if (!ordersToCreate.isEmpty()) {
|
||||
orderService.batchCreateOrders(ordersToCreate);
|
||||
}
|
||||
//批量更新订单
|
||||
if (!ordersToUpdate.isEmpty()) {
|
||||
orderService.batchUpdateOrders(ordersToUpdate);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建订单
|
||||
*
|
||||
* @param detail
|
||||
* @return
|
||||
*/
|
||||
private Order createOrder(JSONObject detail) {
|
||||
|
||||
String barcodeNumber = detail.getString("barcodeNumber");//送货单条码号
|
||||
String isCreatedLabel = detail.getString("isCreatedLabel");//是否已生成标签N
|
||||
String itemCode = detail.getString("itemCode");//物料编码
|
||||
|
|
@ -144,21 +182,18 @@ public class MlsServiceImpl implements MlsService {
|
|||
String receivedAreaCode = detail.getString("receivedAreaCode");//LMES接收货区编码
|
||||
String supplierName = detail.getString("supplierName");//供应商名称
|
||||
String isIqcInspected = detail.getString("isIqcInspected");//Y-已检验N-未检验
|
||||
Double deliveryQty = detail.getDouble("deliveryQty");//计划数量
|
||||
Double deliveryQty = detail.getDouble("deliveryQty") == null ? 0 : detail.getDouble("deliveryQty");//计划数量
|
||||
//String deliveryType=detail.getString("deliveryType");//文档没有该字段
|
||||
String receivedLocationCode = detail.getString("receivedLocationCode");//LMES货位编码
|
||||
String mlsUpdateTime = detail.getString("updateTime");//更新时间
|
||||
String receivedInvName = detail.getString("receivedInvName");//LMES接收子库名称
|
||||
Double receivedQty = detail.getDouble("receivedQty");//实际接收数量
|
||||
Double receivedQty = detail.getDouble("receivedQty") == null ? 0 : detail.getDouble("receivedQty");//实际接收数量
|
||||
//Integer deliveryLineId = detail.getInteger("deliveryLineId");//送货单行ID
|
||||
String inInspector = detail.getString("inInspector");//检验员
|
||||
Integer deliveryHeaderId = detail.getInteger("deliveryHeaderId");//送货单头ID和003接口关联
|
||||
String receivedAreaName = detail.getString("receivedAreaName");//mls接收货区名称
|
||||
String deliveryStatus = detail.getString("deliveryStatus");//送货单状态
|
||||
|
||||
//直接接收已合格的送货单
|
||||
OrderDto orderdto = orderService.findByBarcodeNumber(barcodeNumber);
|
||||
if (orderdto == null) {
|
||||
//创建
|
||||
Order newOrder = new Order(deliveryHeaderId, null, null,
|
||||
deliveryNumber, barcodeNumber, deliveryStatus, receivedInvCode, receivedInvName,
|
||||
|
|
@ -166,36 +201,19 @@ public class MlsServiceImpl implements MlsService {
|
|||
itemCode, deliveryQty, inInspector, receivedQty, isIqcInspected, iqcResult, isCreatedLabel,
|
||||
supplierCode, supplierName, mlsUpdateTime == null ? null : DateUtil.parse(mlsUpdateTime).toTimestamp()
|
||||
);
|
||||
orderService.create(newOrder);
|
||||
} else {
|
||||
//更新
|
||||
Order order = orderService.toEntity(orderdto);
|
||||
order.setDeliveryHeaderId(deliveryHeaderId);
|
||||
order.setDeliveryNumber(deliveryNumber);
|
||||
order.setDeliveryStatus(deliveryStatus);
|
||||
order.setReceivedInvCode(receivedInvCode);
|
||||
order.setReceivedInvName(receivedInvName);
|
||||
order.setReceivedAreaCode(receivedAreaCode);
|
||||
order.setReceivedAreaName(receivedAreaName);
|
||||
order.setReceivedLocationCode(receivedLocationCode);
|
||||
order.setReceivedLocationName(receivedLocationName);
|
||||
order.setItemCode(itemCode);
|
||||
order.setDeliveryQty(deliveryQty);
|
||||
order.setInInspector(inInspector);
|
||||
order.setReceivedQty(receivedQty);
|
||||
order.setIsIqcInspected(isIqcInspected);
|
||||
order.setIqcResult(iqcResult);
|
||||
order.setIsCreatedLabel(isCreatedLabel);
|
||||
order.setSupplierCode(supplierCode);
|
||||
order.setSupplierName(supplierName);
|
||||
order.setMlsUpdateTime(mlsUpdateTime == null ? null : DateUtil.parse(mlsUpdateTime).toTimestamp());
|
||||
orderService.update(order);
|
||||
|
||||
return newOrder;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 更新订单信息
|
||||
*
|
||||
* @param order
|
||||
* @param detail
|
||||
*/
|
||||
private Order updateOrder(Order order, JSONObject detail) {
|
||||
order.setDeliveryStatus(detail.getString("deliveryStatus"));
|
||||
return order;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -248,7 +266,6 @@ public class MlsServiceImpl implements MlsService {
|
|||
throw new RuntimeException("没有获取到MO票数据!");
|
||||
}
|
||||
//循环处理每个MO票
|
||||
log.info("MO票数量:" + details.size());
|
||||
for (int i = 0; i < details.size(); i++) {
|
||||
JSONObject detail = details.getJSONObject(i);
|
||||
Integer selfWorkOrderId = detail.getInteger("selfWorkOrderId");//自制件工单id
|
||||
|
|
@ -268,7 +285,7 @@ public class MlsServiceImpl implements MlsService {
|
|||
Long itemId = detail.getLong("itemId");//物料id
|
||||
String updateUserCode = detail.getString("updateUserCode");//修改人
|
||||
String mlsCreateTime = detail.getString("createTime");//创建时间
|
||||
Double qty = detail.getDouble("qty");//可用数量
|
||||
Double qty = detail.getDouble("qty") == null ? 0 : detail.getDouble("qty");//可用数量
|
||||
String labelState = detail.getString("labelState");//标签状态
|
||||
Integer deliveryHeaderId = detail.getInteger("deliveryHeaderId");//送货单头ID;通过该字段能找到002接口送货单
|
||||
String workOrderName = detail.getString("workOrderName");//工单编号
|
||||
|
|
@ -276,7 +293,7 @@ public class MlsServiceImpl implements MlsService {
|
|||
String goodsLocationCode = detail.getString("goodsLocationCode");//MLS货位
|
||||
String invCode = detail.getString("invCode");//MLS子库
|
||||
|
||||
|
||||
if ("PRINTED".equals(labelState)) {
|
||||
//判断物料是否存在;不存在新增;
|
||||
ItemDto itemDto = itemService.findByCode(itemCode);
|
||||
Item item = itemService.toEntity(itemDto);
|
||||
|
|
@ -326,6 +343,8 @@ public class MlsServiceImpl implements MlsService {
|
|||
mo.setUpdateUserCode(updateUserCode);
|
||||
moService.update(mo);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -333,7 +352,7 @@ public class MlsServiceImpl implements MlsService {
|
|||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void getIssueInfo(IssueInfo issueInfo) {
|
||||
String taskNumber=issueInfo.getTaskNumber();//任务号
|
||||
String taskNumber = issueInfo.getTaskNumber();//任务号
|
||||
// 指定Set的类型
|
||||
Set<String> workOrderNameSet = issueInfo.getWorkOrderName();
|
||||
if (workOrderNameSet.isEmpty()) {
|
||||
|
|
|
|||
|
|
@ -239,16 +239,16 @@ public class MoServiceImpl implements MoService {
|
|||
|
||||
// 生成入库任务
|
||||
|
||||
AsnDetail asnDetail = asnDetailService.createAsnDetail(item, stock, srcPoint, propC1, orderDto.getBarcodeNumber());
|
||||
AsnDetail asnDetail = asnDetailService.createAsnDetail(item, stock, srcPoint, propC1, moDto.getWorkOrderName());
|
||||
asnDetail.setOrderQty(moDto.getQty());
|
||||
asnDetail.setPo(orderDto.getBarcodeNumber());
|
||||
asnDetail.setPo(moDto.getWorkOrderName());
|
||||
asnDetailService.create(asnDetail);
|
||||
|
||||
//生成Itemkey
|
||||
ItemKey itemKey = itemKeyService.getItemKey(item, moDto.getLabelNo(), orderDto.getBarcodeNumber());
|
||||
ItemKey itemKey = itemKeyService.getItemKey(item, moDto.getLabelNo(), moDto.getWorkOrderName());
|
||||
|
||||
//生成收货记录
|
||||
Task task = new Task(item, itemKey, asnDetail.getOrderNumber(), BizStatus.ASN, asnDetail, null, null, null, stock, stock, srcPoint, endPoint, stock.getCode(), stock.getCode(), srcPoint.getCode(), endPoint.getCode(), null, BizStatus.OPEN, asnDetail.getOrderQty(), null, null, item.getDept(), agvTask);
|
||||
Task task = new Task(item, itemKey, orderDto.getBarcodeNumber(), BizStatus.ASN, asnDetail, null, null, null, stock, stock, srcPoint, endPoint, stock.getCode(), stock.getCode(), srcPoint.getCode(), endPoint.getCode(), null, BizStatus.OPEN, asnDetail.getOrderQty(), null, null, item.getDept(), agvTask);
|
||||
taskService.create(task);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -34,14 +34,11 @@ import org.springframework.transaction.annotation.Transactional;
|
|||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
import java.io.IOException;
|
||||
import javax.persistence.EntityManager;
|
||||
import javax.persistence.Query;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashMap;
|
||||
|
||||
/**
|
||||
* @author huojin
|
||||
|
|
@ -105,12 +102,58 @@ public class OrderServiceImpl implements OrderService {
|
|||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Order> findByBarcodeNumbers(Set barcodeNumbers) {
|
||||
Map<String, Order> result = new HashMap<>();
|
||||
String hql = "from Order o where o.barcodeNumber in (:barcodeNumbers)";
|
||||
Query query = entityManager.createQuery(hql); // 这里的query是org.hibernate.query.Query
|
||||
query.setParameter("barcodeNumbers", barcodeNumbers);
|
||||
List<Order> orders = query.getResultList();
|
||||
if (orders.size() > 0) {
|
||||
for (Order order : orders) {
|
||||
result.put(order.getBarcodeNumber(), order);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public OrderDto create(Order resources) {
|
||||
return orderMapper.toDto(orderRepository.save(resources));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void batchCreateOrders(List<Order> orders) {
|
||||
int batchSize = 50; // 根据需求调整批处理大小
|
||||
for (int i = 0; i < orders.size(); i++) {
|
||||
entityManager.persist(orders.get(i));
|
||||
if (i % batchSize == 0 && i > 0) {
|
||||
entityManager.flush(); // 批量提交
|
||||
entityManager.clear(); // 清理缓存
|
||||
}
|
||||
}
|
||||
entityManager.flush(); // 最后确保所有剩余的实体也被flush到数据库
|
||||
entityManager.clear();
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void batchUpdateOrders(List<Order> orders) {
|
||||
int batchSize = 100; // 根据需求调整批处理大小
|
||||
for (int i = 0; i < orders.size(); i++) {
|
||||
Order order = orders.get(i);
|
||||
entityManager.merge(order); // 更新实体
|
||||
if (i % batchSize == 0 && i > 0) { // 每处理50个实体执行一次flush和clear
|
||||
entityManager.flush();
|
||||
entityManager.clear();
|
||||
}
|
||||
}
|
||||
entityManager.flush(); // 确保最后的更改也被写入数据库
|
||||
entityManager.clear(); // 清理持久化上下文以释放内存
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void update(Order resources) {
|
||||
|
|
|
|||
|
|
@ -163,9 +163,6 @@ public class TaskServiceImpl implements TaskService {
|
|||
taskRepository.save(task);
|
||||
Inventory inv = inventoryRepository.findById(task.getInvId()).get();
|
||||
if (inv != null) {
|
||||
ItemKey itemKey = inv.getItemKey();
|
||||
Item item = itemKey.getItem();
|
||||
Dept dept = item.getDept();
|
||||
double srcQty=inv.getQuantity();
|
||||
inv.setQuantity(inv.getQuantity() - pickedQuantity);
|
||||
inv.setQueuedQty(inv.getQueuedQty() - pickedQuantity);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,14 @@
|
|||
package com.youchain.modules.quartz.task;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
/**
|
||||
* 料箱入库任务下发
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class asnTask {
|
||||
public void asnTask() {
|
||||
log.info("asnTask start");
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
package com.youchain.modules.quartz.task;
|
||||
|
||||
import com.youchain.businessdata.inputJson.MoInfo;
|
||||
import com.youchain.businessdata.inputJson.MoParams;
|
||||
import com.youchain.businessdata.rest.MlsController;
|
||||
import com.youchain.businessdata.service.MlsService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* 获取mo定时任务
|
||||
*/
|
||||
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
public class moTask {
|
||||
@Autowired
|
||||
public MlsService mlsService;
|
||||
|
||||
public void moTask() {
|
||||
|
||||
try {
|
||||
log.info("获取mo信息");
|
||||
MoInfo moInfo = getMoInfo();
|
||||
String moJson = mlsService.getMoJson(moInfo);
|
||||
mlsService.getMoInfo(moJson);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("MLS异常信息:" + e);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public MoInfo getMoInfo() {
|
||||
|
||||
MoParams params = new MoParams();
|
||||
params.setOrgId(808);
|
||||
Set invCodes = new HashSet<>();
|
||||
invCodes.add("MA2111");
|
||||
params.setInvCodes(invCodes);
|
||||
//DateUtil.format(DateUtil.beginOfDay(new Date()), "yyyy-MM-dd HH:mm:ss")
|
||||
params.setStartTime("2024-04-11 00:00:00");
|
||||
params.setEndTime("2024-04-11 23:59:59");
|
||||
MoInfo moInfo = new MoInfo();
|
||||
moInfo.setIfaceCode("MLS-WQ-003");
|
||||
moInfo.setSourceSystem("WQ");
|
||||
moInfo.setParams(params);
|
||||
return moInfo;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,17 +1,27 @@
|
|||
package com.youchain.modules.quartz.task;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.youchain.annotation.Log;
|
||||
import com.youchain.businessdata.domain.Task;
|
||||
import com.youchain.businessdata.inputJson.OrderInfo;
|
||||
import com.youchain.businessdata.inputJson.OrderParams;
|
||||
import com.youchain.businessdata.inputJson.ReturnIssueInfo;
|
||||
import com.youchain.businessdata.inputJson.ReturnIssueInfoParams;
|
||||
import com.youchain.businessdata.rest.MlsController;
|
||||
import com.youchain.businessdata.service.MlsService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
|
||||
/**
|
||||
* 获取送货单定时任务
|
||||
|
|
@ -21,37 +31,35 @@ import java.util.Set;
|
|||
@Service
|
||||
public class orderTask {
|
||||
|
||||
private final MlsController mlsController;
|
||||
|
||||
@Autowired
|
||||
public orderTask(MlsController mlsController) {
|
||||
this.mlsController = mlsController;
|
||||
}
|
||||
public MlsService mlsService;
|
||||
|
||||
|
||||
public void orderTask() {
|
||||
OrderInfo orderInfo = getOrderInfo();
|
||||
String orderJson = mlsService.getOrderJson(orderInfo);
|
||||
mlsService.getOrderInfo(orderJson);
|
||||
}
|
||||
|
||||
Date date = new Date();
|
||||
|
||||
public OrderInfo getOrderInfo() {
|
||||
|
||||
OrderParams params = new OrderParams();
|
||||
params.setOrgId(808);
|
||||
Set invCodes = new HashSet<>();
|
||||
invCodes.add("MA2111");
|
||||
params.setInvCodes(invCodes);
|
||||
params.setIqcResult("");
|
||||
//DateUtil.format(DateUtil.beginOfDay(new Date()), "yyyy-MM-dd HH:mm:ss")
|
||||
params.setStartTime("2024-04-10 00:00:00");
|
||||
params.setEndTime("2024-04-10 23:59:59");
|
||||
params.setPageNo(1);
|
||||
params.setPageSize(100);
|
||||
OrderInfo orderInfo = new OrderInfo();
|
||||
orderInfo.setIfaceCode("MLS-WQ-002");
|
||||
orderInfo.setSourceSystem("WQ");
|
||||
|
||||
Set invCodes = new HashSet<>();
|
||||
invCodes.add("MA2111");
|
||||
|
||||
String startTime = DateUtil.format(DateUtil.beginOfDay(date), "yyyy-MM-dd HH:mm:ss");
|
||||
String endTime = DateUtil.format(DateUtil.endOfDay(date), "yyyy-MM-dd HH:mm:ss");
|
||||
OrderParams params = new OrderParams(100059, invCodes, "", startTime, endTime, 1, 100);
|
||||
|
||||
orderInfo.setParams(params);
|
||||
|
||||
try {
|
||||
log.info("获取送货单信息");
|
||||
mlsController.getOrderInfo(orderInfo);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("MLS异常信息:" + e);
|
||||
}
|
||||
|
||||
|
||||
return orderInfo;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
server:
|
||||
port: 8000
|
||||
port: 8010
|
||||
spring:
|
||||
main:
|
||||
allow-circular-references: true
|
||||
|
|
@ -29,7 +29,7 @@ spring:
|
|||
|
||||
redis:
|
||||
#数据库索引
|
||||
database: ${REDIS_DB:0}
|
||||
database: ${REDIS_DB:9}
|
||||
host: ${REDIS_HOST:127.0.0.1}
|
||||
port: ${REDIS_PORT:6379}
|
||||
password: ${REDIS_PWD:}
|
||||
|
|
|
|||
Loading…
Reference in New Issue