kkk-ops 3 weeks ago
commit bb709e000c

@ -29,7 +29,7 @@ public class MoldPageReqVO extends PageParam {
@Schema(description = "机台ID", example = "24428")
private Long machineId;
@Schema(description = "使用时间(小时)")
@Schema(description = "使用次数/次")
private BigDecimal useTime;
@Schema(description = "入库时间")
@ -58,7 +58,10 @@ public class MoldPageReqVO extends PageParam {
@Schema(description = "id集合导出用")
private String ids;
// @Schema(description = "机台名字")
// private String machineName;
@Schema(description = "机台名字")
private String machineName;
@Schema(description = "附件地址")
private String fileUrl;
}

@ -24,13 +24,13 @@ public class MoldSaveReqVO {
private String name;
@Schema(description = "单位ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "19527")
@NotNull(message = "单位ID不能为空")
// @NotNull(message = "单位ID不能为空")
private Long unitId;
@Schema(description = "机台ID", example = "24428")
private Long machineId;
@Schema(description = "使用时间(小时)")
@Schema(description = "使用次数/次")
private BigDecimal useTime;
@Schema(description = "入库时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ -47,11 +47,14 @@ public class MoldSaveReqVO {
private String remark;
@Schema(description = "是否启用", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "是否启用不能为空")
// @NotNull(message = "是否启用不能为空")
private Boolean isEnable;
@Schema(description = "型号id", requiredMode = Schema.RequiredMode.REQUIRED, example = "15258")
@NotNull(message = "型号id不能为空")
// @NotNull(message = "型号id不能为空")
private Long brandId;
@Schema(description = "附件地址")
private String fileUrl;
}

@ -76,4 +76,7 @@ public class MoldDO extends BaseDO {
*/
private Long brandId;
private String fileUrl;
}

@ -22,20 +22,6 @@ import java.util.stream.Collectors;
public interface MoldBrandMapper extends BaseMapperX<MoldBrandDO> {
default PageResult<MoldBrandDO> selectPage(MoldBrandPageReqVO reqVO) {
// return selectPage(reqVO, new LambdaQueryWrapperX<MoldBrandDO>()
// .eqIfPresent(MoldBrandDO::getCode, reqVO.getCode())
// .likeIfPresent(MoldBrandDO::getName, reqVO.getName())
// .eqIfPresent(MoldBrandDO::getMoldType, reqVO.getMoldType())
// .eqIfPresent(MoldBrandDO::getProductId, reqVO.getProductId())
// .eqIfPresent(MoldBrandDO::getUseTime, reqVO.getUseTime())
// .eqIfPresent(MoldBrandDO::getMaintainType, reqVO.getMaintainType())
// .eqIfPresent(MoldBrandDO::getMaintainTime, reqVO.getMaintainTime())
// .eqIfPresent(MoldBrandDO::getMoldSize, reqVO.getMoldSize())
// .eqIfPresent(MoldBrandDO::getRemark, reqVO.getRemark())
// .eqIfPresent(MoldBrandDO::getIsEnable, reqVO.getIsEnable())
// .eqIfPresent(MoldBrandDO::getOrgType, reqVO.getOrgType())
// .betweenIfPresent(MoldBrandDO::getCreateTime, reqVO.getCreateTime())
// .orderByDesc(MoldBrandDO::getId));
LambdaQueryWrapperX<MoldBrandDO> moldBrandDOLambdaQueryWrapperX = new LambdaQueryWrapperX<>();
moldBrandDOLambdaQueryWrapperX

@ -6,6 +6,8 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@ -19,13 +21,14 @@ public interface MoldMapper extends BaseMapperX<MoldDO> {
default PageResult<MoldDO> selectPage(PageParam reqVO, Long brandId) {
return selectPage(reqVO, new LambdaQueryWrapperX<MoldDO>()
.eq(MoldDO::getBrandId, brandId)
.orderByDesc(MoldDO::getId));
.eq(MoldDO::getBrandId, brandId)
.orderByDesc(MoldDO::getId));
}
default int deleteByBrandId(Long brandId) {
return delete(MoldDO::getBrandId, brandId);
}
default List<MoldDO> selectBy(MoldDO reqVO) {
return selectList(new LambdaQueryWrapperX<MoldDO>()
.eqIfPresent(MoldDO::getCode, reqVO.getCode())
@ -33,4 +36,12 @@ public interface MoldMapper extends BaseMapperX<MoldDO> {
.eq(MoldDO::getBrandId, reqVO.getBrandId())
.orderByDesc(MoldDO::getId));
}
default List<MoldDO> selectBy(Long brandId) {
return selectList(new LambdaQueryWrapperX<MoldDO>()
.eq(MoldDO::getBrandId, brandId)
.orderByDesc(MoldDO::getId));
}
}

@ -44,6 +44,7 @@ public interface ErrorCodeConstants {
ErrorCode DEVICE_ATTRIBUTE_NOT_EXISTS = new ErrorCode(1_003_000_000, "设备属性不存在");
ErrorCode DEVICE_ATTRIBUTE_TYPE_NOT_EXISTS = new ErrorCode(1_003_000_000, "采集点分类不存在");
ErrorCode DEVICE_CODE_EXISTS = new ErrorCode(1_003_000_000, "采集点编码已存在");
ErrorCode DEVICE_ATTRIBUTE_TYPE_REFERENCES_EXISTS = new ErrorCode(1_003_000_000, "存在采集点类型已被引用,请先删除对应引用");
ErrorCode ENDPOINT_DOES_NOT_EXIS = new ErrorCode(1_003_000_000, "暂未设置设备端点");
ErrorCode DEVICE_DOES_NOT_EXIST= new ErrorCode(1_003_000_000, "该采集设备不存在");

@ -59,18 +59,18 @@ public class DeviceController {
tDengineService.initDatabaseAndTable(device.getId());
//添加定时任务
// 创建 JobSaveReqVO 对象实例
JobSaveReqVO jobSaveReqVO = new JobSaveReqVO();
// 设置任务属性(根据您的业务需求设置具体值)
jobSaveReqVO.setName("deviceJob_" + device.getId()); // 处理器名称唯一
jobSaveReqVO.setHandlerName("deviceJob"); // 处理器名称唯一
jobSaveReqVO.setHandlerParam("{\"deviceId\": \"" + device.getId() + "\"}"); // 使用设备ID作为参数值
jobSaveReqVO.setCronExpression("*/5 * * * * ?"); // CRON表达式每5秒执行一次[1,3](@ref)
jobSaveReqVO.setRetryCount(3); // 重试次数
jobSaveReqVO.setRetryInterval(5000); // 重试间隔(毫秒)
jobSaveReqVO.setMonitorTimeout(30000); // 监控超时时间(毫秒)
jobSaveReqVO.setDeviceId(device.getId());
jobService.createJob(jobSaveReqVO);
// JobSaveReqVO jobSaveReqVO = new JobSaveReqVO();
// // 设置任务属性(根据您的业务需求设置具体值)
// jobSaveReqVO.setName("deviceJob_" + device.getId()); // 处理器名称唯一
// jobSaveReqVO.setHandlerName("deviceJob"); // 处理器名称唯一
// jobSaveReqVO.setHandlerParam("{\"deviceId\": \"" + device.getId() + "\"}"); // 使用设备ID作为参数值
// jobSaveReqVO.setCronExpression("*/5 * * * * ?"); // CRON表达式每5秒执行一次[1,3](@ref)
// jobSaveReqVO.setRetryCount(3); // 重试次数
// jobSaveReqVO.setRetryInterval(5000); // 重试间隔(毫秒)
// jobSaveReqVO.setMonitorTimeout(30000); // 监控超时时间(毫秒)
// jobSaveReqVO.setDeviceId(device.getId());
//
// jobService.createJob(jobSaveReqVO);
return success(device);
}

@ -308,20 +308,20 @@ public class TDengineService {
* @return
*/
@DS("tdengine")
public List<Map<String, Object>> getstDeviceDataOrderByTimeDesc(Long id,String collectionStartTime, String collectionEndTime) {
public List<Map<String, Object>> getstDeviceDataOrderByTimeDesc(Long id,String StartTime, String EndTime) {
String tableName = "d_" + id;
StringBuilder sqlBuilder = new StringBuilder();
List<Object> params = new ArrayList<>();
sqlBuilder.append("SELECT ts, query_data FROM besure.").append(tableName).append(" WHERE 1=1");
if (collectionStartTime != null) {
if (StartTime != null) {
// 直接将时间字符串拼接到SQL中
sqlBuilder.append(" AND ts >= '").append(collectionStartTime).append("'");
sqlBuilder.append(" AND ts >= '").append(StartTime).append("'");
}
if (collectionEndTime != null) {
sqlBuilder.append(" AND ts <= '").append(collectionEndTime).append("'");
if (EndTime != null) {
sqlBuilder.append(" AND ts <= '").append(EndTime).append("'");
}
sqlBuilder.append(" ORDER BY ts DESC");

@ -1,7 +1,13 @@
package cn.iocoder.yudao.module.iot.service.deviceattributetype;
import cn.iocoder.yudao.module.iot.dal.dataobject.devicemodelattribute.DeviceModelAttributeDO;
import cn.iocoder.yudao.module.iot.dal.devicecontactmodel.DeviceContactModelDO;
import cn.iocoder.yudao.module.iot.dal.mysql.devicecontactmodel.DeviceContactModelMapper;
import cn.iocoder.yudao.module.iot.dal.mysql.devicemodel.DeviceModelMapper;
import cn.iocoder.yudao.module.iot.dal.mysql.devicemodelattribute.DeviceModelAttributeMapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.validation.constraints.NotEmpty;
@ -33,6 +39,12 @@ public class DeviceAttributeTypeServiceImpl implements DeviceAttributeTypeServic
@Resource
private DeviceAttributeTypeMapper deviceAttributeTypeMapper;
@Resource
private DeviceModelAttributeMapper deviceModelAttributeMapper;
@Resource
private DeviceContactModelMapper deviceContactModelMapper;
@Override
public Long createDeviceAttributeType(DeviceAttributeTypeSaveReqVO createReqVO) {
// 重复判断
@ -62,8 +74,10 @@ public class DeviceAttributeTypeServiceImpl implements DeviceAttributeTypeServic
if (count > 0) {
throw exception(DEVICE_CODE_EXISTS);
}
DeviceAttributeTypeDO deviceAttributeTypeDO = deviceAttributeTypeMapper.selectById(updateReqVO.getId());
// 校验存在
validateDeviceAttributeTypeExists(updateReqVO.getId());
validateDeviceAttributeTypeExists(deviceAttributeTypeDO);
// 更新
DeviceAttributeTypeDO updateObj = BeanUtils.toBean(updateReqVO, DeviceAttributeTypeDO.class);
deviceAttributeTypeMapper.updateById(updateObj);
@ -71,17 +85,41 @@ public class DeviceAttributeTypeServiceImpl implements DeviceAttributeTypeServic
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteDeviceAttributeType( List<Long> ids) {
for (Long id : ids) {
// 校验存在
validateDeviceAttributeTypeExists(id);
public void deleteDeviceAttributeType(List<Long> ids) {
if (CollectionUtils.isEmpty(ids)) {
return;
}
// 批量校验存在性
List<DeviceAttributeTypeDO> existList = deviceAttributeTypeMapper.selectBatchIds(ids);
if (existList.size() != ids.size()) {
throw exception(DEVICE_ATTRIBUTE_TYPE_NOT_EXISTS);
}
// 删除
// 批量校验引用
validateBatchReferences(ids);
// 批量删除
deviceAttributeTypeMapper.deleteByIds(ids);
}
private void validateDeviceAttributeTypeExists(Long id) {
if (deviceAttributeTypeMapper.selectById(id) == null) {
private void validateBatchReferences(List<Long> ids) {
// 批量查询引用
boolean hasModelRef = deviceModelAttributeMapper.exists(
Wrappers.<DeviceModelAttributeDO>lambdaQuery()
.in(DeviceModelAttributeDO::getAttributeType, ids));
boolean hasContactRef = deviceContactModelMapper.exists(
Wrappers.<DeviceContactModelDO>lambdaQuery()
.in(DeviceContactModelDO::getAttributeType, ids));
if (hasModelRef || hasContactRef) {
throw exception(DEVICE_ATTRIBUTE_TYPE_REFERENCES_EXISTS);
}
}
private void validateDeviceAttributeTypeExists(DeviceAttributeTypeDO deviceAttributeTypeDO) {
if (deviceAttributeTypeDO == null) {
throw exception(DEVICE_ATTRIBUTE_TYPE_NOT_EXISTS);
}
}

@ -67,6 +67,19 @@ public interface ErrorCodeConstants {
ErrorCode ENERGY_TYPE_NOT_EXISTS = new ErrorCode(5_0084, "能耗类型不存在");
ErrorCode ENERGY_DEVICE_NOT_EXISTS = new ErrorCode(5_0084, "能耗设备不存在");
ErrorCode ENERGY_DEVICE_CHECK_RECORD_NOT_EXISTS = new ErrorCode(5_0085, "能耗抄表记录不存在");
ErrorCode ENERGY_DEVICE_CHECK_CODE_EXISTS = new ErrorCode(5_0086, "能耗类型编码已存在");
ErrorCode CALCULATION_RULE_NOT_EXISTS = new ErrorCode(5_0087, "运算规则不能为空");
ErrorCode CALCULATION_LAST_RULE_NO_OPERATOR = new ErrorCode(5_0088, "最后一个运算规则不能有运算符");
ErrorCode CALCULATION_OPERATOR_MISSING = new ErrorCode(5_0089, "运算规则缺少运算符");
ErrorCode CALCULATION_OPERATOR_INVALID = new ErrorCode(5_0090, "运算符不合法");
ErrorCode CALCULATION_CONSECUTIVE_OPERATORS = new ErrorCode(5_0081, "不能连续出现运算符");
ErrorCode CALCULATION_CONSECUTIVE_NOT_EXISTS = new ErrorCode(5_0082, "运算规则不存在");
ErrorCode ENERGY_LIST_NOT_EXISTS = new ErrorCode(5_0082, "能耗设备列表不存在");
ErrorCode ENERGY_DEVICE_CODE_DUPLICATE = new ErrorCode(5_0082, "能耗设备编码已存在");
ErrorCode MOLD_RECORD_SUBJECT_NOT_EXISTS = new ErrorCode(5_0086, "维保项目不存在");
ErrorCode MOLD_RECORD_ITEM_NOT_EXISTS = new ErrorCode(5_0087, "维保方案不存在");
@ -76,7 +89,9 @@ public interface ErrorCodeConstants {
ErrorCode DV_CHECK_NOT_EXISTS = new ErrorCode(5_0087, "维保计划不存在");
ErrorCode DV_SUBJECT_NOT_EXISTS = new ErrorCode(5_0087, "维保项目不存在");
ErrorCode DV_SUBJECT_NOT_EXISTS = new ErrorCode(5_0087, "项目不存在");
ErrorCode DV_SUBJECT_REFERENCES = new ErrorCode(5_0087, "存在项目已被引用,请先删除所引用");
ErrorCode DV_REPAIR_NOT_EXISTS = new ErrorCode(5_0087, "设备维修记录不存在");
ErrorCode DV_REPAIR_CODE_EXISTS = new ErrorCode(5_0087, "设备维修记录编码已存在");
@ -90,6 +105,8 @@ public interface ErrorCodeConstants {
//======================================设备管理相关 1002000000=================================================
ErrorCode DEVICE_TYPE_NOT_EXISTS = new ErrorCode(1002000000, "设备类型不存在");
ErrorCode DEVICE_TYPE_REFERENCES = new ErrorCode(1002000000, "该设备类型已被引用,请先删除相关引用");
ErrorCode DEVICE_TYPE_PARENT_NOT_EXISTS = new ErrorCode(1002000001, "父级设备类型不存在");
ErrorCode DEVICE_TYPE_PARENT_IS_SELF = new ErrorCode(1002000002, "不能设置自己为父级");
ErrorCode DEVICE_TYPE_PARENT_IS_CHILD = new ErrorCode(1002000003, "不能设置子节点为父级");
@ -97,6 +114,8 @@ public interface ErrorCodeConstants {
ErrorCode DEVICE_LEDGER_NOT_EXISTS = new ErrorCode(1002000005, "该设备不存在");
ErrorCode DEVICE_LEDGER_CODE_NOT_ONLY = new ErrorCode(1002000006, "设备类型编码已存在");
ErrorCode PLAN_MAINTENANCE_NOT_EXISTS = new ErrorCode(1002000007, "方案维护不存在");
ErrorCode PLAN_MAINTENANCE_REFERENCES = new ErrorCode(1002000007, "该方案维护已被引用,请先删除引用");
ErrorCode SUBJECT_PLAN_NOT_EXISTS = new ErrorCode(1002000008, "项目方案关联不存在");
ErrorCode SUBJECT_ID_NOT_EXISTS = new ErrorCode(1002000009, "项目Id不存在");
ErrorCode DEVICE_LEDGER_EXISTS = new ErrorCode(1002000010, "设备台账编码已存在");
@ -106,7 +125,13 @@ public interface ErrorCodeConstants {
ErrorCode TICKET_RESULTS_NOT_EXISTS = new ErrorCode(1002000013, "工单检验结果不存在");
ErrorCode TICKET_RESULTS_ID_NOT_NULL = new ErrorCode(1002000014, "工单检验结果Id不存在");
ErrorCode CRITICAL_COMPONENT_NOT_EXISTS = new ErrorCode(1002000015, "设备关键件不存在");
ErrorCode CRITICAL_COMPONENT_REFERENCES= new ErrorCode(1002000015, "存在设备关键件已被引用,请先删除引用");
ErrorCode REPAIR_TEMS_NOT_EXISTS = new ErrorCode(1002000016, "维修项目不存在");
ErrorCode REPAIR_TEMS_CODE_EXISTS = new ErrorCode(1002000016, "维修项目编码已存在");
//======================================能源设相关 1002010000=================================================
ErrorCode ENERGY_RECORD_NOT_EXISTS = new ErrorCode(1002010000, "能源设备历史记录不存在");
}

@ -66,8 +66,8 @@ public class EnergyDeviceController {
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('mes:energy-device:query')")
public CommonResult<EnergyDeviceRespVO> getEnergyDevice(@RequestParam("id") Long id) {
EnergyDeviceDO energyDevice = energyDeviceService.getEnergyDevice(id);
return success(BeanUtils.toBean(energyDevice, EnergyDeviceRespVO.class));
EnergyDeviceRespVO energyDeviceRespVO = energyDeviceService.getEnergyDevice(id);
return success(energyDeviceRespVO);
}
@GetMapping("/getList")
@Operation(summary = "获得能源设备列表")
@ -97,6 +97,16 @@ public class EnergyDeviceController {
BeanUtils.toBean(list, EnergyDeviceRespVO.class));
}
@PostMapping("/queryDataRecords")
@Operation(summary = "查询数据记录")
@PreAuthorize("@ss.hasPermission('mes:energy-device:create')")
public CommonResult<List<EnergyDeviceRespVO>> queryDataRecords(@RequestParam(name = "startTime", required = false ) String startTime,
@RequestParam(name = "endTime", required = false ) String endTime) {
return success(energyDeviceService.queryDataRecords(startTime,endTime));
}
// ==================== 子表(抄表记录) ====================
@GetMapping("/energy-device-check-record/page")

@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.mes.controller.admin.energydevice.vo;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
@ -17,7 +18,7 @@ import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
public class EnergyDeviceRespVO {
@Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "25931")
@ExcelProperty("ID")
// @ExcelProperty("ID")
private Long id;
@Schema(description = "名称", example = "芋艿")
@ -34,23 +35,23 @@ public class EnergyDeviceRespVO {
// private String deviceType;
@Schema(description = "信息资料")
@ExcelProperty("信息资料")
// @ExcelProperty("信息资料")
private String info;
@Schema(description = "抄表周期cron")
@ExcelProperty("抄表周期cron")
// @ExcelProperty("抄表周期cron")
private String checkCron;
@Schema(description = "最后抄表时间")
@ExcelProperty("最后抄表时间")
// @ExcelProperty("最后抄表时间")
private LocalDateTime lastCheckTime;
@Schema(description = "最后抄表值")
@ExcelProperty("最后抄表值")
// @ExcelProperty("最后抄表值")
private BigDecimal lastCheckValue;
@Schema(description = "单位", example = "赵六")
@ExcelProperty("单位")
// @ExcelProperty("单位")
private String unitName;
@Schema(description = "是否启用", requiredMode = Schema.RequiredMode.REQUIRED)
@ -59,10 +60,15 @@ public class EnergyDeviceRespVO {
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
@ColumnWidth(20)
private LocalDateTime createTime;
@Schema(description = "更新时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("更新时间")
private LocalDateTime updateTime;
@Schema(description = "能耗类型ID", example = "1")
@ExcelProperty("能耗类型ID")
// @ExcelProperty("能耗类型ID")
private Long deviceTypeId;
@Schema(description = "能耗类型名称", example = "水")
@ -70,7 +76,7 @@ public class EnergyDeviceRespVO {
private String deviceTypeName;
@Schema(description = "所属区域ID", example = "1")
@ExcelProperty("所属区域ID")
// @ExcelProperty("所属区域ID")
private Long orgId;
@Schema(description = "所属区域名称", example = "车间1")
@ -78,6 +84,23 @@ public class EnergyDeviceRespVO {
private String orgName;
@Schema(description = "计算规则", example = "车间1")
@ExcelProperty("计算规则")
// @ExcelProperty("计算规则")
private String rules;
@Schema(description = "计算规则集合")
private List<OperationRulesVO> operationRulesVOList;
@Schema(description = "能耗总用量")
@ExcelProperty("能耗总用量")
private String energyConsumption;
@Schema(description = "子列表点位参数值")
@ExcelProperty("子列表点位参数值")
private Map<String,String> sublistPointList;
@Schema(description = "列表")
Map<Long,List<OperationRulesVO>> operationRulesVOMap;
}

@ -6,6 +6,7 @@ import lombok.*;
import javax.validation.constraints.*;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
@Schema(description = "管理后台 - 能源设备新增/修改 Request VO")
@Data
@ -54,4 +55,9 @@ public class EnergyDeviceSaveReqVO {
@Schema(description = "计算规则", example = "车间1")
private String rules;
@Schema(description = "计算规则集合")
private List<OperationRulesVO> operationRulesVOList;
}

@ -0,0 +1,23 @@
package cn.iocoder.yudao.module.mes.controller.admin.energydevice.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Schema(description = "管理后台 - 能耗设备运算规则 VO")
@Data
public class OperationRulesVO {
@Schema(description = "设备Id")
private Long deviceId;
@Schema(description = "点位Id")
private Long pointId;
@Schema(description = "运算符号")
private String operator;
@Schema(description = "点位参数值")
private String pointValue;
}

@ -0,0 +1,95 @@
package cn.iocoder.yudao.module.mes.controller.admin.energyrecord;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.constraints.*;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.IOException;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
import cn.iocoder.yudao.module.mes.controller.admin.energyrecord.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.energyrecord.EnergyRecordDO;
import cn.iocoder.yudao.module.mes.service.energyrecord.EnergyRecordService;
@Tag(name = "管理后台 - 能源设备历史记录")
@RestController
@RequestMapping("/mes/energy-record")
@Validated
public class EnergyRecordController {
@Resource
private EnergyRecordService energyRecordService;
@PostMapping("/create")
@Operation(summary = "创建能源设备历史记录")
@PreAuthorize("@ss.hasPermission('mes:energy-record:create')")
public CommonResult<Long> createEnergyRecord(@Valid @RequestBody EnergyRecordSaveReqVO createReqVO) {
return success(energyRecordService.createEnergyRecord(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新能源设备历史记录")
@PreAuthorize("@ss.hasPermission('mes:energy-record:update')")
public CommonResult<Boolean> updateEnergyRecord(@Valid @RequestBody EnergyRecordSaveReqVO updateReqVO) {
energyRecordService.updateEnergyRecord(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除能源设备历史记录")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('mes:energy-record:delete')")
public CommonResult<Boolean> deleteEnergyRecord(@RequestParam("id") Long id) {
energyRecordService.deleteEnergyRecord(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得能源设备历史记录")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('mes:energy-record:query')")
public CommonResult<EnergyRecordRespVO> getEnergyRecord(@RequestParam("id") Long id) {
EnergyRecordDO energyRecord = energyRecordService.getEnergyRecord(id);
return success(BeanUtils.toBean(energyRecord, EnergyRecordRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得能源设备历史记录分页")
@PreAuthorize("@ss.hasPermission('mes:energy-record:query')")
public CommonResult<PageResult<EnergyRecordRespVO>> getEnergyRecordPage(@Valid EnergyRecordPageReqVO pageReqVO) {
PageResult<EnergyRecordDO> pageResult = energyRecordService.getEnergyRecordPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, EnergyRecordRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出能源设备历史记录 Excel")
@PreAuthorize("@ss.hasPermission('mes:energy-record:export')")
@ApiAccessLog(operateType = EXPORT)
public void exportEnergyRecordExcel(@Valid EnergyRecordPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<EnergyRecordDO> list = energyRecordService.getEnergyRecordPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "能源设备历史记录.xls", "数据", EnergyRecordRespVO.class,
BeanUtils.toBean(list, EnergyRecordRespVO.class));
}
}

@ -0,0 +1,31 @@
package cn.iocoder.yudao.module.mes.controller.admin.energyrecord.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 能源设备历史记录分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class EnergyRecordPageReqVO extends PageParam {
@Schema(description = "能源设备id", example = "25594")
private Long energyDeviceId;
@Schema(description = "能耗历史数据")
private String recordData;
@Schema(description = "是否启用")
private Boolean isEnable;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}

@ -0,0 +1,35 @@
package cn.iocoder.yudao.module.mes.controller.admin.energyrecord.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
@Schema(description = "管理后台 - 能源设备历史记录 Response VO")
@Data
@ExcelIgnoreUnannotated
public class EnergyRecordRespVO {
@Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "14404")
@ExcelProperty("ID")
private Long id;
@Schema(description = "能源设备id", example = "25594")
@ExcelProperty("能源设备id")
private Long energyDeviceId;
@Schema(description = "能耗历史数据")
@ExcelProperty("能耗历史数据")
private String recordData;
@Schema(description = "是否启用", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("是否启用")
private Boolean isEnable;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
}

@ -0,0 +1,25 @@
package cn.iocoder.yudao.module.mes.controller.admin.energyrecord.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
@Schema(description = "管理后台 - 能源设备历史记录新增/修改 Request VO")
@Data
public class EnergyRecordSaveReqVO {
@Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "14404")
private Long id;
@Schema(description = "能源设备id", example = "25594")
private Long energyDeviceId;
@Schema(description = "能耗历史数据")
private String recordData;
@Schema(description = "是否启用", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "是否启用不能为空")
private Boolean isEnable;
}

@ -0,0 +1,140 @@
package cn.iocoder.yudao.module.mes.controller.admin.moldplanmaintenance;
import cn.iocoder.yudao.module.mes.controller.admin.ticketmanagement.vo.TicketManagementRespVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldsubject.MoldSubjectDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.subjectmoldplan.SubjectMoldPlanDO;
import cn.iocoder.yudao.module.mes.service.subjectmoldplan.SubjectMoldPlanService;
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.constraints.*;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.IOException;
import java.util.stream.Collectors;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
import cn.iocoder.yudao.module.mes.controller.admin.moldplanmaintenance.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldplanmaintenance.MoldPlanMaintenanceDO;
import cn.iocoder.yudao.module.mes.service.moldplanmaintenance.MoldPlanMaintenanceService;
@Tag(name = "管理后台 - 方案维护")
@RestController
@RequestMapping("/mes/mold-plan-maintenance")
@Validated
public class MoldPlanMaintenanceController {
@Resource
private MoldPlanMaintenanceService moldplanMaintenanceService;
@Resource
private SubjectMoldPlanService subjectMoldPlanService;
@Resource
private AdminUserApi adminUserApi;
@PostMapping("/create")
@Operation(summary = "创建方案维护")
@PreAuthorize("@ss.hasPermission('mes:mold-plan-maintenance:create')")
public CommonResult<Long> createMoldPlanMaintenance(@Valid @RequestBody MoldPlanMaintenanceSaveReqVO createReqVO) {
return success(moldplanMaintenanceService.createMoldPlanMaintenance(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新方案维护")
@PreAuthorize("@ss.hasPermission('mes:mold-plan-maintenance:update')")
public CommonResult<Boolean> updateMoldPlanMaintenance(@Valid @RequestBody MoldPlanMaintenanceSaveReqVO updateReqVO) {
moldplanMaintenanceService.updateMoldPlanMaintenance(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除方案维护")
@Parameter(name = "ids", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('mes:mold-plan-maintenance:delete')")
public CommonResult<Boolean> deleteMoldPlanMaintenance(@RequestParam("ids") String ids) {
// 将逗号分隔的字符串转换为Long类型的List
List<Long> idList = Arrays.stream(ids.split(","))
.map(String::trim) // 去除可能存在的空格
.map(Long::valueOf)
.collect(Collectors.toList());
moldplanMaintenanceService.deleteMoldPlanMaintenance(idList);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得方案维护")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('mes:mold-plan-maintenance:query')")
public CommonResult<MoldPlanMaintenanceRespVO> getMoldPlanMaintenance(@RequestParam("id") Long id) {
MoldPlanMaintenanceDO moldplanMaintenance = moldplanMaintenanceService.getMoldPlanMaintenance(id);
return success(BeanUtils.toBean(moldplanMaintenance, MoldPlanMaintenanceRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得方案维护分页")
@PreAuthorize("@ss.hasPermission('mes:mold-plan-maintenance:query')")
public CommonResult<PageResult<MoldPlanMaintenanceRespVO>> getMoldPlanMaintenancePage(@Valid MoldPlanMaintenancePageReqVO pageReqVO) {
PageResult<MoldPlanMaintenanceDO> pageResult = moldplanMaintenanceService.getMoldPlanMaintenancePage(pageReqVO);
PageResult<MoldPlanMaintenanceRespVO> moldplanMaintenanceRespVOPageResult = BeanUtils.toBean(pageResult, MoldPlanMaintenanceRespVO.class);
return success(buildPageCreatorName(moldplanMaintenanceRespVOPageResult));
}
@GetMapping("/export-excel")
@Operation(summary = "导出方案维护 Excel")
@PreAuthorize("@ss.hasPermission('mes:mold-plan-maintenance:export')")
@ApiAccessLog(operateType = EXPORT)
public void exportMoldPlanMaintenanceExcel(@Valid MoldPlanMaintenancePageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<MoldPlanMaintenanceDO> list = moldplanMaintenanceService.getMoldPlanMaintenancePage(pageReqVO).getList();
List<MoldPlanMaintenanceRespVO> moldplanMaintenanceRespVOS = BeanUtils.toBean(list, MoldPlanMaintenanceRespVO.class);
for (MoldPlanMaintenanceRespVO moldplanMaintenanceRespVO : moldplanMaintenanceRespVOS) {
AdminUserRespDTO user = adminUserApi.getUser(Long.valueOf(moldplanMaintenanceRespVO.getCreator()));
moldplanMaintenanceRespVO.setCreatorName( "(" + user.getUsername()+ ")" + user.getNickname());
}
// 导出 Excel
ExcelUtils.write(response, "方案维护.xls", "数据", MoldPlanMaintenanceRespVO.class,moldplanMaintenanceRespVOS);
}
@GetMapping("/getSubjectList")
@Operation(summary = "查询项目集合列表")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('mes:mold-plan-maintenance:query')")
public CommonResult<List<MoldSubjectDO>> getSubjectList(@RequestParam("id") Long id) {
List<MoldSubjectDO> subjectMoldPlanDOList = moldplanMaintenanceService.getSubjectList(id);
return success(subjectMoldPlanDOList);
}
private PageResult<MoldPlanMaintenanceRespVO> buildPageCreatorName(PageResult<MoldPlanMaintenanceRespVO> moldplanMaintenanceRespVOPageResult) {
for (MoldPlanMaintenanceRespVO moldplanMaintenanceRespVO : moldplanMaintenanceRespVOPageResult.getList()) {
AdminUserRespDTO user = adminUserApi.getUser(Long.valueOf(moldplanMaintenanceRespVO.getCreator()));
moldplanMaintenanceRespVO.setCreatorName( "(" + user.getUsername()+ ")" + user.getNickname());
}
return moldplanMaintenanceRespVOPageResult;
}
}

@ -0,0 +1,34 @@
package cn.iocoder.yudao.module.mes.controller.admin.moldplanmaintenance.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 方案维护分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class MoldPlanMaintenancePageReqVO extends PageParam {
@Schema(description = "名称", example = "王五")
private String planName;
@Schema(description = "名称", example = "1")
private Integer planType;
@Schema(description = "描述", example = "你猜")
private String description;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
@Schema(description = "id集合导出用")
private String ids;
}

@ -0,0 +1,42 @@
package cn.iocoder.yudao.module.mes.controller.admin.moldplanmaintenance.vo;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
@Schema(description = "管理后台 - 方案维护 Response VO")
@Data
@ExcelIgnoreUnannotated
public class MoldPlanMaintenanceRespVO extends BaseDO {
@Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "19033")
@ExcelProperty("id")
private Long id;
@Schema(description = "名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
@ExcelProperty("名称")
private String planName;
@Schema(description = "名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@ExcelProperty("名称")
private int planType;
@Schema(description = "描述", example = "你猜")
@ExcelProperty("描述")
private String description;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
@Schema(description = "项目集合ids")
private List<Long> subjectIds;
@Schema(description = "创建人名字")
@ExcelProperty("创建人名字")
private String creatorName;
}

@ -0,0 +1,28 @@
package cn.iocoder.yudao.module.mes.controller.admin.moldplanmaintenance.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
@Schema(description = "管理后台 - 方案维护新增/修改 Request VO")
@Data
public class MoldPlanMaintenanceSaveReqVO {
@Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "19033")
private Long id;
@Schema(description = "名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
@NotEmpty(message = "名称不能为空")
private String planName;
@Schema(description = "名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@NotEmpty(message = "名称不能为空")
private String planType;
@Schema(description = "描述")
private String description;
@Schema(description = "项目id集合", example = "1")
private String subjectIdS;
}

@ -0,0 +1,187 @@
package cn.iocoder.yudao.module.mes.controller.admin.moldsubject;
import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.module.mes.controller.admin.deviceledger.vo.DeviceLedgerRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.moldsubject.vo.MoldSubjectPageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.moldsubject.vo.MoldSubjectRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.moldsubject.vo.MoldSubjectSaveReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldsubject.MoldSubjectDO;
import cn.iocoder.yudao.module.mes.service.moldsubject.MoldSubjectService;
import cn.iocoder.yudao.module.system.api.dict.DictDataApi;
import cn.iocoder.yudao.module.system.api.dict.dto.DictDataRespDTO;
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
import com.alibaba.excel.util.StringUtils;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@Tag(name = "管理后台 - 维保项目")
@RestController
@RequestMapping("/mes/mold-subject")
@Validated
public class MoldSubjectController {
@Resource
private MoldSubjectService moldSubjectService;
@Resource
private AdminUserApi adminUserApi;
@Resource
private DictDataApi dictDataApi;
@PostMapping("/create")
@Operation(summary = "创建维保项目")
@PreAuthorize("@ss.hasPermission('mes:mold-subject:create')")
public CommonResult<Long> createMoldSubject(@Valid @RequestBody MoldSubjectSaveReqVO createReqVO) {
return success(moldSubjectService.createMoldSubject(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新维保项目")
@PreAuthorize("@ss.hasPermission('mes:mold-subject:update')")
public CommonResult<Boolean> updateMoldSubject(@Valid @RequestBody MoldSubjectSaveReqVO updateReqVO) {
moldSubjectService.updateMoldSubject(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除维保项目")
@Parameter(name = "ids", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('mes:mold-subject:delete')")
public CommonResult<Boolean> deleteMoldSubject(@RequestParam("ids") String ids) {
// 将逗号分隔的字符串转换为Long类型的List
List<Long> idList = Arrays.stream(ids.split(","))
.map(String::trim) // 去除可能存在的空格
.map(Long::valueOf)
.collect(Collectors.toList());
moldSubjectService.deleteMoldSubject(idList);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得维保项目")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('mes:mold-subject:query')")
public CommonResult<MoldSubjectRespVO> getMoldSubject(@RequestParam("id") Long id) {
MoldSubjectDO moldSubject = moldSubjectService.getMoldSubject(id);
return success(BeanUtils.toBean(moldSubject, MoldSubjectRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得维保项目分页")
@PreAuthorize("@ss.hasPermission('mes:mold-subject:query')")
public CommonResult<PageResult<MoldSubjectRespVO>> getMoldSubjectPage(@Valid MoldSubjectPageReqVO pageReqVO) {
PageResult<MoldSubjectDO> pageResult = moldSubjectService.getMoldSubjectPage(pageReqVO);
PageResult<MoldSubjectRespVO> moldSubjectRespVOPageResult = BeanUtils.toBean(pageResult, MoldSubjectRespVO.class);
return success(buildCreatorName(moldSubjectRespVOPageResult));
}
@GetMapping("/export-excel")
@Operation(summary = "导出维保项目 Excel")
@PreAuthorize("@ss.hasPermission('mes:mold-subject:export')")
@ApiAccessLog(operateType = EXPORT)
public void exportMoldSubjectExcel(@Valid MoldSubjectPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<MoldSubjectDO> list = moldSubjectService.getMoldSubjectPage(pageReqVO).getList();
List<MoldSubjectRespVO> moldSubjectRespVOList = BeanUtils.toBean(list, MoldSubjectRespVO.class);
// 1. 获取字典数据
Map<String, Map<String, String>> dictData = getDictData();
for (MoldSubjectRespVO moldSubjectRespVO : moldSubjectRespVOList) {
AdminUserRespDTO user = adminUserApi.getUser(Long.valueOf(moldSubjectRespVO.getCreator()));
moldSubjectRespVO.setCreatorName("(" + user.getUsername()+ ")" + user.getNickname());
// 转换检验方式字典值
if (StringUtils.isNotBlank(moldSubjectRespVO.getInspectionMethod())) {
String inspectionMethodLabel = dictData.get("Inspection_method")
.get(moldSubjectRespVO.getInspectionMethod());
if (StringUtils.isNotBlank(inspectionMethodLabel)) {
// 可以创建一个临时字段存储,或者直接替换原字段
moldSubjectRespVO.setInspectionMethod(inspectionMethodLabel);
}
}
// 转换值类型字典值
if (StringUtils.isNotBlank(moldSubjectRespVO.getValueType())) {
String valueTypeLabel = dictData.get("value_types")
.get(moldSubjectRespVO.getValueType());
if (StringUtils.isNotBlank(valueTypeLabel)) {
moldSubjectRespVO.setValueType(valueTypeLabel);
}
}
}
// 导出 Excel
ExcelUtils.write(response, "维保项目.xls", "数据", MoldSubjectRespVO.class,
moldSubjectRespVOList );
}
private PageResult<MoldSubjectRespVO> buildCreatorName(PageResult<MoldSubjectRespVO> moldSubjectRespVOPageResult) {
for (MoldSubjectRespVO moldSubjectRespVO : moldSubjectRespVOPageResult.getList()) {
AdminUserRespDTO user = adminUserApi.getUser(Long.valueOf(moldSubjectRespVO.getCreator()));
moldSubjectRespVO.setCreatorName("(" + user.getUsername()+ ")" + user.getNickname());
}
return moldSubjectRespVOPageResult;
}
/**
*
*/
private Map<String, Map<String, String>> getDictData() {
Map<String, Map<String, String>> dictData = new HashMap<>();
try {
// 获取检验方式字典
Map<String, String> inspectionMethodDict = new HashMap<>();
List<DictDataRespDTO> inspectionMethods = dictDataApi.getDictDataList("Inspection_method");
for (DictDataRespDTO dict : inspectionMethods) {
inspectionMethodDict.put(dict.getValue(), dict.getLabel());
}
dictData.put("Inspection_method", inspectionMethodDict);
// 获取值类型字典
Map<String, String> valueTypeDict = new HashMap<>();
List<DictDataRespDTO> valueTypes = dictDataApi.getDictDataList("value_types");
for (DictDataRespDTO dict : valueTypes) {
valueTypeDict.put(dict.getValue(), dict.getLabel());
}
dictData.put("value_types", valueTypeDict);
} catch (Exception e) {
throw new RuntimeException("获取字典数据异常:" + e);
}
return dictData;
}
}

@ -0,0 +1,53 @@
package cn.iocoder.yudao.module.mes.controller.admin.moldsubject.vo;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 维保项目分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class MoldSubjectPageReqVO extends PageParam {
@Schema(description = "项目编码")
private String subjectCode;
@Schema(description = "项目名称", example = "李四")
private String subjectName;
@Schema(description = "项目类型", example = "2")
private String subjectType;
@Schema(description = "项目内容")
private String subjectContent;
@Schema(description = "标准")
private String subjectStandard;
@Schema(description = "是否启用")
private Boolean isEnable;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
@Schema(description = "检验方式")
private String inspectionMethod;
@Schema(description = "值类型")
private String valueType;
@Schema(description = "判定基准")
private String judgmentCriteria;
@Schema(description = "id集合导出用")
private String ids;
}

@ -0,0 +1,70 @@
package cn.iocoder.yudao.module.mes.controller.admin.moldsubject.vo;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
@Schema(description = "管理后台 - 维保项目 Response VO")
@Data
@ExcelIgnoreUnannotated
public class MoldSubjectRespVO extends BaseDO {
@Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "24679")
// @ExcelProperty("ID")
private Long id;
@Schema(description = "项目编码", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("项目编码")
private String subjectCode;
@Schema(description = "项目名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
@ExcelProperty("项目名称")
private String subjectName;
@Schema(description = "项目类型", example = "2")
// @ExcelProperty("项目类型")
private String subjectType;
@Schema(description = "项目内容", requiredMode = Schema.RequiredMode.REQUIRED)
// @ExcelProperty("项目内容")
private String subjectContent;
@Schema(description = "标准")
// @ExcelProperty("标准")
private String subjectStandard;
@Schema(description = "是否启用", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty(value = "是否启用", converter = DictConvert.class)
@DictFormat("infra_boolean_string") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
private Boolean isEnable;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
@ColumnWidth(20)
private LocalDateTime createTime;
@Schema(description = "检验方式")
@ExcelProperty("检验方式")
private String inspectionMethod;
@Schema(description = "值类型")
@ExcelProperty("值类型")
private String valueType;
@Schema(description = "判定基准")
@ExcelProperty("判定基准")
private String judgmentCriteria;
@Schema(description = "创建人名字")
@ExcelProperty("创建人名字")
private String creatorName;
}

@ -0,0 +1,50 @@
package cn.iocoder.yudao.module.mes.controller.admin.moldsubject.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
@Schema(description = "管理后台 - 维保项目新增/修改 Request VO")
@Data
public class MoldSubjectSaveReqVO {
@Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "24679")
private Long id;
@Schema(description = "项目编码", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "项目编码不能为空")
private String subjectCode;
@Schema(description = "项目名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
@NotEmpty(message = "项目名称不能为空")
private String subjectName;
@Schema(description = "项目类型", example = "2")
private String subjectType;
@Schema(description = "项目内容", requiredMode = Schema.RequiredMode.REQUIRED)
// @NotEmpty(message = "项目内容不能为空")
private String subjectContent;
@Schema(description = "标准")
private String subjectStandard;
@Schema(description = "是否启用", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "是否启用不能为空")
private Boolean isEnable;
@Schema(description = "检验方式", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "检验方式")
private String inspectionMethod;
@Schema(description = "值类型", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "值类型")
private String valueType;
@Schema(description = "判定基准", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "判定基准")
private String judgmentCriteria;
}

@ -0,0 +1,136 @@
package cn.iocoder.yudao.module.mes.controller.admin.moldtaskmanagement;
import cn.iocoder.yudao.module.mes.controller.admin.planmaintenance.vo.PlanMaintenanceRespVO;
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.constraints.*;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.IOException;
import java.util.stream.Collectors;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
import cn.iocoder.yudao.module.mes.controller.admin.moldtaskmanagement.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldtaskmanagement.MoldTaskManagementDO;
import cn.iocoder.yudao.module.mes.service.moldtaskmanagement.MoldTaskManagementService;
@Tag(name = "管理后台 - 任务管理")
@RestController
@RequestMapping("/mes/mold-task-management")
@Validated
public class MoldTaskManagementController {
@Resource
private MoldTaskManagementService moldtaskManagementService;
@Resource
private AdminUserApi adminUserApi;
@PostMapping("/create")
@Operation(summary = "创建任务管理")
@PreAuthorize("@ss.hasPermission('mes:mold-task-management:create')")
public CommonResult<Long> createMoldTaskManagement(@Valid @RequestBody MoldTaskManagementSaveReqVO createReqVO) {
return success(moldtaskManagementService.createMoldTaskManagement(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新任务管理")
@PreAuthorize("@ss.hasPermission('mes:mold-task-management:update')")
public CommonResult<Boolean> updateMoldTaskManagement(@Valid @RequestBody MoldTaskManagementSaveReqVO updateReqVO) {
moldtaskManagementService.updateMoldTaskManagement(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除任务管理")
@Parameter(name = "ids", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('mes:mold-task-management:delete')")
public CommonResult<Boolean> deleteMoldTaskManagement(@RequestParam("ids") String ids) {
// 将逗号分隔的字符串转换为Long类型的List
List<Long> idList = Arrays.stream(ids.split(","))
.map(String::trim) // 去除可能存在的空格
.map(Long::valueOf)
.collect(Collectors.toList());
moldtaskManagementService.deleteMoldTaskManagement(idList);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得任务管理")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('mes:mold-task-management:query')")
public CommonResult<MoldTaskManagementRespVO> getMoldTaskManagement(@RequestParam("id") Long id) {
MoldTaskManagementDO moldtaskManagement = moldtaskManagementService.getMoldTaskManagement(id);
return success(BeanUtils.toBean(moldtaskManagement, MoldTaskManagementRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得任务管理分页")
@PreAuthorize("@ss.hasPermission('mes:mold-task-management:query')")
public CommonResult<PageResult<MoldTaskManagementRespVO>> getMoldTaskManagementPage(@Valid MoldTaskManagementPageReqVO pageReqVO) {
PageResult<MoldTaskManagementDO> pageResult = moldtaskManagementService.getMoldTaskManagementPage(pageReqVO);
PageResult<MoldTaskManagementRespVO> moldtaskManagementRespVOPageResult = BeanUtils.toBean(pageResult, MoldTaskManagementRespVO.class);
buildPageCreatorName(moldtaskManagementRespVOPageResult);
return success(moldtaskManagementRespVOPageResult);
}
@GetMapping("/export-excel")
@Operation(summary = "导出任务管理 Excel")
@PreAuthorize("@ss.hasPermission('mes:mold-task-management:export')")
@ApiAccessLog(operateType = EXPORT)
public void exportMoldTaskManagementExcel(@Valid MoldTaskManagementPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<MoldTaskManagementDO> list = moldtaskManagementService.getMoldTaskManagementPage(pageReqVO).getList();
List<MoldTaskManagementRespVO> moldtaskManagementRespVOList = BeanUtils.toBean(list, MoldTaskManagementRespVO.class);
for (MoldTaskManagementRespVO planMaintenanceRespVO : moldtaskManagementRespVOList) {
AdminUserRespDTO user = adminUserApi.getUser(Long.valueOf(planMaintenanceRespVO.getCreator()));
planMaintenanceRespVO.setCreatorName( "(" + user.getUsername()+ ")" + user.getNickname());
}
// 导出 Excel
ExcelUtils.write(response, "模具类型.xls", "数据", MoldTaskManagementRespVO.class,moldtaskManagementRespVOList);
}
@PostMapping("/createMoldTicket")
@Operation(summary = "创建工单管理")
@PreAuthorize("@ss.hasPermission('mes:mold-task-management:create')")
public CommonResult<Boolean> createTicket(@RequestParam("id") Long id) {
moldtaskManagementService.createMoldTicket(id);
return success(true);
}
private PageResult<MoldTaskManagementRespVO> buildPageCreatorName(PageResult<MoldTaskManagementRespVO> planMaintenanceRespVOPageResult) {
for (MoldTaskManagementRespVO planMaintenanceRespVO : planMaintenanceRespVOPageResult.getList()) {
AdminUserRespDTO user = adminUserApi.getUser(Long.valueOf(planMaintenanceRespVO.getCreator()));
planMaintenanceRespVO.setCreatorName( "(" + user.getUsername()+ ")" + user.getNickname());
}
return planMaintenanceRespVOPageResult;
}
}

@ -0,0 +1,54 @@
package cn.iocoder.yudao.module.mes.controller.admin.moldtaskmanagement.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 模具类型分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class MoldTaskManagementPageReqVO extends PageParam {
@Schema(description = "名称", example = "李四")
private String name;
@Schema(description = "类型(1-点检 2-保养)", example = "2")
private Integer taskType;
@Schema(description = "模具列表")
private String moldList;
@Schema(description = "项目表单")
private Long projectForm;
@Schema(description = "起止开始日期")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] startDate;
@Schema(description = "起止结束日期")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] endDate;
@Schema(description = "cron表达式")
private String cronExpression;
@Schema(description = "可操作人")
private String operableUsers;
@Schema(description = "是否启用")
private Boolean enabled;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
@Schema(description = "id集合导出用")
private String ids;
}

@ -0,0 +1,77 @@
package cn.iocoder.yudao.module.mes.controller.admin.moldtaskmanagement.vo;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.time.LocalDate;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
@Schema(description = "管理后台 - 模具类型 Response VO")
@Data
@ExcelIgnoreUnannotated
public class MoldTaskManagementRespVO extends BaseDO {
@Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "26348")
@ExcelProperty("id")
private Long id;
@Schema(description = "名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
@ExcelProperty("名称")
private String name;
@Schema(description = "类型(1-点检 2-保养)", example = "2")
@ExcelProperty("类型(1-点检 2-保养)")
private Integer taskType;
@Schema(description = "模具列表")
@ExcelProperty("模具列表")
private String moldList;
@Schema(description = "项目表单")
@ExcelProperty("项目表单")
private Long projectForm;
@Schema(description = "起止开始日期")
@ExcelProperty("起止开始日期")
@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDate startDate;
@Schema(description = "起止结束日期")
@ExcelProperty("起止结束日期")
@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDate endDate;
@Schema(description = "cron表达式")
@ExcelProperty("cron表达式")
private String cronExpression;
@Schema(description = "可操作人")
@ExcelProperty("可操作人")
private String operableUsers;
@Schema(description = "是否启用", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("是否启用")
private Boolean enabled;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
@Schema(description = "创建人名字")
@ExcelProperty("创建人名字")
private String creatorName;
@Schema(description = "项目表单名称")
@ExcelProperty("项目表单名称")
private String projectFormName;
}

@ -0,0 +1,53 @@
package cn.iocoder.yudao.module.mes.controller.admin.moldtaskmanagement.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 模具类型新增/修改 Request VO")
@Data
public class MoldTaskManagementSaveReqVO {
@Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "26348")
private Long id;
@Schema(description = "名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
@NotEmpty(message = "名称不能为空")
private String name;
@Schema(description = "类型(1-点检 2-保养)", example = "2")
private Integer taskType;
@Schema(description = "模具列表")
private String moldList;
@Schema(description = "项目表单")
private Long projectForm;
@Schema(description = "起止开始日期")
@JsonFormat(pattern = "yyyy-MM-dd")
private String startDate;
@Schema(description = "起止结束日期")
@JsonFormat(pattern = "yyyy-MM-dd")
private String endDate;
@Schema(description = "cron表达式")
private String cronExpression;
@Schema(description = "可操作人")
private String operableUsers;
@Schema(description = "是否启用", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "是否启用不能为空")
private Boolean enabled;
}

@ -0,0 +1,127 @@
package cn.iocoder.yudao.module.mes.controller.admin.moldticketmanagement;
import cn.iocoder.yudao.module.erp.controller.admin.mold.vo.MoldRespVO;
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.constraints.*;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.IOException;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
import cn.iocoder.yudao.module.mes.controller.admin.moldticketmanagement.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldticketmanagement.MoldTicketManagementDO;
import cn.iocoder.yudao.module.mes.service.moldticketmanagement.MoldTicketManagementService;
@Tag(name = "管理后台 - 工单管理")
@RestController
@RequestMapping("/mes/mold-ticket-management")
@Validated
public class MoldTicketManagementController {
@Resource
private MoldTicketManagementService moldticketManagementService;
@Resource
private AdminUserApi adminUserApi;
@PostMapping("/create")
@Operation(summary = "创建工单管理")
@PreAuthorize("@ss.hasPermission('mes:mold-ticket-management:create')")
public CommonResult<Long> createMoldTicketManagement(@Valid @RequestBody MoldTicketManagementSaveReqVO createReqVO) {
return success(moldticketManagementService.createMoldTicketManagement(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新工单管理")
@PreAuthorize("@ss.hasPermission('mes:mold-ticket-management:update')")
public CommonResult<Boolean> updateMoldTicketManagement(@Valid @RequestBody MoldTicketManagementSaveReqVO updateReqVO) {
moldticketManagementService.updateMoldTicketManagement(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除工单管理")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('mes:mold-ticket-management:delete')")
public CommonResult<Boolean> deleteMoldTicketManagement(@RequestParam("id") Long id) {
moldticketManagementService.deleteMoldTicketManagement(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得工单管理")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('mes:mold-ticket-management:query')")
public CommonResult<MoldTicketManagementRespVO> getMoldTicketManagement(@RequestParam("id") Long id) {
MoldTicketManagementDO moldticketManagement = moldticketManagementService.getMoldTicketManagement(id);
return success(BeanUtils.toBean(moldticketManagement, MoldTicketManagementRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得工单管理分页")
@PreAuthorize("@ss.hasPermission('mes:mold-ticket-management:query')")
public CommonResult<PageResult<MoldTicketManagementRespVO>> getMoldTicketManagementPage(@Valid MoldTicketManagementPageReqVO pageReqVO) {
PageResult<MoldTicketManagementDO> pageResult = moldticketManagementService.getMoldTicketManagementPage(pageReqVO);
return success(buildPageCreatorName(BeanUtils.toBean(pageResult, MoldTicketManagementRespVO.class)));
}
@GetMapping("/export-excel")
@Operation(summary = "导出工单管理 Excel")
@PreAuthorize("@ss.hasPermission('mes:mold-ticket-management:export')")
@ApiAccessLog(operateType = EXPORT)
public void exportMoldTicketManagementExcel(@Valid MoldTicketManagementPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<MoldTicketManagementDO> list = moldticketManagementService.getMoldTicketManagementPage(pageReqVO).getList();
List<MoldTicketManagementRespVO> moldticketManagementRespVOList = BeanUtils.toBean(list, MoldTicketManagementRespVO.class);
for (MoldTicketManagementRespVO moldticketManagementRespVO : moldticketManagementRespVOList) {
AdminUserRespDTO user = adminUserApi.getUser(Long.valueOf(moldticketManagementRespVO.getCreator()));
moldticketManagementRespVO.setCreatorName( "(" + user.getUsername()+ ")" + user.getNickname());
}
// 导出 Excel
ExcelUtils.write(response, "工单管理.xls", "数据", MoldTicketManagementRespVO.class,
moldticketManagementRespVOList);
}
@PutMapping("/batchUpdateStatus")
@Operation(summary = "批量取消工单")
@PreAuthorize("@ss.hasPermission('mes:mold-ticket-management:update')")
public CommonResult<Boolean> batchUpdateMoldTicketStatus(@Valid @RequestBody MoldTicketManagementBatchUpdateReqVO reqVO) {
moldticketManagementService.batchUpdateJobStatus(reqVO);
return success(true);
}
private PageResult<MoldTicketManagementRespVO> buildPageCreatorName(PageResult<MoldTicketManagementRespVO> moldticketManagementRespVOPageResult) {
for (MoldTicketManagementRespVO moldticketManagementRespVO : moldticketManagementRespVOPageResult.getList()) {
AdminUserRespDTO user = adminUserApi.getUser(Long.valueOf(moldticketManagementRespVO.getCreator()));
moldticketManagementRespVO.setCreatorName( "(" + user.getUsername()+ ")" + user.getNickname());
if (moldticketManagementRespVO.getOperator()!=null){
AdminUserRespDTO operator = adminUserApi.getUser(Long.valueOf(moldticketManagementRespVO.getOperator()));
moldticketManagementRespVO.setOperatorName("(" + operator.getUsername()+ ")" + operator.getNickname());
}
}
return moldticketManagementRespVOPageResult;
}
}

@ -0,0 +1,87 @@
package cn.iocoder.yudao.module.mes.controller.admin.moldticketmanagement.enums;
import lombok.Getter;
import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
*
* 1- 2-
*/
@Getter
public enum MoldPlanTypeEnum {
INSPECTION(1, "点检"),
MAINTENANCE(2, "保养");
private final Integer code;
private final String description;
MoldPlanTypeEnum(Integer code, String description) {
this.code = code;
this.description = description;
}
/**
* code
*/
public static MoldPlanTypeEnum getByCode(Integer code) {
if (code == null) {
return null;
}
for (MoldPlanTypeEnum type : values()) {
if (type.getCode().equals(code)) {
return type;
}
}
return null;
}
/**
* code
*/
public static String getDescriptionByCode(Integer code) {
MoldPlanTypeEnum type = getByCode(code);
return type != null ? type.getDescription() : "未知";
}
/**
* code
*/
public static boolean isValidCode(Integer code) {
return getByCode(code) != null;
}
/**
* code
*/
public static List<Integer> getAllCodes() {
return Arrays.stream(values())
.map(MoldPlanTypeEnum::getCode)
.collect(Collectors.toList());
}
/**
*
*/
public static List<String> getAllDescriptions() {
return Arrays.stream(values())
.map(MoldPlanTypeEnum::getDescription)
.collect(Collectors.toList());
}
/**
* code
*/
public static Map<Integer, String> getCodeDescriptionMap() {
Map<Integer, String> map = new LinkedHashMap<>();
for (MoldPlanTypeEnum type : values()) {
map.put(type.getCode(), type.getDescription());
}
return map;
}
}

@ -0,0 +1,20 @@
package cn.iocoder.yudao.module.mes.controller.admin.moldticketmanagement.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
// 1. 新增请求VO
@Data
public class MoldTicketManagementBatchUpdateReqVO {
@Schema(description = "工单ID列表用逗号分隔", example = "1,2,3")
@NotBlank(message = "工单ID不能为空")
private String ids;
@Schema(description = "作业状态", example = "2")
@NotNull(message = "作业状态不能为空")
private Integer jobStatus ; // 默认值为2
}

@ -0,0 +1,66 @@
package cn.iocoder.yudao.module.mes.controller.admin.moldticketmanagement.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 项目方案关联分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class MoldTicketManagementPageReqVO extends PageParam {
@Schema(description = "项目ID", example = "21368")
private Long taskId;
@Schema(description = "方案ID", example = "20459")
private Long planId;
@Schema(description = "单号")
private String planNo;
@Schema(description = "设备名称", example = "张三")
private String moldName;
@Schema(description = "类型(1-点检 2-保养)", example = "2")
private String planType;
@Schema(description = "计划配置名称", example = "赵六")
private String configName;
@Schema(description = "作业状态", example = "1")
private Integer jobStatus;
@Schema(description = "作业结果")
private String jobResult;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
@Schema(description = "id集合导出用")
private String ids;
/**
*
*/
private String taskTime;
/**
*
*/
private String taskEndTime;
}

@ -0,0 +1,92 @@
package cn.iocoder.yudao.module.mes.controller.admin.moldticketmanagement.vo;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import com.github.xiaoymin.knife4j.annotations.Ignore;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
@Schema(description = "管理后台 - 项目方案关联 Response VO")
@Data
@ExcelIgnoreUnannotated
public class MoldTicketManagementRespVO extends BaseDO {
@Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "6566")
@ExcelProperty("id")
private Long id;
@Schema(description = "任务Id", example = "21368")
// @ExcelProperty("项目ID")
private Long taskId;
@Schema(description = "方案ID", example = "20459")
// @ExcelProperty("方案ID")
private Long planId;
@Schema(description = "单号")
@ExcelProperty("单号")
private String planNo;
@Schema(description = "设备名称", example = "张三")
@ExcelProperty("设备名称")
private String moldName;
@Schema(description = "类型", example = "2")
@ExcelProperty("类型")
private String planType;
@Schema(description = "计划配置名称", example = "赵六")
@ExcelProperty("计划配置名称")
private String configName;
@Schema(description = "作业状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@ExcelProperty("作业状态")
private Integer jobStatus;
@Schema(description = "作业结果")
@ExcelProperty("作业结果")
private Integer jobResult;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
/**
*
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonSerialize(using = LocalDateTimeSerializer.class)
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
private LocalDateTime taskTime;
/**
*
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonSerialize(using = LocalDateTimeSerializer.class)
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
private LocalDateTime taskEndTime;
@Schema(description = "创建人名字")
@ExcelProperty("创建人名字")
private String creatorName;
@Schema(description = "作业人")
private String operator;
@Schema(description = "作业人名称")
@ExcelProperty("作业人名称")
private String operatorName;
}

@ -0,0 +1,42 @@
package cn.iocoder.yudao.module.mes.controller.admin.moldticketmanagement.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
@Schema(description = "管理后台 - 项目方案关联新增/修改 Request VO")
@Data
public class MoldTicketManagementSaveReqVO {
@Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "6566")
private Long id;
@Schema(description = "项目ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "21368")
@NotNull(message = "项目ID不能为空")
private Long subjectId;
@Schema(description = "方案ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "20459")
@NotNull(message = "方案ID不能为空")
private Long planId;
@Schema(description = "单号")
private String planNo;
@Schema(description = "设备名称", example = "张三")
private String moldName;
@Schema(description = "类型", example = "2")
private String planType;
@Schema(description = "计划配置名称", example = "赵六")
private String configName;
@Schema(description = "作业状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@NotNull(message = "作业状态不能为空")
private Integer jobStatus;
@Schema(description = "作业结果")
private Integer jobResult;
}

@ -0,0 +1,104 @@
package cn.iocoder.yudao.module.mes.controller.admin.moldticketresults;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.constraints.*;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.IOException;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
import cn.iocoder.yudao.module.mes.controller.admin.moldticketresults.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldticketresults.MoldTicketResultsDO;
import cn.iocoder.yudao.module.mes.service.moldticketresults.MoldTicketResultsService;
@Tag(name = "管理后台 - 工单检验结果")
@RestController
@RequestMapping("/mes/mold-ticket-results")
@Validated
public class MoldTicketResultsController {
@Resource
private MoldTicketResultsService moldticketResultsService;
@PostMapping("/create")
@Operation(summary = "创建工单检验结果")
@PreAuthorize("@ss.hasPermission('mes:mold-ticket-results:create')")
public CommonResult<Long> createMoldTicketResults(@Valid @RequestBody MoldTicketResultsSaveReqVO createReqVO) {
return success(moldticketResultsService.createMoldTicketResults(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新工单检验结果")
@PreAuthorize("@ss.hasPermission('mes:mold-ticket-results:update')")
public CommonResult<Boolean> updateMoldTicketResults(@Valid @RequestBody MoldTicketResultsSaveReqVO updateReqVO) {
moldticketResultsService.updateMoldTicketResults(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除工单检验结果")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('mes:mold-ticket-results:delete')")
public CommonResult<Boolean> deleteMoldTicketResults(@RequestParam("id") Long id) {
moldticketResultsService.deleteMoldTicketResults(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得工单检验结果")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('mes:mold-ticket-results:query')")
public CommonResult<MoldTicketResultsRespVO> getMoldTicketResults(@RequestParam("id") Long id) {
MoldTicketResultsDO moldticketResults = moldticketResultsService.getMoldTicketResults(id);
return success(BeanUtils.toBean(moldticketResults, MoldTicketResultsRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得工单检验结果分页")
@PreAuthorize("@ss.hasPermission('mes:mold-ticket-results:query')")
public CommonResult<PageResult<MoldTicketResultsRespVO>> getMoldTicketResultsPage(@Valid MoldTicketResultsPageReqVO pageReqVO) {
PageResult<MoldTicketResultsDO> pageResult = moldticketResultsService.getMoldTicketResultsPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, MoldTicketResultsRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出工单检验结果 Excel")
@PreAuthorize("@ss.hasPermission('mes:mold-ticket-results:export')")
@ApiAccessLog(operateType = EXPORT)
public void exportMoldTicketResultsExcel(@Valid MoldTicketResultsPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<MoldTicketResultsDO> list = moldticketResultsService.getMoldTicketResultsPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "工单检验结果.xls", "数据", MoldTicketResultsRespVO.class,
BeanUtils.toBean(list, MoldTicketResultsRespVO.class));
}
@PutMapping("/batchUpdate")
@Operation(summary = "批量更新工单检验结果")
@PreAuthorize("@ss.hasPermission('mes:mold-ticket-results:update')")
public CommonResult<Boolean> batchUpdateMoldTicketResults(
@Valid @RequestBody List<MoldTicketResultsSaveReqVO> updateReqVOList) {
moldticketResultsService.batchUpdateMoldTicketResults(updateReqVOList);
return success(true);
}
}

@ -0,0 +1,109 @@
package cn.iocoder.yudao.module.mes.controller.admin.moldticketresults.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
*
*/
@Getter
@AllArgsConstructor
public enum MoldJobResultEnum {
/**
*
*/
PENDING(0, "待完成"),
/**
*
*/
PASS(1, "通过"),
/**
*
*/
FAIL(2, "不通过");
/**
*
*/
private final Integer code;
/**
*
*/
private final String description;
/**
*
*/
public static MoldJobResultEnum getByCode(Integer code) {
if (code == null) {
return null;
}
for (MoldJobResultEnum status : values()) {
if (status.getCode().equals(code)) {
return status;
}
}
return null;
}
/**
*
*/
public static boolean isValidCode(Integer code) {
return getByCode(code) != null;
}
/**
*
*/
public static List<Integer> getAllCodes() {
return Arrays.stream(values())
.map(MoldJobResultEnum::getCode)
.collect(Collectors.toList());
}
/**
*
*/
public static List<String> getAllDescriptions() {
return Arrays.stream(values())
.map(MoldJobResultEnum::getDescription)
.collect(Collectors.toList());
}
/**
*
*/
public boolean isPending() {
return this == PENDING;
}
/**
*
*/
public boolean isPass() {
return this == PASS;
}
/**
*
*/
public boolean isFail() {
return this == FAIL;
}
/**
*
*/
public boolean isCompleted() {
return this == PASS || this == FAIL;
}
}

@ -0,0 +1,47 @@
package cn.iocoder.yudao.module.mes.controller.admin.moldticketresults.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 工单检验结果分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class MoldTicketResultsPageReqVO extends PageParam {
@Schema(description = "检验项名称", example = "赵六")
private String inspectionItemName;
@Schema(description = "检验方式")
private String inspectionMethod;
@Schema(description = "判定基准")
private String judgmentCriteria;
@Schema(description = "检验结果 0-待检测 1-检测通过 2-检测不通过")
private Integer inspectionResult;
@Schema(description = "图片路径")
private String images;
@Schema(description = "备注", example = "你说的对")
private String remark;
@Schema(description = "检验时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] inspectionTime;
@Schema(description = "工单管理Id")
private Long managementId;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}

@ -0,0 +1,56 @@
package cn.iocoder.yudao.module.mes.controller.admin.moldticketresults.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
@Schema(description = "管理后台 - 工单检验结果 Response VO")
@Data
@ExcelIgnoreUnannotated
public class MoldTicketResultsRespVO {
@Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "30557")
@ExcelProperty("id")
private Long id;
@Schema(description = "检验项名称", example = "赵六")
@ExcelProperty("检验项名称")
private String inspectionItemName;
@Schema(description = "检验方式")
@ExcelProperty("检验方式")
private String inspectionMethod;
@Schema(description = "判定基准")
@ExcelProperty("判定基准")
private String judgmentCriteria;
@Schema(description = "检验结果 0-待检测 1-检测通过 2-检测不通过")
@ExcelProperty("检验结果 0-待检测 1-检测通过 2-检测不通过")
private Integer inspectionResult;
@Schema(description = "图片路径")
@ExcelProperty("图片路径")
private String images;
@Schema(description = "备注", example = "你说的对")
@ExcelProperty("备注")
private String remark;
@Schema(description = "检验时间")
@ExcelProperty("检验时间")
private LocalDateTime inspectionTime;
@Schema(description = "工单管理Id")
private Long managementId;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
@Schema(description = "模具Id")
private Long moldId;
}

@ -0,0 +1,44 @@
package cn.iocoder.yudao.module.mes.controller.admin.moldticketresults.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 工单检验结果新增/修改 Request VO")
@Data
public class MoldTicketResultsSaveReqVO {
@Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "30557")
private Long id;
@Schema(description = "检验项名称", example = "赵六")
private String inspectionItemName;
@Schema(description = "工单管理Id")
private Long managementId;
@Schema(description = "检验方式")
private String inspectionMethod;
@Schema(description = "判定基准")
private String judgmentCriteria;
@Schema(description = "检验结果 0-待检测 1-检测通过 2-检测不通过")
private Integer inspectionResult;
@Schema(description = "图片路径")
private String images;
@Schema(description = "备注", example = "你说的对")
private String remark;
@Schema(description = "检验时间")
private LocalDateTime inspectionTime;
@Schema(description = "检验人")
private String inspector;
}

@ -27,6 +27,7 @@ public class LineAnalysisTreeDTO {
public static class LineNode {
private Long id; // 产线ID
private String name; // 产线名称
private Long parentId;
private List<EquipmentNode> equipments = new ArrayList<>();
}

@ -0,0 +1,95 @@
package cn.iocoder.yudao.module.mes.controller.admin.subjectmoldplan;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.constraints.*;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.IOException;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
import cn.iocoder.yudao.module.mes.controller.admin.subjectmoldplan.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.subjectmoldplan.SubjectMoldPlanDO;
import cn.iocoder.yudao.module.mes.service.subjectmoldplan.SubjectMoldPlanService;
@Tag(name = "管理后台 - 项目方案关联")
@RestController
@RequestMapping("/mes/subject-mold-plan")
@Validated
public class SubjectMoldPlanController {
@Resource
private SubjectMoldPlanService subjectPlanService;
@PostMapping("/create")
@Operation(summary = "创建项目方案关联")
@PreAuthorize("@ss.hasPermission('mes:subject-mold-plan:create')")
public CommonResult<Long> createSubjectMoldPlan(@Valid @RequestBody SubjectMoldPlanSaveReqVO createReqVO) {
return success(subjectPlanService.createSubjectMoldPlan(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新项目方案关联")
@PreAuthorize("@ss.hasPermission('mes:subject-mold-plan:update')")
public CommonResult<Boolean> updateSubjectMoldPlan(@Valid @RequestBody SubjectMoldPlanSaveReqVO updateReqVO) {
subjectPlanService.updateSubjectMoldPlan(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除项目方案关联")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('mes:subject-mold-plan:delete')")
public CommonResult<Boolean> deleteSubjectMoldPlan(@RequestParam("id") Long id) {
subjectPlanService.deleteSubjectMoldPlan(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得项目方案关联")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('mes:subject-mold-plan:query')")
public CommonResult<SubjectMoldPlanRespVO> getSubjectMoldPlan(@RequestParam("id") Long id) {
SubjectMoldPlanDO subjectPlan = subjectPlanService.getSubjectMoldPlan(id);
return success(BeanUtils.toBean(subjectPlan, SubjectMoldPlanRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得项目方案关联分页")
@PreAuthorize("@ss.hasPermission('mes:subject-mold-plan:query')")
public CommonResult<PageResult<SubjectMoldPlanRespVO>> getSubjectMoldPlanPage(@Valid SubjectMoldPlanPageReqVO pageReqVO) {
PageResult<SubjectMoldPlanDO> pageResult = subjectPlanService.getSubjectMoldPlanPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, SubjectMoldPlanRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出项目方案关联 Excel")
@PreAuthorize("@ss.hasPermission('mes:subject-mold-plan:export')")
@ApiAccessLog(operateType = EXPORT)
public void exportSubjectMoldPlanExcel(@Valid SubjectMoldPlanPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<SubjectMoldPlanDO> list = subjectPlanService.getSubjectMoldPlanPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "项目方案关联.xls", "数据", SubjectMoldPlanRespVO.class,
BeanUtils.toBean(list, SubjectMoldPlanRespVO.class));
}
}

@ -0,0 +1,28 @@
package cn.iocoder.yudao.module.mes.controller.admin.subjectmoldplan.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 项目方案关联分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class SubjectMoldPlanPageReqVO extends PageParam {
@Schema(description = "项目ID", example = "21197")
private String subjectId;
@Schema(description = "方案ID", example = "19398")
private String planId;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}

@ -0,0 +1,31 @@
package cn.iocoder.yudao.module.mes.controller.admin.subjectmoldplan.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
@Schema(description = "管理后台 - 项目方案关联 Response VO")
@Data
@ExcelIgnoreUnannotated
public class SubjectMoldPlanRespVO {
@Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "29831")
@ExcelProperty("id")
private Long id;
@Schema(description = "项目ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "21197")
@ExcelProperty("项目ID")
private String subjectId;
@Schema(description = "方案ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "19398")
@ExcelProperty("方案ID")
private String planId;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
}

@ -0,0 +1,23 @@
package cn.iocoder.yudao.module.mes.controller.admin.subjectmoldplan.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
@Schema(description = "管理后台 - 项目方案关联新增/修改 Request VO")
@Data
public class SubjectMoldPlanSaveReqVO {
@Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "29831")
private Long id;
@Schema(description = "项目ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "21197")
@NotEmpty(message = "项目ID不能为空")
private String subjectId;
@Schema(description = "方案ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "19398")
@NotEmpty(message = "方案ID不能为空")
private String planId;
}

@ -72,13 +72,13 @@ public class EnergyDeviceDO extends BaseDO {
/**
* ID
*/
private Long OrgId;
private Long orgId;
/**
*
*/
private String OrgName;
private String orgName;
/**
*
*/
private String Rules;
private String rules;
}

@ -0,0 +1,43 @@
package cn.iocoder.yudao.module.mes.dal.dataobject.energyrecord;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
/**
* DO
*
* @author
*/
@TableName("mes_energy_record")
@KeySequence("mes_energy_record_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class EnergyRecordDO extends BaseDO {
/**
* ID
*/
@TableId
private Long id;
/**
* id
*/
private Long energyDeviceId;
/**
*
*/
private String recordData;
/**
*
*/
private Boolean isEnable;
}

@ -0,0 +1,48 @@
package cn.iocoder.yudao.module.mes.dal.dataobject.moldplanmaintenance;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
/**
* DO
*
* @author
*/
@TableName("mes_mold_plan_maintenance")
@KeySequence("mes_mold_plan_maintenance_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class MoldPlanMaintenanceDO extends BaseDO {
/**
* id
*/
@TableId
private Long id;
/**
*
*/
private String planName;
/**
* 1- 2-
*/
private int planType;
/**
*
*/
private String description;
/**
* id
*/
@TableField(exist = false)
private List<Long> subjectIds;
}

@ -0,0 +1,70 @@
package cn.iocoder.yudao.module.mes.dal.dataobject.moldsubject;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
/**
* DO
*
* @author
*/
@TableName("mes_mold_subject")
@KeySequence("mes_mold_subject_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class MoldSubjectDO extends BaseDO {
/**
* ID
*/
@TableId
private Long id;
/**
*
*/
private String subjectCode;
/**
*
*/
private String subjectName;
/**
*
*/
private String subjectType;
/**
*
*/
private String subjectContent;
/**
*
*/
private String subjectStandard;
/**
*
*
* {@link TODO infra_boolean_string }
*/
private Boolean isEnable;
/**
*
*/
private String inspectionMethod;
/**
*
*/
private String valueType;
/**
*
*/
private String judgmentCriteria;
}

@ -0,0 +1,84 @@
package cn.iocoder.yudao.module.mes.dal.dataobject.moldtaskmanagement;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import lombok.*;
import java.time.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
/**
* DO
*
* @author
*/
@TableName("mes_mold_task_management")
@KeySequence("mes_mold_task_management_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class MoldTaskManagementDO extends BaseDO {
/**
* id
*/
@TableId
private Long id;
/**
*
*/
private String name;
/**
* (1- 2-)
*/
private Integer taskType;
/**
*
*/
private String moldList;
/**
*
*/
private Long projectForm;
/**
*
*/
@JsonFormat(pattern = "yyyy-MM-dd")
@JsonSerialize(using = LocalDateTimeSerializer.class)
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
private LocalDate startDate;
/**
*
*/
@JsonSerialize(using = LocalDateTimeSerializer.class)
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
private LocalDate endDate;
/**
* cron
*/
private String cronExpression;
/**
*
*/
private String operableUsers;
/**
*
*/
private Boolean enabled;
@TableField(exist = false)
private String projectFormName;
}

@ -0,0 +1,91 @@
package cn.iocoder.yudao.module.mes.dal.dataobject.moldticketmanagement;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
/**
* DO
*
* @author
*/
@TableName("mes_mold_ticket_management")
@KeySequence("mes_mold_ticket_management_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class MoldTicketManagementDO extends BaseDO {
/**
* id
*/
@TableId
private Long id;
/**
* ID
*/
private Long taskId;
/**
* ID
*/
private Long planId;
/**
*
*/
private String planNo;
/**
*
*/
private String moldName;
/**
* (1- 2-)
*/
private int planType;
/**
*
*/
private String configName;
/**
* 0- 1- 2-
*/
private Integer jobStatus;
/**
* 0- 1- 2-
*/
private int jobResult;
/**
*
*/
private String operator;
/**
*
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonSerialize(using = LocalDateTimeSerializer.class)
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
private LocalDateTime taskTime;
/**
*
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonSerialize(using = LocalDateTimeSerializer.class)
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
private LocalDateTime taskEndTime;
}

@ -0,0 +1,68 @@
package cn.iocoder.yudao.module.mes.dal.dataobject.moldticketresults;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
/**
* DO
*
* @author
*/
@TableName("mes_mold_ticket_results")
@KeySequence("mes_mold_ticket_results_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class MoldTicketResultsDO extends BaseDO {
/**
* id
*/
@TableId
private Long id;
/**
*
*/
private String inspectionItemName;
/**
*
*/
private String inspectionMethod;
/**
*
*/
private String judgmentCriteria;
/**
* 0- 1- 2-
*/
private Integer inspectionResult;
/**
*
*/
private String images;
/**
*
*/
private String remark;
/**
*
*/
private LocalDateTime inspectionTime;
/**
*
*/
private Long managementId;
/**
* id
*/
private Long moldId;
}

@ -0,0 +1,39 @@
package cn.iocoder.yudao.module.mes.dal.dataobject.subjectmoldplan;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
/**
* DO
*
* @author
*/
@TableName("mes_subject_mold_plan")
@KeySequence("mes_subject_mold_plan_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SubjectMoldPlanDO extends BaseDO {
/**
* id
*/
@TableId
private Long id;
/**
* ID
*/
private Long subjectId;
/**
* ID
*/
private Long planId;
}

@ -0,0 +1,29 @@
package cn.iocoder.yudao.module.mes.dal.mysql.energyrecord;
import java.util.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.mes.dal.dataobject.energyrecord.EnergyRecordDO;
import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.mes.controller.admin.energyrecord.vo.*;
/**
* Mapper
*
* @author
*/
@Mapper
public interface EnergyRecordMapper extends BaseMapperX<EnergyRecordDO> {
default PageResult<EnergyRecordDO> selectPage(EnergyRecordPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<EnergyRecordDO>()
.eqIfPresent(EnergyRecordDO::getEnergyDeviceId, reqVO.getEnergyDeviceId())
.eqIfPresent(EnergyRecordDO::getRecordData, reqVO.getRecordData())
.eqIfPresent(EnergyRecordDO::getIsEnable, reqVO.getIsEnable())
.betweenIfPresent(EnergyRecordDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(EnergyRecordDO::getId));
}
}

@ -0,0 +1,47 @@
package cn.iocoder.yudao.module.mes.dal.mysql.moldplanmaintenance;
import java.util.*;
import java.util.stream.Collectors;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.mes.dal.dataobject.dvsubject.DvSubjectDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldplanmaintenance.MoldPlanMaintenanceDO;
import com.alibaba.excel.util.StringUtils;
import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.mes.controller.admin.moldplanmaintenance.vo.*;
/**
* Mapper
*
* @author
*/
@Mapper
public interface MoldPlanMaintenanceMapper extends BaseMapperX<MoldPlanMaintenanceDO> {
default PageResult<MoldPlanMaintenanceDO> selectPage(MoldPlanMaintenancePageReqVO reqVO) {
LambdaQueryWrapperX<MoldPlanMaintenanceDO> moldplanMaintenanceDOLambdaQueryWrapperX = new LambdaQueryWrapperX<>();
moldplanMaintenanceDOLambdaQueryWrapperX
.likeIfPresent(MoldPlanMaintenanceDO::getPlanName, reqVO.getPlanName())
.eqIfPresent(MoldPlanMaintenanceDO::getPlanType, reqVO.getPlanType())
.eqIfPresent(MoldPlanMaintenanceDO::getDescription, reqVO.getDescription())
.betweenIfPresent(MoldPlanMaintenanceDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(MoldPlanMaintenanceDO::getCreateTime);
// 单独处理 ids 条件
if (StringUtils.isNotBlank(reqVO.getIds())) {
List<Long> idList = Arrays.stream(reqVO.getIds().split(","))
.map(String::trim)
.map(Long::valueOf)
.collect(Collectors.toList());
moldplanMaintenanceDOLambdaQueryWrapperX.in(MoldPlanMaintenanceDO::getId, idList);
}
PageResult<MoldPlanMaintenanceDO> moldplanMaintenanceDOPageResult = selectPage(reqVO, moldplanMaintenanceDOLambdaQueryWrapperX);
return moldplanMaintenanceDOPageResult;
}
}

@ -0,0 +1,52 @@
package cn.iocoder.yudao.module.mes.dal.mysql.moldsubject;
import java.util.*;
import java.util.stream.Collectors;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.mes.dal.dataobject.deviceledger.DeviceLedgerDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldsubject.MoldSubjectDO;
import com.alibaba.excel.util.StringUtils;
import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.mes.controller.admin.moldsubject.vo.*;
/**
* Mapper
*
* @author
*/
@Mapper
public interface MoldSubjectMapper extends BaseMapperX<MoldSubjectDO> {
default PageResult<MoldSubjectDO> selectPage(MoldSubjectPageReqVO reqVO) {
LambdaQueryWrapperX<MoldSubjectDO> moldSubjectDOLambdaQueryWrapperX = new LambdaQueryWrapperX<>();
moldSubjectDOLambdaQueryWrapperX
.likeIfPresent(MoldSubjectDO::getInspectionMethod, reqVO.getInspectionMethod())
.likeIfPresent(MoldSubjectDO::getValueType, reqVO.getValueType())
.likeIfPresent(MoldSubjectDO::getJudgmentCriteria, reqVO.getJudgmentCriteria())
.likeIfPresent(MoldSubjectDO::getSubjectCode, reqVO.getSubjectCode())
.likeIfPresent(MoldSubjectDO::getSubjectName, reqVO.getSubjectName())
.eqIfPresent(MoldSubjectDO::getSubjectType, reqVO.getSubjectType())
.eqIfPresent(MoldSubjectDO::getSubjectContent, reqVO.getSubjectContent())
.eqIfPresent(MoldSubjectDO::getSubjectStandard, reqVO.getSubjectStandard())
.eqIfPresent(MoldSubjectDO::getIsEnable, reqVO.getIsEnable())
.betweenIfPresent(MoldSubjectDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(MoldSubjectDO::getCreateTime);
// 单独处理 ids 条件
if (StringUtils.isNotBlank(reqVO.getIds())) {
List<Long> idList = Arrays.stream(reqVO.getIds().split(","))
.map(String::trim)
.map(Long::valueOf)
.collect(Collectors.toList());
moldSubjectDOLambdaQueryWrapperX.in(MoldSubjectDO::getId, idList);
}
return selectPage(reqVO, moldSubjectDOLambdaQueryWrapperX);
}
}

@ -0,0 +1,53 @@
package cn.iocoder.yudao.module.mes.dal.mysql.moldtaskmanagement;
import java.util.*;
import java.util.stream.Collectors;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldplanmaintenance.MoldPlanMaintenanceDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldtaskmanagement.MoldTaskManagementDO;
import com.alibaba.excel.util.StringUtils;
import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.mes.controller.admin.moldtaskmanagement.vo.*;
/**
* Mapper
*
* @author
*/
@Mapper
public interface MoldTaskManagementMapper extends BaseMapperX<MoldTaskManagementDO> {
default PageResult<MoldTaskManagementDO> selectPage(MoldTaskManagementPageReqVO reqVO) {
LambdaQueryWrapperX<MoldTaskManagementDO> moldtaskManagementDOLambdaQueryWrapperX = new LambdaQueryWrapperX<>();
moldtaskManagementDOLambdaQueryWrapperX
.likeIfPresent(MoldTaskManagementDO::getName, reqVO.getName())
.eqIfPresent(MoldTaskManagementDO::getTaskType, reqVO.getTaskType())
.eqIfPresent(MoldTaskManagementDO::getMoldList, reqVO.getMoldList())
.eqIfPresent(MoldTaskManagementDO::getProjectForm, reqVO.getProjectForm())
.betweenIfPresent(MoldTaskManagementDO::getStartDate, reqVO.getStartDate())
.betweenIfPresent(MoldTaskManagementDO::getEndDate, reqVO.getEndDate())
.eqIfPresent(MoldTaskManagementDO::getCronExpression, reqVO.getCronExpression())
.eqIfPresent(MoldTaskManagementDO::getOperableUsers, reqVO.getOperableUsers())
.eqIfPresent(MoldTaskManagementDO::getEnabled, reqVO.getEnabled())
.betweenIfPresent(MoldTaskManagementDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(MoldTaskManagementDO::getId);
// 单独处理 ids 条件
if (StringUtils.isNotBlank(reqVO.getIds())) {
List<Long> idList = Arrays.stream(reqVO.getIds().split(","))
.map(String::trim)
.map(Long::valueOf)
.collect(Collectors.toList());
moldtaskManagementDOLambdaQueryWrapperX.in(MoldTaskManagementDO::getId, idList);
}
return selectPage(reqVO, moldtaskManagementDOLambdaQueryWrapperX);
}
}

@ -0,0 +1,63 @@
package cn.iocoder.yudao.module.mes.dal.mysql.moldticketmanagement;
import java.util.*;
import java.util.stream.Collectors;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldtaskmanagement.MoldTaskManagementDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldticketmanagement.MoldTicketManagementDO;
import com.alibaba.excel.util.StringUtils;
import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.mes.controller.admin.moldticketmanagement.vo.*;
import org.apache.ibatis.annotations.Param;
/**
* Mapper
*
* @author
*/
@Mapper
public interface MoldTicketManagementMapper extends BaseMapperX<MoldTicketManagementDO> {
default PageResult<MoldTicketManagementDO> selectPage(MoldTicketManagementPageReqVO reqVO) {
LambdaQueryWrapperX<MoldTicketManagementDO> ticketManagementDOLambdaQueryWrapperX = new LambdaQueryWrapperX<>();
ticketManagementDOLambdaQueryWrapperX
.eqIfPresent(MoldTicketManagementDO::getTaskId, reqVO.getTaskId())
.eqIfPresent(MoldTicketManagementDO::getPlanId, reqVO.getPlanId())
.eqIfPresent(MoldTicketManagementDO::getPlanNo, reqVO.getPlanNo())
.likeIfPresent(MoldTicketManagementDO::getMoldName, reqVO.getMoldName())
.eqIfPresent(MoldTicketManagementDO::getPlanType, reqVO.getPlanType())
.likeIfPresent(MoldTicketManagementDO::getConfigName, reqVO.getConfigName())
.eqIfPresent(MoldTicketManagementDO::getJobStatus, reqVO.getJobStatus())
.eqIfPresent(MoldTicketManagementDO::getJobResult, reqVO.getJobResult())
.orderByDesc(MoldTicketManagementDO::getCreateTime);
// 单独处理 ids 条件
if (StringUtils.isNotBlank(reqVO.getIds())) {
List<Long> idList = Arrays.stream(reqVO.getIds().split(","))
.map(String::trim)
.map(Long::valueOf)
.collect(Collectors.toList());
ticketManagementDOLambdaQueryWrapperX.in(MoldTicketManagementDO::getId, idList);
}
return selectPage(reqVO,ticketManagementDOLambdaQueryWrapperX);
}
/**
*
*
* @param idList ID
* @param jobStatus
* @return
*/
int batchUpdateJobStatus(@Param("idList") List<Long> idList,
@Param("jobStatus") Integer jobStatus);
}

@ -0,0 +1,36 @@
package cn.iocoder.yudao.module.mes.dal.mysql.moldticketresults;
import java.util.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldticketresults.MoldTicketResultsDO;
import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.mes.controller.admin.moldticketresults.vo.*;
import org.apache.ibatis.annotations.Param;
/**
* Mapper
*
* @author
*/
@Mapper
public interface MoldTicketResultsMapper extends BaseMapperX<MoldTicketResultsDO> {
default PageResult<MoldTicketResultsDO> selectPage(MoldTicketResultsPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<MoldTicketResultsDO>()
.likeIfPresent(MoldTicketResultsDO::getInspectionItemName, reqVO.getInspectionItemName())
.eqIfPresent(MoldTicketResultsDO::getInspectionMethod, reqVO.getInspectionMethod())
.eqIfPresent(MoldTicketResultsDO::getJudgmentCriteria, reqVO.getJudgmentCriteria())
.eqIfPresent(MoldTicketResultsDO::getInspectionResult, reqVO.getInspectionResult())
.eqIfPresent(MoldTicketResultsDO::getImages, reqVO.getImages())
.eqIfPresent(MoldTicketResultsDO::getRemark, reqVO.getRemark())
.betweenIfPresent(MoldTicketResultsDO::getInspectionTime, reqVO.getInspectionTime())
.eqIfPresent(MoldTicketResultsDO::getManagementId, reqVO.getManagementId())
.betweenIfPresent(MoldTicketResultsDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(MoldTicketResultsDO::getId));
}
List<MoldTicketResultsDO> findByDeviceIdAndPlanType(@Param("deviceId") Long deviceId,@Param("planType") Integer planType);
}

@ -0,0 +1,35 @@
package cn.iocoder.yudao.module.mes.dal.mysql.subjectmoldplan;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.mes.dal.dataobject.subjectmoldplan.SubjectMoldPlanDO;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.mes.controller.admin.subjectmoldplan.vo.*;
/**
* Mapper
*
* @author
*/
@Mapper
public interface SubjectMoldPlanMapper extends BaseMapperX<SubjectMoldPlanDO> {
default PageResult<SubjectMoldPlanDO> selectPage(SubjectMoldPlanPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<SubjectMoldPlanDO>()
.eqIfPresent(SubjectMoldPlanDO::getSubjectId, reqVO.getSubjectId())
.eqIfPresent(SubjectMoldPlanDO::getPlanId, reqVO.getPlanId())
.betweenIfPresent(SubjectMoldPlanDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(SubjectMoldPlanDO::getId));
}
/**
*
*
* @param planId ID
*/
@Delete("DELETE FROM besure.mes_subject_mold_plan WHERE plan_id = #{planId}")
void deleteByPlanId(Long planId);
}

@ -1,11 +1,23 @@
package cn.iocoder.yudao.module.mes.service.criticalcomponent;
import cn.iocoder.yudao.module.iot.dal.dataobject.deviceattributetype.DeviceAttributeTypeDO;
import cn.iocoder.yudao.module.iot.dal.dataobject.devicemodelattribute.DeviceModelAttributeDO;
import cn.iocoder.yudao.module.iot.dal.devicecontactmodel.DeviceContactModelDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.deviceledger.DeviceLedgerDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.repairtems.RepairTemsDO;
import cn.iocoder.yudao.module.mes.dal.mysql.deviceledger.DeviceLedgerMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.repairtems.RepairTemsMapper;
import com.alibaba.excel.util.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import java.util.stream.Collectors;
import cn.iocoder.yudao.module.mes.controller.admin.criticalcomponent.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.criticalcomponent.CriticalComponentDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
@ -15,6 +27,8 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.mes.dal.mysql.criticalcomponent.CriticalComponentMapper;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.DEVICE_ATTRIBUTE_TYPE_NOT_EXISTS;
import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.DEVICE_ATTRIBUTE_TYPE_REFERENCES_EXISTS;
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
/**
@ -29,6 +43,13 @@ public class CriticalComponentServiceImpl implements CriticalComponentService {
@Resource
private CriticalComponentMapper criticalComponentMapper;
@Resource
private DeviceLedgerMapper deviceLedgerMapper;
@Resource
private RepairTemsMapper repairTemsMapper;
@Override
public Long createCriticalComponent(CriticalComponentSaveReqVO createReqVO) {
// 插入
@ -48,14 +69,75 @@ public class CriticalComponentServiceImpl implements CriticalComponentService {
}
@Override
public void deleteCriticalComponent(List<Long> idList) {
for (Long id : idList) {
// 校验存在
validateCriticalComponentExists(id);
public void deleteCriticalComponent(List<Long> ids) {
if (CollectionUtils.isEmpty(ids)) {
return;
}
// 批量校验存在性
List<CriticalComponentDO> existList = criticalComponentMapper.selectBatchIds(ids);
if (existList.size() != ids.size()) {
throw exception(CRITICAL_COMPONENT_NOT_EXISTS);
}
// 检验设备台账引用
validateDeviceLedgerBatchReferences(ids);
//检验项目维护引用
validateDvjectBatchReferences(ids);
// 删除
criticalComponentMapper.deleteByIds(idList);
criticalComponentMapper.deleteByIds(ids);
}
private void validateDvjectBatchReferences(List<Long> ids) {
boolean isExists = repairTemsMapper.exists(
Wrappers.<RepairTemsDO>lambdaQuery()
.in(RepairTemsDO::getComponentId, ids));
if (isExists){
throw exception(CRITICAL_COMPONENT_REFERENCES);
}
}
private void validateDeviceLedgerBatchReferences(List<Long> ids) {
// 查询所有包含这些ID的记录
List<DeviceLedgerDO> ledgers = deviceLedgerMapper.selectList(
Wrappers.<DeviceLedgerDO>lambdaQuery()
.isNotNull(DeviceLedgerDO::getComponentId)
.select(DeviceLedgerDO::getComponentId)
);
if (CollectionUtils.isEmpty(ledgers)) {
return;
}
// 检查每个componentId字段是否包含目标ID
for (DeviceLedgerDO ledger : ledgers) {
if (StringUtils.isBlank(ledger.getComponentId())) {
continue;
}
// 将逗号分隔的ID转换为Set
Set<Long> componentIds = Arrays.stream(ledger.getComponentId().split(","))
.map(String::trim)
.filter(StringUtils::isNotBlank)
.map(Long::valueOf)
.collect(Collectors.toSet());
// 检查是否有交集
for (Long id : ids) {
if (componentIds.contains(id)) {
throw exception(CRITICAL_COMPONENT_REFERENCES);
}
}
}
}
private void validateCriticalComponentExists(Long id) {

@ -3,6 +3,8 @@ package cn.iocoder.yudao.module.mes.service.devicetype;
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
import cn.iocoder.yudao.module.iot.dal.dataobject.devicemodel.DeviceModelDO;
import cn.iocoder.yudao.module.mes.controller.admin.devicetype.vo.DeviceTypeTreeRespVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.deviceledger.DeviceLedgerDO;
import cn.iocoder.yudao.module.mes.dal.mysql.deviceledger.DeviceLedgerMapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.stereotype.Service;
@ -41,6 +43,9 @@ public class DeviceTypeServiceImpl implements DeviceTypeService {
@Resource
private DeviceTypeMapper deviceTypeMapper;
@Resource
private DeviceLedgerMapper deviceLedgerMapper;
@Override
public Long createDeviceType(DeviceTypeSaveReqVO createReqVO) {
@ -79,7 +84,8 @@ public class DeviceTypeServiceImpl implements DeviceTypeService {
@Override
public void updateDeviceType(DeviceTypeSaveReqVO updateReqVO) {
// 1. 校验存在
validateDeviceTypeExists(updateReqVO.getId());
DeviceTypeDO deviceTypeDO = deviceTypeMapper.selectById(updateReqVO.getId());
validateDeviceTypeExists(deviceTypeDO);
//编码重复判断
Long count = deviceTypeMapper.selectCount(new LambdaQueryWrapper<DeviceTypeDO>()
.eq(DeviceTypeDO::getCode, updateReqVO.getCode())
@ -123,17 +129,29 @@ public class DeviceTypeServiceImpl implements DeviceTypeService {
@Override
public void deleteDeviceType(Long id) {
// 1. 校验存在
validateDeviceTypeExists(id);
DeviceTypeDO deviceTypeDO = deviceTypeMapper.selectById(id);
validateDeviceTypeExists(deviceTypeDO);
// 2. 校验是否有子节点
if (hasChildren(id)) {
throw exception(DEVICE_TYPE_EXITS_CHILDREN);
}
// 3. 校验是否有引用
validateReferences(deviceTypeDO);
// 3. 删除
// 4. 删除
deviceTypeMapper.deleteById(id);
}
private void validateReferences(DeviceTypeDO deviceTypeDO) {
boolean isExists = deviceLedgerMapper.exists(Wrappers.<DeviceLedgerDO>lambdaQuery().eq(DeviceLedgerDO::getDeviceType,deviceTypeDO.getId()));
if (isExists){
throw exception(DEVICE_TYPE_REFERENCES);
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteDeviceTypeBatch(List<Long> ids) {
@ -142,8 +160,8 @@ public class DeviceTypeServiceImpl implements DeviceTypeService {
}
}
private void validateDeviceTypeExists(Long id) {
if (deviceTypeMapper.selectById(id) == null) {
private void validateDeviceTypeExists(DeviceTypeDO deviceTypeDO) {
if (deviceTypeDO == null) {
throw exception(DEVICE_TYPE_NOT_EXISTS);
}
}

@ -7,10 +7,14 @@ import cn.iocoder.yudao.module.mes.controller.admin.dvsubject.vo.DvSubjectPageRe
import cn.iocoder.yudao.module.mes.controller.admin.dvsubject.vo.DvSubjectSaveReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.devicetype.DeviceTypeDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.dvsubject.DvSubjectDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.subjectplan.SubjectPlanDO;
import cn.iocoder.yudao.module.mes.dal.mysql.dvsubject.DvSubjectMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.subjectplan.SubjectPlanMapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
@ -33,6 +37,9 @@ public class DvSubjectServiceImpl implements DvSubjectService {
@Resource
private DvSubjectMapper dvSubjectMapper;
@Resource
private SubjectPlanMapper subjectPlanMapper;
@Override
public Long createDvSubject(DvSubjectSaveReqVO createReqVO) {
@ -70,17 +77,38 @@ public class DvSubjectServiceImpl implements DvSubjectService {
}
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteDvSubject(List<Long> idList) {
if (CollectionUtils.isEmpty(idList)) {
return;
}
for (Long id : idList) {
// 校验存在
validateDvSubjectExists(id);
// 批量校验存在性
List<DvSubjectDO> existList = dvSubjectMapper.selectBatchIds(idList);
if (existList.size() != idList.size()) {
throw exception(DV_SUBJECT_NOT_EXISTS);
}
// 删除
// 批量校验引用
validateBatchReferences(idList);
// 批量删除
dvSubjectMapper.deleteByIds(idList);
}
private void validateBatchReferences(List<Long> idList) {
boolean exists = subjectPlanMapper.exists(
Wrappers.<SubjectPlanDO>lambdaQuery()
.in(SubjectPlanDO::getSubjectId, idList)
);
if (exists) {
throw exception(DV_SUBJECT_REFERENCES);
}
}
private void validateDvSubjectExists(Long id) {
if (dvSubjectMapper.selectById(id) == null) {
throw exception(DV_SUBJECT_NOT_EXISTS);

@ -3,9 +3,11 @@ package cn.iocoder.yudao.module.mes.service.energydevice;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.mes.controller.admin.energydevice.vo.EnergyDevicePageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.energydevice.vo.EnergyDeviceRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.energydevice.vo.EnergyDeviceSaveReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.energydevice.EnergyDeviceCheckRecordDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.energydevice.EnergyDeviceDO;
import org.springframework.web.bind.annotation.RequestParam;
import javax.validation.Valid;
import java.util.Collection;
@ -50,7 +52,7 @@ public interface EnergyDeviceService {
* @param id
* @return
*/
EnergyDeviceDO getEnergyDevice(Long id);
EnergyDeviceRespVO getEnergyDevice(Long id);
/**
*
@ -106,4 +108,8 @@ public interface EnergyDeviceService {
if (ids.isEmpty()) return new HashMap<>();
return convertMap(getList(ids), EnergyDeviceDO::getId);
}
List<EnergyDeviceRespVO> queryDataRecords(String startTime,String endTime);
}

@ -3,13 +3,20 @@ package cn.iocoder.yudao.module.mes.service.energydevice;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.iot.dal.devicecontactmodel.DeviceContactModelDO;
import cn.iocoder.yudao.module.iot.service.device.TDengineService;
import cn.iocoder.yudao.module.mes.controller.admin.energydevice.vo.EnergyDevicePageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.energydevice.vo.EnergyDeviceRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.energydevice.vo.EnergyDeviceSaveReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.energydevice.vo.OperationRulesVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.energydevice.EnergyDeviceCheckRecordDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.energydevice.EnergyDeviceDO;
import cn.iocoder.yudao.module.mes.dal.mysql.energydevice.EnergyDeviceCheckRecordMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.energydevice.EnergyDeviceMapper;
import cn.iocoder.yudao.module.mes.dal.redis.no.MesNoRedisDAO;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -18,10 +25,11 @@ import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Collection;
import java.util.List;
import java.util.*;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.DEVICE_ID_DOES_NOT_EXIST;
import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.POINT_ID_MODEL_NOT_EXISTS;
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
/**
@ -39,6 +47,9 @@ public class EnergyDeviceServiceImpl implements EnergyDeviceService {
private EnergyDeviceCheckRecordMapper energyDeviceCheckRecordMapper;
@Resource
private MesNoRedisDAO noRedisDAO;
@Resource
private TDengineService tDengineService;
@Override
public Long createEnergyDevice(EnergyDeviceSaveReqVO createReqVO) {
// 插入
@ -48,17 +59,88 @@ public class EnergyDeviceServiceImpl implements EnergyDeviceService {
String no = noRedisDAO.generate2(MesNoRedisDAO.ENERGY_NO_PREFIX);
energyDevice.setCode(no);
}
// 校验编码是否唯一
if (StringUtils.isNotEmpty(energyDevice.getCode())) {
List<EnergyDeviceDO> existingDevice = energyDeviceMapper.selectList(
Wrappers.<EnergyDeviceDO>lambdaQuery().eq(EnergyDeviceDO::getCode,createReqVO.getCode()));
if (!existingDevice.isEmpty()) {
throw exception(ENERGY_DEVICE_CODE_DUPLICATE);
}
}
//校验运算规则
verifiyOperationRules(createReqVO.getOperationRulesVOList());
energyDevice.setRules(JSON.toJSONString(createReqVO.getOperationRulesVOList()));
energyDeviceMapper.insert(energyDevice);
// 返回
return energyDevice.getId();
}
/**
*
*
*
* 1.
* 2. IDID
* 3. +-*/
* 4.
* 5.
* 6. null0
* 7.
*/
private void verifiyOperationRules(List<OperationRulesVO> operationRulesVOList) {
if (CollectionUtils.isEmpty(operationRulesVOList)) {
throw exception(CALCULATION_RULE_NOT_EXISTS);
}
// 运算符集合
Set<String> validOperators = new HashSet<>(Arrays.asList("+", "-", "*", "/"));
for (int i = 0; i < operationRulesVOList.size(); i++) {
OperationRulesVO rule = operationRulesVOList.get(i);
// 1. 校验设备ID和点位ID
if (rule.getDeviceId() == null) {
throw exception(DEVICE_ID_DOES_NOT_EXIST);
}
if (rule.getPointId() == null) {
throw exception(POINT_ID_MODEL_NOT_EXISTS);
}
// 2. 获取运算符
String operator = rule.getOperator();
boolean isLastElement = (i == operationRulesVOList.size() - 1);
if (isLastElement) {
// 最后一个元素:运算符必须为空
if (StringUtils.isNotBlank(operator)) {
throw exception(CALCULATION_LAST_RULE_NO_OPERATOR);
}
} else {
// 非最后一个元素:必须有运算符
if (StringUtils.isBlank(operator)) {
throw exception(CALCULATION_OPERATOR_MISSING);
}
// 校验运算符是否合法
if (!validOperators.contains(operator)) {
throw exception(CALCULATION_OPERATOR_INVALID);
}
}
}
}
@Override
public void updateEnergyDevice(EnergyDeviceSaveReqVO updateReqVO) {
// 校验存在
validateEnergyDeviceExists(updateReqVO.getId());
// 校验运算规则
verifiyOperationRules(updateReqVO.getOperationRulesVOList());
// 更新
EnergyDeviceDO updateObj = BeanUtils.toBean(updateReqVO, EnergyDeviceDO.class);
updateObj.setRules(JSON.toJSONString(updateReqVO.getOperationRulesVOList()));
energyDeviceMapper.updateById(updateObj);
}
@ -81,8 +163,12 @@ public class EnergyDeviceServiceImpl implements EnergyDeviceService {
}
@Override
public EnergyDeviceDO getEnergyDevice(Long id) {
return energyDeviceMapper.selectById(id);
public EnergyDeviceRespVO getEnergyDevice(Long id) {
EnergyDeviceDO energyDeviceDO = energyDeviceMapper.selectById(id);
EnergyDeviceRespVO energyDeviceRespVO = BeanUtils.toBean(energyDeviceDO, EnergyDeviceRespVO.class);
List<OperationRulesVO> operationRulesVOList = JSON.parseArray(energyDeviceDO.getRules(), OperationRulesVO.class);
energyDeviceRespVO.setOperationRulesVOList(operationRulesVOList);
return energyDeviceRespVO;
}
@Override
@ -154,4 +240,52 @@ public class EnergyDeviceServiceImpl implements EnergyDeviceService {
public List<EnergyDeviceDO> getList(Collection<Long> ids) {
return energyDeviceMapper.selectBatchIds(ids);
}
@Override
public List<EnergyDeviceRespVO> queryDataRecords(String startTime,String endTime) {
List<EnergyDeviceRespVO> energyDeviceRespVOArrayList = new ArrayList<>();
List<EnergyDeviceDO> energyDeviceDO = energyDeviceMapper.selectList();
if (energyDeviceDO.isEmpty()){
throw exception(ENERGY_LIST_NOT_EXISTS);
}
for (EnergyDeviceDO deviceDO : energyDeviceDO) {
EnergyDeviceRespVO energyDeviceRespVO = new EnergyDeviceRespVO();
if (StringUtils.isBlank(deviceDO.getRules())){
continue;
}
//查询每个点位的Id
List<OperationRulesVO> operationRulesVOList = JSON.parseArray(deviceDO.getRules(), OperationRulesVO.class);
Map<Long,List<OperationRulesVO>> operationRulesVOMap =new HashMap<>();
for (OperationRulesVO operationRulesVO : operationRulesVOList) {
List<OperationRulesVO> operationRulesVOS = new ArrayList<>();
//获取Td列表
List<Map<String, Object>> maps = tDengineService.getstDeviceDataOrderByTimeDesc(operationRulesVO.getDeviceId(), startTime, endTime);
for (Map<String, Object> map : maps) {
String queryData = map.get("queryData").toString();
//获取json数据列表
List<DeviceContactModelDO> deviceContactModelDOS = JSON.parseArray(queryData, DeviceContactModelDO.class);
for (DeviceContactModelDO deviceContactModelDO : deviceContactModelDOS) {
if (operationRulesVO.equals(deviceContactModelDO.getId())){
OperationRulesVO operationRulesVO1 = new OperationRulesVO();
operationRulesVO1.setPointId(deviceContactModelDO.getId());
operationRulesVO1.setPointValue((String) deviceContactModelDO.getAddressValue());
operationRulesVOS.add(operationRulesVO1);
}
}
}
operationRulesVOMap.put(operationRulesVO.getPointId(),operationRulesVOS);
}
energyDeviceRespVO.setOperationRulesVOMap(operationRulesVOMap);
energyDeviceRespVOArrayList.add(energyDeviceRespVO);
}
return energyDeviceRespVOArrayList;
}
}

@ -0,0 +1,55 @@
package cn.iocoder.yudao.module.mes.service.energyrecord;
import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.module.mes.controller.admin.energyrecord.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.energyrecord.EnergyRecordDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
/**
* Service
*
* @author
*/
public interface EnergyRecordService {
/**
*
*
* @param createReqVO
* @return
*/
Long createEnergyRecord(@Valid EnergyRecordSaveReqVO createReqVO);
/**
*
*
* @param updateReqVO
*/
void updateEnergyRecord(@Valid EnergyRecordSaveReqVO updateReqVO);
/**
*
*
* @param id
*/
void deleteEnergyRecord(Long id);
/**
*
*
* @param id
* @return
*/
EnergyRecordDO getEnergyRecord(Long id);
/**
*
*
* @param pageReqVO
* @return
*/
PageResult<EnergyRecordDO> getEnergyRecordPage(EnergyRecordPageReqVO pageReqVO);
}

@ -0,0 +1,74 @@
package cn.iocoder.yudao.module.mes.service.energyrecord;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import cn.iocoder.yudao.module.mes.controller.admin.energyrecord.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.energyrecord.EnergyRecordDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.mes.dal.mysql.energyrecord.EnergyRecordMapper;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
/**
* Service
*
* @author
*/
@Service
@Validated
public class EnergyRecordServiceImpl implements EnergyRecordService {
@Resource
private EnergyRecordMapper energyRecordMapper;
@Override
public Long createEnergyRecord(EnergyRecordSaveReqVO createReqVO) {
// 插入
EnergyRecordDO energyRecord = BeanUtils.toBean(createReqVO, EnergyRecordDO.class);
energyRecordMapper.insert(energyRecord);
// 返回
return energyRecord.getId();
}
@Override
public void updateEnergyRecord(EnergyRecordSaveReqVO updateReqVO) {
// 校验存在
validateEnergyRecordExists(updateReqVO.getId());
// 更新
EnergyRecordDO updateObj = BeanUtils.toBean(updateReqVO, EnergyRecordDO.class);
energyRecordMapper.updateById(updateObj);
}
@Override
public void deleteEnergyRecord(Long id) {
// 校验存在
validateEnergyRecordExists(id);
// 删除
energyRecordMapper.deleteById(id);
}
private void validateEnergyRecordExists(Long id) {
if (energyRecordMapper.selectById(id) == null) {
throw exception(ENERGY_RECORD_NOT_EXISTS);
}
}
@Override
public EnergyRecordDO getEnergyRecord(Long id) {
return energyRecordMapper.selectById(id);
}
@Override
public PageResult<EnergyRecordDO> getEnergyRecordPage(EnergyRecordPageReqVO pageReqVO) {
return energyRecordMapper.selectPage(pageReqVO);
}
}

@ -1,6 +1,7 @@
package cn.iocoder.yudao.module.mes.service.energytype;
import cn.iocoder.yudao.module.iot.dal.dataobject.deviceattributetype.DeviceAttributeTypeDO;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
@ -32,6 +33,10 @@ public class EnergyTypeServiceImpl implements EnergyTypeService {
@Override
public Long createEnergyType(EnergyTypeSaveReqVO createReqVO) {
// 校验编码是否重复
validateCodeUnique(createReqVO);
// 插入
EnergyTypeDO energyType = BeanUtils.toBean(createReqVO, EnergyTypeDO.class);
energyTypeMapper.insert(energyType);
@ -39,6 +44,17 @@ public class EnergyTypeServiceImpl implements EnergyTypeService {
return energyType.getId();
}
private void validateCodeUnique(EnergyTypeSaveReqVO createReqVO) {
Long count = energyTypeMapper.selectCount(Wrappers.<EnergyTypeDO>lambdaQuery()
.eq(EnergyTypeDO::getCode, createReqVO.getCode())
.ne(createReqVO.getId() != null, EnergyTypeDO::getId, createReqVO.getId() ));
if (count != null && count > 0) {
throw exception(ENERGY_DEVICE_CHECK_CODE_EXISTS);
}
}
@Override
public void updateEnergyType(EnergyTypeSaveReqVO updateReqVO) {
// 校验存在

@ -0,0 +1,59 @@
package cn.iocoder.yudao.module.mes.service.moldplanmaintenance;
import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.module.mes.controller.admin.moldplanmaintenance.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldsubject.MoldSubjectDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldplanmaintenance.MoldPlanMaintenanceDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.module.mes.dal.dataobject.subjectmoldplan.SubjectMoldPlanDO;
/**
* Service
*
* @author
*/
public interface MoldPlanMaintenanceService {
/**
*
*
* @param createReqVO
* @return
*/
Long createMoldPlanMaintenance(@Valid MoldPlanMaintenanceSaveReqVO createReqVO);
/**
*
*
* @param updateReqVO
*/
void updateMoldPlanMaintenance(@Valid MoldPlanMaintenanceSaveReqVO updateReqVO);
/**
*
*
* @param id
*/
void deleteMoldPlanMaintenance( List<Long> idList);
/**
*
*
* @param id
* @return
*/
MoldPlanMaintenanceDO getMoldPlanMaintenance(Long id);
/**
*
*
* @param pageReqVO
* @return
*/
PageResult<MoldPlanMaintenanceDO> getMoldPlanMaintenancePage(MoldPlanMaintenancePageReqVO pageReqVO);
List<MoldSubjectDO> getSubjectList(Long id);
}

@ -0,0 +1,192 @@
package cn.iocoder.yudao.module.mes.service.moldplanmaintenance;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldsubject.MoldSubjectDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.subjectmoldplan.SubjectMoldPlanDO;
import cn.iocoder.yudao.module.mes.dal.mysql.moldsubject.MoldSubjectMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.subjectmoldplan.SubjectMoldPlanMapper;
import cn.iocoder.yudao.module.mes.service.moldplanmaintenance.MoldPlanMaintenanceService;
import cn.iocoder.yudao.module.mes.service.subjectmoldplan.SubjectMoldPlanService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import java.util.stream.Collectors;
import cn.iocoder.yudao.module.mes.controller.admin.moldplanmaintenance.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldplanmaintenance.MoldPlanMaintenanceDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.mes.dal.mysql.moldplanmaintenance.MoldPlanMaintenanceMapper;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
/**
* Service
*
* @author
*/
@Service
@Validated
public class MoldPlanMaintenanceServiceImpl implements MoldPlanMaintenanceService {
@Resource
private MoldPlanMaintenanceMapper moldplanMaintenanceMapper;
@Resource
private SubjectMoldPlanMapper subjectMoldPlanMapper;
@Resource
private MoldSubjectMapper moldSubjectMapper;
@Override
@Transactional(rollbackFor = Exception.class)
public Long createMoldPlanMaintenance(MoldPlanMaintenanceSaveReqVO createReqVO) {
// 插入
MoldPlanMaintenanceDO moldplanMaintenance = BeanUtils.toBean(createReqVO, MoldPlanMaintenanceDO.class);
moldplanMaintenanceMapper.insert(moldplanMaintenance);
if (StringUtils.isNotBlank(createReqVO.getSubjectIdS())){
// 将逗号分隔的字符串转换为Long类型的List
List<Long> idList = Arrays.stream( createReqVO.getSubjectIdS().split(","))
.map(String::trim) // 去除可能存在的空格
.map(Long::valueOf)
.collect(Collectors.toList());
//插入关联表
insertSubjectMoldPlan(moldplanMaintenance.getId(),idList);
}
// 返回
return moldplanMaintenance.getId();
}
private void insertSubjectMoldPlan(Long id, List<Long> idList) {
List<SubjectMoldPlanDO> subjectMoldPlanDOArrayList = new ArrayList<>();
for (Long subjectId : idList) {
SubjectMoldPlanDO subjectMoldPlanDO = new SubjectMoldPlanDO();
subjectMoldPlanDO.setPlanId(id);
subjectMoldPlanDO.setSubjectId(subjectId);
subjectMoldPlanDOArrayList.add(subjectMoldPlanDO);
}
subjectMoldPlanMapper.insertBatch(subjectMoldPlanDOArrayList);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void updateMoldPlanMaintenance(MoldPlanMaintenanceSaveReqVO updateReqVO) {
// 校验存在
validateMoldPlanMaintenanceExists(updateReqVO.getId());
// 更新
MoldPlanMaintenanceDO updateObj = BeanUtils.toBean(updateReqVO, MoldPlanMaintenanceDO.class);
moldplanMaintenanceMapper.updateById(updateObj);
if (StringUtils.isNotBlank(updateReqVO.getSubjectIdS())) {
// 将逗号分隔的字符串转换为Long类型的List
List<Long> idList = Arrays.stream( updateReqVO.getSubjectIdS().split(","))
.map(String::trim) // 去除可能存在的空格
.map(Long::valueOf)
.collect(Collectors.toList());
//更新关联表
updateSubjectMoldPlan(updateObj.getId(),idList);
}
}
private void updateSubjectMoldPlan(Long id, List<Long> idList) {
subjectMoldPlanMapper.deleteByPlanId(id);
List<SubjectMoldPlanDO> subjectMoldPlanDOArrayList = new ArrayList<>();
for (Long subjectId : idList) {
SubjectMoldPlanDO subjectMoldPlanDO = new SubjectMoldPlanDO();
subjectMoldPlanDO.setPlanId(id);
subjectMoldPlanDO.setSubjectId(subjectId);
subjectMoldPlanDOArrayList.add(subjectMoldPlanDO);
}
subjectMoldPlanMapper.insertBatch(subjectMoldPlanDOArrayList);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteMoldPlanMaintenance( List<Long> idList) {
for (Long id : idList) {
// 校验存在
validateMoldPlanMaintenanceExists(id);
}
// 删除
moldplanMaintenanceMapper.deleteByIds(idList);
//删除关联表数据
deleteSubjectMoldPlan(idList);
}
private void deleteSubjectMoldPlan(List<Long> idList) {
for (Long id : idList) {
if (id != null ){
subjectMoldPlanMapper.delete(Wrappers.<SubjectMoldPlanDO>lambdaQuery()
.eq(SubjectMoldPlanDO::getPlanId, id));
}
}
}
private void validateMoldPlanMaintenanceExists(Long id) {
if (moldplanMaintenanceMapper.selectById(id) == null) {
throw exception(PLAN_MAINTENANCE_NOT_EXISTS);
}
}
@Override
public MoldPlanMaintenanceDO getMoldPlanMaintenance(Long id) {
return moldplanMaintenanceMapper.selectById(id);
}
@Override
public PageResult<MoldPlanMaintenanceDO> getMoldPlanMaintenancePage(MoldPlanMaintenancePageReqVO pageReqVO) {
PageResult<MoldPlanMaintenanceDO> moldplanMaintenanceDOPageResult = moldplanMaintenanceMapper.selectPage(pageReqVO);
for (MoldPlanMaintenanceDO moldplanMaintenanceDO : moldplanMaintenanceDOPageResult.getList()) {
List<Long> ids = new ArrayList<>();
List<SubjectMoldPlanDO> subjectMoldPlanDOList = subjectMoldPlanMapper.selectList(Wrappers.<SubjectMoldPlanDO>lambdaQuery()
.eq(SubjectMoldPlanDO::getPlanId, moldplanMaintenanceDO.getId()));
for (SubjectMoldPlanDO subjectMoldPlanDO : subjectMoldPlanDOList) {
ids.add(subjectMoldPlanDO.getSubjectId());
}
moldplanMaintenanceDO.setSubjectIds(ids);
}
return moldplanMaintenanceDOPageResult;
}
@Override
public List<MoldSubjectDO> getSubjectList(Long id) {
if (id == null ){
throw exception(SUBJECT_ID_NOT_EXISTS);
}
//查询对应的设备列表
List<MoldSubjectDO> moldSubjectDOList = new ArrayList<>();
List<SubjectMoldPlanDO> subjectMoldPlanDOList = subjectMoldPlanMapper.selectList(Wrappers.<SubjectMoldPlanDO>lambdaQuery()
.eq(SubjectMoldPlanDO::getPlanId, id));
for (SubjectMoldPlanDO subjectMoldPlanDO : subjectMoldPlanDOList) {
MoldSubjectDO moldSubjectDO = moldSubjectMapper.selectById(subjectMoldPlanDO.getSubjectId());
if (moldSubjectDO!=null){
moldSubjectDOList.add(moldSubjectDO);
}
}
return moldSubjectDOList;
}
}

@ -0,0 +1,56 @@
package cn.iocoder.yudao.module.mes.service.moldsubject;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.mes.controller.admin.moldsubject.vo.MoldSubjectPageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.moldsubject.vo.MoldSubjectSaveReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldsubject.MoldSubjectDO;
import javax.validation.Valid;
import java.util.List;
/**
* Service
*
* @author
*/
public interface MoldSubjectService {
/**
*
*
* @param createReqVO
* @return
*/
Long createMoldSubject(@Valid MoldSubjectSaveReqVO createReqVO);
/**
*
*
* @param updateReqVO
*/
void updateMoldSubject(@Valid MoldSubjectSaveReqVO updateReqVO);
/**
*
*
* @param id
*/
void deleteMoldSubject(List<Long> idList);
/**
*
*
* @param id
* @return
*/
MoldSubjectDO getMoldSubject(Long id);
/**
*
*
* @param pageReqVO
* @return
*/
PageResult<MoldSubjectDO> getMoldSubjectPage(MoldSubjectPageReqVO pageReqVO);
}

@ -0,0 +1,101 @@
package cn.iocoder.yudao.module.mes.service.moldsubject;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.iot.dal.dataobject.devicemodel.DeviceModelDO;
import cn.iocoder.yudao.module.mes.controller.admin.moldsubject.vo.MoldSubjectPageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.moldsubject.vo.MoldSubjectSaveReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.devicetype.DeviceTypeDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldsubject.MoldSubjectDO;
import cn.iocoder.yudao.module.mes.dal.mysql.moldsubject.MoldSubjectMapper;
import cn.iocoder.yudao.module.mes.service.moldsubject.MoldSubjectService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.util.List;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.DEVICE_MODEL_CODE_EXISTS;
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
/**
* Service
*
* @author
*/
@Service
@Validated
public class MoldSubjectServiceImpl implements MoldSubjectService {
@Resource
private MoldSubjectMapper moldSubjectMapper;
@Override
public Long createMoldSubject(MoldSubjectSaveReqVO createReqVO) {
validateCodeOnly(createReqVO.getSubjectCode());
// 插入
MoldSubjectDO moldSubject = BeanUtils.toBean(createReqVO, MoldSubjectDO.class);
moldSubjectMapper.insert(moldSubject);
// 返回
return moldSubject.getId();
}
private void validateCodeOnly( String code) {
if (moldSubjectMapper.exists(Wrappers.<MoldSubjectDO>lambdaQuery()
.eq(MoldSubjectDO::getSubjectCode, code))) {
throw exception(SUBJECT_EXISTS);
}
}
@Override
public void updateMoldSubject(MoldSubjectSaveReqVO updateReqVO) {
// 校验存在
validateMoldSubjectExists(updateReqVO.getId());
//编码重复判断
Long count = moldSubjectMapper.selectCount(new LambdaQueryWrapper<MoldSubjectDO>()
.eq(MoldSubjectDO::getSubjectCode, updateReqVO.getSubjectCode())
.ne(MoldSubjectDO::getId, updateReqVO.getId())
);
if (count > 0) {
throw exception(SUBJECT_EXISTS);
}
// 更新
MoldSubjectDO updateObj = BeanUtils.toBean(updateReqVO, MoldSubjectDO.class);
moldSubjectMapper.updateById(updateObj);
}
@Override
public void deleteMoldSubject(List<Long> idList) {
for (Long id : idList) {
// 校验存在
validateMoldSubjectExists(id);
}
// 删除
moldSubjectMapper.deleteByIds(idList);
}
private void validateMoldSubjectExists(Long id) {
if (moldSubjectMapper.selectById(id) == null) {
throw exception(DV_SUBJECT_NOT_EXISTS);
}
}
@Override
public MoldSubjectDO getMoldSubject(Long id) {
return moldSubjectMapper.selectById(id);
}
@Override
public PageResult<MoldSubjectDO> getMoldSubjectPage(MoldSubjectPageReqVO pageReqVO) {
return moldSubjectMapper.selectPage(pageReqVO);
}
}

@ -0,0 +1,56 @@
package cn.iocoder.yudao.module.mes.service.moldtaskmanagement;
import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.module.mes.controller.admin.moldtaskmanagement.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldtaskmanagement.MoldTaskManagementDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
/**
* Service
*
* @author
*/
public interface MoldTaskManagementService {
/**
*
*
* @param createReqVO
* @return
*/
Long createMoldTaskManagement(@Valid MoldTaskManagementSaveReqVO createReqVO);
/**
*
*
* @param updateReqVO
*/
void updateMoldTaskManagement(@Valid MoldTaskManagementSaveReqVO updateReqVO);
/**
*
*
* @param id
*/
void deleteMoldTaskManagement(List<Long> idList );
/**
*
*
* @param id
* @return
*/
MoldTaskManagementDO getMoldTaskManagement(Long id);
/**
*
*
* @param pageReqVO
* @return
*/
PageResult<MoldTaskManagementDO> getMoldTaskManagementPage(MoldTaskManagementPageReqVO pageReqVO);
void createMoldTicket(Long id);
}

@ -0,0 +1,178 @@
package cn.iocoder.yudao.module.mes.service.moldtaskmanagement;
import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.dvsubject.DvSubjectDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldplanmaintenance.MoldPlanMaintenanceDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.subjectplan.SubjectPlanDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldticketmanagement.MoldTicketManagementDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldticketresults.MoldTicketResultsDO;
import cn.iocoder.yudao.module.erp.dal.mysql.mold.MoldMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.dvsubject.DvSubjectMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.moldplanmaintenance.MoldPlanMaintenanceMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.subjectplan.SubjectPlanMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.moldticketmanagement.MoldTicketManagementMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.moldticketresults.MoldTicketResultsMapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
import cn.iocoder.yudao.module.mes.controller.admin.moldtaskmanagement.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldtaskmanagement.MoldTaskManagementDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.mes.dal.mysql.moldtaskmanagement.MoldTaskManagementMapper;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
/**
* Service
*
* @author
*/
@Service
@Validated
public class MoldTaskManagementServiceImpl implements MoldTaskManagementService {
@Resource
private MoldTaskManagementMapper moldtaskManagementMapper;
@Resource
private MoldTicketManagementMapper moldticketManagementMapper;
@Resource
private MoldTicketResultsMapper moldticketResultsMapper;
@Resource
private MoldMapper moldMapper;
@Resource
private MoldPlanMaintenanceMapper moldplanMaintenanceMapper;
@Resource
private SubjectPlanMapper subjectPlanMapper;
@Resource
private DvSubjectMapper dvSubjectMapper;
@Override
public Long createMoldTaskManagement(MoldTaskManagementSaveReqVO createReqVO) {
// 插入
MoldTaskManagementDO moldtaskManagement = BeanUtils.toBean(createReqVO, MoldTaskManagementDO.class);
moldtaskManagementMapper.insert(moldtaskManagement);
// 返回
return moldtaskManagement.getId();
}
@Override
public void updateMoldTaskManagement(MoldTaskManagementSaveReqVO updateReqVO) {
// 校验存在
validateMoldTaskManagementExists(updateReqVO.getId());
// 更新
MoldTaskManagementDO updateObj = BeanUtils.toBean(updateReqVO, MoldTaskManagementDO.class);
moldtaskManagementMapper.updateById(updateObj);
}
@Override
public void deleteMoldTaskManagement(List<Long> idList ) {
for (Long id : idList) {
// 校验存在
validateMoldTaskManagementExists(id);
}
// 删除
moldtaskManagementMapper.deleteByIds(idList);
}
private void validateMoldTaskManagementExists(Long id) {
if (moldtaskManagementMapper.selectById(id) == null) {
throw exception(TASK_MANAGEMENT_NOT_EXISTS);
}
}
@Override
public MoldTaskManagementDO getMoldTaskManagement(Long id) {
return moldtaskManagementMapper.selectById(id);
}
@Override
public PageResult<MoldTaskManagementDO> getMoldTaskManagementPage(MoldTaskManagementPageReqVO pageReqVO) {
PageResult<MoldTaskManagementDO> moldtaskManagementDOPageResult = moldtaskManagementMapper.selectPage(pageReqVO);
for (MoldTaskManagementDO moldtaskManagementDO : moldtaskManagementDOPageResult.getList()) {
MoldPlanMaintenanceDO moldplanMaintenanceDO = moldplanMaintenanceMapper.selectById(moldtaskManagementDO.getProjectForm());
moldtaskManagementDO.setProjectFormName(moldplanMaintenanceDO.getPlanName());
}
return moldtaskManagementDOPageResult;
}
@Override
public void createMoldTicket(Long id) {
List<MoldTicketManagementDO> moldticketManagementDOS = new ArrayList<>();
//检验数据是否存在
validateMoldTaskManagementExists(id);
MoldTaskManagementDO moldtaskManagementDO = moldtaskManagementMapper.selectById(id);
if (moldtaskManagementDO == null){
throw exception(TASK_MANAGEMENT_NOT_EXISTS);
}
// 将逗号分隔的字符串转换为Long类型的List
List<Long> idList = Arrays.stream(moldtaskManagementDO.getMoldList().split(","))
.map(String::trim) // 去除可能存在的空格
.map(Long::valueOf)
.collect(Collectors.toList());
for (Long moldId : idList) {
MoldTicketManagementDO moldticketManagementDO = new MoldTicketManagementDO();
MoldDO moldDO = moldMapper.selectById(moldId);
moldticketManagementDO.setTaskId(moldtaskManagementDO.getId());
moldticketManagementDO.setPlanNo(generatePrefixedOrderNo());
moldticketManagementDO.setPlanId(moldtaskManagementDO.getProjectForm());
moldticketManagementDO.setMoldName(moldDO.getName());
moldticketManagementDO.setPlanType(moldtaskManagementDO.getTaskType());
moldticketManagementDO.setConfigName(moldtaskManagementDO.getName());
moldticketManagementDO.setTaskEndTime(moldtaskManagementDO.getEndDate().atStartOfDay());
moldticketManagementMapper.insert(moldticketManagementDO);
List<DvSubjectDO> dvSubjectDOList = new ArrayList<>();
List<SubjectPlanDO> subjectPlanDOList = subjectPlanMapper.selectList(Wrappers.<SubjectPlanDO>lambdaQuery().eq(SubjectPlanDO::getPlanId, moldticketManagementDO.getPlanId()));
for (SubjectPlanDO subjectPlanDO : subjectPlanDOList) {
DvSubjectDO dvSubjectDO = dvSubjectMapper.selectById(subjectPlanDO.getSubjectId());
MoldTicketResultsDO moldticketResultsDO = new MoldTicketResultsDO();
moldticketResultsDO.setInspectionItemName(dvSubjectDO.getSubjectName());
moldticketResultsDO.setInspectionMethod(dvSubjectDO.getInspectionMethod());
moldticketResultsDO.setJudgmentCriteria(dvSubjectDO.getJudgmentCriteria());
moldticketResultsDO.setManagementId(moldticketManagementDO.getId());
moldticketResultsDO.setMoldId(moldId);
moldticketResultsMapper.insert(moldticketResultsDO);
}
}
}
/**
*
*/
public static String generatePrefixedOrderNo() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
String date = sdf.format(new Date());
String randomNum = String.format("%06d", new Random().nextInt(1000000));
return "E" + date + randomNum;
}
}

@ -0,0 +1,56 @@
package cn.iocoder.yudao.module.mes.service.moldticketmanagement;
import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.module.mes.controller.admin.moldticketmanagement.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldticketmanagement.MoldTicketManagementDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
/**
* Service
*
* @author
*/
public interface MoldTicketManagementService {
/**
*
*
* @param createReqVO
* @return
*/
Long createMoldTicketManagement(@Valid MoldTicketManagementSaveReqVO createReqVO);
/**
*
*
* @param updateReqVO
*/
void updateMoldTicketManagement(@Valid MoldTicketManagementSaveReqVO updateReqVO);
/**
*
*
* @param id
*/
void deleteMoldTicketManagement(Long id);
/**
*
*
* @param id
* @return
*/
MoldTicketManagementDO getMoldTicketManagement(Long id);
/**
*
*
* @param pageReqVO
* @return
*/
PageResult<MoldTicketManagementDO> getMoldTicketManagementPage(MoldTicketManagementPageReqVO pageReqVO);
void batchUpdateJobStatus(@Valid MoldTicketManagementBatchUpdateReqVO reqVO);
}

@ -0,0 +1,107 @@
package cn.iocoder.yudao.module.mes.service.moldticketmanagement;
import cn.iocoder.yudao.module.mes.service.moldticketmanagement.MoldTicketManagementService;
import com.alibaba.excel.util.StringUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import java.util.stream.Collectors;
import cn.iocoder.yudao.module.mes.controller.admin.moldticketmanagement.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldticketmanagement.MoldTicketManagementDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.mes.dal.mysql.moldticketmanagement.MoldTicketManagementMapper;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
/**
* Service
*
* @author
*/
@Service
@Validated
public class MoldTicketManagementServiceImpl implements MoldTicketManagementService {
@Resource
private MoldTicketManagementMapper moldticketManagementMapper;
@Override
public Long createMoldTicketManagement(MoldTicketManagementSaveReqVO createReqVO) {
// 插入
MoldTicketManagementDO moldticketManagement = BeanUtils.toBean(createReqVO, MoldTicketManagementDO.class);
moldticketManagementMapper.insert(moldticketManagement);
// 返回
return moldticketManagement.getId();
}
@Override
public void updateMoldTicketManagement(MoldTicketManagementSaveReqVO updateReqVO) {
// 校验存在
validateMoldTicketManagementExists(updateReqVO.getId());
// 更新
MoldTicketManagementDO updateObj = BeanUtils.toBean(updateReqVO, MoldTicketManagementDO.class);
moldticketManagementMapper.updateById(updateObj);
}
@Override
public void deleteMoldTicketManagement(Long id) {
// 校验存在
validateMoldTicketManagementExists(id);
// 删除
moldticketManagementMapper.deleteById(id);
}
private void validateMoldTicketManagementExists(Long id) {
if (moldticketManagementMapper.selectById(id) == null) {
throw exception(TICKET_MANAGEMENT_NOT_EXISTS);
}
}
@Override
public MoldTicketManagementDO getMoldTicketManagement(Long id) {
return moldticketManagementMapper.selectById(id);
}
@Override
public PageResult<MoldTicketManagementDO> getMoldTicketManagementPage(MoldTicketManagementPageReqVO pageReqVO) {
return moldticketManagementMapper.selectPage(pageReqVO);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void batchUpdateJobStatus(MoldTicketManagementBatchUpdateReqVO reqVO) {
// 1. 解析ID列表
List<Long> idList = parseIds(reqVO.getIds());
if (idList.isEmpty()) {
throw exception(TICKET_MANAGEMENT_NOT_EXISTS);
}
// 2. 批量更新
moldticketManagementMapper.batchUpdateJobStatus(idList, reqVO.getJobStatus());
}
/**
* ID
*/
private List<Long> parseIds(String ids) {
if (StringUtils.isBlank(ids)) {
return Collections.emptyList();
}
return Arrays.stream(ids.split(","))
.map(String::trim)
.filter(StringUtils::isNotBlank)
.map(Long::valueOf)
.distinct()
.collect(Collectors.toList());
}
}

@ -0,0 +1,62 @@
package cn.iocoder.yudao.module.mes.service.moldticketresults;
import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.module.mes.controller.admin.moldticketresults.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldticketresults.MoldTicketResultsDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
/**
* Service
*
* @author
*/
public interface MoldTicketResultsService {
/**
*
*
* @param createReqVO
* @return
*/
Long createMoldTicketResults(@Valid MoldTicketResultsSaveReqVO createReqVO);
/**
*
*
* @param updateReqVO
*/
void updateMoldTicketResults(@Valid MoldTicketResultsSaveReqVO updateReqVO);
/**
*
*
* @param id
*/
void deleteMoldTicketResults(Long id);
/**
*
*
* @param id
* @return
*/
MoldTicketResultsDO getMoldTicketResults(Long id);
/**
*
*
* @param pageReqVO
* @return
*/
PageResult<MoldTicketResultsDO> getMoldTicketResultsPage(MoldTicketResultsPageReqVO pageReqVO);
/**
*
*
* @param updateReqVOList
* @return
*/
void batchUpdateMoldTicketResults(@Valid List<MoldTicketResultsSaveReqVO> updateReqVOList);
}

@ -0,0 +1,182 @@
package cn.iocoder.yudao.module.mes.service.moldticketresults;
import cn.iocoder.yudao.framework.security.core.LoginUser;
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
import cn.iocoder.yudao.module.mes.controller.admin.moldticketresults.enums.MoldJobResultEnum;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldticketmanagement.MoldTicketManagementDO;
import cn.iocoder.yudao.module.mes.dal.mysql.moldticketmanagement.MoldTicketManagementMapper;
import cn.iocoder.yudao.module.mes.service.moldticketresults.MoldTicketResultsService;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.util.*;
import cn.iocoder.yudao.module.mes.controller.admin.moldticketresults.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldticketresults.MoldTicketResultsDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.mes.dal.mysql.moldticketresults.MoldTicketResultsMapper;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
/**
* Service
*
* @author
*/
@Service
@Validated
public class MoldTicketResultsServiceImpl implements MoldTicketResultsService {
@Resource
private MoldTicketResultsMapper moldticketResultsMapper;
@Resource
@Lazy
private MoldTicketManagementMapper moldticketManagementMapper;
@Override
public Long createMoldTicketResults(MoldTicketResultsSaveReqVO createReqVO) {
// 插入
MoldTicketResultsDO moldticketResults = BeanUtils.toBean(createReqVO, MoldTicketResultsDO.class);
moldticketResultsMapper.insert(moldticketResults);
// 返回
return moldticketResults.getId();
}
@Override
public void updateMoldTicketResults(MoldTicketResultsSaveReqVO updateReqVO) {
// 校验存在
validateMoldTicketResultsExists(updateReqVO.getId());
// 更新
MoldTicketResultsDO updateObj = BeanUtils.toBean(updateReqVO, MoldTicketResultsDO.class);
moldticketResultsMapper.updateById(updateObj);
}
@Override
public void deleteMoldTicketResults(Long id) {
// 校验存在
validateMoldTicketResultsExists(id);
// 删除
moldticketResultsMapper.deleteById(id);
}
private void validateMoldTicketResultsExists(Long id) {
if (moldticketResultsMapper.selectById(id) == null) {
throw exception(TICKET_RESULTS_NOT_EXISTS);
}
}
@Override
public MoldTicketResultsDO getMoldTicketResults(Long id) {
return moldticketResultsMapper.selectById(id);
}
@Override
public PageResult<MoldTicketResultsDO> getMoldTicketResultsPage(MoldTicketResultsPageReqVO pageReqVO) {
return moldticketResultsMapper.selectPage(pageReqVO);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void batchUpdateMoldTicketResults(List<MoldTicketResultsSaveReqVO> updateReqVOList) {
if (CollectionUtils.isEmpty(updateReqVOList)) {
return;
}
// 1. 数据验证
validateBatchUpdateData(updateReqVOList);
// 2. 批量更新
List<MoldTicketResultsDO> updateList = new ArrayList<>();
LocalDateTime now = LocalDateTime.now();
for (MoldTicketResultsSaveReqVO vo : updateReqVOList) {
// 转换为DO
MoldTicketResultsDO updateDO = BeanUtils.toBean(vo, MoldTicketResultsDO.class);
updateDO.setUpdateTime(now);
updateList.add(updateDO);
}
// 3. 执行批量更新
moldticketResultsMapper.updateBatch(updateList);
//4. 判断是否全部已检验
handleInspectionResult(updateReqVOList);
}
/**
*
*/
private void validateBatchUpdateData(List<MoldTicketResultsSaveReqVO> updateReqVOList) {
if (CollectionUtils.isEmpty(updateReqVOList)) {
return;
}
Set<Long> idSet = new HashSet<>();
for (int i = 0; i < updateReqVOList.size(); i++) {
MoldTicketResultsSaveReqVO vo = updateReqVOList.get(i);
// 验证ID不能为空
if (vo.getId() == null) {
throw exception(TICKET_RESULTS_ID_NOT_NULL);
}
idSet.add(vo.getId());
// 调用单个验证逻辑
validateMoldTicketResultsExists(vo.getId());
}
}
/**
*
*/
private void handleInspectionResult(List<MoldTicketResultsSaveReqVO> updateReqVOList) {
if (CollectionUtils.isEmpty(updateReqVOList)) {
return;
}
// 检查是否有未填写的
boolean hasPending = updateReqVOList.stream()
.anyMatch(vo -> vo.getInspectionResult() == null || vo.getInspectionResult().equals(MoldJobResultEnum.PENDING.getCode()));
if (hasPending) {
return;
}
MoldTicketManagementDO moldticketManagementDO = moldticketManagementMapper.selectById(updateReqVOList.get(0).getManagementId());
if (moldticketManagementDO == null ){
throw exception(TICKET_MANAGEMENT_NOT_EXISTS);
}
moldticketManagementDO.setTaskTime(LocalDateTime.now());
//设置为已完成
moldticketManagementDO.setJobStatus(1);
// 检查是否有不通过的
boolean hasFail = updateReqVOList.stream()
.anyMatch(vo -> vo.getInspectionResult() != null && vo.getInspectionResult().equals(MoldJobResultEnum.FAIL.getCode()));
if (hasFail) {
moldticketManagementDO.setJobResult(MoldJobResultEnum.FAIL.getCode());
} else {
moldticketManagementDO.setJobResult(MoldJobResultEnum.PASS.getCode());
}
LoginUser loginUser = SecurityFrameworkUtils.getLoginUser();
moldticketManagementDO.setOperator(String.valueOf(loginUser.getId()));
moldticketManagementMapper.updateById(moldticketManagementDO);
}
}

@ -263,7 +263,7 @@ public class OrganizationServiceImpl implements OrganizationService {
OrganizationListReqVO organizationListReqVO = new OrganizationListReqVO();
List<OrganizationDO> organizationDOS = getOrganizationList(organizationListReqVO);
List<OrganizationRespVO> organizationRespVOS = buildVOList(organizationDOS);
if (com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isEmpty(organizationRespVOS)) {
if (organizationRespVOS.isEmpty()) {
return Collections.emptyList();
}
@ -306,19 +306,171 @@ public class OrganizationServiceImpl implements OrganizationService {
.filter(param -> param.getDeviceId() != null)
.collect(Collectors.groupingBy(DeviceContactModelDO::getDeviceId));
// 获取产线与父节点的映射关系
Map<Long, Long> lineParentIdMap = organizationRespVOS.stream()
.collect(Collectors.toMap(
OrganizationRespVO::getId,
line -> line.getParentId() != null ? line.getParentId() : 0L, // 如果父节点为空使用默认值0
(existing, replacement) -> existing
));
// 构建产线ID到产线对象的映射
Map<Long, OrganizationRespVO> lineMap = organizationRespVOS.stream()
.collect(Collectors.toMap(OrganizationRespVO::getId, Function.identity()));
// 获取所有匹配的产线(包括下级匹配的)
List<OrganizationRespVO> matchedLines = getMatchedLinesWithAncestors(
organizationRespVOS, keyword, allDevices, paramsByDeviceId, lineParentIdMap, lineMap
);
// 7. 构建树结构
return buildTreeStructureWithKeyword(organizationRespVOS, devicesByLineId, paramsByDeviceId,keyword);
return buildTreeStructureWithKeyword(matchedLines, devicesByLineId, paramsByDeviceId,keyword,lineParentIdMap);
}
private List<OrganizationRespVO> getMatchedLinesWithAncestors(
List<OrganizationRespVO> allLines,
String keyword,
List<DeviceDO> allDevices,
Map<Long, List<DeviceContactModelDO>> paramsByDeviceId,
Map<Long, Long> lineParentIdMap,
Map<Long, OrganizationRespVO> lineMap) {
boolean hasKeyword = StringUtils.isNotBlank(keyword);
String lowerKeyword = hasKeyword ? keyword.toLowerCase() : "";
// 存储最终要包含的产线ID
Set<Long> lineIdsToInclude = new HashSet<>();
// 1. 首先找出直接匹配的产线
for (OrganizationRespVO line : allLines) {
boolean lineMatch = !hasKeyword ||
(line.getName() != null && line.getName().toLowerCase().contains(lowerKeyword));
if (lineMatch) {
// 添加到结果集
lineIdsToInclude.add(line.getId());
// 向上查找所有父级节点
addAllAncestors(line.getId(), lineParentIdMap, lineMap, lineIdsToInclude);
}
}
// 2. 查找设备匹配的产线
if (hasKeyword) {
for (DeviceDO device : allDevices) {
boolean deviceMatch = device.getDeviceName() != null &&
device.getDeviceName().toLowerCase().contains(lowerKeyword);
if (deviceMatch) {
// 找到这个设备所属的产线
for (OrganizationRespVO line : allLines) {
if (line.getMachineId() != null && line.getMachineId().equals(device.getId())) {
lineIdsToInclude.add(line.getId());
addAllAncestors(line.getId(), lineParentIdMap, lineMap, lineIdsToInclude);
}
}
}
}
}
// 3. 查找参数匹配的产线
if (hasKeyword) {
for (Map.Entry<Long, List<DeviceContactModelDO>> entry : paramsByDeviceId.entrySet()) {
Long deviceId = entry.getKey();
List<DeviceContactModelDO> params = entry.getValue();
boolean hasMatchingParam = params.stream()
.anyMatch(param -> param.getAttributeName() != null &&
param.getAttributeName().toLowerCase().contains(lowerKeyword));
if (hasMatchingParam) {
// 找到这个设备所属的产线
for (OrganizationRespVO line : allLines) {
if (line.getMachineId() != null && line.getMachineId().equals(deviceId)) {
lineIdsToInclude.add(line.getId());
addAllAncestors(line.getId(), lineParentIdMap, lineMap, lineIdsToInclude);
}
}
}
}
}
// 如果没有关键词,返回所有产线
if (!hasKeyword) {
return allLines;
}
// 只返回需要包含的产线
return allLines.stream()
.filter(line -> lineIdsToInclude.contains(line.getId()))
.collect(Collectors.toList());
}
private void addAllAncestors(Long lineId,
Map<Long, Long> lineParentIdMap,
Map<Long, OrganizationRespVO> lineMap,
Set<Long> lineIdsToInclude) {
Long currentParentId = lineParentIdMap.get(lineId);
// 递归向上查找所有父级节点
while (currentParentId != null && currentParentId != 0L) {
lineIdsToInclude.add(currentParentId);
// 继续向上查找
currentParentId = lineParentIdMap.get(currentParentId);
}
}
private List<LineAnalysisTreeDTO.LineNode> buildTreeStructureWithKeyword(List<OrganizationRespVO> lines,
Map<Long, List<DeviceDO>> devicesByLineId,
Map<Long, List<DeviceContactModelDO>> paramsByDeviceId,
String keyword) {
String keyword,
Map<Long, Long> lineParentIdMap) {
// 统一处理关键词
boolean hasKeyword = StringUtils.isNotBlank(keyword);
String lowerKeyword = hasKeyword ? keyword.toLowerCase() : "";
// 如果lines已经过滤过这里不再需要复杂的匹配判断
if (!hasKeyword) {
// 没有关键词时,返回完整的树结构
return lines.stream().map(line -> {
Long parentId = lineParentIdMap.getOrDefault(line.getId(), 0L);
// 获取该产线的设备
List<DeviceDO> lineDevices = devicesByLineId.getOrDefault(line.getId(), new ArrayList<>());
// 构建设备节点(显示所有设备和参数)
List<LineAnalysisTreeDTO.EquipmentNode> equipmentNodes = lineDevices.stream()
.map(device -> {
List<DeviceContactModelDO> deviceParams = paramsByDeviceId.getOrDefault(device.getId(), new ArrayList<>());
List<LineAnalysisTreeDTO.ParameterNode> parameterNodes = deviceParams.stream()
.map(this::buildParameterNode)
.collect(Collectors.toList());
return LineAnalysisTreeDTO.EquipmentNode.builder()
.id(device.getId())
.name(device.getDeviceName())
.parameters(parameterNodes)
.build();
})
.collect(Collectors.toList());
return LineAnalysisTreeDTO.LineNode.builder()
.id(line.getId())
.name(line.getName())
.parentId(parentId)
.equipments(equipmentNodes)
.build();
}).collect(Collectors.toList());
}
// 有关键词时lines已经包含了匹配的产线及其父级产线
// 但我们仍然需要根据关键词过滤设备和参数
// 记录匹配情况
Map<Long, Boolean> lineMatchedMap = new HashMap<>();
Map<Long, Boolean> deviceMatchedMap = new HashMap<>();
@ -326,17 +478,16 @@ public class OrganizationServiceImpl implements OrganizationService {
// 第一遍:分析匹配情况
for (OrganizationRespVO line : lines) {
// 产线是否匹配
boolean lineMatch = !hasKeyword ||
(line.getName() != null && line.getName().toLowerCase().contains(lowerKeyword));
boolean lineMatch = line.getName() != null &&
line.getName().toLowerCase().contains(lowerKeyword);
lineMatchedMap.put(line.getId(), lineMatch);
// 检查该产线的设备
List<DeviceDO> lineDevices = devicesByLineId.getOrDefault(line.getId(), new ArrayList<>());
for (DeviceDO device : lineDevices) {
// 设备是否匹配
boolean deviceMatch = !hasKeyword ||
(device.getDeviceName() != null &&
device.getDeviceName().toLowerCase().contains(lowerKeyword));
boolean deviceMatch = device.getDeviceName() != null &&
device.getDeviceName().toLowerCase().contains(lowerKeyword);
deviceMatchedMap.put(device.getId(), deviceMatch);
}
}
@ -344,16 +495,7 @@ public class OrganizationServiceImpl implements OrganizationService {
// 第二遍:构建树结构
return lines.stream().map(line -> {
boolean lineMatch = lineMatchedMap.getOrDefault(line.getId(), false);
// 关键修改:如果产线匹配,跳过后续的设备过滤逻辑
if (hasKeyword && !lineMatch) {
// 检查产线下是否有匹配的设备或参数
boolean hasMatchingDeviceOrParam = checkIfLineHasMatchingDeviceOrParam(
line, devicesByLineId, paramsByDeviceId, lowerKeyword, deviceMatchedMap);
if (!hasMatchingDeviceOrParam) {
return null;
}
}
Long parentId = lineParentIdMap.getOrDefault(line.getId(), 0L);
// 获取该产线的设备
List<DeviceDO> lineDevices = devicesByLineId.getOrDefault(line.getId(), new ArrayList<>());
@ -362,13 +504,10 @@ public class OrganizationServiceImpl implements OrganizationService {
List<LineAnalysisTreeDTO.EquipmentNode> equipmentNodes = lineDevices.stream()
.map(device -> {
boolean deviceMatch = deviceMatchedMap.getOrDefault(device.getId(), false);
List<DeviceContactModelDO> deviceParams = paramsByDeviceId.getOrDefault(device.getId(), new ArrayList<>());
// 关键修改:如果产线匹配,保留所有设备
// 如果产线匹配,显示该产线下的所有设备
if (lineMatch) {
// 产线匹配时,保留该设备
List<DeviceContactModelDO> deviceParams = paramsByDeviceId.getOrDefault(device.getId(), new ArrayList<>());
// 产线匹配时,显示所有参数
List<LineAnalysisTreeDTO.ParameterNode> parameterNodes = deviceParams.stream()
.map(this::buildParameterNode)
.collect(Collectors.toList());
@ -380,33 +519,30 @@ public class OrganizationServiceImpl implements OrganizationService {
.build();
}
// 以下为原有逻辑:产线不匹配时的处理
if (hasKeyword && !deviceMatch) {
boolean hasMatchingParam = checkIfDeviceHasMatchingParam(
device, paramsByDeviceId, lowerKeyword);
if (!hasMatchingParam) {
return null;
}
// 如果设备匹配,显示该设备的所有参数
if (deviceMatch) {
List<LineAnalysisTreeDTO.ParameterNode> parameterNodes = deviceParams.stream()
.map(this::buildParameterNode)
.collect(Collectors.toList());
return LineAnalysisTreeDTO.EquipmentNode.builder()
.id(device.getId())
.name(device.getDeviceName())
.parameters(parameterNodes)
.build();
}
List<DeviceContactModelDO> deviceParams = paramsByDeviceId.getOrDefault(device.getId(), new ArrayList<>());
// 检查是否有匹配的参数
boolean hasMatchingParam = deviceParams.stream()
.anyMatch(param -> isParameterMatch(param, lowerKeyword));
if (!hasMatchingParam) {
return null;
}
// 构建参数节点
// 只显示匹配的参数
List<LineAnalysisTreeDTO.ParameterNode> parameterNodes = deviceParams.stream()
.filter(param -> {
if (!hasKeyword) {
return true; // 没有关键词,显示所有
}
// 有关键词时:
// 如果设备匹配,显示所有参数
if (deviceMatch) {
return true;
}
// 否则,只显示匹配的参数
return isParameterMatch(param, lowerKeyword);
})
.filter(param -> isParameterMatch(param, lowerKeyword))
.map(this::buildParameterNode)
.collect(Collectors.toList());
@ -417,83 +553,60 @@ public class OrganizationServiceImpl implements OrganizationService {
.build();
})
.filter(Objects::nonNull)
.filter(equipmentNode -> !lineMatch || !equipmentNode.getParameters().isEmpty()) // 修改过滤条件
.collect(Collectors.toList());
// 构建设备节点
return LineAnalysisTreeDTO.LineNode.builder()
.id(line.getId())
.name(line.getName())
.parentId(parentId)
.equipments(equipmentNodes)
.build();
})
.filter(Objects::nonNull)
.filter(lineNode -> !hasKeyword || lineMatchedMap.getOrDefault(lineNode.getId(), false) || !lineNode.getEquipments().isEmpty())
.collect(Collectors.toList());
}
/**
* 线
*/
private boolean checkIfLineHasMatchingDeviceOrParam(OrganizationRespVO line,
Map<Long, List<DeviceDO>> devicesByLineId,
Map<Long, List<DeviceContactModelDO>> paramsByDeviceId,
String lowerKeyword,
Map<Long, Boolean> deviceMatchedMap) {
List<DeviceDO> lineDevices = devicesByLineId.getOrDefault(line.getId(), new ArrayList<>());
for (DeviceDO device : lineDevices) {
// 检查设备是否匹配
boolean deviceMatch = deviceMatchedMap.getOrDefault(device.getId(), false);
if (deviceMatch) {
return true;
}
// 检查设备下的参数是否匹配
List<DeviceContactModelDO> deviceParams = paramsByDeviceId.getOrDefault(device.getId(), new ArrayList<>());
boolean hasMatchingParam = deviceParams.stream()
.anyMatch(param -> isParameterMatch(param, lowerKeyword));
if (hasMatchingParam) {
return true;
}
}
return false;
}
/**
*
*/
private boolean checkIfDeviceHasMatchingParam(DeviceDO device,
Map<Long, List<DeviceContactModelDO>> paramsByDeviceId,
String lowerKeyword) {
List<DeviceContactModelDO> deviceParams = paramsByDeviceId.getOrDefault(device.getId(), new ArrayList<>());
return deviceParams.stream()
.anyMatch(param -> isParameterMatch(param, lowerKeyword));
}
private List<LineAnalysisTreeDTO.LineNode> buildTreeStructure(List<OrganizationRespVO> lines,
Map<Long, List<DeviceDO>> devicesByLineId,
Map<Long, List<DeviceContactModelDO>> paramsByDeviceId) {
return lines.stream().map(line -> {
LineAnalysisTreeDTO.LineNode lineNode = LineAnalysisTreeDTO.LineNode.builder()
.id(line.getId())
.name(line.getName())
.build();
// 获取该产线的设备
List<DeviceDO> lineDevices = devicesByLineId.getOrDefault(line.getId(), new ArrayList<>());
// 构建设备节点
List<LineAnalysisTreeDTO.EquipmentNode> equipmentNodes = lineDevices.stream()
.map(device -> buildEquipmentNode(device, paramsByDeviceId))
.collect(Collectors.toList());
// /**
// * 检查产线下是否有匹配的设备或参数
// */
// private boolean checkIfLineHasMatchingDeviceOrParam(OrganizationRespVO line,
// Map<Long, List<DeviceDO>> devicesByLineId,
// Map<Long, List<DeviceContactModelDO>> paramsByDeviceId,
// String lowerKeyword,
// Map<Long, Boolean> deviceMatchedMap) {
//
// List<DeviceDO> lineDevices = devicesByLineId.getOrDefault(line.getId(), new ArrayList<>());
//
// for (DeviceDO device : lineDevices) {
// // 检查设备是否匹配
// boolean deviceMatch = deviceMatchedMap.getOrDefault(device.getId(), false);
// if (deviceMatch) {
// return true;
// }
//
// // 检查设备下的参数是否匹配
// List<DeviceContactModelDO> deviceParams = paramsByDeviceId.getOrDefault(device.getId(), new ArrayList<>());
// boolean hasMatchingParam = deviceParams.stream()
// .anyMatch(param -> isParameterMatch(param, lowerKeyword));
// if (hasMatchingParam) {
// return true;
// }
// }
//
// return false;
// }
//
// /**
// * 检查设备下是否有匹配的参数
// */
// private boolean checkIfDeviceHasMatchingParam(DeviceDO device,
// Map<Long, List<DeviceContactModelDO>> paramsByDeviceId,
// String lowerKeyword) {
//
// List<DeviceContactModelDO> deviceParams = paramsByDeviceId.getOrDefault(device.getId(), new ArrayList<>());
// return deviceParams.stream()
// .anyMatch(param -> isParameterMatch(param, lowerKeyword));
// }
lineNode.setEquipments(equipmentNodes);
return lineNode;
}).collect(Collectors.toList());
}
/**
*
@ -503,33 +616,10 @@ public class OrganizationServiceImpl implements OrganizationService {
return true;
}
return (param.getAttributeName() != null && param.getAttributeName().toLowerCase().contains(lowerKeyword)) ||
(param.getAttributeCode() != null && param.getAttributeCode().toLowerCase().contains(lowerKeyword));
return (param.getAttributeName() != null && param.getAttributeName().toLowerCase().contains(lowerKeyword));
}
/**
*
*/
private LineAnalysisTreeDTO.EquipmentNode buildEquipmentNode(DeviceDO device,
Map<Long, List<DeviceContactModelDO>> paramsByDeviceId) {
LineAnalysisTreeDTO.EquipmentNode equipmentNode = LineAnalysisTreeDTO.EquipmentNode.builder()
.id(device.getId())
.name(device.getDeviceName())
.build();
// 获取设备参数
List<DeviceContactModelDO> deviceParams =
paramsByDeviceId.getOrDefault(device.getId(), new ArrayList<>());
// 构建参数节点
List<LineAnalysisTreeDTO.ParameterNode> parameterNodes = deviceParams.stream()
.map(this::buildParameterNode)
.collect(Collectors.toList());
equipmentNode.setParameters(parameterNodes);
return equipmentNode;
}
/**
*
@ -549,7 +639,7 @@ public class OrganizationServiceImpl implements OrganizationService {
private List<DeviceContactModelDO> getAllParameters(List<DeviceDO> devices) {
if (com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isEmpty(devices)) {
if (devices.isEmpty()) {
return Collections.emptyList();
}

@ -2,10 +2,13 @@ package cn.iocoder.yudao.module.mes.service.planmaintenance;
import cn.iocoder.yudao.module.mes.dal.dataobject.dvsubject.DvSubjectDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.subjectplan.SubjectPlanDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.taskmanagement.TaskManagementDO;
import cn.iocoder.yudao.module.mes.dal.mysql.dvsubject.DvSubjectMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.subjectplan.SubjectPlanMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.taskmanagement.TaskManagementMapper;
import cn.iocoder.yudao.module.mes.service.subjectplan.SubjectPlanService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.stereotype.Service;
@ -44,6 +47,9 @@ public class PlanMaintenanceServiceImpl implements PlanMaintenanceService {
@Resource
private DvSubjectMapper dvSubjectMapper;
@Resource
private TaskManagementMapper taskManagementMapper;
@Override
@Transactional(rollbackFor = Exception.class)
@ -118,17 +124,36 @@ public class PlanMaintenanceServiceImpl implements PlanMaintenanceService {
@Override
@Transactional(rollbackFor = Exception.class)
public void deletePlanMaintenance( List<Long> idList) {
for (Long id : idList) {
// 校验存在
validatePlanMaintenanceExists(id);
public void deletePlanMaintenance(List<Long> idList) {
if (CollectionUtils.isEmpty(idList)) {
return;
}
// 批量校验存在性
List<PlanMaintenanceDO> existList = planMaintenanceMapper.selectBatchIds(idList);
if (existList.size() != idList.size()) {
throw exception(PLAN_MAINTENANCE_NOT_EXISTS);
}
// 删除
// 批量校验引用
validateBatchReferences(idList);
// 删除主表
planMaintenanceMapper.deleteByIds(idList);
//删除关联表数据
// 删除关联表数据
deleteSubjectPlan(idList);
}
private void validateBatchReferences(List<Long> idList) {
boolean exists = taskManagementMapper.exists(
Wrappers.<TaskManagementDO>lambdaQuery()
.in(TaskManagementDO::getProjectForm, idList)
);
if (exists) {
throw exception(PLAN_MAINTENANCE_REFERENCES);
}
}
private void deleteSubjectPlan(List<Long> idList) {

@ -0,0 +1,55 @@
package cn.iocoder.yudao.module.mes.service.subjectmoldplan;
import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.module.mes.controller.admin.subjectmoldplan.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.subjectmoldplan.SubjectMoldPlanDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
/**
* Service
*
* @author
*/
public interface SubjectMoldPlanService {
/**
*
*
* @param createReqVO
* @return
*/
Long createSubjectMoldPlan(@Valid SubjectMoldPlanSaveReqVO createReqVO);
/**
*
*
* @param updateReqVO
*/
void updateSubjectMoldPlan(@Valid SubjectMoldPlanSaveReqVO updateReqVO);
/**
*
*
* @param id
*/
void deleteSubjectMoldPlan(Long id);
/**
*
*
* @param id
* @return
*/
SubjectMoldPlanDO getSubjectMoldPlan(Long id);
/**
*
*
* @param pageReqVO
* @return
*/
PageResult<SubjectMoldPlanDO> getSubjectMoldPlanPage(SubjectMoldPlanPageReqVO pageReqVO);
}

@ -0,0 +1,75 @@
package cn.iocoder.yudao.module.mes.service.subjectmoldplan;
import cn.iocoder.yudao.module.mes.service.subjectmoldplan.SubjectMoldPlanService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import cn.iocoder.yudao.module.mes.controller.admin.subjectmoldplan.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.subjectmoldplan.SubjectMoldPlanDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.mes.dal.mysql.subjectmoldplan.SubjectMoldPlanMapper;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
/**
* Service
*
* @author
*/
@Service
@Validated
public class SubjectMoldPlanServiceImpl implements SubjectMoldPlanService {
@Resource
private SubjectMoldPlanMapper subjectMoldPlanMapper;
@Override
public Long createSubjectMoldPlan(SubjectMoldPlanSaveReqVO createReqVO) {
// 插入
SubjectMoldPlanDO subjectMoldPlan = BeanUtils.toBean(createReqVO, SubjectMoldPlanDO.class);
subjectMoldPlanMapper.insert(subjectMoldPlan);
// 返回
return subjectMoldPlan.getId();
}
@Override
public void updateSubjectMoldPlan(SubjectMoldPlanSaveReqVO updateReqVO) {
// 校验存在
validateSubjectMoldPlanExists(updateReqVO.getId());
// 更新
SubjectMoldPlanDO updateObj = BeanUtils.toBean(updateReqVO, SubjectMoldPlanDO.class);
subjectMoldPlanMapper.updateById(updateObj);
}
@Override
public void deleteSubjectMoldPlan(Long id) {
// 校验存在
validateSubjectMoldPlanExists(id);
// 删除
subjectMoldPlanMapper.deleteById(id);
}
private void validateSubjectMoldPlanExists(Long id) {
if (subjectMoldPlanMapper.selectById(id) == null) {
throw exception(SUBJECT_PLAN_NOT_EXISTS);
}
}
@Override
public SubjectMoldPlanDO getSubjectMoldPlan(Long id) {
return subjectMoldPlanMapper.selectById(id);
}
@Override
public PageResult<SubjectMoldPlanDO> getSubjectMoldPlanPage(SubjectMoldPlanPageReqVO pageReqVO) {
return subjectMoldPlanMapper.selectPage(pageReqVO);
}
}

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.yudao.module.mes.dal.mysql.energyrecord.EnergyRecordMapper">
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
文档可见https://www.iocoder.cn/MyBatis/x-plugins/
-->
</mapper>

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.yudao.module.mes.dal.mysql.moldsubject.MoldSubjectMapper">
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
文档可见https://www.iocoder.cn/MyBatis/x-plugins/
-->
</mapper>

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.yudao.module.mes.dal.mysql.moldticketmanagement.MoldTicketManagementMapper">
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
文档可见https://www.iocoder.cn/MyBatis/x-plugins/
-->
<!-- 批量更新作业状态 -->
<update id="batchUpdateJobStatus">
UPDATE mes_mold_ticket_management
SET job_status = #{jobStatus},
update_time = NOW()
WHERE id IN
<foreach collection="idList" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</update></mapper>

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.yudao.module.mes.dal.mysql.moldticketresults.MoldTicketResultsMapper">
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
文档可见https://www.iocoder.cn/MyBatis/x-plugins/
-->
<select id="findByMoldIdAndPlanType"
resultType="cn.iocoder.yudao.module.mes.dal.dataobject.moldticketresults.MoldTicketResultsDO">
SELECT
mtr.*
from
besure.mes_mold_ticket_results mtr
left join besure.mes_mold_ticket_management mtm on mtm.id = mtr.management_id
WHERE 1=1
<!-- 必填条件 -->
<if test="moldId != null and moldId != ''">
and mtr.mold_id = #{moldId}
</if>
<if test="planType != null and planType != ''">
and mtm.plan_type= #{planType}
</if>
order by mtr.create_time desc
</select>
</mapper>
Loading…
Cancel
Save