维修管理--修饰审核

This commit is contained in:
syruan 2024-11-15 18:18:17 +08:00
parent 0f7de5c916
commit b3a578e91b
11 changed files with 262 additions and 20 deletions

View File

@ -0,0 +1,53 @@
package com.bonus.common.biz.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import java.util.Date;
/**
* @author : 阮世耀
* @version : 1.0
* @Description: 基础Base VO
*/
@Getter
@Setter
@ToString
public class BaseVO {
@ApiModelProperty(value = "关键字")
private String keyword;
@ApiModelProperty(value = "状态")
private String status;
@ApiModelProperty(value = "组织id")
private Long companyId;
@ApiModelProperty(value = "备注")
private String remark;
@ApiModelProperty(value = "开始时间")
private String startTime;
@ApiModelProperty(value = "结束时间")
private String endTime;
@ApiModelProperty(value = "创建人")
private String createBy;
@ApiModelProperty(value = "创建时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
@ApiModelProperty(value = "更新人")
private String updateBy;
@ApiModelProperty(value = "更新时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updateTime;
}

View File

@ -13,7 +13,7 @@ public enum RepairTaskStatusEnum {
TASK_STATUS_PROCESSING(0, "维修管理--进行中"), TASK_STATUS_PROCESSING(0, "维修管理--进行中"),
TASK_STATUS_COMPLETE(1, "维修管理--已完成"), TASK_STATUS_COMPLETE(1, "维修管理--已完成"),
TASK_STATUS_REJECT(2, "维修管理--驳回"), TASK_STATUS_REJECT(2, "维修管理--驳回退料"),
TASK_STATUS_TO_EXAM(3, "修饰审核--待审核"), TASK_STATUS_TO_EXAM(3, "修饰审核--待审核"),
TASK_STATUS_REVIEW(4, "修饰审核--审核通过"), TASK_STATUS_REVIEW(4, "修饰审核--审核通过"),
TASK_STATUS_NO_REVIEW(5, "修饰审核--审核不通过"), TASK_STATUS_NO_REVIEW(5, "修饰审核--审核不通过"),

View File

@ -10,6 +10,7 @@ import com.bonus.material.repair.domain.RepairApplyRecord;
import com.bonus.material.repair.domain.RepairPartDetails; import com.bonus.material.repair.domain.RepairPartDetails;
import com.bonus.material.repair.domain.RepairTask; import com.bonus.material.repair.domain.RepairTask;
import com.bonus.material.repair.domain.RepairTaskDetails; import com.bonus.material.repair.domain.RepairTaskDetails;
import com.bonus.material.repair.domain.vo.RepairDeviceListVo;
import com.bonus.material.repair.service.RepairService; import com.bonus.material.repair.service.RepairService;
import com.bonus.system.api.domain.SysUser; import com.bonus.system.api.domain.SysUser;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
@ -23,6 +24,7 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
/** /**
@ -65,7 +67,7 @@ public class RepairController extends BaseController {
} }
/** /**
* 导出维修任务列表 * 导出维修任务列表--外层--壹级列表
*/ */
@PostMapping("/export") @PostMapping("/export")
@RequiresPermissions("repair:manage:export") @RequiresPermissions("repair:manage:export")
@ -85,7 +87,7 @@ public class RepairController extends BaseController {
@RequiresPermissions("repair:manage:preview") @RequiresPermissions("repair:manage:preview")
public TableDataInfo getRepairMaTypeList(RepairTaskDetails bean) { public TableDataInfo getRepairMaTypeList(RepairTaskDetails bean) {
startPage(); startPage();
List<RepairTaskDetails> list = service.getRepairMaTypeList(bean); List<RepairDeviceListVo> list = service.getRepairMaTypeList(bean);
return getDataTable(list); return getDataTable(list);
} }
@ -95,7 +97,7 @@ public class RepairController extends BaseController {
@ApiOperation(value = "获取维修物资设备列表---不分页") @ApiOperation(value = "获取维修物资设备列表---不分页")
@GetMapping("/getAppRepairMaTypeList") @GetMapping("/getAppRepairMaTypeList")
public AjaxResult getAppRepairMaTypeList(RepairTaskDetails bean) { public AjaxResult getAppRepairMaTypeList(RepairTaskDetails bean) {
List<RepairTaskDetails> list = service.getRepairMaTypeList(bean); List<RepairDeviceListVo> list = service.getRepairMaTypeList(bean);
return AjaxResult.success(list); return AjaxResult.success(list);
} }
@ -142,6 +144,15 @@ public class RepairController extends BaseController {
return service.endRepairTask(taskList); return service.endRepairTask(taskList);
} }
/**
* 驳回退料--批量
*/
@ApiOperation(value = "驳回退料")
@DeleteMapping("/{ids}")
public AjaxResult rejectRepair(@PathVariable Long[] ids) {
return service.rejectRepair(Arrays.asList(ids));
}
/** /**
* 获取维修员下拉选 * 获取维修员下拉选
*/ */

View File

@ -34,6 +34,13 @@ public class RepairTaskDetails extends BaseEntity {
*/ */
@ApiModelProperty(value = "类型名称") @ApiModelProperty(value = "类型名称")
private String typeName; private String typeName;
/**
* 规格类型id
*/
@ApiModelProperty(value = "规格型号id")
private String typeId;
/** /**
* 规格型号 * 规格型号
*/ */
@ -49,7 +56,7 @@ public class RepairTaskDetails extends BaseEntity {
/** /**
* 编码 * 编码
*/ */
@ApiModelProperty(value = "编码") @ApiModelProperty(value = "设备编码")
private String code; private String code;
/** /**
* 维修总量 * 维修总量
@ -72,12 +79,6 @@ public class RepairTaskDetails extends BaseEntity {
@ApiModelProperty(value = "待修状态") @ApiModelProperty(value = "待修状态")
private String status; private String status;
/**
* 规格类型id
*/
@ApiModelProperty(value = "规格型号id")
private String typeId;
@ApiModelProperty(value = "组织id") @ApiModelProperty(value = "组织id")
private Long companyId; private Long companyId;

View File

@ -0,0 +1,65 @@
package com.bonus.material.repair.domain.vo;
import com.bonus.common.biz.domain.BaseVO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.ArrayList;
import java.util.List;
/**
* @author : 阮世耀
* @version : 1.0
* @CreateTime: 2024-11-15 13:26
* @Description: 维修设备列表返回VO
*/
@EqualsAndHashCode(callSuper = false)
@Data
public class RepairDeviceListVo extends BaseVO {
@ApiModelProperty(value = "id")
private Long id;
@ApiModelProperty(value = "任务ID")
private Integer taskId;
@ApiModelProperty(value = "类型id")
private Long typeNameId;
@ApiModelProperty(value = "设备编码")
private String code;
@ApiModelProperty(value = "类型名称")
private String typeName;
@ApiModelProperty(value = "规格型号id")
private Long typeId;
@ApiModelProperty(value = "规格型号")
private String type;
@ApiModelProperty(value = "物资设备计量单位")
private String unitName;
@ApiModelProperty(value = "管理模式")
private Integer manageType;
@ApiModelProperty(value = "设备表主键id")
private Long maId;
@ApiModelProperty(value = "维修人员")
private String repairer;
@ApiModelProperty(value = "维修总量")
private int repairNum;
@ApiModelProperty(value = "已修数量")
private int repairedNum;
@ApiModelProperty(value = "维修报废数量")
private int scrapNum;
@ApiModelProperty(value = "内层物资类型集合")
private List<RepairDeviceVO> repairDeviceList = new ArrayList<>();
}

View File

@ -0,0 +1,46 @@
package com.bonus.material.repair.domain.vo;
import com.bonus.material.repair.domain.RepairPart;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiOperation;
import lombok.Data;
import java.util.List;
/**
* @author : 阮世耀
* @version : 1.0
* @CreateTime: 2024-11-15 14:35
* @Description: 维修设备VO
*/
@Data
public class RepairDeviceVO {
@ApiModelProperty(value = "主键")
private Long id;
@ApiModelProperty(value = "任务ID")
private Long taskId;
@ApiModelProperty(value = "设备类型")
private String typeName;
@ApiModelProperty(value = "规格型号")
private String type;
@ApiModelProperty(value = "设备编码")
private String code;
@ApiModelProperty(value = "状态")
private String status;
@ApiModelProperty(value = "维修配件信息")
private String partInfo;
@ApiModelProperty(value = "附件")
private String fileUrl;
@ApiModelProperty(value = "维修配件集合")
private List<RepairPart> repairPartList;
}

View File

@ -4,6 +4,7 @@ import com.bonus.material.repair.domain.RepairApplyRecord;
import com.bonus.material.repair.domain.RepairPartDetails; import com.bonus.material.repair.domain.RepairPartDetails;
import com.bonus.material.repair.domain.RepairTask; import com.bonus.material.repair.domain.RepairTask;
import com.bonus.material.repair.domain.RepairTaskDetails; import com.bonus.material.repair.domain.RepairTaskDetails;
import com.bonus.material.repair.domain.vo.RepairDeviceListVo;
import com.bonus.system.api.domain.SysUser; import com.bonus.system.api.domain.SysUser;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@ -27,7 +28,7 @@ public interface RepairMapper {
* 获取维修详细列表 * 获取维修详细列表
* @param bean 维修任务详情--查询条件 * @param bean 维修任务详情--查询条件
*/ */
List<RepairTaskDetails> getRepairMaTypeList(RepairTaskDetails bean); List<RepairDeviceListVo> getRepairMaTypeList(RepairTaskDetails bean);
/** /**
* 新增维修记录 * 新增维修记录

View File

@ -5,6 +5,7 @@ import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.material.repair.domain.RepairApplyRecord; import com.bonus.material.repair.domain.RepairApplyRecord;
import com.bonus.material.repair.domain.RepairTask; import com.bonus.material.repair.domain.RepairTask;
import com.bonus.material.repair.domain.RepairTaskDetails; import com.bonus.material.repair.domain.RepairTaskDetails;
import com.bonus.material.repair.domain.vo.RepairDeviceListVo;
import com.bonus.system.api.domain.SysUser; import com.bonus.system.api.domain.SysUser;
import java.util.ArrayList; import java.util.ArrayList;
@ -27,7 +28,7 @@ public interface RepairService {
* @param bean * @param bean
* @return * @return
*/ */
List<RepairTaskDetails> getRepairMaTypeList(RepairTaskDetails bean); List<RepairDeviceListVo> getRepairMaTypeList(RepairTaskDetails bean);
/** /**
* 新增维修记录 * 新增维修记录
@ -63,6 +64,8 @@ public interface RepairService {
*/ */
AjaxResult endRepairTask(List<RepairTask> taskList); AjaxResult endRepairTask(List<RepairTask> taskList);
AjaxResult rejectRepair(List<Long> taskList);
/** /**
* 导出维修列表 * 导出维修列表

View File

@ -24,6 +24,8 @@ import com.bonus.material.task.mapper.TmTaskAgreementMapper;
import com.bonus.material.task.mapper.TmTaskMapper; import com.bonus.material.task.mapper.TmTaskMapper;
import com.bonus.material.task.domain.TmTask; import com.bonus.material.task.domain.TmTask;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.bonus.material.repair.mapper.RepairAuditDetailsMapper; import com.bonus.material.repair.mapper.RepairAuditDetailsMapper;
import com.bonus.material.repair.service.IRepairAuditDetailsService; import com.bonus.material.repair.service.IRepairAuditDetailsService;

View File

@ -1,5 +1,7 @@
package com.bonus.material.repair.service.impl; package com.bonus.material.repair.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.bonus.common.biz.enums.RepairTaskStatusEnum;
import com.bonus.common.core.exception.ServiceException; import com.bonus.common.core.exception.ServiceException;
import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.common.security.utils.SecurityUtils; import com.bonus.common.security.utils.SecurityUtils;
@ -7,17 +9,27 @@ import com.bonus.material.repair.domain.RepairApplyRecord;
import com.bonus.material.repair.domain.RepairPartDetails; import com.bonus.material.repair.domain.RepairPartDetails;
import com.bonus.material.repair.domain.RepairTask; import com.bonus.material.repair.domain.RepairTask;
import com.bonus.material.repair.domain.RepairTaskDetails; import com.bonus.material.repair.domain.RepairTaskDetails;
import com.bonus.material.repair.domain.vo.RepairDeviceListVo;
import com.bonus.material.repair.domain.vo.RepairDeviceVO;
import com.bonus.material.repair.mapper.RepairMapper; import com.bonus.material.repair.mapper.RepairMapper;
import com.bonus.material.repair.service.RepairService; import com.bonus.material.repair.service.RepairService;
import com.bonus.material.task.domain.TmTask;
import com.bonus.material.task.mapper.TmTaskMapper;
import com.bonus.system.api.domain.SysUser; import com.bonus.system.api.domain.SysUser;
import com.bonus.system.api.model.LoginUser; import com.bonus.system.api.model.LoginUser;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors;
/** /**
* @author syruan * @author syruan
@ -28,6 +40,8 @@ public class RepairServiceImpl implements RepairService {
@Resource @Resource
private RepairMapper repairMapper; private RepairMapper repairMapper;
private TmTaskMapper taskMapper;
@Override @Override
public List<RepairTask> getRepairTaskList(RepairTask bean) { public List<RepairTask> getRepairTaskList(RepairTask bean) {
@ -40,10 +54,44 @@ public class RepairServiceImpl implements RepairService {
} }
@Override @Override
public List<RepairTaskDetails> getRepairMaTypeList(RepairTaskDetails bean) { public List<RepairDeviceListVo> getRepairMaTypeList(RepairTaskDetails bean) {
//Long companyId = SecurityUtils.getLoginUser().getSysUser().getDeptId();
bean.setCompanyId(null); bean.setCompanyId(null);
return repairMapper.getRepairMaTypeList(bean); List<RepairDeviceListVo> repairMaTypeList = repairMapper.getRepairMaTypeList(bean);
if (repairMaTypeList.isEmpty()) {
return repairMaTypeList;
}
// 创建Map集合用于快速分组
Map<Long, RepairDeviceListVo> resultMap = new ConcurrentHashMap<>();
// 遍历处理把相同的父级对象拆分到子集合中
repairMaTypeList.forEach(item -> {
// 创建对象并复制字段value
RepairDeviceVO repairDeviceVO = new RepairDeviceVO();
try {
BeanUtil.copyProperties(item, repairDeviceVO);
} catch (Exception e) {
// 记录异常日志并提供更详细的错误信息
System.err.println("复制属性时发生错误: {}" + e.getMessage());
throw new RuntimeException("复制属性时发生错误", e);
}
if (item.getTypeNameId() == null) {
// 处理 typeNameId 为空的情况
System.err.println("typeNameId 为空,跳过当前项: " + item);
return;
}
// 使用 computeIfAbsent 方法如果 key 不存在则创建一个新对象并添加到 resultMap
resultMap.computeIfAbsent(item.getTypeNameId(), k -> {
item.getRepairDeviceList().add(repairDeviceVO);
return item;
}).getRepairDeviceList().add(repairDeviceVO);
});
return new ArrayList<>(resultMap.values());
} }
@ -69,7 +117,7 @@ public class RepairServiceImpl implements RepairService {
} }
switch (bean.getRepairType()) { switch (bean.getRepairType()) {
case "1": { case "1": {
int repairNum = (details.getRepairedNum() + bean.getRepairNum()); int repairNum = details.getRepairedNum() + bean.getRepairNum();
int num = repairNum + details.getScrapNum(); int num = repairNum + details.getScrapNum();
if (num > details.getRepairNum()) { if (num > details.getRepairNum()) {
throw new ServiceException("维修数量大于维修总量"); throw new ServiceException("维修数量大于维修总量");
@ -78,7 +126,7 @@ public class RepairServiceImpl implements RepairService {
break; break;
} }
case "2": { case "2": {
int repairNum = (int) (details.getRepairedNum() + bean.getRepairNum()); int repairNum = details.getRepairedNum() + bean.getRepairNum();
int num = repairNum + details.getScrapNum(); int num = repairNum + details.getScrapNum();
if (num > details.getRepairNum()) { if (num > details.getRepairNum()) {
throw new ServiceException("维修数量大于维修总量"); throw new ServiceException("维修数量大于维修总量");
@ -87,7 +135,7 @@ public class RepairServiceImpl implements RepairService {
break; break;
} }
case "3": { case "3": {
int scrapNum = (int) (details.getScrapNum() + bean.getScrapNum()); int scrapNum = details.getScrapNum() + bean.getScrapNum();
int num = scrapNum + details.getRepairedNum(); int num = scrapNum + details.getRepairedNum();
if (num > details.getRepairNum()) { if (num > details.getRepairNum()) {
throw new ServiceException("维修数量大于维修总量"); throw new ServiceException("维修数量大于维修总量");
@ -216,6 +264,17 @@ public class RepairServiceImpl implements RepairService {
return AjaxResult.success(); return AjaxResult.success();
} }
@Override
public AjaxResult rejectRepair(@NotNull List<Long> taskList) {
try {
taskList.forEach(taskId -> taskMapper.updateTmTaskStatusByTaskId(taskId, RepairTaskStatusEnum.TASK_STATUS_REJECT.getStatus()));
} catch (DataAccessException e) {
System.err.println(e.getMessage());
throw new RuntimeException(e);
}
return AjaxResult.success("执行完成");
}
@Override @Override
public int completeRepair(ArrayList<Long> ids) { public int completeRepair(ArrayList<Long> ids) {

View File

@ -197,12 +197,13 @@
tt.create_time DESC tt.create_time DESC
</select> </select>
<select id="getRepairMaTypeList" resultType="com.bonus.material.repair.domain.RepairTaskDetails"> <select id="getRepairMaTypeList" resultType="com.bonus.material.repair.domain.vo.RepairDeviceListVo">
select select
rad.id as id, rad.id as id,
rad.task_id as taskId, rad.task_id as taskId,
rad.ma_id as maId, rad.ma_id as maId,
mt2.type_name as typeName, mt2.type_name as typeName,
mt2.type_id as typeNameId,
mt.type_name as type, mt.type_name as type,
mt.unit_name as unitName, mt.unit_name as unitName,
mt.manage_type as manageType, mt.manage_type as manageType,