fix: 看板数据优化
This commit is contained in:
@@ -10,8 +10,8 @@ import lombok.Data;
|
||||
@Data
|
||||
public class MonthlyWorkOrderVo {
|
||||
private String name;
|
||||
private Long order_num;
|
||||
private Long guada_num;
|
||||
private Long residue_num;
|
||||
private String order_num;
|
||||
private String guada_num;
|
||||
private String residue_num;
|
||||
|
||||
}
|
||||
|
||||
@@ -53,15 +53,15 @@ public class CockpitServiceImpl implements CockpitService {
|
||||
return null;
|
||||
});
|
||||
// 3、人员月生产
|
||||
CompletableFuture<List<PersonnelMonthlyProductionVo>> listPersonnelMonthlyProductionFuture = CompletableFuture.supplyAsync(
|
||||
() -> cockPitMapper.getPersonnelMonthlyProductionList(dayShift), pool);
|
||||
listPersonnelMonthlyProductionFuture.thenAccept(result -> {
|
||||
map.put("PersonnelMonthlyProduction", result);
|
||||
}).exceptionally((e) -> {
|
||||
log.error("人员月生产: {}", e.getMessage(), e);
|
||||
map.put("PersonnelMonthlyProduction", null);
|
||||
return null;
|
||||
});
|
||||
// CompletableFuture<List<PersonnelMonthlyProductionVo>> listPersonnelMonthlyProductionFuture = CompletableFuture.supplyAsync(
|
||||
// () -> cockPitMapper.getPersonnelMonthlyProductionList(dayShift), pool);
|
||||
// listPersonnelMonthlyProductionFuture.thenAccept(result -> {
|
||||
// map.put("PersonnelMonthlyProduction", result);
|
||||
// }).exceptionally((e) -> {
|
||||
// log.error("人员月生产: {}", e.getMessage(), e);
|
||||
// map.put("PersonnelMonthlyProduction", null);
|
||||
// return null;
|
||||
// });
|
||||
// 4、生产任务
|
||||
CompletableFuture<List<ProductTaskVo>> listProductionTaskFuture = CompletableFuture.supplyAsync(
|
||||
() -> cockPitMapper.getProductionTaskList(), pool);
|
||||
@@ -69,7 +69,7 @@ public class CockpitServiceImpl implements CockpitService {
|
||||
map.put("ProductionTask", result);
|
||||
}).exceptionally((e) -> {
|
||||
log.error("生产任务: {}", e.getMessage(), e);
|
||||
map.put("ProductionTask", null);
|
||||
map.put("ProductionTask", e);
|
||||
return null;
|
||||
});
|
||||
// 5、当月工单
|
||||
@@ -79,14 +79,13 @@ public class CockpitServiceImpl implements CockpitService {
|
||||
map.put("MonthlyWorkOrder", result);
|
||||
}).exceptionally((e) -> {
|
||||
log.error("当月工单: {}", e.getMessage(), e);
|
||||
map.put("MonthlyWorkOrder", null);
|
||||
map.put("MonthlyWorkOrder", e);
|
||||
return null;
|
||||
});
|
||||
// 提交
|
||||
CompletableFuture<Void> allQuery = CompletableFuture.allOf(
|
||||
listCompletableFuture,
|
||||
listShiftProductionFuture,
|
||||
listPersonnelMonthlyProductionFuture,
|
||||
listProductionTaskFuture,
|
||||
monthlyWorkOrderFuture);
|
||||
CompletableFuture<ConcurrentHashMap<String, Object>> future
|
||||
|
||||
@@ -68,12 +68,12 @@
|
||||
ORDER BY w.team DESC, w.workorder_status
|
||||
</select>
|
||||
<select id="getMonthlyWorkOrderFutureList" resultType="org.nl.wms.cockpit.service.dao.MonthlyWorkOrderVo">
|
||||
SELECT FMATSPEC AS name
|
||||
, FORDER_SUBNUM AS order_num
|
||||
, GUADANSUM AS guada_num
|
||||
, (FORDER_SUBNUM - GUADANSUM) AS residue_num
|
||||
SELECT FMATSPEC AS "name"
|
||||
, FORDER_SUBNUM AS "order_num"
|
||||
, GUADANSUM AS "guada_num"
|
||||
, (FORDER_SUBNUM - GUADANSUM) AS "residue_num"
|
||||
FROM "RTMG"."VIEW_POP_ORDER_SEMINPRO_LMS"
|
||||
WHERE TO_DATE(FPLANSTART_DATE, 'YYYYMMDD') <![CDATA[ >= ]]> TRUNC(SYSDATE, 'MONTH')
|
||||
AND TO_DATE(FPLANSTART_DATE, 'YYYYMMDD') <![CDATA[ < ]]> ADD_MONTHS(TRUNC(SYSDATE, 'MONTH'), 1);
|
||||
AND TO_DATE(FPLANSTART_DATE, 'YYYYMMDD') <![CDATA[ < ]]> ADD_MONTHS(TRUNC(SYSDATE, 'MONTH'), 1)
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
@@ -11,10 +11,15 @@ public interface MdBaseBrickInfoMapper extends BaseMapper<MdBaseBrickInfo> {
|
||||
|
||||
/**
|
||||
* 合格数
|
||||
* @param workorderCode
|
||||
* @return
|
||||
* @param workorderCode 工单号
|
||||
* @return 数字
|
||||
*/
|
||||
int getCountQualifiedQty(String workorderCode);
|
||||
|
||||
/**
|
||||
* 不合格数
|
||||
* @param workorderCode 工单号
|
||||
* @return 数字
|
||||
*/
|
||||
int getCountUnqualifiedQty(String workorderCode);
|
||||
}
|
||||
|
||||
@@ -36,6 +36,7 @@ public class AutoCallMaterials {
|
||||
List<PdmBdWorkorder> workorderList = workorderService.getNeedCallMaterial();
|
||||
// 判断是否可以叫料,可以就下发给混碾系统
|
||||
workorderList.forEach(workorder -> {
|
||||
// 达到工单的数量
|
||||
if (workorder.getReal_weight().compareTo(workorder.getPlan_weight()) >= 0) {
|
||||
// 不需要请求,等待工单完工
|
||||
return;
|
||||
|
||||
@@ -139,7 +139,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
String requestMethodName = param.getString("request_medthod_name");
|
||||
BaseResponse result = BaseResponse.build(requestNo);
|
||||
try {
|
||||
String requestMethodCode = param.getString("request_medthod_code"); // 获取请求方法名
|
||||
String requestMethodCode = param.getString("request_medthod_code");
|
||||
Method method = methodCache.get(StrUtil.toCamelCase(requestMethodCode));
|
||||
if (method == null) {
|
||||
throw new BadRequestException("请求方法不存在");
|
||||
@@ -318,8 +318,10 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
|
||||
// mark: 特殊处理
|
||||
protected int specialHandling(String regionCode, JSONObject param) {
|
||||
int torus = 0; // 无业务:0,分拣剩余0托:1
|
||||
if (regionCode.equals("FJ")) { // 判断是否够码满
|
||||
// 无业务:0,分拣剩余0托:1
|
||||
int torus = 0;
|
||||
// 判断是否够码满
|
||||
if (regionCode.equals("FJ")) {
|
||||
// 分拣需要在这设置特殊值
|
||||
// 校验是否够码满一托
|
||||
boolean enoughCallEmpty = workorderService.isEnoughCallEmpty(param.getString("device_code"));
|
||||
@@ -425,8 +427,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
@Override
|
||||
public BaseResponse applyGetPutStation(JSONObject param) {
|
||||
FeedBackSplitPalletStationRequest request = param.toJavaObject(FeedBackSplitPalletStationRequest.class);
|
||||
String getStation = request.getGet_station(); // 取货点
|
||||
String putStation = request.getPut_station(); // 放货点
|
||||
String getStation = request.getGet_station();
|
||||
String putStation = request.getPut_station();
|
||||
// 查找当前点位中的信息,如果acs没有提供,就获取点位上的数据,如果点位没有,则数据失效
|
||||
SchBasePoint pickupPoint = pointService.getById(getStation);
|
||||
SchBasePoint putPoint = pointService.getById(putStation);
|
||||
@@ -442,10 +444,12 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
PdmBdVehicleBinding vehicleBinding = new PdmBdVehicleBinding();
|
||||
vehicleBinding.setOrigin_vehicle_code(request.getGet_station_vehicle_code());
|
||||
vehicleBinding.setOrigin_vehicle_type(GeneralDefinition.STEEL_TRAY);
|
||||
vehicleBinding.setOrigin_qty(request.getGet_station_qty()); // 当前码垛位的数量
|
||||
// 当前码垛位的数量
|
||||
vehicleBinding.setOrigin_qty(request.getGet_station_qty());
|
||||
vehicleBinding.setTarget_vehicle_code(request.getPut_station_vehicle_code());
|
||||
vehicleBinding.setTarget_vehicle_type(putPoint.getVehicle_type());
|
||||
vehicleBinding.setTarget_qty(request.getPut_station_qty()); // 当前拆垛位的数量
|
||||
// 当前拆垛位的数量
|
||||
vehicleBinding.setTarget_qty(request.getPut_station_qty());
|
||||
vehicleBinding.setGet_station(request.getGet_station());
|
||||
vehicleBinding.setPut_station(request.getPut_station());
|
||||
if (productionTask != null) {
|
||||
@@ -495,6 +499,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
String custerNo = object.getString("custer_no");
|
||||
String orderNo = object.getString("order_no");
|
||||
CusterDo custer;
|
||||
// 都是数据就是id,否则就是名称
|
||||
if (custerNo.matches("\\d+")) {
|
||||
custer = wmsToMesService.getCusterByNo(custerNo);
|
||||
} else {
|
||||
@@ -692,16 +697,6 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
mesMudConsumptionDto.setCREATE_TM(DateUtil.now());
|
||||
mesMudConsumptionDto.setOP_FLAG(GeneralDefinition.NO);
|
||||
log.info("泥料消耗上报参数:{}", mesMudConsumptionDto);
|
||||
// 不在维护lms数据表
|
||||
// PdmBdMudConsumption mudConsumption = new PdmBdMudConsumption();
|
||||
// mudConsumption.setDevice_code(productionTask.getPoint_code());
|
||||
// mudConsumption.setGroup_id(one.getGroup_id());
|
||||
// mudConsumption.setMaterial_id(one.getMaterial_id());
|
||||
// mudConsumption.setWeight(one.getMaterial_weight());
|
||||
// mudConsumption.setCurrent_point(basePoint.getPoint_code());
|
||||
// mudConsumption.setWorkorder_code(productionTask.getWorkorder_code());
|
||||
// mudConsumption.setRaw_material_code(rawMaterialCode);
|
||||
// String id = mudConsumptionService.create(mudConsumption);
|
||||
// 反馈数据给acs
|
||||
taskResponse.setMix_number(one.getMix_times());
|
||||
taskResponse.setIs_standing_finish(GeneralDefinition.YES);
|
||||
@@ -713,6 +708,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
.eq(PdmBdRequestMaterialRecord::getDevice_code, productionTask.getPoint_code())
|
||||
.eq(PdmBdRequestMaterialRecord::getWorkorder_id, productionTask.getWorkorder_code()) // 工单编码
|
||||
.eq(PdmBdRequestMaterialRecord::getIs_delete, false)
|
||||
.eq(PdmBdRequestMaterialRecord::getIs_finish, true)
|
||||
.orderByAsc(PdmBdRequestMaterialRecord::getCreate_time));
|
||||
if (list.size() > 0) {
|
||||
PdmBdRequestMaterialRecord record = list.get(0);
|
||||
@@ -817,10 +813,11 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
*/
|
||||
@Deprecated
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public BaseResponse pressRequestMaterial2(JSONObject param) { // (公共接口进来)只是给我一个下料位(中间位置)
|
||||
public BaseResponse pressRequestMaterial2(JSONObject param) {
|
||||
String requestNo = param.getString("requestNo");
|
||||
// 压机、原材料物料(混碾)、压机工单、叫料时间
|
||||
String deviceCode = param.getString("device_code");// 几号压机下料位
|
||||
// 几号压机下料位
|
||||
String deviceCode = param.getString("device_code");
|
||||
SchBasePoint basePoint = pointService.getById(deviceCode);
|
||||
if (ObjectUtil.isEmpty(basePoint)) {
|
||||
return BaseResponse.responseError(requestNo, "设备号[" + deviceCode + "]不正确!");
|
||||
@@ -910,7 +907,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
vehicleType, GroupBindMaterialStatusEnum.BOUND.getValue());
|
||||
String extData = baseVehiclematerialgroup.getExt_data();
|
||||
PalletizeDto palletizeDto = new PalletizeDto();
|
||||
if (extData != null && !extData.equals("null")) {
|
||||
if (extData != null && !"null".equals(extData)) {
|
||||
// 转成实体
|
||||
palletizeDto = CommonUtils.toJavaObject(extData, PalletizeDto.class);
|
||||
}
|
||||
|
||||
@@ -43,7 +43,6 @@ public class AutoSaveWaitGdyInfo {
|
||||
// 存入表中
|
||||
list.forEach(mesGdyInfoWaitDto -> {
|
||||
mesGdyInfoWaitDto.setMSGID(IdUtil.getSnowflake(1,1).nextIdStr());
|
||||
mesGdyInfoWaitDto.setSEND_TM(DateUtil.now());
|
||||
mesGdyInfoWaitDto.setPRO_SUBUNIT("块");
|
||||
mesGdyInfoWaitDto.setCREATE_TM(DateUtil.now());
|
||||
mesGdyInfoWaitDto.setOP_FLAG(GeneralDefinition.NO);
|
||||
|
||||
@@ -254,6 +254,7 @@
|
||||
mm.material_code AS FPRODUCT_MATERIAL_ID,
|
||||
mm.material_name AS FPRODUCT_MATERIAL_NAME,
|
||||
mm.material_spec AS FMATSPEC,
|
||||
vg.instorage_time AS SEND_TM,
|
||||
mm.material_model AS FMATMODEL,
|
||||
IF(LENGTH(pw.batch_no) > 0,pw.batch_no,'-') AS BATCHNO,
|
||||
p2.ext_point_code AS PRESSUNIT,
|
||||
|
||||
@@ -7,7 +7,7 @@ import lombok.Data;
|
||||
* @Description: 带入窑实体
|
||||
* @Date: 2023/9/22
|
||||
* 二维码
|
||||
* 发送时间
|
||||
* 发送时间: 组盘入库时间
|
||||
* 托盘编号
|
||||
* 物料编码
|
||||
* 物料名称
|
||||
|
||||
@@ -5,6 +5,8 @@ import org.nl.wms.ext.mms.service.WmsToMmsService;
|
||||
import org.nl.wms.ext.mms.service.dao.dto.RequestMaterialDto;
|
||||
import org.nl.wms.ext.mms.service.dao.mapper.MmsRequestMapper;
|
||||
import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder;
|
||||
import org.nl.wms.sch.point.service.ISchBasePointService;
|
||||
import org.nl.wms.sch.point.service.dao.SchBasePoint;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -20,6 +22,8 @@ import java.util.Date;
|
||||
public class WmsToMmsServiceImpl implements WmsToMmsService {
|
||||
@Autowired
|
||||
public MmsRequestMapper mmsRequestMapper;
|
||||
@Autowired
|
||||
private ISchBasePointService pointService;
|
||||
@Override
|
||||
public void addRequestMaterial(PdmBdWorkorder workorder) {
|
||||
// 插入:压机、原材料、生产订单号、插入时间
|
||||
@@ -30,11 +34,12 @@ public class WmsToMmsServiceImpl implements WmsToMmsService {
|
||||
}
|
||||
|
||||
public RequestMaterialDto toRequestMaterialMapper(PdmBdWorkorder workorder) {
|
||||
SchBasePoint device = pointService.getById(workorder.getPoint_code());
|
||||
RequestMaterialDto requestMaterialDto = new RequestMaterialDto();
|
||||
requestMaterialDto.setDevice_code(workorder.getPoint_code().charAt(workorder.getPoint_code().length() - 1) + "");
|
||||
requestMaterialDto.setDevice_code(device.getExt_point_code().split("#")[0]);
|
||||
requestMaterialDto.setMaterial_code(workorder.getRaw_material_code());
|
||||
requestMaterialDto.setRequest_date(new Date());
|
||||
requestMaterialDto.setProduction_order(workorder.getProduction_order());
|
||||
requestMaterialDto.setProduction_order(workorder.getWorkorder_code());
|
||||
requestMaterialDto.set_used(false);
|
||||
return requestMaterialDto;
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description: 下拉框数据
|
||||
* @Description: 反馈前端下拉框数据
|
||||
* @Date: 2023/8/1
|
||||
*/
|
||||
@Data
|
||||
|
||||
@@ -7,6 +7,7 @@ import org.nl.wms.pdm.record.service.dao.PdmBdRequestMaterialRecord;
|
||||
import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
@@ -56,4 +57,11 @@ public interface IPdmBdRequestMaterialRecordService extends IService<PdmBdReques
|
||||
* @return
|
||||
*/
|
||||
PdmBdRequestMaterialRecord recordData(PdmBdWorkorder workorder);
|
||||
|
||||
/**
|
||||
* 根据工单优先级排序分配的料盅
|
||||
* @param materialCode 物料
|
||||
* @return 记录表
|
||||
*/
|
||||
List<PdmBdRequestMaterialRecord> getLeftJoinWorkOrderList(String materialCode);
|
||||
}
|
||||
|
||||
@@ -3,10 +3,13 @@ package org.nl.wms.pdm.record.service.dao.mapper;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.nl.wms.pdm.record.service.dao.PdmBdRequestMaterialRecord;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author lyd
|
||||
* @date 2023-07-05
|
||||
**/
|
||||
public interface PdmBdRequestMaterialRecordMapper extends BaseMapper<PdmBdRequestMaterialRecord> {
|
||||
|
||||
List<PdmBdRequestMaterialRecord> getLeftJoinWorkOrderList(String materialCode);
|
||||
}
|
||||
|
||||
@@ -2,4 +2,15 @@
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.nl.wms.pdm.record.service.dao.mapper.PdmBdRequestMaterialRecordMapper">
|
||||
|
||||
<select id="getLeftJoinWorkOrderList"
|
||||
resultType="org.nl.wms.pdm.record.service.dao.PdmBdRequestMaterialRecord">
|
||||
SELECT
|
||||
pdr.*
|
||||
FROM
|
||||
`pdm_bd_request_material_record` pdr
|
||||
LEFT JOIN pdm_bd_workorder w ON w.workorder_code = pdr.workorder_id
|
||||
WHERE pdr.material_id = #{materialCode}
|
||||
AND pdr.is_delete = FALSE AND pdr.is_finish = FALSE
|
||||
ORDER BY w.priority DESC, pdr.create_time
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
@@ -22,6 +22,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
@@ -98,4 +99,9 @@ public class PdmBdRequestMaterialRecordServiceImpl extends ServiceImpl<PdmBdRequ
|
||||
return entity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PdmBdRequestMaterialRecord> getLeftJoinWorkOrderList(String materialCode) {
|
||||
return pdmBdRequestMaterialRecordMapper.getLeftJoinWorkOrderList(materialCode);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -95,7 +95,6 @@ public class PdmBdWorkorder implements Serializable {
|
||||
@ApiModelProperty(value = "工单类型")
|
||||
private String workorder_type;
|
||||
|
||||
// todo: 字段未放开
|
||||
@ApiModelProperty(value = "生产订单号")
|
||||
@TableField(exist = false)
|
||||
private String production_order;
|
||||
|
||||
@@ -158,4 +158,6 @@ public class SchBasePoint implements Serializable {
|
||||
private String material_model;
|
||||
@TableField(exist = false)
|
||||
private String raw_material_code;
|
||||
@TableField(exist = false)
|
||||
private String task_warn;
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
AND p.point_status = '3'
|
||||
AND vg.is_firing = true
|
||||
AND vg.material_id = #{materialId}
|
||||
AND TIMESTAMPDIFF(MINUTE, vg.instorage_time, NOW()) >= ma.cooling_time
|
||||
AND TIMESTAMPDIFF(HOUR, vg.instorage_time, NOW()) >= ma.cooling_time
|
||||
AND p.region_code IN
|
||||
<foreach collection="regionCode" item="code" separator="," open="(" close=")">
|
||||
#{code}
|
||||
|
||||
@@ -7,6 +7,7 @@ import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.system.service.notice.ISysNoticeService;
|
||||
import org.nl.wms.database.material.service.IMdBaseMaterialService;
|
||||
@@ -49,6 +50,7 @@ import java.util.stream.Collectors;
|
||||
*/
|
||||
@Component(value = "HLMLTask")
|
||||
@TaskType("HLMLTask")
|
||||
@Slf4j
|
||||
public class HNMLTask extends AbstractTask {
|
||||
private static final String TASK_CONFIG_CODE = "HLMLTask";
|
||||
@Autowired
|
||||
@@ -120,6 +122,14 @@ public class HNMLTask extends AbstractTask {
|
||||
noticeService.createNotice(task.getRemark(), TASK_CONFIG_CODE + task.getTask_code(), NoticeTypeEnum.WARN.getCode());
|
||||
continue;
|
||||
}
|
||||
if (ObjectUtil.isNotEmpty(point.getTask_warn())) {
|
||||
task.setRemark(point.getTask_warn());
|
||||
taskService.updateById(task);
|
||||
// 消息通知
|
||||
noticeService.createNotice("找不到困料点", TASK_CONFIG_CODE + task.getTask_code(), NoticeTypeEnum.WARN.getCode());
|
||||
continue;
|
||||
}
|
||||
log.info("任务【" + task.getTask_code() + "】叫料标识:{}", point.getRecord_id());
|
||||
// 叫料完成
|
||||
requestMaterialRecordService.callMaterialFinish(point.getRecord_id(), jsonObject.getBigDecimal("weight"));
|
||||
// 要料记录
|
||||
@@ -162,15 +172,12 @@ public class HNMLTask extends AbstractTask {
|
||||
String materialCode = requestParam.getString("material_code");
|
||||
Assert.notNull(materialCode, "物料编码不能为空!");
|
||||
materialCode = materialCode.substring(0, 12);
|
||||
// 获取要料表中的数据,获取对应物料(要料表存的是泥料)
|
||||
List<PdmBdRequestMaterialRecord> list = requestMaterialRecordService.list(
|
||||
new LambdaQueryWrapper<PdmBdRequestMaterialRecord>()
|
||||
.eq(PdmBdRequestMaterialRecord::getMaterial_id, materialCode)
|
||||
.eq(PdmBdRequestMaterialRecord::getIs_delete, false)
|
||||
.eq(PdmBdRequestMaterialRecord::getIs_finish, false)
|
||||
.orderByAsc(PdmBdRequestMaterialRecord::getCreate_time));
|
||||
// 获取要料表中的数据,获取对应物料(要料表存的是泥料) update: 先工单优先级后时间
|
||||
List<PdmBdRequestMaterialRecord> list = requestMaterialRecordService.getLeftJoinWorkOrderList(materialCode);
|
||||
if (list.size() == 0) {
|
||||
throw new BadRequestException("压机要料表找不到数据,请排查泥料号:[" + materialCode + "]");
|
||||
SchBasePoint point = new SchBasePoint();
|
||||
point.setTask_warn("压机要料表找不到数据,请排查泥料号:[" + materialCode + "]");
|
||||
return point;
|
||||
}
|
||||
// 要料数据
|
||||
PdmBdRequestMaterialRecord requestMaterialRecord = list.get(0);
|
||||
@@ -212,8 +219,10 @@ public class HNMLTask extends AbstractTask {
|
||||
String endPoint = taskObj.getPoint_code2();
|
||||
SchBasePoint endPointObj = pointService.getById(endPoint);
|
||||
String responseParam = taskObj.getResponse_param();
|
||||
String requestParam = taskObj.getRequest_param();
|
||||
JSONObject responseObj = JSONObject.parseObject(responseParam);
|
||||
String recordId = responseObj.getString("record_id");
|
||||
JSONObject requestObj = JSONObject.parseObject(requestParam);
|
||||
String recordId = requestObj.getString("record_id");
|
||||
// 要把数据存到组盘表。压制工单放进去,
|
||||
SchBaseVehiclematerialgroup groupEntity = vehiclematerialgroupService.getOne(
|
||||
new LambdaQueryWrapper<SchBaseVehiclematerialgroup>()
|
||||
@@ -302,6 +311,7 @@ public class HNMLTask extends AbstractTask {
|
||||
// 泥料编码: 吨袋号,泥料前
|
||||
String packNo = param.getString("material_code");
|
||||
String materialCode = packNo.substring(0, 12);
|
||||
// todo: 如果没找到就报错,就不创建组盘信息
|
||||
// 碾次
|
||||
String mixTimes = packNo.substring(18, packNo.length());
|
||||
// 载具类型默认料盅
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
//package org.nl.wms.util;
|
||||
//
|
||||
//import org.apache.catalina.connector.Connector;
|
||||
//import org.springframework.boot.web.embedded.tomcat.TomcatConnectorCustomizer;
|
||||
//import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
|
||||
//import org.springframework.context.ApplicationListener;
|
||||
//import org.springframework.context.annotation.Bean;
|
||||
//import org.springframework.context.annotation.Configuration;
|
||||
//import org.springframework.context.event.ContextClosedEvent;
|
||||
//
|
||||
//import java.util.concurrent.Executor;
|
||||
//import java.util.concurrent.ThreadPoolExecutor;
|
||||
//import java.util.concurrent.TimeUnit;
|
||||
//
|
||||
///**
|
||||
// * @Author: lyd
|
||||
// * @Description: 优雅停机
|
||||
// * @Date: 2023/12/21
|
||||
// */
|
||||
//@Configuration
|
||||
//public class GracefulShutdownConfig {
|
||||
// @Bean
|
||||
// public GracefulShutdown gracefulShutdown() {
|
||||
// return new GracefulShutdown();
|
||||
// }
|
||||
//
|
||||
// @Bean
|
||||
// public TomcatServletWebServerFactory webServerFactory(final GracefulShutdown gracefulShutdown) {
|
||||
// TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
|
||||
// factory.addConnectorCustomizers(gracefulShutdown);
|
||||
// return factory;
|
||||
// }
|
||||
//
|
||||
// private static class GracefulShutdown implements TomcatConnectorCustomizer, ApplicationListener<ContextClosedEvent> {
|
||||
// private volatile Connector connector;
|
||||
//
|
||||
// @Override
|
||||
// public void customize(Connector connector) {
|
||||
// this.connector = connector;
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void onApplicationEvent(ContextClosedEvent event) {
|
||||
// this.connector.pause();
|
||||
// Executor executor = this.connector.getProtocolHandler().getExecutor();
|
||||
// if (executor instanceof ThreadPoolExecutor) {
|
||||
// ThreadPoolExecutor threadPoolExecutor = null;
|
||||
// try {
|
||||
// threadPoolExecutor = (ThreadPoolExecutor) executor;
|
||||
// threadPoolExecutor.shutdown();
|
||||
// if (!threadPoolExecutor.awaitTermination(30, TimeUnit.SECONDS)) {
|
||||
// threadPoolExecutor.shutdownNow();
|
||||
// }
|
||||
// } catch (InterruptedException ex) {
|
||||
// threadPoolExecutor.shutdownNow();
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
@@ -0,0 +1,54 @@
|
||||
package org.nl.wms.util;
|
||||
|
||||
import ch.qos.logback.classic.AsyncAppender;
|
||||
import ch.qos.logback.classic.Logger;
|
||||
import ch.qos.logback.classic.LoggerContext;
|
||||
import ch.qos.logback.core.Appender;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description:
|
||||
* @Date: 2023/12/22
|
||||
*/
|
||||
public class LogbackQueueMonitor {
|
||||
|
||||
public static void main(String[] args) {
|
||||
// 获取 LoggerContext
|
||||
LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
|
||||
|
||||
// 获取 AsyncAppender
|
||||
AsyncAppender asyncAppender = getAsyncAppender(loggerContext);
|
||||
|
||||
// 监控队列大小
|
||||
monitorQueueSize(asyncAppender);
|
||||
}
|
||||
|
||||
private static AsyncAppender getAsyncAppender(LoggerContext loggerContext) {
|
||||
Logger rootLogger = loggerContext.getLogger(Logger.ROOT_LOGGER_NAME);
|
||||
// 替换为你实际的 Appender 名称
|
||||
Appender appender = rootLogger.getAppender("asyncFileAppender");
|
||||
if (appender instanceof AsyncAppender) {
|
||||
return (AsyncAppender) appender;
|
||||
} else {
|
||||
throw new IllegalStateException("AsyncAppender not found");
|
||||
}
|
||||
}
|
||||
|
||||
private static void monitorQueueSize(AsyncAppender asyncAppender) {
|
||||
new Thread(() -> {
|
||||
while (true) {
|
||||
try {
|
||||
// 每隔5秒监控一次
|
||||
Thread.sleep(5000);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
int queueSize = asyncAppender.getQueueSize();
|
||||
System.out.println("AsyncAppender Queue Size: " + queueSize);
|
||||
}
|
||||
}).start();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,3 +28,4 @@
|
||||
记录自动要料信息
|
||||
自动下发混碾
|
||||
下发混碾失败
|
||||
看板【当月工单】日志
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
package org.nl.ext;
|
||||
|
||||
import ch.qos.logback.classic.AsyncAppender;
|
||||
import ch.qos.logback.classic.Logger;
|
||||
import ch.qos.logback.classic.LoggerContext;
|
||||
import ch.qos.logback.core.Appender;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.NumberUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
@@ -9,6 +13,7 @@ import org.nl.common.utils.CodeUtil;
|
||||
import org.nl.wms.ext.acs.service.dto.to.wms.ApplyDeviceDto;
|
||||
import org.nl.wms.ext.mes.service.WmsToMesService;
|
||||
import org.nl.wms.ext.mes.service.dao.mapper.MesRequestMapper;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
|
||||
@@ -151,9 +156,32 @@ public class TestDemo {
|
||||
}
|
||||
@Test
|
||||
void testNumberStr() {
|
||||
System.out.println("1234564".matches("\\d+"));
|
||||
System.out.println("1234你好564".matches("\\d+"));
|
||||
System.out.println(DateUtil.format(DateUtil.date(), "yyMMdd"));
|
||||
System.out.println(String.format("%03d", 12));
|
||||
// 获取 LoggerContext
|
||||
ch.qos.logback.classic.LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
|
||||
|
||||
// 获取 AsyncAppender
|
||||
AsyncAppender asyncAppender = getAsyncAppender(loggerContext);
|
||||
|
||||
// 监控队列大小
|
||||
monitorQueueSize(asyncAppender);
|
||||
}
|
||||
|
||||
private static AsyncAppender getAsyncAppender(LoggerContext loggerContext) {
|
||||
Logger rootLogger = loggerContext.getLogger(Logger.ROOT_LOGGER_NAME);
|
||||
// 替换为你实际的 Appender 名称
|
||||
Appender appender = rootLogger.getAppender("asyncFileAppender");
|
||||
if (appender instanceof AsyncAppender) {
|
||||
return (AsyncAppender) appender;
|
||||
} else {
|
||||
throw new IllegalStateException("AsyncAppender not found");
|
||||
}
|
||||
}
|
||||
|
||||
private static void monitorQueueSize(AsyncAppender asyncAppender) {
|
||||
while (true) {
|
||||
int queueSize = asyncAppender.getQueueSize();
|
||||
System.out.println("AsyncAppender Queue Size: " + queueSize);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -122,7 +122,7 @@
|
||||
style="width: 240px;"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="冷却时间(分钟)">
|
||||
<el-form-item label="冷却时间(小时)">
|
||||
<el-input-number
|
||||
v-model.number="form.cooling_time"
|
||||
:min="0"
|
||||
@@ -172,7 +172,7 @@
|
||||
<el-table-column prop="material_spec" label="物料规格" :min-width="flexWidth('material_spec',crud.data,'物料规格')" />
|
||||
<el-table-column prop="material_model" label="物料型号" :min-width="flexWidth('material_model',crud.data,'物料分类标识')" />
|
||||
<el-table-column prop="standing_time" label="静置时间(分钟)" :min-width="flexWidth('standing_time',crud.data,'静置时间(分钟)')" />
|
||||
<el-table-column prop="cooling_time" label="冷却时间(分钟)" :min-width="flexWidth('cooling_time',crud.data,'静置时间(分钟)')" />
|
||||
<el-table-column prop="cooling_time" label="冷却时间(小时)" :min-width="flexWidth('cooling_time',crud.data,'静置时间(分钟)')" />
|
||||
<!-- <el-table-column prop="workshop_code" label="车间编码" :min-width="flexWidth('workshop_code',crud.data,'车间编码')" />-->
|
||||
<el-table-column prop="remark" label="备注" :min-width="flexWidth('remark',crud.data,'备注')" />
|
||||
<el-table-column prop="is_used" label="是否启用" :min-width="flexWidth('is_used',crud.data,'是否启用')">
|
||||
|
||||
75
lms/nladmin-ui/src/views/wms/sch/task/editTaskDialog.vue
Normal file
75
lms/nladmin-ui/src/views/wms/sch/task/editTaskDialog.vue
Normal file
@@ -0,0 +1,75 @@
|
||||
<template>
|
||||
<el-dialog
|
||||
title="任务编辑"
|
||||
append-to-body
|
||||
:visible.sync="dialogVisible"
|
||||
destroy-on-close
|
||||
width="750px"
|
||||
@close="close"
|
||||
@open="open"
|
||||
>
|
||||
<el-form label-width="180px">
|
||||
<el-form-item v-for="(value, key) in jsonData" :label="key" :key="key">
|
||||
<el-input v-model="jsonData[key]"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="saveData">保存</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
|
||||
|
||||
export default {
|
||||
name: 'EditTaskDialog',
|
||||
props: {
|
||||
dialogShow: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
rowData: {
|
||||
type: Object,
|
||||
default: null
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
dialogVisible: false,
|
||||
tableRadio: null,
|
||||
jsonData: {},
|
||||
tableData: []
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
dialogShow: {
|
||||
handler(newValue) {
|
||||
this.dialogVisible = newValue
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
saveData() {
|
||||
|
||||
},
|
||||
clickChange(item) {
|
||||
this.tableRadio = item
|
||||
},
|
||||
open() {
|
||||
console.log(this.rowData)
|
||||
this.jsonData = JSON.parse(this.rowData.request_param)
|
||||
},
|
||||
close() {
|
||||
this.crud.resetQuery(false)
|
||||
this.$emit('update:dialogShow', false)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style rel="stylesheet/scss" lang="scss" scoped>
|
||||
::v-deep .el-dialog__body {
|
||||
padding-top: 0px;
|
||||
}
|
||||
</style>
|
||||
|
||||
Reference in New Issue
Block a user