diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/common/constants/TypeConstants.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/common/constants/TypeConstants.java index 20ef431..32accae 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/common/constants/TypeConstants.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/common/constants/TypeConstants.java @@ -9,4 +9,7 @@ public class TypeConstants { /** 领料单号的开头字母 */ public static final String LEASE_TASK_TYPE_LABEL = "L"; + + /** 维修单号的开头字母 */ + public static final String REPAIR_TASK_TYPE_LABEL = "W"; } diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/devchange/domain/CsDeviceInfo.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/devchange/domain/CsDeviceInfo.java index bc5fbd9..8621d83 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/devchange/domain/CsDeviceInfo.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/devchange/domain/CsDeviceInfo.java @@ -80,6 +80,16 @@ public class CsDeviceInfo { @ApiModelProperty(value = "结束时间") private String endTime; + /** + * 审核状态 + */ + private String reviewStatus; + + /** + * 创建人 + */ + private String createUser; + private String changeStatus; private String changeUnit; diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/repair/controller/RepairController.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/repair/controller/RepairController.java index 74f6cdc..5e2b252 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/repair/controller/RepairController.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/repair/controller/RepairController.java @@ -2,6 +2,8 @@ package com.bonus.material.repair.controller; import com.bonus.common.core.web.controller.BaseController; import com.bonus.common.core.web.domain.AjaxResult; +import com.bonus.material.devchange.domain.CsDeviceInfo; +import com.bonus.material.devchange.domain.CsDeviceVo; import com.bonus.material.repair.domain.ToBeRepair; import com.bonus.material.repair.service.RepairService; import io.swagger.annotations.Api; @@ -37,4 +39,61 @@ public class RepairController extends BaseController { return AjaxResult.success(list); } + /** + * 新增维修申请 + * @param bean + * @return + */ + @ApiOperation(value = "新增维修申请") + @PostMapping("/addRepairData") + public AjaxResult addRepairData(@RequestBody ToBeRepair bean) { + return service.addRepairData(bean); + } + + /** + * 查询维修列表 + */ + @ApiOperation(value = "查询维修列表") + @GetMapping("/getRepairList") + public AjaxResult getRepairList(ToBeRepair bean) + { + startPage(); + List list = service.getRepairList(bean); + return AjaxResult.success(getDataTable(list)); + } + + /** + * 删除维修列表 + * @param bean + * @return + */ + @ApiOperation(value = "删除维修列表") + @PostMapping("/deleteRepairList") + public AjaxResult deleteRepairList(@RequestBody ToBeRepair bean) { + return service.deleteRepairList(bean); + } + + /** + * 维修详情列表 + */ + @ApiOperation(value = "维修详情列表") + @GetMapping("/getRepairDetailsList") + public AjaxResult getRepairDetailsList(ToBeRepair bean) + { + List list = service.getRepairDetailsList(bean); + return AjaxResult.success(list); + } + + + /** + * 审核 + * @param bean + * @return + */ + @ApiOperation(value = "审核") + @PostMapping("/auditData") + public AjaxResult auditData(@RequestBody ToBeRepair bean) { + return service.auditData(bean); + } + } diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/repair/domain/ToBeRepair.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/repair/domain/ToBeRepair.java index 47016af..5b07ec9 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/repair/domain/ToBeRepair.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/repair/domain/ToBeRepair.java @@ -1,8 +1,10 @@ package com.bonus.material.repair.domain; +import com.bonus.common.biz.domain.BmFileInfo; import lombok.Data; import java.math.BigDecimal; +import java.util.List; /** * @author hay @@ -12,6 +14,8 @@ public class ToBeRepair { private Long id; + private Long changeId; + /** * 用作key */ @@ -22,6 +26,16 @@ public class ToBeRepair { */ private String type; + /** + * 类型id + */ + private String typeId; + + /** + * 设备类型 1-装备,2-工具 + */ + private String devType; + /** * 类目 */ @@ -56,4 +70,67 @@ public class ToBeRepair { * 维修数量 */ private BigDecimal repairNum; + + private String repairUrl; + private String scrapUrl; + + private String url; + + /** + * 是否报废 + */ + private String isScrap; + + /** + * 创建人 + */ + private String createUser; + + /** + * 维修时间 + */ + private String repairTime; + + /** + * 退役原因 + */ + private String reasonVal; + private List bmFileInfos; + + private List toBeRepairList; + + /** + * 装备数 + */ + private BigDecimal equipmentNum; + + /** + * 工具数 + */ + private BigDecimal toolNum; + + /** + * 状态 + */ + private String status; + + /** + * 创建时间 + */ + private String createTime; + + /** + * 开始时间 + */ + private String startTime; + + /** + * 结束时间 + */ + private String endTime; + + /** + * 审核状态 + */ + private String auditStatus; } diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/repair/mapper/RepairMapper.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/repair/mapper/RepairMapper.java index 394b061..56b8ee3 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/repair/mapper/RepairMapper.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/repair/mapper/RepairMapper.java @@ -1,6 +1,8 @@ package com.bonus.material.repair.mapper; +import com.bonus.material.devchange.domain.CsDeviceInfo; import com.bonus.material.repair.domain.ToBeRepair; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -12,4 +14,69 @@ public interface RepairMapper { * @return */ List selectToBeRepairList(ToBeRepair bean); + + /** + * 获取申请编号 + * @param year + * @param month + * @param type + * @return + */ + int getMonthMaxOrderByDate(@Param("year") String year, @Param("month") String month, @Param("type") Integer type); + + /** + * 新增数据 + * @param deviceInfo + * @return + */ + int addDeviceChange(CsDeviceInfo deviceInfo); + + /** + * 新增设备详情 + * @param toBeRepair + * @return + */ + int addRepairData(ToBeRepair toBeRepair); + + /** + * 获取维修列表 + * @param bean + * @return + */ + List getRepairList(ToBeRepair bean); + + /** + * 删除设备变更信息 + * @param bean + * @return + */ + int deleteChangeInfo(ToBeRepair bean); + + /** + * 删除设备详情信息 + * @param bean + * @return + */ + int deleteChangeDetails(ToBeRepair bean); + + /** + * 获取设备详情列表 + * @param bean + * @return + */ + List getRepairDetailsList(ToBeRepair bean); + + /** + * 审核数据 + * @param toBeRepair + * @return + */ + int auditData(ToBeRepair toBeRepair); + + /** + * 获取详情列表 + * @param toBeRepair + * @return + */ + List getDetailsList(ToBeRepair toBeRepair); } diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/repair/service/RepairService.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/repair/service/RepairService.java index 1969e1b..12ed057 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/repair/service/RepairService.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/repair/service/RepairService.java @@ -1,5 +1,6 @@ package com.bonus.material.repair.service; +import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.material.repair.domain.ToBeRepair; import java.util.List; @@ -14,4 +15,39 @@ public interface RepairService { * @return */ List getToBeRepairList(ToBeRepair bean); + + /** + * 新增维修数据 + * @param bean + * @return + */ + AjaxResult addRepairData(ToBeRepair bean); + + /** + * 获取维修列表 + * @param bean + * @return + */ + List getRepairList(ToBeRepair bean); + + /** + * 删除维修数据 + * @param bean + * @return + */ + AjaxResult deleteRepairList(ToBeRepair bean); + + /** + * 获取维修详情列表 + * @param bean + * @return + */ + List getRepairDetailsList(ToBeRepair bean); + + /** + * 审核数据 + * @param bean + * @return + */ + AjaxResult auditData(ToBeRepair bean); } diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/repair/service/impl/RepairServiceImpl.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/repair/service/impl/RepairServiceImpl.java index 3c5afbd..030fe5d 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/repair/service/impl/RepairServiceImpl.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/repair/service/impl/RepairServiceImpl.java @@ -1,15 +1,27 @@ package com.bonus.material.repair.service.impl; +import com.bonus.common.core.utils.DateUtils; +import com.bonus.common.core.web.domain.AjaxResult; +import com.bonus.common.security.utils.SecurityUtils; +import com.bonus.material.common.constants.TypeConstants; +import com.bonus.material.common.enums.TypeEnums; +import com.bonus.material.devchange.domain.CsDeviceInfo; import com.bonus.material.repair.domain.ToBeRepair; import com.bonus.material.repair.mapper.RepairMapper; import com.bonus.material.repair.service.RepairService; +import org.hibernate.validator.internal.util.StringHelper; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.interceptor.TransactionAspectSupport; import javax.annotation.Resource; +import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Date; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** @@ -20,6 +32,7 @@ public class RepairServiceImpl implements RepairService { @Resource private RepairMapper mapper; + @Override public List getToBeRepairList(ToBeRepair bean) { try { @@ -29,4 +42,170 @@ public class RepairServiceImpl implements RepairService { return new ArrayList<>(); } } + + @Override + @Transactional(rollbackFor = Exception.class) + public AjaxResult addRepairData(ToBeRepair bean) { + try { + if (bean.getToBeRepairList().size() <= 0) { + return AjaxResult.error("请添加维修数据"); + } + String username = SecurityUtils.getLoginUser().getSysUser().getNickName(); + //先创建任务--台账变更表 + //1、创建维修单号 + int thisMonthMaxOrder = mapper.getMonthMaxOrderByDate(DateUtils.getCurrentYear(), DateUtils.getCurrentMonth(), TypeEnums.TM_TASK_REPAIR.getTaskTypeId()); + String code = genderTaskCode(thisMonthMaxOrder); + CsDeviceInfo deviceInfo = new CsDeviceInfo(); + deviceInfo.setType("4"); + deviceInfo.setCode(code); + deviceInfo.setReviewStatus("0"); + deviceInfo.setCreateUser(username); + // 添加任务 + int num = mapper.addDeviceChange(deviceInfo); + if (num < 1) { + throw new Exception("添加任务失败"); + } + Long changeId = deviceInfo.getId(); + for (ToBeRepair toBeRepair : bean.getToBeRepairList()) { + toBeRepair.setChangeId(changeId); + toBeRepair.setCreateUser(username); + if (!StringHelper.isNullOrEmptyString(toBeRepair.getIsScrap())) { + if (toBeRepair.getBmFileInfos()!=null && toBeRepair.getBmFileInfos().size() > 0) { + if ("0".equals(toBeRepair.getIsScrap())) { + toBeRepair.setRepairUrl(toBeRepair.getBmFileInfos().get(0).getFileUrl()); + } else { + toBeRepair.setScrapUrl(toBeRepair.getBmFileInfos().get(0).getFileUrl()); + } + } + } else { + throw new Exception("缺少合格状态数据"); + } + int res = mapper.addRepairData(toBeRepair); + if (res <= 0) { + throw new Exception("添加设备详情失败"); + } + } + return AjaxResult.success("申请成功"); + + } catch (Exception e) { + e.printStackTrace(); + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + return AjaxResult.error("申请失败"); + } + } + + @Override + public List getRepairList(ToBeRepair bean) { + try { + List list = mapper.getRepairList(bean); + for (ToBeRepair toBeRepair : list) { + List detailsList = mapper.getDetailsList(toBeRepair); + if (detailsList != null && !detailsList.isEmpty()) { + // 存在审核中 + boolean hasZero = false; + // 是否全部驳回 + boolean allTwo = true; + for (ToBeRepair detail : detailsList) { + String audit = detail.getAuditStatus(); + if ("0".equals(audit)) { + hasZero = true; + } + if (!"2".equals(audit)) { + allTwo = false; + } + } + // 规则判断 + if (hasZero) { + toBeRepair.setStatus("审核中"); + } else if (allTwo) { + toBeRepair.setStatus("已驳回"); + } else { + toBeRepair.setStatus("已审核"); + } + } + } + + String statusFilter = bean.getStatus(); + if (statusFilter != null && !"".equals(statusFilter)) { + list = list.stream() + .filter(item -> statusFilter.equals(item.getStatus())) + .collect(Collectors.toList()); + } + + return list; + } catch (Exception e) { + e.printStackTrace(); + return new ArrayList<>(); + } + } + + + @Override + @Transactional(rollbackFor = Exception.class) + public AjaxResult deleteRepairList(ToBeRepair bean) { + try { + //删除主任务 + int num = mapper.deleteChangeInfo(bean); + if (num < 1) { + throw new Exception("删除主任务失败"); + } + //删除设备详情 + num = mapper.deleteChangeDetails(bean); + if (num < 1) { + throw new Exception("删除设备详情失败"); + } + return AjaxResult.success("删除成功"); + } catch (Exception e) { + e.printStackTrace(); + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + return AjaxResult.error("删除失败"); + } + } + + @Override + public List getRepairDetailsList(ToBeRepair bean) { + try { + return mapper.getRepairDetailsList(bean); + } catch (Exception e) { + e.printStackTrace(); + return new ArrayList<>(); + } + } + + @Override + @Transactional(rollbackFor = Exception.class) + public AjaxResult auditData(ToBeRepair bean) { + try { + if (bean.getToBeRepairList().size() <= 0) { + return AjaxResult.error("请选择审核数据"); + } + String username = SecurityUtils.getLoginUser().getSysUser().getNickName(); + for (ToBeRepair toBeRepair : bean.getToBeRepairList()) { + toBeRepair.setCreateUser(username); + int res = mapper.auditData(toBeRepair); + if (res <= 0) { + throw new Exception("审核数据失败"); + } + } + return AjaxResult.success("审核成功"); + + } catch (Exception e) { + e.printStackTrace(); + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + return AjaxResult.error("审核失败"); + } + } + + /** + * 生成任务编号 + * @param thisMonthMaxOrder + * @return + */ + private String genderTaskCode(int thisMonthMaxOrder) { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + Date nowDate = DateUtils.getNowDate(); + String format = dateFormat.format(nowDate); + String result = format.replace("-", ""); + return TypeConstants.REPAIR_TASK_TYPE_LABEL + result + String.format("-%04d", thisMonthMaxOrder + 1); + } } diff --git a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/repair/RepairMapper.xml b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/repair/RepairMapper.xml index 1398961..d50c3b7 100644 --- a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/repair/RepairMapper.xml +++ b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/repair/RepairMapper.xml @@ -1,17 +1,71 @@ + + insert into cs_device_change(type, code, review_status, create_user, create_time, del_flag) + values (#{type}, #{code}, #{reviewStatus}, #{createUser}, NOW(), '0') + + + insert into cs_device_change_details( + change_id, + dev_code, + dev_type_id, + dev_type, + num, + real_num, + repairman, + repair_time, + repair_url, + reason_val, + reason_url, + is_scrap, + create_user, + review_status, + create_time + ) + values ( + #{changeId}, + #{code}, + #{typeId}, + #{devType}, + #{repairNum}, + #{repairNum}, + #{createUser}, + #{repairTime}, + #{repairUrl}, + #{reasonVal}, + #{scrapUrl}, + #{isScrap}, + #{createUser}, + '0', + NOW() + ) + + + update cs_device_change set del_flag = '1' where id = #{id} + + + update cs_device_change_details set del_flag = '1' where change_id = #{id} + + + update cs_device_change_details + set review_status = #{auditStatus}, + review_by = #{createUser}, + review_time=NOW() + where id = #{id} + + + + + \ No newline at end of file