init:初始化acs

This commit is contained in:
2024-01-23 17:21:42 +08:00
parent 57677504b0
commit 3ce5b790ef
1494 changed files with 168815 additions and 161 deletions

View File

@@ -1,72 +0,0 @@
package org.nl.wms.ext.acs.autotask;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.nl.wms.ext.mms.service.WmsToMmsService;
import org.nl.wms.pdm.record.service.IPdmBdRequestMaterialRecordService;
import org.nl.wms.pdm.record.service.dao.PdmBdRequestMaterialRecord;
import org.nl.wms.pdm.workorder.service.IPdmBdWorkorderService;
import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* @Author: lyd
* @Description: 自动请求叫料
* @Date: 2023/11/8
*/
@Slf4j
@Component
@Order(value = 1)
public class AutoCallMaterials {
@Autowired
private IPdmBdWorkorderService workorderService;
@Autowired
private IPdmBdRequestMaterialRecordService requestMaterialRecordService;
@Autowired
private WmsToMmsService wmsToMmsService;
@SneakyThrows
public void run() {
// 获取叫料工单
List<PdmBdWorkorder> workorderList = workorderService.getNeedCallMaterial();
// 判断是否可以叫料,可以就下发给混碾系统
workorderList.forEach(workorder -> {
// 达到工单的数量
if (workorder.getReal_weight().compareTo(workorder.getPlan_weight()) >= 0) {
// 不需要请求,等待工单完工
return;
}
// 校验记录表是否达到两条
List<PdmBdRequestMaterialRecord> list = requestMaterialRecordService.list(
new LambdaQueryWrapper<PdmBdRequestMaterialRecord>()
.eq(PdmBdRequestMaterialRecord::getDevice_code, workorder.getPoint_code())
.eq(PdmBdRequestMaterialRecord::getIs_delete, false));
if (list.size() >= 2) {
return;
}
try {
// 下发混碾
wmsToMmsService.addRequestMaterial(workorder);
log.info("自动下发混碾: {}", workorder);
} catch (Exception e) {
log.error("下发混碾失败,{}", e.getMessage());
log.error("下发混碾失败数据:{}", workorder);
return;
}
try {
// 记录数据
PdmBdRequestMaterialRecord requestMaterialRecord = requestMaterialRecordService.recordData(workorder);
log.info("记录自动要料信息:{}", requestMaterialRecord);
} catch (Exception e) {
log.error("插入LMS数据库失败{}", e.getMessage());
log.error("插入LMS数据库失败数据{}", workorder);
}
});
}
}

View File

@@ -1,89 +0,0 @@
package org.nl.wms.ext.acs.autotask;
import cn.hutool.http.HttpStatus;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.nl.config.SpringContextHolder;
import org.nl.system.service.notice.ISysNoticeService;
import org.nl.wms.ext.acs.service.WmsToAcsService;
import org.nl.wms.ext.acs.service.dto.to.wms.AcsResponse;
import org.nl.wms.pdm.workorder.service.IPdmBdWorkorderService;
import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder;
import org.nl.wms.pdm.workorder.service.dao.vo.AcsWorkOrderVo;
import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum;
import org.nl.wms.sch.task_manage.enums.WorkOrderStatusEnum;
import org.nl.wms.util.TaskUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
/**
* @Author: lyd
* @Description: 自动下发工单给acs
* @Date: 2023/10/30
*/
@Slf4j
@Component
@Order(value = 1)
public class AutoIssueWorkOrder {
@Autowired
private IPdmBdWorkorderService workorderService;
@Autowired
private WmsToAcsService wmsToAcsService;
@Autowired
private ISysNoticeService noticeService;
@SneakyThrows
public void run() {
// 获取压制每台设备的第一条工单
List<PdmBdWorkorder> workorderList = workorderService.getNotIssueOrder();
// 查找该设备未生产的工单去下发
// mark: 使得执行一个工单完成后就提交
AutoIssueWorkOrder bean = SpringContextHolder.getBean(this.getClass());
workorderList.forEach(bean::toIssueWorkOrder);
}
@Transactional(rollbackFor = Exception.class)
public void toIssueWorkOrder(PdmBdWorkorder s) {
// 判断是否有工单
List<PdmBdWorkorder> lists = workorderService.getTheDayProducedWorkOrderByDevice(s.getPoint_code());
if (lists.size() > 0) {
return;
}
// hint: 已生产就退出, 实际上已经不会有这种情况
if (s.getWorkorder_status().equals(WorkOrderStatusEnum.PRODUCING.getCode())
|| s.getWorkorder_code().equals(WorkOrderStatusEnum.ISSUED.getCode())) {
return;
}
AcsWorkOrderVo acsWorkOrderVo = workorderService.toAcsWorkOrderById(s.getWorkorder_id());
// 获取一个下发
List<AcsWorkOrderVo> list = new ArrayList<>();
list.add(acsWorkOrderVo);
PdmBdWorkorder pdmBdWorkorder = workorderService.selectByIdLock(s.getWorkorder_id());
AcsResponse resultForAcs;
try {
resultForAcs = wmsToAcsService.order(list);
log.info("自动下发工单:{}", list);
} catch (Exception e) {
log.error("工单下发异常:" + e.getMessage());
// 通知
noticeService.createNotice("工单下发失败: " + e.getMessage(), "工单下发失败: "
+ acsWorkOrderVo.getWorkorder_code(), NoticeTypeEnum.EXCEPTION.getCode());
return;
}
if (resultForAcs.getCode() != HttpStatus.HTTP_OK) {
// 不成功
noticeService.createNotice(resultForAcs.getMessage(), "工单下发失败: " + acsWorkOrderVo.getWorkorder_code(),
NoticeTypeEnum.EXCEPTION.getCode());
return;
}
// 修改工单数据
pdmBdWorkorder.setWorkorder_status(WorkOrderStatusEnum.ISSUED.getCode());
TaskUtils.setWorkOrderUpdateByAcs(pdmBdWorkorder);
workorderService.updateById(pdmBdWorkorder);
}
}