Browse Source

2024-04-25 修改配置信息读取方式

master_hella_20240701
zhousq 1 year ago
parent
commit
70ae9e03db
  1. 2
      win-module-mes/win-module-mes-api/src/main/java/com/win/module/mes/enums/ErrorCodeConstants.java
  2. 20
      win-module-mes/win-module-mes-api/src/main/java/com/win/module/mes/enums/MesConfigKeys.java
  3. 34
      win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/config/InfaConfigUtil.java
  4. 21
      win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/config/MesBaseConfig.java
  5. 42
      win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/service/mesorderday/MesOrderDayServiceImpl.java
  6. 2
      win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/service/mesworkscheduling/MesWorkSchedulingService.java
  7. 18
      win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/service/mesworkscheduling/MesWorkSchedulingServiceImpl.java

2
win-module-mes/win-module-mes-api/src/main/java/com/win/module/mes/enums/ErrorCodeConstants.java

@ -29,6 +29,7 @@ public interface ErrorCodeConstants {
ErrorCode TEAM_NOT_EXISTS = new ErrorCode(1_006_000_016, "班组不存在!");
ErrorCode TEAM_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_006_000_017, "班组导入数据内容为空!");
ErrorCode PRODUCTION_PLAN_NOT_EXISTS = new ErrorCode(1_006_000_018, "排产计划不存在!");
ErrorCode PRODUCTION_PLAN_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_006_000_019, "排产计划导入数据内容为空!");
ErrorCode TEAM_SETTING_NOT_EXISTS = new ErrorCode(1_006_000_020, "班组不存在!");
ErrorCode TEAM_SETTING_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_006_000_021, "班组导入数据内容为空!");
@ -44,6 +45,7 @@ public interface ErrorCodeConstants {
ErrorCode MES_ORDER_MONTH_SUB_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_006_000_031, "订单月计划子计划数据内容为空!");
ErrorCode ORDER_SCHEDULED = new ErrorCode(1_006_000_032, "计划已排产,无法删除!");
ErrorCode ORDER_DAY_IS_EMPTY = new ErrorCode(1_006_000_033, "日计划数据不存在!");
ErrorCode PLAN_SCHEDULED_EXISTS = new ErrorCode(1_006_000_034, "计划已经排产,不能重复排产!");
// ========== 能力配置 1-006-001-000 ==========
ErrorCode ABILITY_INFO_LIST_IS_EMPTY = new ErrorCode(1_006_001_001, "能力矩阵信息不存在!");

20
win-module-mes/win-module-mes-api/src/main/java/com/win/module/mes/enums/MesConfigKeys.java

@ -0,0 +1,20 @@
package com.win.module.mes.enums;
public class MesConfigKeys {
/**是否开启齐套检查*/
public static final String PRE_START_CHECK_ON="mes_pre_start_check_on";
/**是否顺序生产:开启时只能按顺序进行工单开工,关闭时可以任意选择一个工单开工*/
public static final String STRICT_ON_SEQUENCE="mes_strict_on_sequence";
/**工位校验开关-是否设备校验*/
public static final String CHECK_EQUIPMENT_ON="mes_check_equipment_on";
/**工位校验开关-是否物料校验*/
public static final String CHECK_MATERIAL_ON="mes_check_material_on";
/**工位校验开关-是否技能校验*/
public static final String CHECK_ABILITY_ON="mes_check_ability_on";
/**工位校验开关-是否步骤校验*/
public static final String CHECK_STEPS_ON="mes_check_steps_on";
/**工位校验开关-是否岗位校验*/
public static final String CHECK_POST_ON="mes_check_post_on";
/**是否允许工序多次报工*/
public static final String ALLOW_MUTI_REPORT_PROCESS="mes_allow_muti_report_process";
}

34
win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/config/InfaConfigUtil.java

@ -0,0 +1,34 @@
package com.win.module.mes.config;
import com.win.module.infra.api.config.ConfigApi;
import com.win.module.infra.vo.ConfigInfoVO;
import com.win.module.system.util.StringUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@Service
public class InfaConfigUtil {
@Resource
private ConfigApi apiConfigApi;
public Boolean getBooleanValue(String key,Boolean defaulValue){
return Boolean.valueOf(getStringValue(key,String.valueOf(defaulValue)));
}
public String getStringValue(String key,String defaulValue){
ConfigInfoVO configInfoVO = apiConfigApi.queryConfigInfoByKey(key);
if(StringUtils.isNull(configInfoVO)){
return defaulValue;
}else{
if (StringUtils.isNull(configInfoVO.getValue())){
return defaulValue;
}else{
return configInfoVO.getValue();
}
}
}
public Integer getIntegerValue(String key,Integer defaulValue){
return Integer.valueOf(getStringValue(key,String.valueOf(defaulValue)));
}
}

21
win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/config/MesBaseConfig.java

@ -1,21 +0,0 @@
package com.win.module.mes.config;
public class MesBaseConfig {
/**
* MES工作流中的通用配置项
* */
//是否开工检查
public static final Boolean PRE_START_CHECK_ON=true;
//是否顺序生产:开启时只能按顺序进行工单开工,关闭时可以任意选择一个工单开工
public static final Boolean STRICT_ON_SEQUENCE=true;
//工位校验开关-是否设备校验
public static final Boolean CHECK_EQUIPMENT_ON=true;
//工位校验开关-是否物料校验
public static final Boolean CHECK_MATERIAL_ON=true;
//工位校验开关-是否技能校验
public static final Boolean CHECK_ABILITY_ON=true;
//工位校验开关-是否步骤校验
public static final Boolean CHECK_STEPS_ON=true;
//工位校验开关-是否岗位校验
public static final Boolean CHECK_POST_ON=true;
}

42
win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/service/mesorderday/MesOrderDayServiceImpl.java

@ -4,9 +4,6 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.UUID;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.win.framework.common.exception.ErrorCode;
import com.win.module.mes.config.MesBaseConfig;
import com.win.module.mes.controller.mesorderday.vo.*;
import com.win.module.mes.dal.dataobject.mesorderdayroutesub.MesOrderDayRoutesubDO;
import com.win.module.mes.dal.dataobject.mesworkscheduling.MesWorkSchedulingDO;
@ -20,13 +17,13 @@ import com.win.module.mes.service.mesorderdayroutesub.MesOrderDayRoutesubService
import com.win.module.mes.service.mesorderdayworker.MesOrderDayWorkerService;
import com.win.module.mes.service.mesorderdayworkstation.MesOrderDayWorkstationService;
import com.win.module.mes.service.mesworkscheduling.MesWorkSchedulingService;
import com.win.module.mes.service.mesworkschedulingdetail.MesWorkSchedulingDetailService;
import com.win.module.mes.config.InfaConfigUtil;
import com.win.module.system.util.StringUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import java.time.LocalDateTime;
import java.util.*;
@ -62,7 +59,9 @@ public class MesOrderDayServiceImpl implements MesOrderDayService {
private MesOrderDayWorkerService mesOrderDayWorkerService;
@Resource
private MesOrderDayWorkstationService mesOrderDayWorkstationService;
@Resource
InfaConfigUtil infaConfigUtil;
private String WAITBEGIN;
@Override
@Transactional
public Long createOrderDay(MesOrderDayCreateReqVO createReqVO) {
@ -89,6 +88,7 @@ public class MesOrderDayServiceImpl implements MesOrderDayService {
//-------------
}
@Override
public Integer updateOrderDay(MesOrderDayUpdateReqVO updateReqVO) {
// 校验存在
@ -151,6 +151,7 @@ public class MesOrderDayServiceImpl implements MesOrderDayService {
return errorList;
}
/**
* 发布日生产计划
* 步骤根据日生产计划的计划编号产品号计划数量计划时间工单模式bom方式是否可改工艺方式是否可改 生产模式
@ -159,13 +160,16 @@ public class MesOrderDayServiceImpl implements MesOrderDayService {
* 如果bom方式使用了替代bom则可以在发布时进行调整
* 如果工艺方式使用了临时工艺则可以在发布时进行调整发布后不可以调整
* job_mes_work_scheduling job_mes_work_scheduling_detail
* */
*/
@Override
@Transactional
public Integer publish(MesOrderDayCreateReqVO reqVO) {
if (StringUtils.isNull(reqVO)) {
throw exception(ORDER_DAY_IS_EMPTY);
}
//增加判断是否已经发布了该计划
if (!mesWorkSchedulingService.exisitWorkScheduling(reqVO)) {
getPreCheckStauts();//获取前置参数配置
Map<String, List> schedulingSingle = getSchedulingSingle(reqVO);
//工作模式
int ret = mesWorkSchedulingService.inertBacthTrans(schedulingSingle.get("master"), schedulingSingle.get("sub"));
@ -177,11 +181,16 @@ public class MesOrderDayServiceImpl implements MesOrderDayService {
dayDO.setStatus(PlanBillStatusEnum.PUBLISHED.getCode());
orderDayMapper.updateById(dayDO);
return ret;
} else {
throw exception(PLAN_SCHEDULED_EXISTS);
}
}
@Override
public void publish(Long id) {
}
private Map<String, List> getSchedulingSingle(MesOrderDayCreateReqVO createReqVO) {
Integer planCounts = createReqVO.getPlanCount();
Integer billCount = 1;
@ -254,17 +263,20 @@ public class MesOrderDayServiceImpl implements MesOrderDayService {
return map;
}
private void getPreCheckStauts(){
//从配置项中获取配置
if (infaConfigUtil.getBooleanValue(MesConfigKeys.PRE_START_CHECK_ON,Boolean.FALSE)) {
WAITBEGIN = WorkingScheduleEnum.WAITBEGIN.getCode();
} else {
WAITBEGIN = WorkingScheduleEnum.READYTODO.getCode();
}
}
private MesWorkSchedulingDO getBaseMesWorkSchedulingDO(MesOrderDayCreateReqVO createReqVO) {
MesWorkSchedulingDO item = new MesWorkSchedulingDO();
item.setFlagDo(WorkStatusEnum.READY.getCode());
//是否需要齐套检查 如果需要
String status;
if(MesBaseConfig.PRE_START_CHECK_ON){
status=WorkingScheduleEnum.WAITBEGIN.getCode();
}else{
status=WorkingScheduleEnum.READYTODO.getCode();
}
item.setStatus(status);
item.setStatus(WAITBEGIN);
item.setFinishCount(0);
item.setFormType(createReqVO.getWorkMode());
item.setLineCode(createReqVO.getLineCode());
@ -279,10 +291,12 @@ public class MesOrderDayServiceImpl implements MesOrderDayService {
item.setWorkingTaskSort(0);
return item;
}
private LocalDateTime getLocalDatetime(LocalDateTime date, String time) {
String target = DateUtil.format(date, DatePattern.NORM_DATE_PATTERN) + " " + time;
return DateUtil.parseLocalDateTime(target, DatePattern.NORM_DATETIME_PATTERN);
}
@Resource
MesWorkSchedulingService mesWorkSchedulingService;
@Resource

2
win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/service/mesworkscheduling/MesWorkSchedulingService.java

@ -4,6 +4,7 @@ import java.util.*;
import javax.validation.*;
import com.win.framework.common.pojo.CustomConditions;
import com.win.module.mes.controller.mesorderday.vo.MesOrderDayCreateReqVO;
import com.win.module.mes.controller.mesworkscheduling.vo.*;
import com.win.module.mes.dal.dataobject.mesworkscheduling.MesWorkSchedulingDO;
import com.win.framework.common.pojo.PageResult;
@ -83,4 +84,5 @@ public interface MesWorkSchedulingService {
public List<MesWorkSchedulingExcelVO> importMesWorkSchedulingList(List<MesWorkSchedulingExcelVO> datas, Integer mode, boolean updatePart);
void inertBacth(List<MesWorkSchedulingDO> list);
Integer inertBacthTrans(List<MesWorkSchedulingDO> list, List<MesWorkSchedulingDetailDO> listsub);
Boolean exisitWorkScheduling(MesOrderDayCreateReqVO reqVO);
}

18
win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/service/mesworkscheduling/MesWorkSchedulingServiceImpl.java

@ -1,7 +1,9 @@
package com.win.module.mes.service.mesworkscheduling;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.win.framework.common.pojo.CustomConditions;
import com.win.module.mes.controller.mesorderday.vo.MesOrderDayCreateReqVO;
import com.win.module.mes.controller.mesworkscheduling.vo.*;
import com.win.module.mes.dal.dataobject.mesworkschedulingdetail.MesWorkSchedulingDetailDO;
import com.win.module.mes.dal.mysql.mesworkschedulingdetail.MesWorkSchedulingDetailMapper;
@ -119,4 +121,20 @@ public class MesWorkSchedulingServiceImpl implements MesWorkSchedulingService {
mesWorkSchedulingDetailMapper.insertBatch(listsub);
return list.size();
}
@Override
public Boolean exisitWorkScheduling(MesOrderDayCreateReqVO reqVO){
if(StringUtils.isNull(reqVO)){
return true;
}else{
QueryWrapper<MesWorkSchedulingDO> queryWrapper=new QueryWrapper<>();
MesWorkSchedulingDO dao=new MesWorkSchedulingDO();
dao.setProductCode(reqVO.getProductCode());
dao.setPlanMaserCode(reqVO.getPlanNoDay());
dao.setProuteCode(reqVO.getProcessrouteCode());
//dao.setPlanMaserCode(reqVO.get)
queryWrapper.setEntity(dao);
return workSchedulingMapper.exists(queryWrapper);
}
}
}

Loading…
Cancel
Save