浏览代码

设备维修记录列表查询

jiangbiao 3 年之前
父节点
当前提交
fe4c842e17

+ 66 - 8
master/src/main/java/com/ruoyi/project/intact/controller/TApproveMaintenanceController.java

@@ -4,12 +4,17 @@ import java.text.SimpleDateFormat;
 import java.util.*;
 
 import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.project.approve.damain.DevTask;
 import com.ruoyi.project.intact.domain.TIntactGyl;
 import com.ruoyi.project.intact.domain.TIntactYsj;
+import com.ruoyi.project.intact.mapper.TApproveMaintenanceMapper;
 import com.ruoyi.project.intact.service.*;
 import com.ruoyi.project.sems.domain.*;
 import com.ruoyi.project.sems.his.domain.*;
+import com.ruoyi.project.system.domain.SysUser;
+import com.ruoyi.project.system.service.ISysUserService;
 import org.activiti.engine.*;
 import org.activiti.engine.impl.identity.Authentication;
 import org.activiti.engine.runtime.ProcessInstance;
@@ -17,14 +22,7 @@ import org.activiti.engine.task.Task;
 import org.apache.poi.ss.formula.functions.T;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 import com.ruoyi.framework.aspectj.lang.annotation.Log;
 import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
 import com.ruoyi.project.intact.domain.TApproveMaintenance;
@@ -45,6 +43,8 @@ public class TApproveMaintenanceController extends BaseController
 {
     @Autowired
     private ITApproveMaintenanceService tApproveMaintenanceService;
+    @Autowired
+    private TApproveMaintenanceMapper maintenanceMapper;
 
     @Autowired
     private RuntimeService runtimeService;
@@ -61,6 +61,24 @@ public class TApproveMaintenanceController extends BaseController
     private ITIntactGjService gjService;
     @Autowired
     private ITIntactPumpService pumpService;
+    @Autowired
+    private ISysUserService sysUserService;
+
+    @RequestMapping("/hisApprovelist")
+    public AjaxResult hisApprovelist(@RequestParam Map<String, Object> params) {
+        String sql = params.get("devId") + " in (SELECT REGEXP_SUBSTR (DEV_ID, '[^,]+', 1,rownum) from dual connect by rownum<=LENGTH (DEV_ID) - LENGTH (regexp_replace(DEV_ID, ',', ''))+1 ) ";
+        if (StringUtils.isNotEmpty((String) params.get("devType"))){
+            sql+=" and dev_type="+params.get("devType")+" ";
+        }
+        List<TApproveMaintenance> list = maintenanceMapper.selectList(new QueryWrapper<TApproveMaintenance>().apply(sql).orderByDesc("CREATTIME")
+        );
+        for (TApproveMaintenance t : list
+        ) {
+            SysUser userEntity = sysUserService.selectUserById(t.getUserId());
+            t.setUserName(userEntity.getNickName());
+        }
+        return AjaxResult.success(list);
+    }
 
     /**
      * 查询设备完整性维修申请列表
@@ -71,6 +89,44 @@ public class TApproveMaintenanceController extends BaseController
     {
         startPage();
         List<TApproveMaintenance> list = tApproveMaintenanceService.selectTApproveMaintenanceList(tApproveMaintenance);
+        for (TApproveMaintenance tApprove : list) {
+            String[] ids;
+            ids = tApprove.getDevId().split(",");
+            List<Object> devList = new ArrayList<>();
+            switch (Integer.parseInt(tApprove.getDevType().toString())) {
+                case 1:
+                    for (String i : ids
+                    ) {
+                        TIntactGyl gylEntity = gylService.getById(i);
+                        devList.add(gylEntity);
+                    }
+                    break;
+                case 2:
+                    for (String i : ids
+                    ) {
+                        TIntactYsj ysjEntity = ysjService.getById(i);
+                        devList.add(ysjEntity);
+                    }
+                    break;
+//            case 3:
+//                for (String i : ids
+//                ) {
+//                    TSpecdevDzsb dzsbEntity = tSpecdevDzsbService.getById(i);
+//                    devList.add(dzsbEntity);
+//                }
+//                break;
+//            case 4:
+//                for (String i : ids
+//                ) {
+//                    TSpecdevGl glEntity = tSpecdevGlService.getById(i);
+//                    devList.add(glEntity);
+//                }
+//                break;
+                default:
+                    break;
+            }
+            tApprove.setDevList(devList);
+        }
         return getDataTable(list);
     }
 
@@ -237,9 +293,11 @@ public class TApproveMaintenanceController extends BaseController
         if (devTask.getCondition().equals("1")) {
             devTask.setComment("通过" + symbol + devTask.getComment());
             tApproveMaintenance.setStatus(1L);
+            tApproveMaintenance.setEndtime(new Date());
         }else if (devTask.getCondition().equals("0")) {
             devTask.setComment("未通过" + symbol + devTask.getComment());
             tApproveMaintenance.setStatus(2L);
+            tApproveMaintenance.setEndtime(new Date());
         }
         String[] ids;
         ids = tApproveMaintenance.getDevId().split(",");

+ 12 - 0
master/src/main/java/com/ruoyi/project/intact/domain/TApproveMaintenance.java

@@ -84,11 +84,23 @@ public class TApproveMaintenance extends BaseEntity
     @Excel(name = "部门id")
     private Long deptId;
 
+    @TableField(exist = false)
     private Long wxjl;
 
+    @TableField(exist = false)
+    private String  userName;
+
     @TableField(exist = false)
     private List<Object> devList;
 
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
     public List<Object> getDevList() {
         return devList;
     }

+ 4 - 1
master/src/main/java/com/ruoyi/project/intact/mapper/TApproveMaintenanceMapper.java

@@ -1,8 +1,11 @@
 package com.ruoyi.project.intact.mapper;
 
 import java.util.List;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ruoyi.framework.aspectj.lang.annotation.DataScope;
 import com.ruoyi.project.intact.domain.TApproveMaintenance;
+import com.ruoyi.project.sems.domain.TApprove;
 
 /**
  * 设备完整性维修申请Mapper接口
@@ -10,7 +13,7 @@ import com.ruoyi.project.intact.domain.TApproveMaintenance;
  * @author ruoyi
  * @date 2022-06-27
  */
-public interface TApproveMaintenanceMapper 
+public interface TApproveMaintenanceMapper extends BaseMapper<TApproveMaintenance>
 {
     /**
      * 查询设备完整性维修申请

+ 61 - 0
ui/src/api/intact/maintenance.js

@@ -0,0 +1,61 @@
+import request from '@/utils/request'
+
+// 查询设备完整性维修申请列表
+export function listMaintenance(query) {
+  return request({
+    url: '/intact/maintenance/list',
+    method: 'get',
+    params: query
+  })
+}
+
+export function hisApprovelist(query) {
+  return request({
+    url: '/intact/maintenance/hisApprovelist',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询设备完整性维修申请详细
+export function getMaintenance(id) {
+  return request({
+    url: '/intact/maintenance/' + id,
+    method: 'get'
+  })
+}
+
+// 新增设备完整性维修申请
+export function addMaintenance(data) {
+  return request({
+    url: '/intact/maintenance',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改设备完整性维修申请
+export function updateMaintenance(data) {
+  return request({
+    url: '/intact/maintenance',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除设备完整性维修申请
+export function delMaintenance(id) {
+  return request({
+    url: '/intact/maintenance/' + id,
+    method: 'delete'
+  })
+}
+
+// 导出设备完整性维修申请
+export function exportMaintenance(query) {
+  return request({
+    url: '/intact/maintenance/export',
+    method: 'get',
+    params: query
+  })
+}

+ 18 - 13
ui/src/views/approve/approveDetail/specMaintenance-detail.vue

@@ -2,7 +2,8 @@
   <el-dialog
     :title="!this.taskForm.taskId == '' ? $t('处理') : $t('详情')"
     :close-on-click-modal="false"
-    :visible.sync="visible">
+    :visible.sync="visible"
+    :append-to-body="true">
     <el-form :model="taskForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="" label-width="80px">
       <el-form-item :label="$t('设备')">
         <el-table
@@ -398,8 +399,11 @@
         <el-col :span="8">
           <el-form-item :label="$t('申请类型')" prop="approveType">
             <el-select v-model="dataForm.approveType" :placeholder="$t('message.select')" disabled>
-              <el-option>
-                维修
+              <el-option
+                v-for="dict in approveOption"
+                :key="dict.dictValue"
+                :label="dict.dictLabel"
+                :value="parseInt(dict.dictValue)">
               </el-option>
             </el-select>
           </el-form-item>
@@ -418,16 +422,16 @@
       <el-button v-if="!this.taskForm.taskId == ''" type="primary" @click="dataFormSubmit(1)" :disabled="submitDisabled">{{$t('通过')}}</el-button>
       <el-button v-if="!this.taskForm.taskId == ''" type="danger" @click="dataFormSubmit(0)" :disabled="submitDisabled">{{$t('拒绝')}}</el-button>
     </span>
-<!--    <div>-->
-<!--      <span>{{$t('流转详情')}}</span>-->
-<!--      <el-table :data="historyList" border v-loading="historyLoading" style="width: 100%;">-->
-<!--        <el-table-column prop="taskName" header-align="center" align="center" :label="$t('流程进度')"></el-table-column>-->
-<!--        <el-table-column prop="userName" header-align="center" align="center" :label="$t('姓名')"></el-table-column>-->
-<!--        <el-table-column prop="taskCreateTime" header-align="center" align="center" :label="$t('开始时间')"></el-table-column>-->
-<!--        <el-table-column prop="taskEndTime" header-align="center" align="center" :label="$t('结束时间')"></el-table-column>-->
-<!--        <el-table-column prop="comment" header-align="center" align="center" :label="$t('审批意见')"></el-table-column>-->
-<!--      </el-table>-->
-<!--    </div>-->
+    <div>
+      <span>{{$t('流转详情')}}</span>
+      <el-table :data="historyList" border v-loading="historyLoading" style="width: 100%;">
+        <el-table-column prop="taskName" header-align="center" align="center" :label="$t('流程进度')"></el-table-column>
+        <el-table-column prop="userName" header-align="center" align="center" :label="$t('姓名')"></el-table-column>
+        <el-table-column prop="taskCreateTime" header-align="center" align="center" :label="$t('开始时间')"></el-table-column>
+        <el-table-column prop="taskEndTime" header-align="center" align="center" :label="$t('结束时间')"></el-table-column>
+        <el-table-column prop="comment" header-align="center" align="center" :label="$t('审批意见')"></el-table-column>
+      </el-table>
+    </div>
     <record v-if="recordVisible" ref="recordDeal"></record>
   </el-dialog>
 </template>
@@ -555,6 +559,7 @@
       this.visible = true
       this.queryParams.processId = processId;
       getHistorylist(this.queryParams).then(response => {
+        console.log(response.rows)
         this.historyList = response.rows;
         this.historyLoading = false
       });

+ 347 - 0
ui/src/views/intact/approve/tapprove-maintenance-his.vue

@@ -0,0 +1,347 @@
+<template>
+  <el-dialog :title="$t('申请记录')" :visible.sync="visible" width="1200px" append-to-body>
+    <el-table v-loading="loading" :data="approveList" @selection-change="handleSelectionChange" :height="clientHeight" border>
+      <el-table-column :label="$t('申请人')" align="center" prop="userName" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('设备类型')+':'" align="center" prop="devType" :formatter="devTypeFormat" />
+      <el-table-column :label="$t('审批类型')" align="center" prop="approveType"  :formatter="approveTypeFormat"/>
+      <el-table-column :label="$t('内容')" align="center" prop="content" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('申请状态')" align="center" prop="status"  :formatter="statusFormat"/>
+      <el-table-column :label="$t('开始时间')" align="center" prop="creattime" width="100">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.creattime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column :label="$t('结束时间')" align="center" prop="endtime" width="100">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.endtime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column :label="$t('操作')" align="center"  width="120" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            @click="detailHandle(scope.row)"
+          >{{ $t('查看') }}</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+<!--    <pagination-->
+<!--      v-show="total>0"-->
+<!--      :total="total"-->
+<!--      :page.sync="queryParams.pageNum"-->
+<!--      :limit.sync="queryParams.pageSize"-->
+<!--      @pagination="getList"-->
+<!--    />-->
+
+    <spec-maintenance v-if="specMaintenanceVisible" ref="specMaintenance" @refreshDataList="getList"></spec-maintenance>
+  </el-dialog>
+</template>
+
+<script>
+import { listMaintenance,hisApprovelist} from "@/api/intact/maintenance";
+import { treeselect } from "@/api/system/dept";
+import { getToken } from "@/utils/auth";
+import Treeselect from "@riophae/vue-treeselect";
+import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+import AddOrUpdate from '../../approve/approveDetail/spec-detail';
+import Editor from '@/components/Editor';
+import SpecMaintenance from "@/views/approve/approveDetail/specMaintenance-detail";
+
+export default {
+  name: "Approve",
+  components: { Treeselect,SpecMaintenance },
+  // components: { Editor },
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      visible: false,
+      specMaintenanceVisible: false,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: false,
+      // 总条数
+      total: 0,
+      // 特种设备申请表格数据
+      approveList: [],
+      // 弹出层标题
+      title: "",
+      // 部门树选项
+      deptOptions: undefined,
+      clientHeight:300,
+      // 是否显示弹出层
+      open: false,
+      // 设备类型:字典
+      devTypeOptions: [{dictValue:1,dictLabel:'工业炉'},{dictValue:2,dictLabel:'压缩机'},{},{}],
+      // 审批类型字典
+      approveTypeOptions: [{dictValue:1,dictLabel:'维修'}],
+      statusOptions: [],
+        // 用户导入参数
+        upload: {
+            // 是否显示弹出层(用户导入)
+            open: false,
+            // 弹出层标题(用户导入)
+            title: "",
+            // 是否禁用上传
+            isUploading: false,
+            // 是否更新已经存在的用户数据
+            updateSupport: 0,
+            // 设置上传的请求头部
+            headers: { Authorization: "Bearer " + getToken() },
+            // 上传的地址
+            url: process.env.VUE_APP_BASE_API + "/sems/approve/importData"
+        },
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 20,
+        userId: null,
+        devId: null,
+        devType: null,
+        approveType: null,
+        content: null,
+        fileUrls: null,
+        reUrls: null,
+        status: null,
+        creattime: null,
+        endtime: null,
+        processId: null,
+        govDate: null,
+        delayDate: null,
+        delayReason: null,
+        delayMeasure: null,
+        delayNotice: null,
+        apNo: null,
+        checkDate: null,
+        reportId: null,
+        monthId: null,
+        deptId: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        userId: [
+          { required: true, message: this.$t('申请人')+this.$t('空格') +'id' + this.$t('不能为空'), trigger: "blur" }
+        ],
+      }
+    };
+  },
+  watch: {
+        // 根据名称筛选部门树
+        deptName(val) {
+            this.$refs.tree.filter(val);
+        }
+   },
+  created() {
+      //设置表格高度对应屏幕高度
+      this.$nextTick(() => {
+          this.clientHeight = document.body.clientHeight -250
+      })
+    this.getList();
+    this.getTreeselect();
+    this.getDicts("spec_dev_type").then(response => {
+      // this.devTypeOptions = response.data;
+    });
+    this.getDicts("spec_approve_type").then(response => {
+      // this.approveTypeOptions = response.data;
+    });
+    this.getDicts("spec_approve_res").then(response => {
+      this.statusOptions = response.data;
+    });
+  },
+  methods: {
+    init (row, type) {
+
+      this.visible = true
+      this.loading = true;
+      this.queryParams.devId = row.id
+      // this.queryParams.devType = row.devType
+      this.queryParams.devType = type
+      hisApprovelist(this.queryParams).then(response => {
+        console.log("aaa")
+        console.log(response.data)
+        this.approveList = response.data;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    /** 查询特种设备申请列表 */
+    getList() {
+
+    },
+     /** 查询部门下拉树结构 */
+     getTreeselect() {
+          treeselect().then(response => {
+              this.deptOptions = response.data;
+          });
+     },
+    // 设备类型:字典翻译
+    devTypeFormat(row, column) {
+      return this.selectDictLabel(this.devTypeOptions, row.devType);
+    },
+    // 审批类型字典翻译
+    approveTypeFormat(row, column) {
+      return this.selectDictLabel(this.approveTypeOptions, row.approveType);
+    },
+    // 审批类型字典翻译
+    statusFormat(row, column) {
+      return this.selectDictLabel(this.statusOptions, row.status);
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        userId: null,
+        devId: null,
+        devType: null,
+        approveType: null,
+        content: null,
+        fileUrls: null,
+        reUrls: null,
+        status: 0,
+        creattime: null,
+        endtime: null,
+        processId: null,
+        govDate: null,
+        delayDate: null,
+        delayReason: null,
+        delayMeasure: null,
+        delayNotice: null,
+        apNo: null,
+        checkDate: null,
+        reportId: null,
+        monthId: null,
+        delFlag: null,
+        deptId: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = this.$t('添加特种设备申请');
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getApprove(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title =this.$t('修改特种设备申请');
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateApprove(this.form).then(response => {
+              this.msgSuccess(this.$t('修改成功'));
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addApprove(this.form).then(response => {
+              this.msgSuccess(this.$t('新增成功'));
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$confirm(this.$t('是否确认删除?'), this.$t('警告'), {
+        confirmButtonText: this.$t('确定'),
+        cancelButtonText: this.$t('取消'),
+          type: "warning"
+        }).then(function() {
+          return delApprove(ids);
+        }).then(() => {
+          this.getList();
+        this.msgSuccess(this.$t('删除成功'));
+        })
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      const queryParams = this.queryParams;
+      this.$confirm(this.$t('是否确认导出所有特种设备申请数据项?'), this.$t('警告'), {
+        confirmButtonText: this.$t('确定'),
+        cancelButtonText: this.$t('取消'),
+          type: "warning"
+        }).then(function() {
+          return exportApprove(queryParams);
+        }).then(response => {
+          this.download(response.msg);
+        })
+    },
+      /** 导入按钮操作 */
+      handleImport() {
+          this.upload.title = this.$t('用户导入');
+          this.upload.open = true;
+      },
+      /** 下载模板操作 */
+      importTemplate() {
+          importTemplate().then(response => {
+              this.download(response.msg);
+          });
+      },
+      // 文件上传中处理
+      handleFileUploadProgress(event, file, fileList) {
+          this.upload.isUploading = true;
+      },
+      // 文件上传成功处理
+      handleFileSuccess(response, file, fileList) {
+          this.upload.open = false;
+          this.upload.isUploading = false;
+          this.$refs.upload.clearFiles();
+          this.$alert(response.msg, this.$t('导入结果'), { dangerouslyUseHTMLString: true });
+          this.getList();
+      },
+      // 提交上传文件
+      submitFileForm() {
+          this.$refs.upload.submit();
+      },
+    //操作审批流程
+    detailHandle (row) {
+      this.specMaintenanceVisible = true
+      this.$nextTick(() => {
+        console.log(row.taskName)
+        this.$refs.specMaintenance.init(row.id, row.taskId, row.processId,row.taskName)
+      })
+    },
+  }
+};
+</script>

+ 1 - 1
ui/src/views/intact/gyl/index.vue

@@ -972,7 +972,7 @@ import { treeselect } from "@/api/system/dept";
 import { getToken } from "@/utils/auth";
 import Treeselect from "@riophae/vue-treeselect";
 import "@riophae/vue-treeselect/dist/vue-treeselect.css";
-import HisApprove from "@/views/sems/approve/tapprove-his";
+import HisApprove from "../approve/tapprove-maintenance-his";
 import AddApprove from "../approve/tapprove-maintenance-add"
 
 export default {

+ 1 - 1
ui/src/views/intact/ysj/index.vue

@@ -567,7 +567,7 @@ import Treeselect from "@riophae/vue-treeselect";
 import "@riophae/vue-treeselect/dist/vue-treeselect.css";
 import {listRecord} from "@/api/inspection/record";
 import AddApprove from "../approve/tapprove-maintenance-add"
-import HisApprove from "@/views/sems/approve/tapprove-his";
+import HisApprove from "../approve/tapprove-maintenance-his";
 
 export default {
   name: "Ysj",