init:初始化acs
This commit is contained in:
@@ -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);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user