diff --git a/bonus-common-biz/src/main/java/com/bonus/common/biz/enums/FieldTaskStatusEnum.java b/bonus-common-biz/src/main/java/com/bonus/common/biz/enums/FieldTaskStatusEnum.java new file mode 100644 index 00000000..9a350e76 --- /dev/null +++ b/bonus-common-biz/src/main/java/com/bonus/common/biz/enums/FieldTaskStatusEnum.java @@ -0,0 +1,24 @@ +package com.bonus.common.biz.enums; + +import lombok.Getter; + +/** + * @author : mashuai + * @version : 1.0 + * 退料任务状态枚举 + */ +@Getter +public enum FieldTaskStatusEnum { + + FIELD_TASK_NO_FINISHED(0, "维修未完成"), + FIELD_TASK_TO_REJECT(1, "维修删除"), + FIELD_TASK_IN_FINISHED(2, "维修已完成"); + + private final Integer status; + private final String statusName; + + FieldTaskStatusEnum(Integer status, String statusName) { + this.status = status; + this.statusName = statusName; + } +} diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/fieldMaintenance/controller/FieldMaintenanceController.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/fieldMaintenance/controller/FieldMaintenanceController.java new file mode 100644 index 00000000..0f85ef41 --- /dev/null +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/fieldMaintenance/controller/FieldMaintenanceController.java @@ -0,0 +1,109 @@ +package com.bonus.material.fieldMaintenance.controller; + +import cn.hutool.core.convert.Convert; +import com.bonus.common.biz.config.ListPagingUtil; +import com.bonus.common.core.utils.ServletUtils; +import com.bonus.common.core.web.controller.BaseController; +import com.bonus.common.core.web.domain.AjaxResult; +import com.bonus.common.log.annotation.SysLog; +import com.bonus.common.log.enums.OperaType; +import com.bonus.material.common.annotation.PreventRepeatSubmit; +import com.bonus.material.fieldMaintenance.domain.FieldApplyDetails; +import com.bonus.material.fieldMaintenance.domain.FieldApplyInfo; +import com.bonus.material.fieldMaintenance.service.FieldMaintenanceService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +@Api(tags = "现场维修接口") +@RestController +@RequestMapping("/field_apply_info") +public class FieldMaintenanceController extends BaseController { + @Resource + private FieldMaintenanceService fieldMaintenanceService; + + /** + * 查询现场维修列表 + */ + @ApiOperation(value = "查询现场维修列表") + @GetMapping("/list") + public AjaxResult list(FieldApplyInfo fieldApplyInfo) { + Integer pageIndex = Convert.toInt(ServletUtils.getParameter("pageNum"), 1); + Integer pageSize = Convert.toInt(ServletUtils.getParameter("pageSize"), 10); + List list = fieldMaintenanceService.selectFieldApplyInfoList(fieldApplyInfo); + return AjaxResult.success(ListPagingUtil.paging(pageIndex, pageSize, list)); + } + + + /** + * 查询现场维修列表 + */ + @ApiOperation(value = "查询现场维修列表") + @GetMapping("/listDetails") + public AjaxResult listDetails(FieldApplyDetails fieldApplyDetails) { + Integer pageIndex = Convert.toInt(ServletUtils.getParameter("pageNum"), 1); + Integer pageSize = Convert.toInt(ServletUtils.getParameter("pageSize"), 10); + List list = fieldMaintenanceService.selectFieldApplyDetailsList(fieldApplyDetails); + return AjaxResult.success(ListPagingUtil.paging(pageIndex, pageSize, list)); + } + + + /** + * 新增维修任务app + * + * @param fieldApplyInfo + * @return + */ + @ApiOperation(value = "新增任务app") + @PreventRepeatSubmit + @SysLog(title = "现场维修任务", businessType = OperaType.INSERT, logType = 1, module = "仓储管理->新增现场维修任务app") + @PostMapping("/insert") + public AjaxResult insertApp(@RequestBody FieldApplyInfo fieldApplyInfo) { + try { + return fieldMaintenanceService.insert(fieldApplyInfo); + } catch (Exception e) { + return error(); + } + } + + + @ApiOperation(value = "获取任务详情") + @PreventRepeatSubmit + @SysLog(title = "现场维修任务", businessType = OperaType.INSERT, logType = 1, module = "仓储管理->获取任务详情") + @PostMapping("/selectFieldApplyInfoById") + public AjaxResult selectFieldApplyInfoById(@RequestBody FieldApplyInfo fieldApplyInfo) { + try { + return fieldMaintenanceService.selectFieldApplyInfoById(fieldApplyInfo.getId()); + } catch (Exception e) { + return error(); + } + } + + + @ApiOperation(value = "删除任务") + @PreventRepeatSubmit + @SysLog(title = "现场维修任务", businessType = OperaType.INSERT, logType = 1, module = "仓储管理->删除任务") + @PostMapping("/deleteFieldApplyInfoById") + public AjaxResult deleteFieldApplyInfoById(@RequestBody FieldApplyInfo fieldApplyInfo) { + try { + return fieldMaintenanceService.deleteFieldApplyInfoById(fieldApplyInfo.getId(), fieldApplyInfo.getTaskId()); + } catch (Exception e) { + return error(); + } + } + + @ApiOperation(value = "提交任务") + @PreventRepeatSubmit + @SysLog(title = "现场维修任务", businessType = OperaType.INSERT, logType = 1, module = "仓储管理->删除任务") + @PostMapping("/submitTask") + public AjaxResult submitTask(@RequestBody FieldApplyInfo fieldApplyInfo) { + try { + return fieldMaintenanceService.submitTask(fieldApplyInfo.getTaskId()); + } catch (Exception e) { + return error(); + } + } +} diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/fieldMaintenance/domain/FieldApplyDetails.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/fieldMaintenance/domain/FieldApplyDetails.java new file mode 100644 index 00000000..238be2d0 --- /dev/null +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/fieldMaintenance/domain/FieldApplyDetails.java @@ -0,0 +1,97 @@ +package com.bonus.material.fieldMaintenance.domain; + +import com.bonus.common.biz.domain.BmFileInfo; +import com.bonus.common.core.annotation.Excel; +import com.bonus.material.back.domain.MaCodeDto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; +import java.util.List; + +@Accessors(chain = true) +@Data +@ToString +public class FieldApplyDetails { + private static final long serialVersionUID = 1L; + + /** ID */ + private Long id; + + /** 退料单号 */ + @Excel(name = "退料单号") + @ApiModelProperty(value = "退料单号") + private String code; + + @ApiModelProperty(value = "机具id") + private Long maId; + + @ApiModelProperty(value = "机具id") + private Long taskId; + + /** 任务ID */ + @Excel(name = "任务ID") + @ApiModelProperty(value = "任务ID") + private Long parentId; + + @ApiModelProperty(value = "物资类型") + private String materialType; + + /** 规格ID */ + @Excel(name = "规格ID") + @ApiModelProperty(value = "规格ID") + private Long typeId; + + @ApiModelProperty(value = "类型名称") + private String typeName; + + @ApiModelProperty(value = "规格型号") + private String typeModel; + + @ApiModelProperty(value = "单位名称") + private String unitName; + + @ApiModelProperty(value = "单位名称数值") + private String unitValue; + + @ApiModelProperty(value = "管理方式(0编号 1计数)") + private String manageType; + + /** + * 机具编码 + */ + @ApiModelProperty(value = "机具编码") + private String maCode; + + private String materialName; + + private String maStatus; + + /** + * 机具编码集合(可能存在多个,数据库存储用逗号分割) + */ + private List maCodeList; + + /** 退料数量 */ + @ApiModelProperty(value = "维修数量") + private BigDecimal preNum; + + /** 审批数量 */ + @ApiModelProperty(value = "审批数量") + private BigDecimal auditNum; + + + /** 在用数量 */ + @ApiModelProperty(value = "在用数量") + private BigDecimal num; + + @ApiModelProperty(value = "退料状态") + private String backStatus; + + @ApiModelProperty(value = "是否完成 (0:未完成退料,可以撤回 1:已完成退料,不能撤回)") + private Integer isFinished; + + private String keyWord; +} diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/fieldMaintenance/domain/FieldApplyInfo.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/fieldMaintenance/domain/FieldApplyInfo.java new file mode 100644 index 00000000..68a36cfe --- /dev/null +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/fieldMaintenance/domain/FieldApplyInfo.java @@ -0,0 +1,120 @@ +package com.bonus.material.fieldMaintenance.domain; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; + +@Accessors(chain = true) +@Data +@ToString +public class FieldApplyInfo implements Serializable { + /** + * ID + */ + private Integer id; + + /** + * 任务ID + */ + private Long taskId; + /** + * 协议id + */ + private Long agreementId; + + /** + * 任务编号 + */ + private String code; + + /** + * 现场维修人 + */ + private String fieldPerson; + + /** + * 联系方式 + */ + private String phone; + + /** + * 项目ID + */ + private Integer proId; + + /** + * 项目名称 + */ + private String proName; + + /** + * 单位ID + */ + private Integer unitId; + + /** + * 单位名称 + */ + private String unitName; + + /** + * 任务状态 + */ + private String taskStatus; + + + /** + * 创建人 + */ + private String createBy; + + /** + * 创建时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + /** + * 更新人 + */ + private String updateBy; + /** + * 更新时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + /** + * 类型ID列表(逗号分隔) + */ + private String typeIds; + + /** + * 类型名称列表(逗号分隔) + */ + private String typeNames; + /** + * 关键字 + */ + private String keyWord; + /** + * 开始时间 + */ + private String startTime; + /** + * 结束时间 + */ + private String endTime; + /** + * 是否删除 + */ + private Integer isValid; + /** + * 维修数量 + */ + private Integer num; +} diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/fieldMaintenance/mapper/FieldMaintenanceMapper.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/fieldMaintenance/mapper/FieldMaintenanceMapper.java new file mode 100644 index 00000000..61bfee34 --- /dev/null +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/fieldMaintenance/mapper/FieldMaintenanceMapper.java @@ -0,0 +1,45 @@ +package com.bonus.material.fieldMaintenance.mapper; + +import com.bonus.material.fieldMaintenance.domain.FieldApplyDetails; +import com.bonus.material.fieldMaintenance.domain.FieldApplyInfo; + +import java.util.List; + +public interface FieldMaintenanceMapper { + /** + * 查询现场维修任务列表 + * + * @param fieldApplyInfo 现场维修任务 + * @return 现场维修任务集合 + */ + List selectFieldApplyInfoList(FieldApplyInfo fieldApplyInfo); + + + List selectFieldApplyDetailsList(FieldApplyDetails fieldApplyInfo); + + /** + * 通过id获取 + * + * @param id id + * @return 信息 + */ + FieldApplyInfo selectFieldApplyInfoById(Integer id); + + /** + * 新增维修任务 + * + * @param fieldApplyInfo 信息 + * @return 是否成功 + */ + int insert(FieldApplyInfo fieldApplyInfo); + + /** + * 删除任务 + * + * @param id id + * @return 条数 + */ + int deleteFieldApplyInfoById(Integer id); + + +} diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/fieldMaintenance/service/FieldMaintenanceService.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/fieldMaintenance/service/FieldMaintenanceService.java new file mode 100644 index 00000000..817d7e89 --- /dev/null +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/fieldMaintenance/service/FieldMaintenanceService.java @@ -0,0 +1,52 @@ +package com.bonus.material.fieldMaintenance.service; + +import com.bonus.common.core.web.domain.AjaxResult; +import com.bonus.material.back.domain.BackApplyInfo; +import com.bonus.material.fieldMaintenance.domain.FieldApplyDetails; +import com.bonus.material.fieldMaintenance.domain.FieldApplyInfo; + +import java.util.List; + +public interface FieldMaintenanceService { + + /** + * 查询现场维修任务列表 + * + * @param fieldApplyInfo 现场维修任务 + * @return 现场维修任务集合 + */ + List selectFieldApplyInfoList(FieldApplyInfo fieldApplyInfo); + + List selectFieldApplyDetailsList(FieldApplyDetails fieldApplyInfo); + /** + * 通过id获取 + * + * @param id id + * @return 信息 + */ + AjaxResult selectFieldApplyInfoById(Integer id); + + /** + * 新增维修任务 + * + * @param fieldApplyInfo 信息 + * @return 是否成功 + */ + AjaxResult insert(FieldApplyInfo fieldApplyInfo); + + /** + * 删除任务 + * + * @param id id + * @return 条数 + */ + AjaxResult deleteFieldApplyInfoById(Integer id, Long taskId); + + /** + * 提交任务 + * + * @param taskId 任务id + * @return 条数 + */ + AjaxResult submitTask(Long taskId); +} diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/fieldMaintenance/service/impl/FieldMaintenanceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/fieldMaintenance/service/impl/FieldMaintenanceImpl.java new file mode 100644 index 00000000..fa8aab18 --- /dev/null +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/fieldMaintenance/service/impl/FieldMaintenanceImpl.java @@ -0,0 +1,182 @@ +package com.bonus.material.fieldMaintenance.service.impl; + +import com.alibaba.nacos.common.utils.CollectionUtils; +import com.bonus.common.biz.constant.MaterialConstants; +import com.bonus.common.biz.enums.FieldTaskStatusEnum; +import com.bonus.common.biz.enums.TmTaskTypeEnum; +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.fieldMaintenance.domain.FieldApplyDetails; +import com.bonus.material.fieldMaintenance.domain.FieldApplyInfo; +import com.bonus.material.fieldMaintenance.mapper.FieldMaintenanceMapper; +import com.bonus.material.fieldMaintenance.service.FieldMaintenanceService; +import com.bonus.material.task.domain.TmTask; +import com.bonus.material.task.domain.TmTaskAgreement; +import com.bonus.material.task.mapper.TmTaskAgreementMapper; +import com.bonus.material.task.mapper.TmTaskMapper; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.Collections; +import java.util.Date; +import java.util.List; + +@Service +@Slf4j +public class FieldMaintenanceImpl implements FieldMaintenanceService { + + @Resource + private FieldMaintenanceMapper fieldMaintenanceMapper; + + @Resource + private TmTaskMapper taskMapper; + + @Resource + private TmTaskAgreementMapper taskAgreementMapper; + + /** + * 查询现场维修任务列表 + * + * @param fieldApplyInfo 现场维修任务 + * @return 现场维修任务集合 + */ + @Override + public List selectFieldApplyInfoList(FieldApplyInfo fieldApplyInfo) { + try { + List list = fieldMaintenanceMapper.selectFieldApplyInfoList(fieldApplyInfo); + // 如果列表为空,直接返回空列表 + if (CollectionUtils.isEmpty(list)) { + return Collections.emptyList(); + } + return list; + } catch (Exception e) { + log.error(e.getMessage()); + return Collections.emptyList(); + } + } + + /** + * @param fieldApplyDetails + * @return + */ + @Override + public List selectFieldApplyDetailsList(FieldApplyDetails fieldApplyDetails) { + try { + List list = fieldMaintenanceMapper.selectFieldApplyDetailsList(fieldApplyDetails); + // 如果列表为空,直接返回空列表 + if (CollectionUtils.isEmpty(list)) { + return Collections.emptyList(); + } + return list; + } catch (Exception e) { + log.error(e.getMessage()); + return Collections.emptyList(); + } + } + + /** + * 通过id获取 + * + * @param id id + * @return 信息 + */ + @Override + public AjaxResult selectFieldApplyInfoById(Integer id) { + try { + return AjaxResult.success(fieldMaintenanceMapper.selectFieldApplyInfoById(id)); + } catch (Exception e) { + log.error(e.getMessage()); + return AjaxResult.error(); + } + } + + /** + * 新增维修任务 + * + * @param fieldApplyInfo 信息 + * @return 是否成功 + */ + @Override + public AjaxResult insert(FieldApplyInfo fieldApplyInfo) { + try { + int thisMonthMaxOrder = taskMapper.getMonthMaxOrderByDate(DateUtils.getCurrentYear(), DateUtils.getCurrentMonth(), TmTaskTypeEnum.TM_TASK_FIELD.getTaskTypeId()); + String code = genderTaskCode(thisMonthMaxOrder); + TmTask tmTask = new TmTask(null, TmTaskTypeEnum.TM_TASK_FIELD.getTaskTypeId(), + FieldTaskStatusEnum.FIELD_TASK_NO_FINISHED.getStatus(), + null, thisMonthMaxOrder + 1, code); + tmTask.setCreateTime(DateUtils.getNowDate()); + tmTask.setCreateBy(SecurityUtils.getUsername()); + fieldApplyInfo.setCode(code); + fieldApplyInfo.setCreateBy(SecurityUtils.getUsername()); + fieldApplyInfo.setCreateTime(DateUtils.getNowDate()); + int i = taskMapper.insertTmTask(tmTask); + if (i > 0) { + TmTaskAgreement tmTaskAgreement = new TmTaskAgreement(tmTask.getTaskId(), fieldApplyInfo.getAgreementId()); + tmTaskAgreement.setCreateTime(DateUtils.getNowDate()); + tmTaskAgreement.setCreateBy(SecurityUtils.getUsername()); + taskAgreementMapper.insertTmTaskAgreement(tmTaskAgreement); + fieldApplyInfo.setTaskId(tmTask.getTaskId()); + fieldApplyInfo.setAgreementId(tmTaskAgreement.getAgreementId()); + int insert = fieldMaintenanceMapper.insert(fieldApplyInfo); + return insert > 0 ? AjaxResult.success() : AjaxResult.error("保存失败,请重试!"); + } + } catch (Exception e) { + log.error(e.getMessage()); + return AjaxResult.error("保存失败,请重试!"); + } + return AjaxResult.error("保存失败,请重试!"); + } + + /** + * 删除任务 + * + * @param id id + * @return 条数 + */ + @Override + public AjaxResult deleteFieldApplyInfoById(Integer id, Long taskId) { + try { + taskMapper.deleteTmTaskByTaskId(taskId); + int i = fieldMaintenanceMapper.deleteFieldApplyInfoById(id); + return i > 0 ? AjaxResult.success() : AjaxResult.error(); + } catch (Exception e) { + log.error(e.getMessage()); + return AjaxResult.error(); + } + } + + /** + * 提交任务 + * + * @param taskId 任务id + * @return 条数 + */ + @Override + public AjaxResult submitTask(Long taskId) { + try { + int i = taskMapper.updateTaskStatus(taskId.toString(), FieldTaskStatusEnum.FIELD_TASK_IN_FINISHED.getStatus()); + return i > 0 ? AjaxResult.success() : AjaxResult.error(); + } catch (Exception e) { + log.error(e.getMessage()); + } + return null; + } + + + /** + * 生成现场维修任务单号 + * + * @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 MaterialConstants.FIELD_TASK_TYPE_LABEL + result + String.format("-%03d", thisMonthMaxOrder + 1); + } +} diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/material/Field/FieldMaintenanceMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/material/Field/FieldMaintenanceMapper.xml new file mode 100644 index 00000000..431c9df2 --- /dev/null +++ b/bonus-modules/bonus-material/src/main/resources/mapper/material/Field/FieldMaintenanceMapper.xml @@ -0,0 +1,169 @@ + + + + + INSERT INTO field_apply_info + + task_id, + agreement_id, + field_person, + phone, + create_by, + create_time, + update_by, + update_time, + + + #{taskId}, + #{agreementId}, + #{fieldPerson}, + #{phone}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + + + + + UPDATE field_apply_info + SET is_valid = 0, + update_time = NOW() + WHERE id = #{id} + + + + + + + + + \ No newline at end of file