Quellcode durchsuchen

我的、待办、已办项目名称、合同名称

lamphua vor 9 Monaten
Ursprung
Commit
85faa76c53

+ 17
- 8
oa-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/CmcCarApprovalController.java Datei anzeigen

@@ -176,10 +176,14 @@ public class CmcCarApprovalController extends BaseController
176 176
                 CmcProject cmcProject = new CmcProject();
177 177
                 cmcProject.setProjectId(formDataJson.getString("projectId"));
178 178
                 CmcProject project = cmcProjectService.selectCmcProjectByProjectId(cmcProject.getProjectId());
179
-                String[] projectCars = project.getCars().split(",");
180
-                String[] cars = carString.split(",");
181
-                Collection union = CollectionUtils.union(Arrays.asList(projectCars), Arrays.asList(cars));
182
-                project.setCars(String.join(",",union));
179
+                if (project.getCars() != null) {
180
+                    String[] projectCars = project.getCars().split(",");
181
+                    String[] cars = carString.split(",");
182
+                    Collection union = CollectionUtils.union(Arrays.asList(projectCars), Arrays.asList(cars));
183
+                    project.setCars(String.join(",",union));
184
+                }
185
+                else
186
+                    project.setCars(carString);
183 187
                 cmcProjectService.updateCmcProject(project);
184 188
             }
185 189
             String[] cars = carString.split(",");
@@ -197,10 +201,15 @@ public class CmcCarApprovalController extends BaseController
197 201
                 CmcProject cmcProject = new CmcProject();
198 202
                 cmcProject.setProjectId(formDataJson.getString("projectId"));
199 203
                 CmcProject project = cmcProjectService.selectCmcProjectByProjectId(cmcProject.getProjectId());
200
-                String[] projectDrivers = project.getDrivers().split(",");
201
-                String[] drivers = formDataJson.getString("drivers").substring(1, formDataJson.getString("drivers").length() - 1).split(",");
202
-                Collection union = CollectionUtils.union(Arrays.asList(projectDrivers), Arrays.asList(drivers));
203
-                project.setDrivers(String.join(",",union));
204
+                String driverString = formDataJson.getString("drivers").substring(1, formDataJson.getString("drivers").length() - 1);
205
+                if (project.getDrivers() != null) {
206
+                    String[] projectDrivers = project.getDrivers().split(",");
207
+                    String[] drivers = driverString.split(",");
208
+                    Collection union = CollectionUtils.union(Arrays.asList(projectDrivers), Arrays.asList(drivers));
209
+                    project.setDrivers(String.join(",", union));
210
+                }
211
+                else
212
+                    project.setDrivers(driverString);
204 213
                 cmcProjectService.updateCmcProject(project);
205 214
             }
206 215
         }

+ 8
- 4
oa-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/CmcDeviceApprovalController.java Datei anzeigen

@@ -150,10 +150,14 @@ public class CmcDeviceApprovalController extends BaseController
150 150
                 CmcProject cmcProject = new CmcProject();
151 151
                 cmcProject.setProjectId(formDataJson.getString("projectId"));
152 152
                 CmcProject project = cmcProjectService.selectCmcProjectByProjectId(cmcProject.getProjectId());
153
-                String[] projectDevices = project.getDevices().split(",");
154
-                String[] devices = formDataJson.getString("devices").substring(1, formDataJson.getString("devices").length() - 1).split(",");
155
-                Collection union = CollectionUtils.union(Arrays.asList(projectDevices), Arrays.asList(devices));
156
-                project.setDevices(String.join(",",union));
153
+                if (project.getDevices() != null) {
154
+                    String[] projectDevices = project.getDevices().split(",");
155
+                    String[] devices = deviceString.split(",");
156
+                    Collection union = CollectionUtils.union(Arrays.asList(projectDevices), Arrays.asList(devices));
157
+                    project.setDevices(String.join(",", union));
158
+                }
159
+                else
160
+                    project.setDevices(deviceString);
157 161
                 cmcProjectService.updateCmcProject(project);
158 162
             }
159 163
             String[] devices = deviceString.split(",");

+ 2
- 2
oa-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/CmcProjectChangeController.java Datei anzeigen

@@ -84,7 +84,7 @@ public class CmcProjectChangeController extends BaseController
84 84
      * 获取cmc项目变更详细信息
85 85
      */
86 86
     @GetMapping(value = "/{changeId}")
87
-    public AjaxResult getInfo(@PathVariable("changeId") Long changeId)
87
+    public AjaxResult getInfo(@PathVariable("changeId") String changeId)
88 88
     {
89 89
         return success(cmcProjectChangeService.selectCmcProjectChangeByChangeId(changeId));
90 90
     }
@@ -114,7 +114,7 @@ public class CmcProjectChangeController extends BaseController
114 114
      */
115 115
     @Log(title = "cmc项目变更", businessType = BusinessType.DELETE)
116 116
 	@DeleteMapping("/{changeIds}")
117
-    public AjaxResult remove(@PathVariable Long[] changeIds)
117
+    public AjaxResult remove(@PathVariable String[] changeIds)
118 118
     {
119 119
         return success(cmcProjectChangeService.deleteCmcProjectChangeByChangeIds(changeIds));
120 120
     }

+ 15
- 0
oa-back/ruoyi-flowable/src/main/java/com/ruoyi/flowable/domain/dto/FlowTaskDto.java Datei anzeigen

@@ -56,6 +56,21 @@ public class FlowTaskDto implements Serializable {
56 56
     @ApiModelProperty("流程发起人名称")
57 57
     private String startUserName;
58 58
 
59
+    @ApiModelProperty("流程关联项目Id")
60
+    private String projectId;
61
+
62
+    @ApiModelProperty("流程关联项目编号")
63
+    private String projectNumber;
64
+
65
+    @ApiModelProperty("流程关联项目名称")
66
+    private String projectName;
67
+
68
+    @ApiModelProperty("流程关联合同Id")
69
+    private String contractId;
70
+
71
+    @ApiModelProperty("流程关联合同名称")
72
+    private String contractName;
73
+
59 74
     @ApiModelProperty("流程类型")
60 75
     private String category;
61 76
 

+ 134
- 0
oa-back/ruoyi-flowable/src/main/java/com/ruoyi/flowable/service/impl/FlowTaskServiceImpl.java Datei anzeigen

@@ -27,6 +27,7 @@ import com.ruoyi.flowable.flow.FlowableUtils;
27 27
 import com.ruoyi.flowable.service.IFlowTaskService;
28 28
 import com.ruoyi.flowable.service.ISysDeployFormService;
29 29
 import com.ruoyi.flowable.service.ISysFormService;
30
+import com.ruoyi.oa.service.*;
30 31
 import com.ruoyi.system.domain.FlowProcDefDto;
31 32
 import com.ruoyi.system.domain.FlowVarInst;
32 33
 import com.ruoyi.system.domain.SysForm;
@@ -92,6 +93,46 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
92 93
     @Resource
93 94
     private ISysFormService sysFormService;
94 95
     @Resource
96
+    private ICmcContractService cmcContractService;
97
+    @Resource
98
+    private ICmcProjectContractService cmcProjectContractService;
99
+    @Resource
100
+    private ICmcProjectSubContractService cmcProjectSubContractService;
101
+    @Resource
102
+    private ICmcSubContractService cmcSubContractService;
103
+    @Resource
104
+    private ICmcBrandService cmcBrandService;
105
+    @Resource
106
+    private ICmcDepositService cmcDepositService;
107
+    @Resource
108
+    private ICmcArchiveService cmcArchiveService;
109
+    @Resource
110
+    private ICmcSettleService cmcSettleService;
111
+    @Resource
112
+    private ICmcProjectChangeService cmcProjectChangeService;
113
+    @Resource
114
+    private ICmcDeclareService cmcDeclareService;
115
+    @Resource
116
+    private ICmcBorrowService cmcBorrowService;
117
+    @Resource
118
+    private ICmcCarApprovalService cmcCarApprovalService;
119
+    @Resource
120
+    private ICmcDeviceApprovalService cmcDeviceApprovalService;
121
+    @Resource
122
+    private ICmcAssessService cmcAssessService;
123
+    @Resource
124
+    private ICmcProjectService cmcProjectService;
125
+    @Resource
126
+    private ICmcTenderService cmcTenderService;
127
+    @Resource
128
+    private ICmcSafeService cmcSafeService;
129
+    @Resource
130
+    private ICmcTechnicalService cmcTechnicalService;
131
+    @Resource
132
+    private ICmcTechnicalPlanService cmcTechnicalPlanService;
133
+    @Resource
134
+    private ICmcBudgetService cmcBudgetService;
135
+    @Resource
95 136
     private FlowVarInstMapper flowVarInstMapper;
96 137
     @Resource
97 138
     private FlowDeployMapper flowDeployMapper;
@@ -596,6 +637,23 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
596 637
                     }
597 638
                 }
598 639
             }
640
+            if (flowTask.getProcDefName().contains("合同评审")) {
641
+                flowTask.setContractId(flowTask.getProcInsId());
642
+                if (flowTask.getProcDefName().contains("承接"))
643
+                    flowTask.setContractName(cmcContractService.selectCmcContractByContractId(flowTask.getContractId()).getContractName());
644
+                if (flowTask.getProcDefName().contains("分包"))
645
+                    flowTask.setContractName(cmcSubContractService.selectCmcSubContractBySubContractId(flowTask.getContractId()).getSubContractName());
646
+            }
647
+            else {
648
+                flowTask.setProjectId(getFlowProjectId(flowTask));
649
+                if (flowTask.getProjectId() != null) {
650
+                    if (!flowTask.getProcDefName().equals("保证金审批")) {
651
+                        flowTask.setProjectNumber(cmcProjectService.selectCmcProjectByProjectId(flowTask.getProjectId()).getProjectNumber());
652
+                        flowTask.setProjectName(cmcProjectService.selectCmcProjectByProjectId(flowTask.getProjectId()).getProjectName());
653
+                    } else
654
+                        flowTask.setProjectName(cmcTenderService.selectCmcTenderByTenderId(flowTask.getProjectId()).getProjectName());
655
+                }
656
+            }
599 657
             flowList.add(flowTask);
600 658
         }
601 659
         page.setRecords(flowList);
@@ -840,6 +898,23 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
840 898
             flowTask.setStartUserId(startUser.getUserId().toString());
841 899
             flowTask.setStartUserName(startUser.getNickName());
842 900
             flowTask.setStartDeptName(Objects.nonNull(startUser.getDept()) ? startUser.getDept().getDeptName() : "");
901
+            if (flowTask.getProcDefName().contains("合同评审")) {
902
+                flowTask.setContractId(flowTask.getProcInsId());
903
+                if (flowTask.getProcDefName().contains("承接"))
904
+                    flowTask.setContractName(cmcContractService.selectCmcContractByContractId(flowTask.getContractId()).getContractName());
905
+                if (flowTask.getProcDefName().contains("分包"))
906
+                    flowTask.setContractName(cmcSubContractService.selectCmcSubContractBySubContractId(flowTask.getContractId()).getSubContractName());
907
+            }
908
+            else {
909
+                flowTask.setProjectId(getFlowProjectId(flowTask));
910
+                if (flowTask.getProjectId() != null) {
911
+                    if (!flowTask.getProcDefName().equals("保证金审批")) {
912
+                        flowTask.setProjectNumber(cmcProjectService.selectCmcProjectByProjectId(flowTask.getProjectId()).getProjectNumber());
913
+                        flowTask.setProjectName(cmcProjectService.selectCmcProjectByProjectId(flowTask.getProjectId()).getProjectName());
914
+                    } else
915
+                        flowTask.setProjectName(cmcTenderService.selectCmcTenderByTenderId(flowTask.getProjectId()).getProjectName());
916
+                }
917
+            }
843 918
             flowList.add(flowTask);
844 919
         }
845 920
 
@@ -900,6 +975,23 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
900 975
             flowTask.setStartUserName(startUser.getNickName());
901 976
             flowTask.setStartDeptName(startUser.getDept().getDeptName());
902 977
             flowTask.setAssigneeId(Long.parseLong(histTask.getAssignee()));
978
+            if (flowTask.getProcDefName().contains("合同评审")) {
979
+                flowTask.setContractId(flowTask.getProcInsId());
980
+                if (flowTask.getProcDefName().contains("承接"))
981
+                    flowTask.setContractName(cmcContractService.selectCmcContractByContractId(flowTask.getContractId()).getContractName());
982
+                if (flowTask.getProcDefName().contains("分包"))
983
+                    flowTask.setContractName(cmcSubContractService.selectCmcSubContractBySubContractId(flowTask.getContractId()).getSubContractName());
984
+            }
985
+            else {
986
+                flowTask.setProjectId(getFlowProjectId(flowTask));
987
+                if (flowTask.getProjectId() != null) {
988
+                    if (!flowTask.getProcDefName().equals("保证金审批")) {
989
+                        flowTask.setProjectNumber(cmcProjectService.selectCmcProjectByProjectId(flowTask.getProjectId()).getProjectNumber());
990
+                        flowTask.setProjectName(cmcProjectService.selectCmcProjectByProjectId(flowTask.getProjectId()).getProjectName());
991
+                    } else
992
+                        flowTask.setProjectName(cmcTenderService.selectCmcTenderByTenderId(flowTask.getProjectId()).getProjectName());
993
+                }
994
+            }
903 995
             hisTaskList.add(flowTask);
904 996
         }
905 997
         page.setTotal(taskInstanceQuery.count());
@@ -1517,4 +1609,46 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
1517 1609
             return 0 + "秒";
1518 1610
         }
1519 1611
     }
1612
+
1613
+    /**
1614
+     * 流程项目id
1615
+     *
1616
+     * @param flowTaskDto
1617
+     * @return
1618
+     */
1619
+    private String getFlowProjectId(FlowTaskDto flowTaskDto) {
1620
+        String projectId = "";
1621
+        String formId = flowVarInstMapper.selectVarByProcInsId(flowTaskDto.getProcInsId()).getText();
1622
+        if (flowTaskDto.getProcDefName().equals("品牌项目支付"))
1623
+            projectId = cmcBrandService.selectCmcBrandByBrandId(formId).getProjectId();
1624
+        if (flowTaskDto.getProcDefName().equals("项目流转"))
1625
+            projectId = formId;
1626
+        if (flowTaskDto.getProcDefName().equals("项目预算"))
1627
+            projectId = cmcBudgetService.selectCmcBudgetByBudgetId(formId).getProjectId();
1628
+        if (flowTaskDto.getProcDefName().equals("技术方案"))
1629
+            projectId = formId;
1630
+        if (flowTaskDto.getProcDefName().equals("安全交底"))
1631
+            projectId = formId;
1632
+        if (flowTaskDto.getProcDefName().equals("技术交底"))
1633
+            projectId = cmcTechnicalService.selectCmcTechnicalByTechnicalId(formId).getProjectId();
1634
+        if (flowTaskDto.getProcDefName().equals("成果归档"))
1635
+            projectId = cmcArchiveService.selectCmcArchiveByArchiveId(formId).getProjectId();
1636
+        if (flowTaskDto.getProcDefName().contains("结算"))
1637
+            projectId = cmcSettleService.selectCmcSettleBySettleId(formId).getProjectId();
1638
+        if (flowTaskDto.getProcDefName().equals("项目变更"))
1639
+            projectId = cmcProjectChangeService.selectCmcProjectChangeByChangeId(formId).getProjectId();
1640
+        if (flowTaskDto.getProcDefName().equals("工作填报"))
1641
+            projectId = cmcDeclareService.selectCmcDeclareByFormId(formId).getProjectId();
1642
+        if (flowTaskDto.getProcDefName().equals("借款审批"))
1643
+            projectId = cmcBorrowService.selectCmcBorrowByBorrowId(formId).getProjectId();
1644
+        if (flowTaskDto.getProcDefName().equals("用车审批"))
1645
+            projectId = cmcCarApprovalService.selectCmcCarApprovalByCarApplyId(formId).getProjectId();
1646
+        if (flowTaskDto.getProcDefName().equals("设备审批"))
1647
+            projectId = cmcDeviceApprovalService.selectCmcDeviceApprovalByDeviceApplyId(formId).getProjectId();
1648
+        if (flowTaskDto.getProcDefName().contains("考核"))
1649
+            projectId = cmcAssessService.selectCmcAssessByAssessId(formId).getProjectId();
1650
+        if (flowTaskDto.getProcDefName().equals("保证金评审"))
1651
+            projectId = cmcDepositService.selectCmcDepositByDepositId(formId).getTenderId().toString();
1652
+        return projectId;
1653
+    }
1520 1654
 }

+ 5
- 5
oa-back/ruoyi-system/src/main/java/com/ruoyi/oa/domain/CmcDeclare.java Datei anzeigen

@@ -35,7 +35,7 @@ public class CmcDeclare extends BaseEntity
35 35
     private Long userId;
36 36
 
37 37
     /** 工作类别(内业、外业等) */
38
-    @Excel(name = "工作类别", readConverterExp = "内=业、外业等")
38
+    @Excel(name = "工作类别")
39 39
     private String workType;
40 40
 
41 41
     /** 工作项目 */
@@ -43,7 +43,7 @@ public class CmcDeclare extends BaseEntity
43 43
     private String workItem;
44 44
 
45 45
     /** 工作内容(每日工作日志) */
46
-    @Excel(name = "工作内容", readConverterExp = "每=日工作日志")
46
+    @Excel(name = "工作内容")
47 47
     private String workContent;
48 48
 
49 49
     /** 工天 */
@@ -59,11 +59,11 @@ public class CmcDeclare extends BaseEntity
59 59
     private String coefficient;
60 60
 
61 61
     /** 一审状态(0-未审核,1已审核) */
62
-    @Excel(name = "一审状态", readConverterExp = "0=-未审核,1已审核")
62
+    @Excel(name = "一审状态", readConverterExp = "0=未审核,1=已审核")
63 63
     private String checkStatus;
64 64
 
65 65
     /** 二审状态(0-未审核,1已审核) */
66
-    @Excel(name = "二审状态", readConverterExp = "0=-未审核,1已审核")
66
+    @Excel(name = "二审状态", readConverterExp = "0=未审核,1=已审核")
67 67
     private String auditStatus;
68 68
 
69 69
     /** 填报时间 */
@@ -72,7 +72,7 @@ public class CmcDeclare extends BaseEntity
72 72
     private Date submitTime;
73 73
 
74 74
     /** 确认状态 */
75
-    @Excel(name = "确认状态")
75
+    @Excel(name = "确认状态", readConverterExp = "0=未确认,1=已确认")
76 76
     private String confirmStatus;
77 77
 
78 78
     private SysUser user;

+ 3
- 3
oa-back/ruoyi-system/src/main/java/com/ruoyi/oa/mapper/CmcProjectChangeMapper.java Datei anzeigen

@@ -17,7 +17,7 @@ public interface CmcProjectChangeMapper
17 17
      * @param changeId cmc项目变更主键
18 18
      * @return cmc项目变更
19 19
      */
20
-    public CmcProjectChange selectCmcProjectChangeByChangeId(Long changeId);
20
+    public CmcProjectChange selectCmcProjectChangeByChangeId(String changeId);
21 21
 
22 22
     /**
23 23
      * 查询cmc项目变更列表
@@ -49,7 +49,7 @@ public interface CmcProjectChangeMapper
49 49
      * @param changeId cmc项目变更主键
50 50
      * @return 结果
51 51
      */
52
-    public int deleteCmcProjectChangeByChangeId(Long changeId);
52
+    public int deleteCmcProjectChangeByChangeId(String changeId);
53 53
 
54 54
     /**
55 55
      * 批量删除cmc项目变更
@@ -57,5 +57,5 @@ public interface CmcProjectChangeMapper
57 57
      * @param changeIds 需要删除的数据主键集合
58 58
      * @return 结果
59 59
      */
60
-    public int deleteCmcProjectChangeByChangeIds(Long[] changeIds);
60
+    public int deleteCmcProjectChangeByChangeIds(String[] changeIds);
61 61
 }

+ 3
- 3
oa-back/ruoyi-system/src/main/java/com/ruoyi/oa/service/ICmcProjectChangeService.java Datei anzeigen

@@ -17,7 +17,7 @@ public interface ICmcProjectChangeService
17 17
      * @param changeId cmc项目变更主键
18 18
      * @return cmc项目变更
19 19
      */
20
-    public CmcProjectChange selectCmcProjectChangeByChangeId(Long changeId);
20
+    public CmcProjectChange selectCmcProjectChangeByChangeId(String changeId);
21 21
 
22 22
     /**
23 23
      * 查询cmc项目变更列表
@@ -49,7 +49,7 @@ public interface ICmcProjectChangeService
49 49
      * @param changeIds 需要删除的cmc项目变更主键集合
50 50
      * @return 结果
51 51
      */
52
-    public int deleteCmcProjectChangeByChangeIds(Long[] changeIds);
52
+    public int deleteCmcProjectChangeByChangeIds(String[] changeIds);
53 53
 
54 54
     /**
55 55
      * 删除cmc项目变更信息
@@ -57,5 +57,5 @@ public interface ICmcProjectChangeService
57 57
      * @param changeId cmc项目变更主键
58 58
      * @return 结果
59 59
      */
60
-    public int deleteCmcProjectChangeByChangeId(Long changeId);
60
+    public int deleteCmcProjectChangeByChangeId(String changeId);
61 61
 }

+ 3
- 3
oa-back/ruoyi-system/src/main/java/com/ruoyi/oa/service/impl/CmcProjectChangeServiceImpl.java Datei anzeigen

@@ -26,7 +26,7 @@ public class CmcProjectChangeServiceImpl implements ICmcProjectChangeService
26 26
      * @return cmc项目变更
27 27
      */
28 28
     @Override
29
-    public CmcProjectChange selectCmcProjectChangeByChangeId(Long changeId)
29
+    public CmcProjectChange selectCmcProjectChangeByChangeId(String changeId)
30 30
     {
31 31
         return cmcProjectChangeMapper.selectCmcProjectChangeByChangeId(changeId);
32 32
     }
@@ -74,7 +74,7 @@ public class CmcProjectChangeServiceImpl implements ICmcProjectChangeService
74 74
      * @return 结果
75 75
      */
76 76
     @Override
77
-    public int deleteCmcProjectChangeByChangeIds(Long[] changeIds)
77
+    public int deleteCmcProjectChangeByChangeIds(String[] changeIds)
78 78
     {
79 79
         return cmcProjectChangeMapper.deleteCmcProjectChangeByChangeIds(changeIds);
80 80
     }
@@ -86,7 +86,7 @@ public class CmcProjectChangeServiceImpl implements ICmcProjectChangeService
86 86
      * @return 结果
87 87
      */
88 88
     @Override
89
-    public int deleteCmcProjectChangeByChangeId(Long changeId)
89
+    public int deleteCmcProjectChangeByChangeId(String changeId)
90 90
     {
91 91
         return cmcProjectChangeMapper.deleteCmcProjectChangeByChangeId(changeId);
92 92
     }

+ 8
- 0
oa-back/ruoyi-system/src/main/java/com/ruoyi/system/mapper/FlowVarInstMapper.java Datei anzeigen

@@ -20,4 +20,12 @@ public interface FlowVarInstMapper
20 20
      */
21 21
     public List<FlowVarInst> selectProcInstByVar(String formId);
22 22
 
23
+    /**
24
+     * 通过流程实例id查询表单id
25
+     *
26
+     * @param procInsId 流程实例id
27
+     * @return 流程变量
28
+     */
29
+    public FlowVarInst selectVarByProcInsId(String procInsId);
30
+
23 31
 }

+ 7
- 0
oa-back/ruoyi-system/src/main/resources/mapper/flowable/FlowVarInstMapper.xml Datei anzeigen

@@ -23,4 +23,11 @@
23 23
         order by CREATE_TIME_ asc
24 24
     </select>
25 25
 
26
+    <select id="selectVarByProcInsId" parameterType="FlowVarInst" resultMap="FlowVarInstResult">
27
+        <include refid="selectFlowVarInstVo"/>
28
+        <where>
29
+            PROC_INST_ID_ = #{param} and LENGTH(TEXT_) = 19
30
+        </where>
31
+    </select>
32
+
26 33
 </mapper>

+ 2
- 2
oa-back/ruoyi-system/src/main/resources/mapper/oa/CmcProjectChangeMapper.xml Datei anzeigen

@@ -53,7 +53,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
53 53
         order by pc.register_time desc
54 54
     </select>
55 55
     
56
-    <select id="selectCmcProjectChangeByChangeId" parameterType="Long" resultMap="CmcProjectChangeResult">
56
+    <select id="selectCmcProjectChangeByChangeId" parameterType="String" resultMap="CmcProjectChangeResult">
57 57
         <include refid="selectCmcProjectChangeVo"/>
58 58
         where pc.change_id = #{changeId}
59 59
     </select>
@@ -87,7 +87,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
87 87
         where change_id = #{changeId}
88 88
     </update>
89 89
 
90
-    <delete id="deleteCmcProjectChangeByChangeId" parameterType="Long">
90
+    <delete id="deleteCmcProjectChangeByChangeId" parameterType="String">
91 91
         delete from cmc_project_change where change_id = #{changeId}
92 92
     </delete>
93 93
 

+ 216
- 40
oa-ui/src/views/file/index.vue Datei anzeigen

@@ -1,8 +1,8 @@
1 1
 <!--
2 2
  * @Author: ysh
3 3
  * @Date: 2024-06-21 18:51:49
4
- * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-07-01 17:05:09
4
+ * @LastEditors: wrh
5
+ * @LastEditTime: 2024-08-19 11:45:35
6 6
 -->
7 7
 <template>
8 8
   <div class="warpper-container">
@@ -10,6 +10,8 @@
10 10
     <div class="map-container" id="maps" tabindex="0"></div>
11 11
     <!-- 鼠标移动坐标 -->
12 12
     <div id="mouse-position"></div>
13
+    <!-- 项目信息弹出框 -->
14
+    <info-box :datas="datas" :maps="map" @closePopup="closePopup" @open="openAchiList"></info-box>
13 15
     <!-- 工具栏列表 -->
14 16
     <div class="tool-box">
15 17
       <div class="item">
@@ -49,7 +51,7 @@
49 51
           </el-descriptions-item>
50 52
           <el-descriptions-item label="存放地址" width="130px">
51 53
             {{ clickFeacture.storageAddress == '' || clickFeacture.storageAddress == null ? '暂无' :
52
-            clickFeacture.storageAddress }}
54
+              clickFeacture.storageAddress }}
53 55
           </el-descriptions-item>
54 56
         </el-descriptions>
55 57
 
@@ -98,54 +100,54 @@
98 100
                   <el-descriptions :column="2">
99 101
                     <el-descriptions-item label="存放地址:" class="desLabel" :span="2">
100 102
                       {{ props.row.storageAddress == '' || props.row.storageAddress == undefined ? '暂无' :
101
-            props.row.storageAddress
103
+                        props.row.storageAddress
102 104
                       }}
103 105
                     </el-descriptions-item>
104 106
                     <el-descriptions-item label="甲方单位:" class="desLabel" :span="2">{{ props.row.partyA.partyAName == ''
105
-            ? '暂无' :
106
-            props.row.partyA.partyAName
107
-                      }}</el-descriptions-item>
107
+                      ? '暂无' :
108
+                      props.row.partyA.partyAName
109
+                    }}</el-descriptions-item>
108 110
                     <el-descriptions-item label="联系人:" class="desLabel">{{ props.row.contactPerson == '' ? '暂无' :
109
-            props.row.contactPerson
110
-                      }}</el-descriptions-item>
111
+                      props.row.contactPerson
112
+                    }}</el-descriptions-item>
111 113
                     <el-descriptions-item label="联系电话:" class="desLabel">{{ props.row.telephone == '' ? '暂无' :
112
-            props.row.telephone
113
-                      }}</el-descriptions-item>
114
+                      props.row.telephone
115
+                    }}</el-descriptions-item>
114 116
                     <el-descriptions-item label="项目类型:" class="desLabel">{{ props.row.projectType == '' ? '暂无' :
115
-            props.row.projectType
116
-                      }}</el-descriptions-item>
117
+                      props.row.projectType
118
+                    }}</el-descriptions-item>
117 119
                     <el-descriptions-item label="技术负责人:" class="desLabel">{{ props.row.technicalDirector == '' ? '暂无'
118
-            :
119
-            getUserName(props.row.technicalDirector)
120
-                      }}</el-descriptions-item>
120
+                      :
121
+                      getUserName(props.row.technicalDirector)
122
+                    }}</el-descriptions-item>
121 123
                     <el-descriptions-item label="技术设计人:" class="desLabel">{{ props.row.techinicalDesigner == '' ? '暂无'
122
-            :
123
-            getUserName(props.row.techinicalDesigner)
124
-                      }}</el-descriptions-item>
124
+                      :
125
+                      getUserName(props.row.techinicalDesigner)
126
+                    }}</el-descriptions-item>
125 127
                     <el-descriptions-item label="承担部门:" class="desLabel">{{ props.row.undertakingSector == '' ? '暂无' :
126
-            props.row.undertakingSector
127
-                      }}</el-descriptions-item>
128
+                      props.row.undertakingSector
129
+                    }}</el-descriptions-item>
128 130
                     <el-descriptions-item label="质量检察员:" class="desLabel">{{ props.row.qualityInspector == '' ? '暂无' :
129
-            getUserNames(props.row.qualityInspector)
130
-                      }}</el-descriptions-item>
131
+                      getUserNames(props.row.qualityInspector)
132
+                    }}</el-descriptions-item>
131 133
                     <el-descriptions-item label="项目登记时间:" class="desLabel" :span="2">{{ props.row.registrationDate ==
132
-            '' ? '暂无' :
133
-            props.row.registrationDate
134
-                      }}</el-descriptions-item>
134
+                      '' ? '暂无' :
135
+                      props.row.registrationDate
136
+                    }}</el-descriptions-item>
135 137
                     <el-descriptions-item label="项目登记人:" class="desLabel">{{ props.row.projectRegistrant == '' ? '暂无'
136
-            :
137
-            getUserName(props.row.projectRegistrant)
138
-                      }}</el-descriptions-item>
138
+                      :
139
+                      getUserName(props.row.projectRegistrant)
140
+                    }}</el-descriptions-item>
139 141
                     <el-descriptions-item label="进场时间:" class="desLabel">{{ props.row.approachTime == '' ? '暂无' :
140
-            props.row.approachTime
141
-                      }}</el-descriptions-item>
142
+                      props.row.approachTime
143
+                    }}</el-descriptions-item>
142 144
                     <el-descriptions-item label="撤场时间:" class="desLabel">{{ props.row.withdrawalTime == '' ? '暂无' :
143
-            props.row.withdrawalTime
144
-                      }}</el-descriptions-item>
145
+                      props.row.withdrawalTime
146
+                    }}</el-descriptions-item>
145 147
                     <el-descriptions-item label="项目要求完成时间:" class="desLabel">{{ props.row.requiredCompletionDate == ''
146
-            ? '暂无' :
147
-            props.row.requiredCompletionDate
148
-                      }}</el-descriptions-item>
148
+                      ? '暂无' :
149
+                      props.row.requiredCompletionDate
150
+                    }}</el-descriptions-item>
149 151
                   </el-descriptions>
150 152
                   <div class="look-achi" @click="lookThisAchi(props.row)">
151 153
                     查看成果>>
@@ -168,6 +170,66 @@
168 170
           <!-- <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum"
169 171
             :limit.sync="queryParams.pageSize" @pagination="getProjectList" /> -->
170 172
         </div>
173
+
174
+        <!-- 成果目录 -->
175
+        <div class="achi-list dialog_wrap" v-if="dialogTableVisible">
176
+          <div class="achi-content">
177
+            <div class="achi-header">
178
+              成果目录
179
+              <el-icon class="close" @click="dialogTableVisible = false">
180
+                <CloseBold />
181
+              </el-icon>
182
+            </div>
183
+            <div class="achi-projectNumber">项目编号:{{ dialogTitle }}</div>
184
+            <el-table :data="achiDialogData" height="400px">
185
+              <el-table-column type="expand">
186
+                <template #default="props">
187
+                  <el-descriptions :column="2" size="small">
188
+                    <el-descriptions-item min-width="195px" label-class-name="my-label" class-name="my-content"
189
+                      label="成果名称:">{{
190
+                        props.row.achiName
191
+                      }}</el-descriptions-item>
192
+                    <el-descriptions-item min-width="195px" label-class-name="my-label" class-name="my-content"
193
+                      label="数据年份:">{{
194
+                        props.row.dataYear }}</el-descriptions-item>
195
+                    <el-descriptions-item min-width="195px" label-class-name="my-label" class-name="my-content"
196
+                      label="成果类型:">{{
197
+                        props.row.resultType }}</el-descriptions-item>
198
+                    <el-descriptions-item min-width="195px" label-class-name="my-label" class-name="my-content"
199
+                      label="文件类型:">{{
200
+                        props.row.fileType }}</el-descriptions-item>
201
+                    <el-descriptions-item min-width="195px" label-class-name="my-label" class-name="my-content"
202
+                      label="工作量:">{{
203
+                        props.row.workLoad }}</el-descriptions-item>
204
+                    <el-descriptions-item min-width="195px" label-class-name="my-label" class-name="my-content"
205
+                      label="单位:">{{
206
+                        props.row.unit }}</el-descriptions-item>
207
+                    <el-descriptions-item min-width="195px" label-class-name="my-label" class-name="my-content"
208
+                      label="大地基准:">{{
209
+                        props.row.geodeticDatum }}</el-descriptions-item>
210
+                    <el-descriptions-item min-width="195px" label-class-name="my-label" class-name="my-content"
211
+                      label="分辨率:">{{
212
+                        props.row.resolution }}</el-descriptions-item>
213
+                    <el-descriptions-item min-width="195px" label-class-name="my-label" class-name="my-content"
214
+                      label="比例尺或等级:">{{ props.row.scaleOrder }}</el-descriptions-item>
215
+                    <el-descriptions-item min-width="195px" label-class-name="my-label" class-name="my-content"
216
+                      label="数据类型:">{{
217
+                        props.row.dataType }}</el-descriptions-item>
218
+                    <el-descriptions-item min-width="195px" label-class-name="my-label" class-name="my-content"
219
+                      label="存放地址:">{{
220
+                        props.row.storageAddress }}</el-descriptions-item>
221
+                    <el-descriptions-item min-width="195px" label-class-name="my-label" class-name="my-content"
222
+                      label="提交时间:">{{
223
+                        props.row.submitDate }}</el-descriptions-item>
224
+                  </el-descriptions>
225
+                </template>
226
+              </el-table-column>
227
+              <el-table-column type="index" label="序号" width="50px" align="center" />
228
+              <el-table-column prop="achiName" label="成果名称" align="center" show-overflow-tooltip />
229
+              <el-table-column prop="dataYear" label="数据年份" align="center" />
230
+            </el-table>
231
+          </div>
232
+        </div>
171 233
       </div>
172 234
     </div>
173 235
 
@@ -201,6 +263,7 @@ import { Point, Polygon, MultiPolygon, MultiLineString } from 'ol/geom';
201 263
 import { toStringXY, createStringXY, toStringHDMS } from 'ol/coordinate';
202 264
 import { Circle, Fill, Stroke, Style, RegularShape, Icon, Text } from 'ol/style';
203 265
 import { MousePosition, ScaleLine, defaults as defaultControls } from 'ol/control';
266
+import { getAchievementByProject, listAchievement } from "@/api/file/achievement";
204 267
 export default {
205 268
   components: { infoBox },
206 269
   data() {
@@ -234,7 +297,16 @@ export default {
234 297
         selectProjectNumber: "",
235 298
         type: '',
236 299
       },
237
-      seletctedCluters: []
300
+      seletctedCluters: [],
301
+      dialogTitle: '',
302
+      dialogTableVisible: false,
303
+      datas: {
304
+        clickFeacture: {},
305
+        selectFeatures: null,
306
+        selectProjectNumber: "",
307
+        type: '',
308
+        infoData: {}
309
+      }
238 310
     }
239 311
   },
240 312
   mounted() {
@@ -421,7 +493,18 @@ export default {
421 493
       this.popup.setPosition(undefined);
422 494
     },
423 495
     openAchiList() {
424
-
496
+      this.dialogTableVisible = true;
497
+      // let projectId = datas.clickFeacture.id;
498
+      // this.dialogTitle = datas.clickFeacture.projectNumber
499
+      listAchievement({ projectId }).then(res => {
500
+        if (res.total == 0) {
501
+          this.$message.error('暂无成果,请添加');
502
+          this.achiDialogData = [];
503
+        } else {
504
+          this.dialogTableVisible = true;
505
+          this.achiDialogData = res.rows;
506
+        }
507
+      })
425 508
     },
426 509
     formatCoordinate(fractionDigits) {
427 510
       return (
@@ -739,8 +822,58 @@ export default {
739 822
     },
740 823
     handleRowClick() {
741 824
 
742
-    }
743
-  },
825
+    },
826
+    lookThisAchi(row) {
827
+      let projectId = row.projectId;
828
+      this.dialogTitle = row.projectNumber;
829
+      listAchievement({ projectId }).then(res => {
830
+        if (res.total == 0) {
831
+          this.$message.error('暂无成果,请添加');
832
+          this.achiDialogData = [];
833
+        } else {
834
+          this.dialogTableVisible = true;
835
+          this.achiDialogData = res.rows;
836
+        }
837
+      })
838
+    },
839
+    // 移动box
840
+    move(e) {
841
+      e.stopPropagation();
842
+      let odiv = e.target; //获取目标元素
843
+      if (odiv.className instanceof SVGAnimatedString) {
844
+        return
845
+      }
846
+      if (odiv.className.includes("dialog_wrap")) {
847
+        //算出鼠标相对元素的位置
848
+        let disX = e.clientX - odiv.offsetLeft;
849
+        let disY = e.clientY - odiv.offsetTop;
850
+        document.onmousemove = (e) => {
851
+          //鼠标按下并移动的事件
852
+          //用鼠标的位置减去鼠标相对元素的位置,得到元素的位置
853
+          let left = e.clientX - disX;
854
+          let top = e.clientY - disY;
855
+
856
+          //绑定元素位置到positionX和positionY上面
857
+          // this.positionX = top;
858
+          // this.positionY = left;
859
+
860
+          //移动当前元素
861
+          odiv.style.left = left + "px";
862
+          odiv.style.top = top + "px";
863
+        };
864
+        document.body.onselectstart = document.body.ondrag = () => { return false }
865
+        document.onmouseup = (e) => {
866
+          document.onmousemove = null;
867
+          document.onmouseup = null;
868
+        };
869
+      } else {
870
+        document.onmousemove = null;
871
+        document.onmouseup = null;
872
+        document.body.onselectstart = document.body.ondrag = () => { return true }
873
+      }
874
+
875
+    },
876
+  }
744 877
 }
745 878
 </script>
746 879
 
@@ -767,6 +900,49 @@ export default {
767 900
   color: #fff;
768 901
 }
769 902
 
903
+.achi-list {
904
+  width: 425px;
905
+  min-height: 300px;
906
+  background-color: #fff;
907
+  position: absolute;
908
+  top: 55px;
909
+  right: 520px;
910
+  padding: 10px;
911
+  border-radius: 4px;
912
+  box-shadow: 0 0 10px rgba($color: #000000, $alpha: 0.5);
913
+  cursor: move;
914
+
915
+  .achi-content {
916
+    cursor: default;
917
+  }
918
+
919
+  .achi-projectNumber {
920
+    padding-left: 20px;
921
+    font-size: 14px;
922
+    font-family: '微软雅黑';
923
+  }
924
+
925
+  .achi-header {
926
+    text-align: center;
927
+    line-height: 40px;
928
+    font-weight: bold;
929
+    font-family: '黑体';
930
+    position: relative;
931
+
932
+    .close {
933
+      position: absolute;
934
+      right: 20px;
935
+      top: 10px;
936
+    }
937
+
938
+    .close:hover {
939
+      color: #409EFF;
940
+      cursor: pointer;
941
+    }
942
+  }
943
+
944
+}
945
+
770 946
 .tool-box {
771 947
   position: absolute;
772 948
   top: 60px;

Laden…
Abbrechen
Speichern