no message
parent
f3a9395e7f
commit
aef1578bf1
|
|
@ -1,7 +1,7 @@
|
|||
package com.youchain.utils;
|
||||
|
||||
import cn.hutool.json.JSONObject;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.compress.utils.IOUtils;
|
||||
|
||||
|
|
@ -62,6 +62,9 @@ public class HttpPostUtil {
|
|||
System.out.println("token:"+token);
|
||||
InputStream instr = null;
|
||||
String str = "";
|
||||
int i=1;
|
||||
boolean bit=false;
|
||||
while (true) {
|
||||
try {
|
||||
URL url = new URL(api_url);
|
||||
URLConnection urlCon = url.openConnection();
|
||||
|
|
@ -83,10 +86,27 @@ public class HttpPostUtil {
|
|||
String ResponseString = new String(bis, "UTF-8");
|
||||
if ((ResponseString == null) || ("".equals(ResponseString.trim()))) {
|
||||
System.out.println("返回空");
|
||||
}else {
|
||||
JSONObject jsonObject=JSONObject.parseObject(ResponseString);
|
||||
if (jsonObject.getString("code").equals("0")){
|
||||
bit=true;
|
||||
}
|
||||
}
|
||||
str = ResponseString;
|
||||
} catch (Exception e) {
|
||||
log.info(api_url+"接口异常");
|
||||
log.info(api_url + "接口异常");
|
||||
} finally {
|
||||
if (i>3||bit==true){
|
||||
break;
|
||||
}
|
||||
try {
|
||||
Thread.sleep(5000);
|
||||
} catch (InterruptedException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
// 跳出循环
|
||||
i=i+1;
|
||||
}
|
||||
}
|
||||
return str;
|
||||
}
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -15,6 +15,7 @@
|
|||
*/
|
||||
package com.youchain.rest;
|
||||
|
||||
import com.youchain.annotation.AnonymousAccess;
|
||||
import com.youchain.utils.SecurityUtils;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
|
|
@ -61,7 +62,7 @@ public class LogController {
|
|||
}
|
||||
@GetMapping
|
||||
@ApiOperation("日志查询")
|
||||
@PreAuthorize("@el.check()")
|
||||
@AnonymousAccess
|
||||
public ResponseEntity<Object> queryLog(LogQueryCriteria criteria, Pageable pageable){
|
||||
criteria.setLogType("INFO");
|
||||
return new ResponseEntity<>(logService.queryAll(criteria,pageable), HttpStatus.OK);
|
||||
|
|
@ -77,7 +78,7 @@ public class LogController {
|
|||
|
||||
@GetMapping(value = "/error")
|
||||
@ApiOperation("错误日志查询")
|
||||
@PreAuthorize("@el.check()")
|
||||
@AnonymousAccess
|
||||
public ResponseEntity<Object> queryErrorLog(LogQueryCriteria criteria, Pageable pageable){
|
||||
criteria.setLogType("ERROR");
|
||||
return new ResponseEntity<>(logService.queryAll(criteria,pageable), HttpStatus.OK);
|
||||
|
|
|
|||
|
|
@ -37,6 +37,8 @@ public class LogQueryCriteria {
|
|||
|
||||
@Query
|
||||
private String logType;
|
||||
@Query(type = Query.Type.RIGHT_LIKE)
|
||||
private String description;
|
||||
|
||||
@Query(type = Query.Type.BETWEEN)
|
||||
private List<Timestamp> createTime;
|
||||
|
|
|
|||
|
|
@ -18,5 +18,5 @@ public class MissionStateCallback {
|
|||
String missionStatus;
|
||||
/* 当前点位*/
|
||||
@ApiModelProperty(value = "当前点位")
|
||||
String slotCode;
|
||||
String slotCode="222";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -44,4 +44,5 @@ public interface StockRepository extends JpaRepository<Stock, Long>, JpaSpecific
|
|||
*/
|
||||
@Query(value = "SELECT * FROM base_stock u WHERE u.code = ?1 ", nativeQuery = true)
|
||||
Stock getStockByCode(String code);
|
||||
Stock findFirstByStatus(String status);
|
||||
}
|
||||
|
|
@ -120,7 +120,7 @@ public class PointController {
|
|||
ApiError apiError = ApiError.errorJosn(BAD_REQUEST.value(), "找不到库区" + areaCode);
|
||||
return new ResponseEntity(apiError, HttpStatus.valueOf(apiError.getStatus()));
|
||||
}
|
||||
Point point = pointService.getPoint(code, null, null, null);
|
||||
Point point = pointRepository.findByCode(code);
|
||||
if (point == null) {
|
||||
point = new Point();
|
||||
point.setCode(code);
|
||||
|
|
|
|||
|
|
@ -97,7 +97,7 @@ public class StockController {
|
|||
int j=0;
|
||||
String code=readAll.get(i).get("代码").toString().trim();
|
||||
String stockTypeCode=readAll.get(i).get("类型").toString().trim();
|
||||
String pointCode=readAll.get(i).get("点位").toString().trim();
|
||||
// String pointCode=readAll.get(i).get("点位").toString().trim();
|
||||
StockType st=stockTypeService.findByCode(stockTypeCode);
|
||||
if(code==null || code.length()<=0){
|
||||
break;
|
||||
|
|
@ -112,19 +112,19 @@ public class StockController {
|
|||
stock.setCode(code);
|
||||
stock.setName(code);
|
||||
stock.setStatus(BaseStatus.FREE);
|
||||
if (ImportEntityUtils.stringFlag(pointCode)){
|
||||
/*if (ImportEntityUtils.stringFlag(pointCode)){
|
||||
Point point=pointRepository.findByCode(pointCode);
|
||||
stock.setPoint(point);
|
||||
}
|
||||
}*/
|
||||
stock.setEnabled(true);
|
||||
stock.setStockType(st);
|
||||
stock.setDept(UserUtils.getDept());
|
||||
stockService.create(stock);
|
||||
}else{
|
||||
if (ImportEntityUtils.stringFlag(pointCode)){
|
||||
/*if (ImportEntityUtils.stringFlag(pointCode)){
|
||||
Point point=pointRepository.findByCode(pointCode);
|
||||
stock.setPoint(point);
|
||||
}
|
||||
}*/
|
||||
stock.setCode(code);
|
||||
stock.setName(code);
|
||||
stock.setStockType(st);
|
||||
|
|
|
|||
|
|
@ -112,7 +112,7 @@ public class AgvTaskController {
|
|||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
@PostMapping("/closeAgvTask")
|
||||
@Log("关闭agvTask")
|
||||
@Log("取消搬运任务")
|
||||
@AnonymousAccess
|
||||
public ResponseEntity<Object> closeAgvTask(@RequestBody Long id) {
|
||||
agvTaskService.closeAgvTask(id);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,82 @@
|
|||
package com.youchain.businessdata.rest;
|
||||
|
||||
import com.youchain.annotation.AnonymousAccess;
|
||||
import com.youchain.annotation.Log;
|
||||
import com.youchain.appupdate.inputJson.MissionStateCallback;
|
||||
import com.youchain.businessdata.domain.AgvTask;
|
||||
import com.youchain.businessdata.domain.ItemKey;
|
||||
import com.youchain.businessdata.domain.Task;
|
||||
import com.youchain.businessdata.inputJson.ReturnIssueInfo;
|
||||
import com.youchain.businessdata.inputJson.ReturnIssueInfoParams;
|
||||
import com.youchain.businessdata.inputJson.ReturnMoInfo;
|
||||
import com.youchain.businessdata.inputJson.ReturnMoParams;
|
||||
import com.youchain.businessdata.repository.AgvTaskRepository;
|
||||
import com.youchain.businessdata.repository.InventoryRepository;
|
||||
import com.youchain.businessdata.repository.TaskRepository;
|
||||
import com.youchain.businessdata.service.AgvTaskService;
|
||||
import com.youchain.businessdata.service.MlsService;
|
||||
import com.youchain.businessdata.service.OrderService;
|
||||
import com.youchain.businessdata.service.TaskService;
|
||||
import com.youchain.businessdata.service.dto.AgvTaskDto;
|
||||
import com.youchain.businessdata.service.dto.OrderDto;
|
||||
import com.youchain.exception.handler.ApiResult;
|
||||
import com.youchain.service.LogService;
|
||||
import com.youchain.utils.BizStatus;
|
||||
import com.youchain.utils.UrlApi;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.sql.Timestamp;
|
||||
import java.util.Date;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@Api(tags = "KMReS")
|
||||
@RequestMapping("/api/amr")
|
||||
@Slf4j
|
||||
public class KMReSAgvTaskController {
|
||||
|
||||
private final KMReSController kmReSController;
|
||||
private final AgvTaskRepository agvTaskRepository;
|
||||
|
||||
@PostMapping("/cancelAgvTasks")
|
||||
@Log("取消搬运任务")
|
||||
@ApiOperation("取消搬运任务")
|
||||
@AnonymousAccess
|
||||
public ResponseEntity<Object> closeAgvTask(@RequestBody Long id) {
|
||||
AgvTask agvTask=agvTaskRepository.getById(Math.toIntExact(id));
|
||||
MissionStateCallback missionStateCallback=new MissionStateCallback();
|
||||
missionStateCallback.setMissionStatus(BizStatus.CANCEL);
|
||||
missionStateCallback.setMissionCode(agvTask.getJobForce());
|
||||
missionStateCallback.setContainerCode(agvTask.getStockCode());
|
||||
kmReSController.missionStateCallbackChild(missionStateCallback);
|
||||
return new ResponseEntity<>(ApiResult.fail(200, "操作成功", null),HttpStatus.OK);
|
||||
}
|
||||
@PostMapping("/pickerSendAgvTasks")
|
||||
@Log("完成搬运任务")
|
||||
@ApiOperation("完成搬运任务")
|
||||
@AnonymousAccess
|
||||
public ResponseEntity<Object> pickerSendAgvTask(@RequestBody Long id) {
|
||||
AgvTask agvTask=agvTaskRepository.getById(Math.toIntExact(id));
|
||||
MissionStateCallback missionStateCallback=new MissionStateCallback();
|
||||
missionStateCallback.setMissionStatus(BizStatus.PICKER_SEND);
|
||||
missionStateCallback.setMissionCode(agvTask.getJobForce());
|
||||
missionStateCallback.setContainerCode(agvTask.getStockCode());
|
||||
missionStateCallback.setSlotCode(agvTask.getEndSlotCode());
|
||||
kmReSController.missionStateCallbackChild(missionStateCallback);
|
||||
return new ResponseEntity<>(ApiResult.fail(200, "操作成功", null),HttpStatus.OK);
|
||||
}
|
||||
}
|
||||
|
|
@ -4,6 +4,7 @@ import com.youchain.annotation.Log;
|
|||
import com.youchain.annotation.AnonymousAccess;
|
||||
import com.youchain.appupdate.inputJson.MissionStateCallback;
|
||||
import com.youchain.businessdata.domain.AgvTask;
|
||||
import com.youchain.businessdata.domain.Inventory;
|
||||
import com.youchain.businessdata.domain.ItemKey;
|
||||
import com.youchain.businessdata.domain.Task;
|
||||
import com.youchain.businessdata.inputJson.ReturnIssueInfo;
|
||||
|
|
@ -11,6 +12,7 @@ import com.youchain.businessdata.inputJson.ReturnIssueInfoParams;
|
|||
import com.youchain.businessdata.inputJson.ReturnMoInfo;
|
||||
import com.youchain.businessdata.inputJson.ReturnMoParams;
|
||||
import com.youchain.businessdata.repository.AgvTaskRepository;
|
||||
import com.youchain.businessdata.repository.InventoryRepository;
|
||||
import com.youchain.businessdata.repository.TaskRepository;
|
||||
import com.youchain.businessdata.service.AgvTaskService;
|
||||
import com.youchain.businessdata.service.MlsService;
|
||||
|
|
@ -48,6 +50,7 @@ public class KMReSController {
|
|||
private final AgvTaskService agvTaskService;
|
||||
private final AgvTaskRepository agvTaskRepository;
|
||||
private final TaskRepository taskRepository;
|
||||
private final InventoryRepository inventoryRepository;
|
||||
private final TaskService taskService;
|
||||
private final OrderService orderService;
|
||||
private final MlsService mlsService;
|
||||
|
|
@ -59,6 +62,11 @@ public class KMReSController {
|
|||
@AnonymousAccess
|
||||
public ResponseEntity<Object> missionStateCallback(@RequestBody MissionStateCallback missionStateCallback) {
|
||||
System.out.println("接口任务回调:"+missionStateCallback.toString());
|
||||
missionStateCallbackChild(missionStateCallback);
|
||||
return ResponseEntity.ok(ApiResult.success(HttpStatus.OK.value(), "", ""));
|
||||
}
|
||||
|
||||
public void missionStateCallbackChild(MissionStateCallback missionStateCallback) {
|
||||
String missionCode = missionStateCallback.getMissionCode(); // 作业 id
|
||||
String containerCode = missionStateCallback.getContainerCode(); // 容器编号
|
||||
String missionStatus = missionStateCallback.getMissionStatus(); // 作业当前状态
|
||||
|
|
@ -74,7 +82,6 @@ public class KMReSController {
|
|||
asnTask(id, missionStatus,slotCode);
|
||||
}
|
||||
}
|
||||
return ResponseEntity.ok(ApiResult.success(HttpStatus.OK.value(), "", ""));
|
||||
}
|
||||
|
||||
public void asnTask(String id, String missionStatus, String slotCode) {
|
||||
|
|
@ -82,12 +89,9 @@ public class KMReSController {
|
|||
AgvTaskDto agvTaskDto = agvTaskService.findById(Integer.parseInt(id));
|
||||
AgvTask agvTask = agvTaskService.toEntity(agvTaskDto);
|
||||
Task task = getFirstTask(agvTask.getId());
|
||||
/*if (agvTask.getEndSlotCode().equals(slotCode)){
|
||||
missionStatus="PICKER_SEND";
|
||||
}*/
|
||||
agvTaskService.agvTaskCallback(agvTask, task, missionStatus);
|
||||
|
||||
if (missionStatus.equals("PICKER_SEND")) {
|
||||
if (missionStatus.equals(BizStatus.PICKER_SEND)) {
|
||||
CompletableFuture.runAsync(() -> {
|
||||
returnMo(task.getBillCode());// 回传MO信息
|
||||
});
|
||||
|
|
@ -95,9 +99,9 @@ public class KMReSController {
|
|||
}
|
||||
|
||||
public void pickTask(String id, String containerCode, String missionStatus) {
|
||||
if ("CANCELED".equals(missionStatus)) {
|
||||
if (BizStatus.CANCEL.equals(missionStatus)) {
|
||||
cancelAgvTasks(id);
|
||||
} else if ("PICKER_SEND".equals(missionStatus)){
|
||||
} else if (BizStatus.PICKER_SEND.equals(missionStatus)){
|
||||
AgvTask agvTask = agvTaskRepository.getById(Integer.valueOf(id));
|
||||
Task task = getFirstTask(agvTask.getId());
|
||||
agvTaskService.agvTaskCallback(agvTask, missionStatus, containerCode);
|
||||
|
|
@ -110,13 +114,23 @@ public class KMReSController {
|
|||
}
|
||||
|
||||
public void cancelAgvTasks(String id) {
|
||||
List<AgvTask> agvTaskList = agvTaskService.findByjobCode(id);
|
||||
for (AgvTask agvTask : agvTaskList) {
|
||||
AgvTask agvTask = agvTaskRepository.getById(Integer.valueOf(id));
|
||||
if (!agvTask.getStatus().equals(BizStatus.FINISH)) {
|
||||
agvTask.setStatus(BizStatus.CANCEL);
|
||||
agvTask.setEndTime(new Timestamp(new Date().getTime()));
|
||||
agvTaskService.update(agvTask);
|
||||
/* 取消Task*//*
|
||||
List<Task> taskList=taskRepository.getAgvTaskList(agvTask.getId());
|
||||
for (Task task:taskList){
|
||||
task.setTaskStatus(BizStatus.CANCEL);
|
||||
taskRepository.save(task);
|
||||
if (task.getInvId()!=null) {
|
||||
*//* 退回库存*//*
|
||||
Inventory inventory = inventoryRepository.getById(task.getInvId());
|
||||
inventory.setQueuedQty(0d);
|
||||
inventoryRepository.save(inventory);
|
||||
}
|
||||
}*/
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -89,12 +89,12 @@ public class MlsController {
|
|||
@AnonymousAccess
|
||||
@Log("叫料指令")
|
||||
@ApiOperation("叫料指令")
|
||||
public ResponseEntity<Object> getIssueInfo(@RequestBody IssueInfo issueInfo) {
|
||||
/*try {
|
||||
public synchronized ResponseEntity<Object> getIssueInfo(@RequestBody IssueInfo issueInfo) {
|
||||
try {
|
||||
mlsService.getIssueInfo(issueInfo);
|
||||
} catch (Exception e) {
|
||||
return new ResponseEntity<>(ApiResult.success(BAD_REQUEST.value(), e.getMessage(), ""), HttpStatus.BAD_REQUEST);
|
||||
}*/
|
||||
mlsService.getIssueInfo(issueInfo);
|
||||
}
|
||||
return new ResponseEntity<>(ApiResult.success(OK.value(), "", ""), HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -105,7 +105,7 @@ public interface TaskService {
|
|||
* @param taskId
|
||||
* @throws Exception
|
||||
*/
|
||||
void pickConfirm(long taskId,double pickedQuantity) throws Exception;
|
||||
void pickConfirm(long taskId,double pickedQuantity);
|
||||
|
||||
/**
|
||||
* 退货
|
||||
|
|
|
|||
|
|
@ -379,7 +379,7 @@ public class AgvTaskServiceImpl implements AgvTaskService {
|
|||
@Transactional(rollbackFor = Exception.class)
|
||||
public void agvTaskCallback(AgvTask agvTask, Task task, String status) {
|
||||
|
||||
if (status.equals("PICKER_SEND")) {
|
||||
if (status.equals(BizStatus.PICKER_SEND)) {
|
||||
//入库
|
||||
if (agvTask.getType().equals(BizStatus.ASN)&&task!=null) {
|
||||
//增加库存
|
||||
|
|
@ -420,10 +420,13 @@ public class AgvTaskServiceImpl implements AgvTaskService {
|
|||
/* 解绑容器库位*/
|
||||
Stock stock=task.getSrcStock();
|
||||
Point point=stock.getPoint();
|
||||
if (point!=null){
|
||||
point.setStatus(BaseStatus.FREE);
|
||||
pointRepository.save(point);
|
||||
}
|
||||
stock.setStatus(BaseStatus.FREE);
|
||||
stock.setPoint(null);
|
||||
stock.setName(stock.getCode());
|
||||
stockRepository.save(stock);
|
||||
/*关闭Task*/
|
||||
task.setTaskStatus(BizStatus.CLOSE);
|
||||
|
|
@ -441,17 +444,17 @@ public class AgvTaskServiceImpl implements AgvTaskService {
|
|||
@Transactional(rollbackFor = Exception.class)
|
||||
public void agvTaskCallback(AgvTask agvTask, String status, String containerCode) {
|
||||
|
||||
if (status.equals("PICKER_SEND")) {
|
||||
if (status.equals(BizStatus.PICKER_SEND)) {
|
||||
//小件:AGV把料箱放到料箱车上扣减库存
|
||||
|
||||
List<Task> taskList = taskRepository.getAgvTaskList(agvTask.getId());
|
||||
//扣除库存
|
||||
for (Task task : taskList) {
|
||||
try {
|
||||
taskService.pickConfirm(task.getId(), task.getPlanQty());
|
||||
/*try {
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e.getMessage());
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
agvTask.setStatus(BizStatus.FINISH);
|
||||
|
|
|
|||
|
|
@ -104,27 +104,15 @@ public class InventoryServiceImpl implements InventoryService {
|
|||
List<Map<String, Object>> list = new ArrayList<>();
|
||||
for (InventoryDto inventory : all) {
|
||||
Map<String, Object> map = new LinkedHashMap<>();
|
||||
map.put("单据号", inventory.getBillCode());
|
||||
map.put("物料属性", inventory.getItemKey());
|
||||
map.put("点位", inventory.getPoint());
|
||||
map.put("点位号", inventory.getPointCode());
|
||||
map.put("容器", inventory.getStock());
|
||||
map.put("工单编号", inventory.getBillCode());
|
||||
map.put("MO票", inventory.getItemKey().getPropC1());
|
||||
map.put("物料编码", inventory.getItemKey().getItem().getCode());
|
||||
map.put("物料名称", inventory.getItemKey().getItem().getName());
|
||||
map.put("库位号", inventory.getPointCode());
|
||||
map.put("容器号", inventory.getStockCode());
|
||||
map.put("大容器", inventory.getBigStock());
|
||||
map.put("数量", inventory.getQuantity());
|
||||
map.put("分配数", inventory.getQueuedQty());
|
||||
map.put("重量", inventory.getWeight());
|
||||
map.put("体积", inventory.getVolume());
|
||||
map.put("描述", inventory.getDescription());
|
||||
map.put("是否锁定", inventory.getBeLock());
|
||||
map.put("是否不良品", inventory.getBeReject());
|
||||
map.put("状态", inventory.getStatus());
|
||||
map.put("存货日期", inventory.getStorageDate());
|
||||
map.put("仓库ID", inventory.getDept());
|
||||
map.put("创建人", inventory.getCreateBy());
|
||||
map.put("修改人", inventory.getUpdateBy());
|
||||
map.put("创建时间", inventory.getCreateTime());
|
||||
map.put("修改时间", inventory.getUpdateTime());
|
||||
map.put("占用数", inventory.getQueuedQty());
|
||||
map.put("入库时间", inventory.getCreateTime());
|
||||
list.add(map);
|
||||
}
|
||||
FileUtil.downloadExcel(list, response);
|
||||
|
|
|
|||
|
|
@ -197,7 +197,7 @@ public class MoServiceImpl implements MoService {
|
|||
|
||||
// 生成AGV任务和入库任务
|
||||
createTasks(item, stock, srcPoint, endPoint, moDto.getLabelNo(), moDto, orderDto);
|
||||
|
||||
stock.setName(labelNo);
|
||||
// 更新容器状态和目标点位状态
|
||||
updateStockAndEndPoint(stock, endPoint);
|
||||
|
||||
|
|
|
|||
|
|
@ -152,7 +152,7 @@ public class TaskServiceImpl implements TaskService {
|
|||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public synchronized void pickConfirm(long taskId, double pickedQuantity) throws Exception {
|
||||
public synchronized void pickConfirm(long taskId, double pickedQuantity) {
|
||||
if (taskId > 0) {
|
||||
TaskDto taskDto = findById(taskId);
|
||||
Task task = taskMapper.toEntity(taskDto);//Dto转实体
|
||||
|
|
@ -172,6 +172,10 @@ public class TaskServiceImpl implements TaskService {
|
|||
}
|
||||
Stock stock=inv.getStock();
|
||||
Point point=stock.getPoint();
|
||||
/*重置料箱名称为料箱名称*/
|
||||
if (stock.getName()!=stock.getCode()){
|
||||
stock.setName(stock.getCode());
|
||||
}
|
||||
stock.setStatus(BaseStatus.FREE);
|
||||
stock.setPoint(null);
|
||||
stockRepository.save(stock);
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@
|
|||
package com.youchain.modules.quartz.rest;
|
||||
|
||||
|
||||
import com.youchain.annotation.AnonymousAccess;
|
||||
import com.youchain.annotation.Log;
|
||||
import com.youchain.exception.BadRequestException;
|
||||
import com.youchain.modules.quartz.domain.QuartzJob;
|
||||
|
|
@ -74,7 +75,7 @@ public class QuartzJobController {
|
|||
|
||||
@ApiOperation("查询任务执行日志")
|
||||
@GetMapping(value = "/logs")
|
||||
@PreAuthorize("@el.check('timing:list')")
|
||||
@AnonymousAccess
|
||||
public ResponseEntity<Object> queryQuartzJobLog(JobQueryCriteria criteria, Pageable pageable){
|
||||
return new ResponseEntity<>(quartzJobService.queryAllLog(criteria,pageable), HttpStatus.OK);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,7 +32,8 @@ public class JobQueryCriteria {
|
|||
|
||||
@Query
|
||||
private Boolean isSuccess;
|
||||
|
||||
@Query(propName="exceptionDetail",type = Query.Type.INNER_LIKE)
|
||||
private String errorDialog;
|
||||
@Query(type = Query.Type.BETWEEN)
|
||||
private List<Timestamp> createTime;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ public class moTask {
|
|||
mlsService.getMoInfo(resultJson);
|
||||
long time = System.currentTimeMillis() - startTime;
|
||||
// 保存日志
|
||||
logService.saveLogInfo(moInfo, UrlApi.publicApi, resultJson, "获取MO票信息", time, "INFO");
|
||||
logService.saveLogInfo(moInfo, UrlApi.publicApi, null, "获取MO票信息", time, "INFO");
|
||||
}
|
||||
}
|
||||
@Log("获取MLS Mo票数据")
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ public class orderTask {
|
|||
mlsService.getOrderInfo(resultJson);
|
||||
long time = System.currentTimeMillis() - startTime;
|
||||
// 保存日志
|
||||
logService.saveLogInfo(orderInfo, UrlApi.publicApi, resultJson, "获取送货单信息", time,"INFO");
|
||||
logService.saveLogInfo(orderInfo, UrlApi.publicApi, null, "获取送货单信息", time,"INFO");
|
||||
}
|
||||
}
|
||||
@Log("获取MLS送货单数据")
|
||||
|
|
|
|||
|
|
@ -32,23 +32,19 @@ public class pickTask {
|
|||
private static final int MAX_TASK_COUNT = 5;
|
||||
|
||||
private static final long TIMEOUT_MS = 2*60*1000;
|
||||
private long lastTaskTime = System.currentTimeMillis();
|
||||
|
||||
public void pickTask() {
|
||||
// 下发出库任务
|
||||
List<AgvTask> agvTaskList = agvTaskService.queryByAgvTask(BizStatus.OPEN,BizStatus.PICK);
|
||||
if (agvTaskList.size() > 0) {
|
||||
if ((agvTaskList.size() == MAX_TASK_COUNT)) {
|
||||
Result(agvTaskService.sendAgvTaskLXImpl(agvTaskList));
|
||||
lastTaskTime = System.currentTimeMillis();
|
||||
/* 第一个任务的创建视角*/
|
||||
long lastTaskTime = agvTaskList.get(0).getCreateTime().getTime();
|
||||
if ((agvTaskList.size() >= MAX_TASK_COUNT)) {
|
||||
/* 数量大于等于5时*/
|
||||
// 取集合中的前五个任务合并发送
|
||||
List<AgvTask> agvTasks=agvTaskList.subList(0, MAX_TASK_COUNT);
|
||||
Result(agvTaskService.sendAgvTaskLXImpl(agvTasks));
|
||||
}else if((System.currentTimeMillis() - lastTaskTime >=TIMEOUT_MS) ){
|
||||
if(agvTaskList.size()>MAX_TASK_COUNT){
|
||||
List<AgvTask> newAgvTask = agvTaskList.subList(0,MAX_TASK_COUNT);
|
||||
Result(agvTaskService.sendAgvTaskLXImpl(newAgvTask));
|
||||
}else{
|
||||
Result(agvTaskService.sendAgvTaskLXImpl(agvTaskList));
|
||||
lastTaskTime = System.currentTimeMillis();
|
||||
}
|
||||
} else {
|
||||
throw new RuntimeException("出库料箱任务未满足条件(不满足五个料箱需等待2分钟)!");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,8 @@ package com.youchain.modules.quartz.task;
|
|||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.github.s7connector.api.S7Connector;
|
||||
import com.youchain.basicdata.domain.Stock;
|
||||
import com.youchain.basicdata.repository.StockRepository;
|
||||
import com.youchain.businessdata.rest.MoController;
|
||||
import com.youchain.businessdata.rest.PlcController;
|
||||
import com.youchain.businessdata.service.MoService;
|
||||
|
|
@ -10,8 +12,7 @@ import com.youchain.exception.handler.ApiResult;
|
|||
import com.youchain.modules.quartz.domain.QuartzLog;
|
||||
import com.youchain.modules.quartz.repository.QuartzLogRepository;
|
||||
import com.youchain.service.LogService;
|
||||
import com.youchain.utils.S7ConnectorUtils;
|
||||
import com.youchain.utils.UrlApi;
|
||||
import com.youchain.utils.*;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
|
|
@ -30,14 +31,16 @@ public class plcTask {
|
|||
private final PlcController plcController;
|
||||
private final MoService moService;
|
||||
private final TaskService taskService;
|
||||
private final StockRepository stockRepository;
|
||||
private final QuartzLogRepository quartzLogRepository;
|
||||
public LogService logService;
|
||||
@Autowired
|
||||
public plcTask(PlcController plcController,MoService moService,TaskService taskService,QuartzLogRepository quartzLogRepository) {
|
||||
public plcTask(PlcController plcController,MoService moService,TaskService taskService,QuartzLogRepository quartzLogRepository,StockRepository stockRepository) {
|
||||
this.plcController = plcController;
|
||||
this.moService = moService;
|
||||
this.taskService = taskService;
|
||||
this.quartzLogRepository = quartzLogRepository;
|
||||
this.stockRepository = stockRepository;
|
||||
}
|
||||
|
||||
public synchronized void plcTask() {
|
||||
|
|
@ -47,9 +50,19 @@ public class plcTask {
|
|||
// String mo="LB]A0006897]240625]12125300000145]200]240625104089]]";
|
||||
// String lx="05010010";
|
||||
// LB]A0006907]240522]12125300001741]50.00]240522554318]]
|
||||
// LB]A0006897]240625]1212504010001300000145]200]240625104089]]
|
||||
// LB]A0006897]240625]12125300000145]200]240625104089]]
|
||||
String mo = S7ConnectorUtils.readMo(S7ConnectorUtils.s7Connector,12);
|
||||
String lx = S7ConnectorUtils.readMo(S7ConnectorUtils.s7Connector,0);
|
||||
if(mo.length()>10){
|
||||
if (!mo.substring(0, 2).equals("LB")){
|
||||
/*MO票不全,补全MO票,获取料箱吗*/
|
||||
mo=lx+mo;
|
||||
Stock stock = stockRepository.findFirstByStatus(BaseStatus.FREE);
|
||||
if (stock!=null){
|
||||
lx=stock.getCode();
|
||||
}
|
||||
}
|
||||
}
|
||||
if (mo.length()>0&&lx.length()>0){
|
||||
jsonObject.put("mo",mo);
|
||||
jsonObject.put("lx",lx);
|
||||
|
|
@ -89,20 +102,5 @@ public class plcTask {
|
|||
}else {
|
||||
throw new RuntimeException("数据格式错误,MO票" + mo+",料箱码"+lx+",错误信息:");
|
||||
}
|
||||
/*try {
|
||||
S7ConnectorUtils.connect();
|
||||
JSONObject jsonObject=new JSONObject();
|
||||
String mo = S7ConnectorUtils.readMo(S7ConnectorUtils.s7Connector,12);
|
||||
String lx = S7ConnectorUtils.readMo(S7ConnectorUtils.s7Connector,0);
|
||||
if (mo.length()>0&&lx.length()>0){
|
||||
jsonObject.put("mo",mo);
|
||||
jsonObject.put("lx",lx);
|
||||
plcController.scanMo(jsonObject+"");
|
||||
}else {
|
||||
throw new RuntimeException("数据格式错误:"+mo+"|"+lx);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("异常信息" + e.getMessage());
|
||||
}*/
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,6 +29,8 @@ public interface BizStatus {
|
|||
* 出入库状态-已取消||任务状态-已取消
|
||||
*/
|
||||
public static String CANCEL = "CANCEL";
|
||||
/* 放料*/
|
||||
public static String PICKER_SEND = "PICKER_SEND";
|
||||
/**
|
||||
* 出入库状态-已关闭
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -15,9 +15,9 @@ spring:
|
|||
db-type: com.alibaba.druid.pool.DruidDataSource
|
||||
driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
|
||||
# url: jdbc:log4jdbc:mysql://${DB_HOST:47.100.54.81}:${DB_PORT:53306}/${DB_NAME:hefeihvac_wms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false
|
||||
# url: jdbc:log4jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:hefeihvac_wms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false
|
||||
url: jdbc:log4jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:hefeihvac_wms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false
|
||||
# url: jdbc:log4jdbc:mysql://${DB_HOST:10.175.163.49}:${DB_PORT:3306}/${DB_NAME:hefeihvac_wms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false
|
||||
url: jdbc:log4jdbc:mysql://${DB_HOST:10.173.188.206}:${DB_PORT:53306}/${DB_NAME:wms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false
|
||||
# url: jdbc:log4jdbc:mysql://${DB_HOST:10.173.188.206}:${DB_PORT:53306}/${DB_NAME:wms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false
|
||||
username: ${DB_USER:root}
|
||||
# password: ${DB_PWD:Youchain@56}
|
||||
password: ${DB_PWD:123456}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ spring:
|
|||
freemarker:
|
||||
check-template-location: false
|
||||
profiles:
|
||||
active: dev
|
||||
active: prod
|
||||
jackson:
|
||||
time-zone: GMT+8
|
||||
data:
|
||||
|
|
|
|||
Loading…
Reference in New Issue