lamphua 10 місяці тому
джерело
коміт
5e64b43097

+ 97
- 0
oa-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/oa/CmcDeclareController.java Переглянути файл

@@ -0,0 +1,97 @@
1
+package com.ruoyi.web.controller.oa;
2
+
3
+import java.util.List;
4
+import javax.servlet.http.HttpServletResponse;
5
+import org.springframework.beans.factory.annotation.Autowired;
6
+import org.springframework.web.bind.annotation.GetMapping;
7
+import org.springframework.web.bind.annotation.PostMapping;
8
+import org.springframework.web.bind.annotation.PutMapping;
9
+import org.springframework.web.bind.annotation.DeleteMapping;
10
+import org.springframework.web.bind.annotation.PathVariable;
11
+import org.springframework.web.bind.annotation.RequestBody;
12
+import org.springframework.web.bind.annotation.RequestMapping;
13
+import org.springframework.web.bind.annotation.RestController;
14
+import com.ruoyi.common.annotation.Log;
15
+import com.ruoyi.common.core.controller.BaseController;
16
+import com.ruoyi.common.core.domain.AjaxResult;
17
+import com.ruoyi.common.enums.BusinessType;
18
+import com.ruoyi.oa.domain.CmcDeclare;
19
+import com.ruoyi.oa.service.ICmcDeclareService;
20
+import com.ruoyi.common.utils.poi.ExcelUtil;
21
+import com.ruoyi.common.core.page.TableDataInfo;
22
+
23
+/**
24
+ * 工作填报Controller
25
+ * 
26
+ * @author cmc
27
+ * @date 2024-08-14
28
+ */
29
+@RestController
30
+@RequestMapping("/oa/declare")
31
+public class CmcDeclareController extends BaseController
32
+{
33
+    @Autowired
34
+    private ICmcDeclareService cmcDeclareService;
35
+
36
+    /**
37
+     * 查询工作填报列表
38
+     */
39
+    @GetMapping("/list")
40
+    public TableDataInfo list(CmcDeclare cmcDeclare)
41
+    {
42
+        startPage();
43
+        List<CmcDeclare> list = cmcDeclareService.selectCmcDeclareList(cmcDeclare);
44
+        return getDataTable(list);
45
+    }
46
+
47
+    /**
48
+     * 导出工作填报列表
49
+     */
50
+    @Log(title = "工作填报", businessType = BusinessType.EXPORT)
51
+    @PostMapping("/export")
52
+    public void export(HttpServletResponse response, CmcDeclare cmcDeclare)
53
+    {
54
+        List<CmcDeclare> list = cmcDeclareService.selectCmcDeclareList(cmcDeclare);
55
+        ExcelUtil<CmcDeclare> util = new ExcelUtil<CmcDeclare>(CmcDeclare.class);
56
+        util.exportExcel(response, list, "工作填报数据");
57
+    }
58
+
59
+    /**
60
+     * 获取工作填报详细信息
61
+     */
62
+    @GetMapping(value = "/{formId}")
63
+    public AjaxResult getInfo(@PathVariable("formId") String formId)
64
+    {
65
+        return success(cmcDeclareService.selectCmcDeclareByFormId(formId));
66
+    }
67
+
68
+    /**
69
+     * 新增工作填报
70
+     */
71
+    @Log(title = "工作填报", businessType = BusinessType.INSERT)
72
+    @PostMapping
73
+    public AjaxResult add(@RequestBody CmcDeclare cmcDeclare)
74
+    {
75
+        return toAjax(cmcDeclareService.insertCmcDeclare(cmcDeclare));
76
+    }
77
+
78
+    /**
79
+     * 修改工作填报
80
+     */
81
+    @Log(title = "工作填报", businessType = BusinessType.UPDATE)
82
+    @PutMapping
83
+    public AjaxResult edit(@RequestBody CmcDeclare cmcDeclare)
84
+    {
85
+        return toAjax(cmcDeclareService.updateCmcDeclare(cmcDeclare));
86
+    }
87
+
88
+    /**
89
+     * 删除工作填报
90
+     */
91
+    @Log(title = "工作填报", businessType = BusinessType.DELETE)
92
+	@DeleteMapping("/{formIds}")
93
+    public AjaxResult remove(@PathVariable String[] formIds)
94
+    {
95
+        return toAjax(cmcDeclareService.deleteCmcDeclareByFormIds(formIds));
96
+    }
97
+}

+ 240
- 0
oa-back/ruoyi-system/src/main/java/com/ruoyi/oa/domain/CmcDeclare.java Переглянути файл

@@ -0,0 +1,240 @@
1
+package com.ruoyi.oa.domain;
2
+
3
+import java.math.BigDecimal;
4
+import java.util.Date;
5
+import com.fasterxml.jackson.annotation.JsonFormat;
6
+import com.ruoyi.common.core.domain.entity.SysUser;
7
+import org.apache.commons.lang3.builder.ToStringBuilder;
8
+import org.apache.commons.lang3.builder.ToStringStyle;
9
+import com.ruoyi.common.annotation.Excel;
10
+import com.ruoyi.common.core.domain.BaseEntity;
11
+
12
+/**
13
+ * 工作填报对象 cmc_declare
14
+ * 
15
+ * @author cmc
16
+ * @date 2024-08-14
17
+ */
18
+public class CmcDeclare extends BaseEntity
19
+{
20
+    private static final long serialVersionUID = 1L;
21
+
22
+    /** 填报id */
23
+    private String formId;
24
+
25
+    /** 项目id */
26
+    private String projectId;
27
+    @Excel(name = "项目编号")
28
+    private String projectNumber;
29
+    @Excel(name = "项目名称")
30
+    private String projectName;
31
+
32
+    /** 用户id */
33
+    @Excel(name = "填报人")
34
+    private String userName;
35
+    private Long userId;
36
+
37
+    /** 工作类别(内业、外业等) */
38
+    @Excel(name = "工作类别", readConverterExp = "内=业、外业等")
39
+    private String workType;
40
+
41
+    /** 工作项目 */
42
+    @Excel(name = "工作项目")
43
+    private String workItem;
44
+
45
+    /** 工作内容(每日工作日志) */
46
+    @Excel(name = "工作内容", readConverterExp = "每=日工作日志")
47
+    private String workContent;
48
+
49
+    /** 工天 */
50
+    @Excel(name = "工天")
51
+    private String workLoad;
52
+
53
+    /** 工天单价 */
54
+    @Excel(name = "工天单价")
55
+    private BigDecimal price;
56
+
57
+    /** 系数 */
58
+    @Excel(name = "系数")
59
+    private String coefficient;
60
+
61
+    /** 一审状态(0-未审核,1已审核) */
62
+    @Excel(name = "一审状态", readConverterExp = "0=-未审核,1已审核")
63
+    private String checkStatus;
64
+
65
+    /** 二审状态(0-未审核,1已审核) */
66
+    @Excel(name = "二审状态", readConverterExp = "0=-未审核,1已审核")
67
+    private String auditStatus;
68
+
69
+    /** 填报时间 */
70
+    @JsonFormat(pattern = "yyyy-MM-dd")
71
+    @Excel(name = "填报时间", width = 30, dateFormat = "yyyy-MM-dd")
72
+    private Date submitTime;
73
+
74
+    /** 确认状态 */
75
+    @Excel(name = "确认状态")
76
+    private String confirmStatus;
77
+
78
+    private SysUser user;
79
+
80
+    private CmcProject project;
81
+
82
+    public void setFormId(String formId) 
83
+    {
84
+        this.formId = formId;
85
+    }
86
+
87
+    public String getFormId() 
88
+    {
89
+        return formId;
90
+    }
91
+    public void setProjectId(String projectId) 
92
+    {
93
+        this.projectId = projectId;
94
+    }
95
+
96
+    public String getProjectId() 
97
+    {
98
+        return projectId;
99
+    }
100
+    public void setProject(CmcProject project)
101
+    {
102
+        this.project = project;
103
+        this.projectNumber = project == null ? "" : project.getProjectNumber();
104
+        this.projectName = project == null ? "" : project.getProjectName();
105
+    }
106
+
107
+    public CmcProject getProject()
108
+    {
109
+        return project;
110
+    }
111
+
112
+    public void setUserId(Long userId)
113
+    {
114
+        this.userId = userId;
115
+    }
116
+
117
+    public Long getUserId()
118
+    {
119
+        return userId;
120
+    }
121
+    public void setUser(SysUser user)
122
+    {
123
+        this.user = user;
124
+        this.userName = user == null ? "" : user.getNickName();
125
+    }
126
+
127
+    public SysUser getUser()
128
+    {
129
+        return user;
130
+    }
131
+    public void setWorkType(String workType) 
132
+    {
133
+        this.workType = workType;
134
+    }
135
+
136
+    public String getWorkType() 
137
+    {
138
+        return workType;
139
+    }
140
+    public void setWorkItem(String workItem) 
141
+    {
142
+        this.workItem = workItem;
143
+    }
144
+
145
+    public String getWorkItem() 
146
+    {
147
+        return workItem;
148
+    }
149
+    public void setWorkContent(String workContent) 
150
+    {
151
+        this.workContent = workContent;
152
+    }
153
+
154
+    public String getWorkContent() 
155
+    {
156
+        return workContent;
157
+    }
158
+    public void setWorkLoad(String workLoad) 
159
+    {
160
+        this.workLoad = workLoad;
161
+    }
162
+
163
+    public String getWorkLoad() 
164
+    {
165
+        return workLoad;
166
+    }
167
+    public void setPrice(BigDecimal price) 
168
+    {
169
+        this.price = price;
170
+    }
171
+
172
+    public BigDecimal getPrice() 
173
+    {
174
+        return price;
175
+    }
176
+    public void setCoefficient(String coefficient) 
177
+    {
178
+        this.coefficient = coefficient;
179
+    }
180
+
181
+    public String getCoefficient() 
182
+    {
183
+        return coefficient;
184
+    }
185
+    public void setCheckStatus(String checkStatus) 
186
+    {
187
+        this.checkStatus = checkStatus;
188
+    }
189
+
190
+    public String getCheckStatus() 
191
+    {
192
+        return checkStatus;
193
+    }
194
+    public void setAuditStatus(String auditStatus) 
195
+    {
196
+        this.auditStatus = auditStatus;
197
+    }
198
+
199
+    public String getAuditStatus() 
200
+    {
201
+        return auditStatus;
202
+    }
203
+    public void setSubmitTime(Date submitTime) 
204
+    {
205
+        this.submitTime = submitTime;
206
+    }
207
+
208
+    public Date getSubmitTime() 
209
+    {
210
+        return submitTime;
211
+    }
212
+    public void setConfirmStatus(String confirmStatus) 
213
+    {
214
+        this.confirmStatus = confirmStatus;
215
+    }
216
+
217
+    public String getConfirmStatus() 
218
+    {
219
+        return confirmStatus;
220
+    }
221
+
222
+    @Override
223
+    public String toString() {
224
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
225
+            .append("formId", getFormId())
226
+            .append("projectId", getProjectId())
227
+            .append("userId", getUserId())
228
+            .append("workType", getWorkType())
229
+            .append("workItem", getWorkItem())
230
+            .append("workContent", getWorkContent())
231
+            .append("workLoad", getWorkLoad())
232
+            .append("price", getPrice())
233
+            .append("coefficient", getCoefficient())
234
+            .append("checkStatus", getCheckStatus())
235
+            .append("auditStatus", getAuditStatus())
236
+            .append("submitTime", getSubmitTime())
237
+            .append("confirmStatus", getConfirmStatus())
238
+            .toString();
239
+    }
240
+}

+ 61
- 0
oa-back/ruoyi-system/src/main/java/com/ruoyi/oa/mapper/CmcDeclareMapper.java Переглянути файл

@@ -0,0 +1,61 @@
1
+package com.ruoyi.oa.mapper;
2
+
3
+import java.util.List;
4
+import com.ruoyi.oa.domain.CmcDeclare;
5
+
6
+/**
7
+ * 工作填报Mapper接口
8
+ * 
9
+ * @author cmc
10
+ * @date 2024-08-14
11
+ */
12
+public interface CmcDeclareMapper 
13
+{
14
+    /**
15
+     * 查询工作填报
16
+     * 
17
+     * @param formId 工作填报主键
18
+     * @return 工作填报
19
+     */
20
+    public CmcDeclare selectCmcDeclareByFormId(String formId);
21
+
22
+    /**
23
+     * 查询工作填报列表
24
+     * 
25
+     * @param cmcDeclare 工作填报
26
+     * @return 工作填报集合
27
+     */
28
+    public List<CmcDeclare> selectCmcDeclareList(CmcDeclare cmcDeclare);
29
+
30
+    /**
31
+     * 新增工作填报
32
+     * 
33
+     * @param cmcDeclare 工作填报
34
+     * @return 结果
35
+     */
36
+    public int insertCmcDeclare(CmcDeclare cmcDeclare);
37
+
38
+    /**
39
+     * 修改工作填报
40
+     * 
41
+     * @param cmcDeclare 工作填报
42
+     * @return 结果
43
+     */
44
+    public int updateCmcDeclare(CmcDeclare cmcDeclare);
45
+
46
+    /**
47
+     * 删除工作填报
48
+     * 
49
+     * @param formId 工作填报主键
50
+     * @return 结果
51
+     */
52
+    public int deleteCmcDeclareByFormId(String formId);
53
+
54
+    /**
55
+     * 批量删除工作填报
56
+     * 
57
+     * @param formIds 需要删除的数据主键集合
58
+     * @return 结果
59
+     */
60
+    public int deleteCmcDeclareByFormIds(String[] formIds);
61
+}

+ 61
- 0
oa-back/ruoyi-system/src/main/java/com/ruoyi/oa/service/ICmcDeclareService.java Переглянути файл

@@ -0,0 +1,61 @@
1
+package com.ruoyi.oa.service;
2
+
3
+import java.util.List;
4
+import com.ruoyi.oa.domain.CmcDeclare;
5
+
6
+/**
7
+ * 工作填报Service接口
8
+ * 
9
+ * @author cmc
10
+ * @date 2024-08-14
11
+ */
12
+public interface ICmcDeclareService 
13
+{
14
+    /**
15
+     * 查询工作填报
16
+     * 
17
+     * @param formId 工作填报主键
18
+     * @return 工作填报
19
+     */
20
+    public CmcDeclare selectCmcDeclareByFormId(String formId);
21
+
22
+    /**
23
+     * 查询工作填报列表
24
+     * 
25
+     * @param cmcDeclare 工作填报
26
+     * @return 工作填报集合
27
+     */
28
+    public List<CmcDeclare> selectCmcDeclareList(CmcDeclare cmcDeclare);
29
+
30
+    /**
31
+     * 新增工作填报
32
+     * 
33
+     * @param cmcDeclare 工作填报
34
+     * @return 结果
35
+     */
36
+    public int insertCmcDeclare(CmcDeclare cmcDeclare);
37
+
38
+    /**
39
+     * 修改工作填报
40
+     * 
41
+     * @param cmcDeclare 工作填报
42
+     * @return 结果
43
+     */
44
+    public int updateCmcDeclare(CmcDeclare cmcDeclare);
45
+
46
+    /**
47
+     * 批量删除工作填报
48
+     * 
49
+     * @param formIds 需要删除的工作填报主键集合
50
+     * @return 结果
51
+     */
52
+    public int deleteCmcDeclareByFormIds(String[] formIds);
53
+
54
+    /**
55
+     * 删除工作填报信息
56
+     * 
57
+     * @param formId 工作填报主键
58
+     * @return 结果
59
+     */
60
+    public int deleteCmcDeclareByFormId(String formId);
61
+}

+ 93
- 0
oa-back/ruoyi-system/src/main/java/com/ruoyi/oa/service/impl/CmcDeclareServiceImpl.java Переглянути файл

@@ -0,0 +1,93 @@
1
+package com.ruoyi.oa.service.impl;
2
+
3
+import java.util.List;
4
+import org.springframework.beans.factory.annotation.Autowired;
5
+import org.springframework.stereotype.Service;
6
+import com.ruoyi.oa.mapper.CmcDeclareMapper;
7
+import com.ruoyi.oa.domain.CmcDeclare;
8
+import com.ruoyi.oa.service.ICmcDeclareService;
9
+
10
+/**
11
+ * 工作填报Service业务层处理
12
+ * 
13
+ * @author cmc
14
+ * @date 2024-08-14
15
+ */
16
+@Service
17
+public class CmcDeclareServiceImpl implements ICmcDeclareService 
18
+{
19
+    @Autowired
20
+    private CmcDeclareMapper cmcDeclareMapper;
21
+
22
+    /**
23
+     * 查询工作填报
24
+     * 
25
+     * @param formId 工作填报主键
26
+     * @return 工作填报
27
+     */
28
+    @Override
29
+    public CmcDeclare selectCmcDeclareByFormId(String formId)
30
+    {
31
+        return cmcDeclareMapper.selectCmcDeclareByFormId(formId);
32
+    }
33
+
34
+    /**
35
+     * 查询工作填报列表
36
+     * 
37
+     * @param cmcDeclare 工作填报
38
+     * @return 工作填报
39
+     */
40
+    @Override
41
+    public List<CmcDeclare> selectCmcDeclareList(CmcDeclare cmcDeclare)
42
+    {
43
+        return cmcDeclareMapper.selectCmcDeclareList(cmcDeclare);
44
+    }
45
+
46
+    /**
47
+     * 新增工作填报
48
+     * 
49
+     * @param cmcDeclare 工作填报
50
+     * @return 结果
51
+     */
52
+    @Override
53
+    public int insertCmcDeclare(CmcDeclare cmcDeclare)
54
+    {
55
+        return cmcDeclareMapper.insertCmcDeclare(cmcDeclare);
56
+    }
57
+
58
+    /**
59
+     * 修改工作填报
60
+     * 
61
+     * @param cmcDeclare 工作填报
62
+     * @return 结果
63
+     */
64
+    @Override
65
+    public int updateCmcDeclare(CmcDeclare cmcDeclare)
66
+    {
67
+        return cmcDeclareMapper.updateCmcDeclare(cmcDeclare);
68
+    }
69
+
70
+    /**
71
+     * 批量删除工作填报
72
+     * 
73
+     * @param formIds 需要删除的工作填报主键
74
+     * @return 结果
75
+     */
76
+    @Override
77
+    public int deleteCmcDeclareByFormIds(String[] formIds)
78
+    {
79
+        return cmcDeclareMapper.deleteCmcDeclareByFormIds(formIds);
80
+    }
81
+
82
+    /**
83
+     * 删除工作填报信息
84
+     * 
85
+     * @param formId 工作填报主键
86
+     * @return 结果
87
+     */
88
+    @Override
89
+    public int deleteCmcDeclareByFormId(String formId)
90
+    {
91
+        return cmcDeclareMapper.deleteCmcDeclareByFormId(formId);
92
+    }
93
+}

+ 129
- 0
oa-back/ruoyi-system/src/main/resources/mapper/oa/CmcDeclareMapper.xml Переглянути файл

@@ -0,0 +1,129 @@
1
+<?xml version="1.0" encoding="UTF-8" ?>
2
+<!DOCTYPE mapper
3
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
4
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
5
+<mapper namespace="com.ruoyi.oa.mapper.CmcDeclareMapper">
6
+    
7
+    <resultMap type="CmcDeclare" id="CmcDeclareResult">
8
+        <result property="formId"    column="form_id"    />
9
+        <result property="projectId"    column="project_id"    />
10
+        <result property="userId"    column="user_id"    />
11
+        <result property="workType"    column="work_type"    />
12
+        <result property="workItem"    column="work_item"    />
13
+        <result property="workContent"    column="work_content"    />
14
+        <result property="workLoad"    column="work_load"    />
15
+        <result property="price"    column="price"    />
16
+        <result property="coefficient"    column="coefficient"    />
17
+        <result property="checkStatus"    column="check_status"    />
18
+        <result property="auditStatus"    column="audit_status"    />
19
+        <result property="submitTime"    column="submit_time"    />
20
+        <result property="confirmStatus"    column="confirm_status"    />
21
+        <association property="user"    javaType="SysUser"         resultMap="UserResult" />
22
+        <association property="project"    javaType="CmcProject"         resultMap="CmcProjectResult" />
23
+    </resultMap>
24
+
25
+    <resultMap type="SysUser" id="UserResult">
26
+        <result property="userId"    column="user_id"    />
27
+        <result property="nickName"    column="nick_name"    />
28
+    </resultMap>
29
+
30
+    <sql id="selectCmcDeclareVo">
31
+        select d.form_id, d.project_id, p.project_number, p.project_name, d.user_id, u.nick_name, d.work_type, d.work_item, d.work_content, d.work_load, d.price, d.coefficient, d.check_status, d.audit_status, d.submit_time, d.confirm_status from cmc_declare as d
32
+        left join sys_user as u on u.user_id = d.user_id
33
+        left join cmc_project as p on p.project_id = d.project_id
34
+    </sql>
35
+
36
+    <resultMap type="CmcProject" id="CmcProjectResult">
37
+        <result property="projectId"    column="project_id"    />
38
+        <result property="projectNumber"    column="project_number"    />
39
+        <result property="projectName"    column="project_name"    />
40
+    </resultMap>
41
+
42
+    <select id="selectCmcDeclareList" parameterType="CmcDeclare" resultMap="CmcDeclareResult">
43
+        <include refid="selectCmcDeclareVo"/>
44
+        <where>  
45
+            <if test="projectId != null  and projectId != ''"> and d.project_id = #{projectId}</if>
46
+            <if test="userId != null"> and d.user_id = #{userId}</if>
47
+            <if test="workType != null  and workType != ''"> and d.work_type = #{workType}</if>
48
+            <if test="workItem != null  and workItem != ''"> and d.work_item = #{workItem}</if>
49
+            <if test="workContent != null  and workContent != ''"> and d.work_content = #{workContent}</if>
50
+            <if test="workLoad != null  and workLoad != ''"> and d.work_load = #{workLoad}</if>
51
+            <if test="price != null "> and d.price = #{price}</if>
52
+            <if test="coefficient != null  and coefficient != ''"> and d.coefficient = #{coefficient}</if>
53
+            <if test="checkStatus != null  and checkStatus != ''"> and d.check_status = #{checkStatus}</if>
54
+            <if test="auditStatus != null  and auditStatus != ''"> and d.audit_status = #{auditStatus}</if>
55
+            <if test="submitTime != null "> and d.submit_time = #{submitTime}</if>
56
+            <if test="confirmStatus != null  and confirmStatus != ''"> and d.confirm_status = #{confirmStatus}</if>
57
+        </where>
58
+        order by d.submit_time desc
59
+    </select>
60
+    
61
+    <select id="selectCmcDeclareByFormId" parameterType="String" resultMap="CmcDeclareResult">
62
+        <include refid="selectCmcDeclareVo"/>
63
+        where d.form_id = #{formId}
64
+    </select>
65
+        
66
+    <insert id="insertCmcDeclare" parameterType="CmcDeclare">
67
+        insert into cmc_declare
68
+        <trim prefix="(" suffix=")" suffixOverrides=",">
69
+            <if test="formId != null">form_id,</if>
70
+            <if test="projectId != null">project_id,</if>
71
+            <if test="userId != null">user_id,</if>
72
+            <if test="workType != null">work_type,</if>
73
+            <if test="workItem != null">work_item,</if>
74
+            <if test="workContent != null">work_content,</if>
75
+            <if test="workLoad != null">work_load,</if>
76
+            <if test="price != null">price,</if>
77
+            <if test="coefficient != null">coefficient,</if>
78
+            <if test="checkStatus != null">check_status,</if>
79
+            <if test="auditStatus != null">audit_status,</if>
80
+            <if test="submitTime != null">submit_time,</if>
81
+            <if test="confirmStatus != null">confirm_status,</if>
82
+         </trim>
83
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
84
+            <if test="formId != null">#{formId},</if>
85
+            <if test="projectId != null">#{projectId},</if>
86
+            <if test="userId != null">#{userId},</if>
87
+            <if test="workType != null">#{workType},</if>
88
+            <if test="workItem != null">#{workItem},</if>
89
+            <if test="workContent != null">#{workContent},</if>
90
+            <if test="workLoad != null">#{workLoad},</if>
91
+            <if test="price != null">#{price},</if>
92
+            <if test="coefficient != null">#{coefficient},</if>
93
+            <if test="checkStatus != null">#{checkStatus},</if>
94
+            <if test="auditStatus != null">#{auditStatus},</if>
95
+            <if test="submitTime != null">#{submitTime},</if>
96
+            <if test="confirmStatus != null">#{confirmStatus},</if>
97
+         </trim>
98
+    </insert>
99
+
100
+    <update id="updateCmcDeclare" parameterType="CmcDeclare">
101
+        update cmc_declare
102
+        <trim prefix="SET" suffixOverrides=",">
103
+            <if test="projectId != null">project_id = #{projectId},</if>
104
+            <if test="userId != null">user_id = #{userId},</if>
105
+            <if test="workType != null">work_type = #{workType},</if>
106
+            <if test="workItem != null">work_item = #{workItem},</if>
107
+            <if test="workContent != null">work_content = #{workContent},</if>
108
+            <if test="workLoad != null">work_load = #{workLoad},</if>
109
+            <if test="price != null">price = #{price},</if>
110
+            <if test="coefficient != null">coefficient = #{coefficient},</if>
111
+            <if test="checkStatus != null">check_status = #{checkStatus},</if>
112
+            <if test="auditStatus != null">audit_status = #{auditStatus},</if>
113
+            <if test="submitTime != null">submit_time = #{submitTime},</if>
114
+            <if test="confirmStatus != null">confirm_status = #{confirmStatus},</if>
115
+        </trim>
116
+        where form_id = #{formId}
117
+    </update>
118
+
119
+    <delete id="deleteCmcDeclareByFormId" parameterType="String">
120
+        delete from cmc_declare where form_id = #{formId}
121
+    </delete>
122
+
123
+    <delete id="deleteCmcDeclareByFormIds" parameterType="String">
124
+        delete from cmc_declare where form_id in 
125
+        <foreach item="formId" collection="array" open="(" separator="," close=")">
126
+            #{formId}
127
+        </foreach>
128
+    </delete>
129
+</mapper>

+ 44
- 0
oa-ui/src/api/oa/declare/declare.js Переглянути файл

@@ -0,0 +1,44 @@
1
+import request from '@/utils/request'
2
+
3
+// 查询工作填报列表
4
+export function listDeclare(query) {
5
+  return request({
6
+    url: '/oa/declare/list',
7
+    method: 'get',
8
+    params: query
9
+  })
10
+}
11
+
12
+// 查询工作填报详细
13
+export function getDeclare(formId) {
14
+  return request({
15
+    url: '/oa/declare/' + formId,
16
+    method: 'get'
17
+  })
18
+}
19
+
20
+// 新增工作填报
21
+export function addDeclare(data) {
22
+  return request({
23
+    url: '/oa/declare',
24
+    method: 'post',
25
+    data: data
26
+  })
27
+}
28
+
29
+// 修改工作填报
30
+export function updateDeclare(data) {
31
+  return request({
32
+    url: '/oa/declare',
33
+    method: 'put',
34
+    data: data
35
+  })
36
+}
37
+
38
+// 删除工作填报
39
+export function delDeclare(formId) {
40
+  return request({
41
+    url: '/oa/declare/' + formId,
42
+    method: 'delete'
43
+  })
44
+}

+ 361
- 0
oa-ui/src/views/oa/declare/index.vue Переглянути файл

@@ -0,0 +1,361 @@
1
+<!--
2
+ * @Author: wrh
3
+ * @Date: 2024-08-14 14:24:11
4
+ * @LastEditors: wrh
5
+ * @LastEditTime: 2024-08-14 15:11:29
6
+-->
7
+<template>
8
+  <div class="app-container">
9
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
10
+      <el-form-item label="项目编号" prop="projectId">
11
+        <el-select v-model="queryParams.projectId" clearable filterable remote reserve-keyword placeholder="请输入项目编号"
12
+          :remote-method="remoteMethod" :loading="loading" style="width: 400px;">
13
+          <el-option v-for="project in projectList" :key="project.projectId"
14
+            :label="project.projectNumber + '-' + project.projectName" :value="project.projectId">
15
+          </el-option>
16
+        </el-select>
17
+      </el-form-item>
18
+      <el-form-item label="填报人" prop="userId">
19
+        <el-select v-model="queryParams.userId" filterable clearable @change="handleQuery">
20
+          <el-option v-for="item in $store.state.user.userList" :key="item.userId" :label="item.nickName"
21
+            :value="item.userId">
22
+          </el-option>
23
+        </el-select>
24
+      </el-form-item>
25
+      <el-form-item label="工作项目" prop="workItem">
26
+        <el-input
27
+          v-model="queryParams.workItem"
28
+          placeholder="请输入工作项目"
29
+          clearable
30
+          @keyup.enter.native="handleQuery"
31
+        />
32
+      </el-form-item>
33
+      <el-form-item label="填报时间" prop="submitTime">
34
+        <el-date-picker clearable
35
+          v-model="queryParams.submitTime"
36
+          type="date"
37
+          value-format="yyyy-MM-dd"
38
+          placeholder="请选择填报时间">
39
+        </el-date-picker>
40
+      </el-form-item>
41
+      <el-form-item>
42
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
43
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
44
+      </el-form-item>
45
+    </el-form>
46
+
47
+    <el-row :gutter="10" class="mb8">
48
+      <!-- <el-col :span="1.5">
49
+        <el-button
50
+          type="primary"
51
+          plain
52
+          icon="el-icon-plus"
53
+          size="mini"
54
+          @click="handleAdd"
55
+          v-hasPermi="['oa:declare:add']"
56
+        >新增</el-button>
57
+      </el-col>
58
+      <el-col :span="1.5">
59
+        <el-button
60
+          type="success"
61
+          plain
62
+          icon="el-icon-edit"
63
+          size="mini"
64
+          :disabled="single"
65
+          @click="handleUpdate"
66
+          v-hasPermi="['oa:declare:edit']"
67
+        >修改</el-button>
68
+      </el-col>
69
+      <el-col :span="1.5">
70
+        <el-button
71
+          type="danger"
72
+          plain
73
+          icon="el-icon-delete"
74
+          size="mini"
75
+          :disabled="multiple"
76
+          @click="handleDelete"
77
+          v-hasPermi="['oa:declare:remove']"
78
+        >删除</el-button>
79
+      </el-col> -->
80
+      <el-col :span="1.5">
81
+        <el-button
82
+          type="warning"
83
+          plain
84
+          icon="el-icon-download"
85
+          size="mini"
86
+          @click="handleExport"
87
+          v-hasPermi="['oa:declare:export']"
88
+        >导出</el-button>
89
+      </el-col>
90
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
91
+    </el-row>
92
+
93
+    <el-table v-loading="loading" :data="declareList" @selection-change="handleSelectionChange">
94
+      <el-table-column type="selection" width="55" align="center" />
95
+      <!-- <el-table-column label="填报id" align="center" prop="formId" /> -->
96
+      <el-table-column label="项目编号" align="center" prop="project.projectNumber" />
97
+      <el-table-column label="项目名称" align="center" prop="project.projectName" />
98
+      <el-table-column label="填报人" align="center" prop="user.nickName" />
99
+      <el-table-column label="工作类别" align="center" prop="workType" />
100
+      <el-table-column label="工作项目" align="center" prop="workItem" />
101
+      <el-table-column label="工作内容" align="center" prop="workContent" />
102
+      <el-table-column label="工天" align="center" prop="workLoad" />
103
+      <el-table-column label="工天单价" align="center" prop="price" />
104
+      <el-table-column label="系数" align="center" prop="coefficient" />
105
+      <el-table-column label="一审状态" align="center" prop="checkStatus">
106
+        <template slot-scope="scope">
107
+          <span>{{ scope.row.checkStatus == '0' ? '待审核' : '已审核' }}</span>
108
+        </template>
109
+      </el-table-column>
110
+      <el-table-column label="二审状态" align="center" prop="auditStatus">
111
+        <template slot-scope="scope">
112
+          <span>{{ scope.row.auditStatus == '0' ? '待审核' : '已审核' }}</span>
113
+        </template>
114
+      </el-table-column>
115
+      <el-table-column label="填报时间" align="center" prop="submitTime" width="180">
116
+        <template slot-scope="scope">
117
+          <span>{{ parseTime(scope.row.submitTime, '{y}-{m}-{d}') }}</span>
118
+        </template>
119
+      </el-table-column>
120
+      <el-table-column label="确认状态" align="center" prop="confirmStatus">
121
+        <template slot-scope="scope">
122
+          <span>{{ scope.row.confirmStatus == '0' ? '待确认' : '已确认' }}</span>
123
+        </template>
124
+      </el-table-column>
125
+      <!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
126
+        <template slot-scope="scope">
127
+          <el-button
128
+            size="mini"
129
+            type="text"
130
+            icon="el-icon-edit"
131
+            @click="handleUpdate(scope.row)"
132
+            v-hasPermi="['oa:declare:edit']"
133
+          >修改</el-button>
134
+          <el-button
135
+            size="mini"
136
+            type="text"
137
+            icon="el-icon-delete"
138
+            @click="handleDelete(scope.row)"
139
+            v-hasPermi="['oa:declare:remove']"
140
+          >删除</el-button>
141
+        </template>
142
+      </el-table-column> -->
143
+    </el-table>
144
+    
145
+    <pagination
146
+      v-show="total>0"
147
+      :total="total"
148
+      :page.sync="queryParams.pageNum"
149
+      :limit.sync="queryParams.pageSize"
150
+      @pagination="getList"
151
+    />
152
+
153
+    <!-- 添加或修改工作填报对话框 -->
154
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
155
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
156
+        <el-form-item label="项目id" prop="projectId">
157
+          <el-input v-model="form.projectId" placeholder="请输入项目id" />
158
+        </el-form-item>
159
+        <el-form-item label="用户id" prop="userId">
160
+          <el-input v-model="form.userId" placeholder="请输入用户id" />
161
+        </el-form-item>
162
+        <el-form-item label="工作项目" prop="workItem">
163
+          <el-input v-model="form.workItem" placeholder="请输入工作项目" />
164
+        </el-form-item>
165
+        <el-form-item label="工作内容">
166
+          <editor v-model="form.workContent" :min-height="192"/>
167
+        </el-form-item>
168
+        <el-form-item label="工天" prop="workLoad">
169
+          <el-input v-model="form.workLoad" placeholder="请输入工天" />
170
+        </el-form-item>
171
+        <el-form-item label="工天单价" prop="price">
172
+          <el-input v-model="form.price" placeholder="请输入工天单价" />
173
+        </el-form-item>
174
+        <el-form-item label="系数" prop="coefficient">
175
+          <el-input v-model="form.coefficient" placeholder="请输入系数" />
176
+        </el-form-item>
177
+        <el-form-item label="填报时间" prop="submitTime">
178
+          <el-date-picker clearable
179
+            v-model="form.submitTime"
180
+            type="date"
181
+            value-format="yyyy-MM-dd"
182
+            placeholder="请选择填报时间">
183
+          </el-date-picker>
184
+        </el-form-item>
185
+      </el-form>
186
+      <div slot="footer" class="dialog-footer">
187
+        <el-button type="primary" @click="submitForm">确 定</el-button>
188
+        <el-button @click="cancel">取 消</el-button>
189
+      </div>
190
+    </el-dialog>
191
+  </div>
192
+</template>
193
+
194
+<script>
195
+import { listDeclare, getDeclare, delDeclare, addDeclare, updateDeclare } from "@/api/oa/declare/declare";
196
+import { listProject } from '@/api/oa/project/project';
197
+
198
+export default {
199
+  name: "Declare",
200
+  data() {
201
+    return {
202
+      // 遮罩层
203
+      loading: true,
204
+      // 选中数组
205
+      ids: [],
206
+      // 非单个禁用
207
+      single: true,
208
+      // 非多个禁用
209
+      multiple: true,
210
+      // 显示搜索条件
211
+      showSearch: true,
212
+      // 总条数
213
+      total: 0,
214
+      // 工作填报表格数据
215
+      declareList: [],
216
+      projectList: [],
217
+      // 弹出层标题
218
+      title: "",
219
+      // 是否显示弹出层
220
+      open: false,
221
+      // 查询参数
222
+      queryParams: {
223
+        pageNum: 1,
224
+        pageSize: 10,
225
+        projectId: null,
226
+        userId: null,
227
+        workType: null,
228
+        workItem: null,
229
+        workContent: null,
230
+        workLoad: null,
231
+        price: null,
232
+        coefficient: null,
233
+        checkStatus: null,
234
+        auditStatus: null,
235
+        submitTime: null,
236
+        confirmStatus: null
237
+      },
238
+      // 表单参数
239
+      form: {},
240
+      // 表单校验
241
+      rules: {
242
+      }
243
+    };
244
+  },
245
+  created() {
246
+    this.getList();
247
+  },
248
+  methods: {
249
+    /** 查询工作填报列表 */
250
+    getList() {
251
+      this.loading = true;
252
+      listDeclare(this.queryParams).then(response => {
253
+        this.declareList = response.rows;
254
+        this.total = response.total;
255
+        this.loading = false;
256
+      });
257
+    },
258
+    // 取消按钮
259
+    cancel() {
260
+      this.open = false;
261
+      this.reset();
262
+    },
263
+    remoteMethod(val) {
264
+      listProject({
265
+        pageNum: 1,
266
+        pageSize: 20,
267
+        projectNumber: val
268
+      }).then(res => {
269
+        this.projectList = res.rows;
270
+      })
271
+    },
272
+    // 表单重置
273
+    reset() {
274
+      this.form = {
275
+        formId: null,
276
+        projectId: null,
277
+        userId: null,
278
+        workType: null,
279
+        workItem: null,
280
+        workContent: null,
281
+        workLoad: null,
282
+        price: null,
283
+        coefficient: null,
284
+        checkStatus: null,
285
+        auditStatus: null,
286
+        submitTime: null,
287
+        confirmStatus: null
288
+      };
289
+      this.resetForm("form");
290
+    },
291
+    /** 搜索按钮操作 */
292
+    handleQuery() {
293
+      this.queryParams.pageNum = 1;
294
+      this.getList();
295
+    },
296
+    /** 重置按钮操作 */
297
+    resetQuery() {
298
+      this.resetForm("queryForm");
299
+      this.handleQuery();
300
+    },
301
+    // 多选框选中数据
302
+    handleSelectionChange(selection) {
303
+      this.ids = selection.map(item => item.formId)
304
+      this.single = selection.length!==1
305
+      this.multiple = !selection.length
306
+    },
307
+    /** 新增按钮操作 */
308
+    handleAdd() {
309
+      this.reset();
310
+      this.open = true;
311
+      this.title = "添加工作填报";
312
+    },
313
+    /** 修改按钮操作 */
314
+    handleUpdate(row) {
315
+      this.reset();
316
+      const formId = row.formId || this.ids
317
+      getDeclare(formId).then(response => {
318
+        this.form = response.data;
319
+        this.open = true;
320
+        this.title = "修改工作填报";
321
+      });
322
+    },
323
+    /** 提交按钮 */
324
+    submitForm() {
325
+      this.$refs["form"].validate(valid => {
326
+        if (valid) {
327
+          if (this.form.formId != null) {
328
+            updateDeclare(this.form).then(response => {
329
+              this.$modal.msgSuccess("修改成功");
330
+              this.open = false;
331
+              this.getList();
332
+            });
333
+          } else {
334
+            addDeclare(this.form).then(response => {
335
+              this.$modal.msgSuccess("新增成功");
336
+              this.open = false;
337
+              this.getList();
338
+            });
339
+          }
340
+        }
341
+      });
342
+    },
343
+    /** 删除按钮操作 */
344
+    handleDelete(row) {
345
+      const formIds = row.formId || this.ids;
346
+      this.$modal.confirm('是否确认删除工作填报编号为"' + formIds + '"的数据项?').then(function() {
347
+        return delDeclare(formIds);
348
+      }).then(() => {
349
+        this.getList();
350
+        this.$modal.msgSuccess("删除成功");
351
+      }).catch(() => {});
352
+    },
353
+    /** 导出按钮操作 */
354
+    handleExport() {
355
+      this.download('oa/declare/export', {
356
+        ...this.queryParams
357
+      }, `declare_${new Date().getTime()}.xlsx`)
358
+    }
359
+  }
360
+};
361
+</script>

Завантаження…
Відмінити
Зберегти