Browse Source

fix: 工作考核优化

zhangying 5 days ago
parent
commit
473e9b4711

+ 16 - 9
src/main/java/com/ghsc/partybuild/controller/CheckDataController.java

@@ -61,7 +61,7 @@ public class CheckDataController {
     @ResponseBody
     @GetMapping("/getCheckScoreList")
     public RequsetData<PageInfo<HashMap<String, Object>>> getCheckScoreList(int pageindex, int pagesize, Integer year, Integer quarter, String dzzdm
-            , String checkUserName, Float minScore, Float maxScore, Integer recordStatus) {
+            , String checkUserName, Float minScore, Float maxScore, Integer recordStatus, String roleID, String userid) {
         RequsetData<PageInfo<HashMap<String, Object>>> result = new RequsetData<>();
         //管理员看到所有数据
         final boolean isAdmin = isAdmin(userService.getLoginUser().getUserid());
@@ -69,7 +69,7 @@ public class CheckDataController {
         if(isAdmin){
             checkuserid="";
         }
-        result.setItem(checkDataService.getCheckScoreList(pageindex, pagesize, year, quarter, dzzdm, checkUserName, minScore, maxScore, recordStatus,checkuserid));
+        result.setItem(checkDataService.getCheckScoreList(pageindex, pagesize, year, quarter, dzzdm, checkUserName, minScore, maxScore, recordStatus,checkuserid, roleID, userid));
         return result;
     }
     private boolean isAdmin(String userId){
@@ -98,10 +98,10 @@ public class CheckDataController {
 
     @ResponseBody
     @PostMapping("/deleteCheckNameList")
-    public RequsetData<Integer> deleteCheckNameList(@RequestBody List<String> nameIdList) {
+    public RequsetData<Integer> deleteCheckNameList(@RequestBody Map<String, Object> data) {
         RequsetData<Integer> res = new RequsetData<>();
         res.setMsg("删除成功!");
-        res.setItem(checkDataService.deleteCheckNameList(nameIdList));
+        res.setItem(checkDataService.deleteCheckNameList((List<String>) data.get("nameIdList")));
         return res;
     }
 
@@ -126,9 +126,9 @@ public class CheckDataController {
 
     @ResponseBody
     @GetMapping("/getCheckDataList")
-    public RequsetData<PageInfo<HashMap<String, Object>>> getCheckDataList(int pageindex, int pagesize, Integer year, String dzzdm, String remark) {
+    public RequsetData<PageInfo<HashMap<String, Object>>> getCheckDataList(int pageindex, int pagesize, Integer year, String dzzdm, String remark, String roleID, String userid) {
         RequsetData<PageInfo<HashMap<String, Object>>> result = new RequsetData<>();
-        result.setItem(checkDataService.getCheckDataList(pageindex, pagesize, year, dzzdm, remark));
+        result.setItem(checkDataService.getCheckDataList(pageindex, pagesize, year, dzzdm, remark, roleID, userid));
         return result;
     }
 
@@ -197,10 +197,10 @@ public class CheckDataController {
 
     @RequestMapping(value = "/exportCheckData", method = RequestMethod.GET)
     public void exportCheckData(HttpServletResponse response,
-                                Integer year, String dzzdm, String remark) throws Exception {
+                                Integer year, String dzzdm, String remark, String roleID, String userid) throws Exception {
 
         /**查询数据**/
-        List<HashMap<String, Object>> dataList = checkDataService.getCheckDataList(1, 9999, year, dzzdm, remark).getList();
+        List<HashMap<String, Object>> dataList = checkDataService.getCheckDataList(1, 9999, year, dzzdm, remark, roleID, userid).getList();
 
         ExcelHelper excelHelper = new ExcelHelper();
         ExcelHelper.ExcelData data = excelHelper.new ExcelData();
@@ -251,9 +251,15 @@ public class CheckDataController {
             ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
 
             for (HashMap<String, Object> item : dataList) {
+                if (!item.containsKey("fileurl") || item.get("fileurl") == null || item.get("fileurl").toString().isEmpty()) {
+                    continue;
+                }
                 //打包显示的文件名
                 String fileExt = item.get("fileurl").toString().substring(item.get("fileurl").toString().lastIndexOf(".")).toLowerCase();
-                out.putNextEntry(new ZipEntry(String.format("%s_%s(%s)%s", item.get("dzzdm").toString(), item.get("checkdatausername"), item.get("dzzmc"), fileExt)));
+                // 获取原始文件名(如果 filename 本身带扩展名,需要去除)
+                String originalFilename = item.get("filename").toString();
+                String filenameWithoutExt = originalFilename.substring(0, originalFilename.lastIndexOf('.'));
+                out.putNextEntry(new ZipEntry(String.format("%s%s", filenameWithoutExt, fileExt)));
                 ftpClient.retrieveFile(item.get("fileurl").toString(), out);
                 out.flush();
                 out.closeEntry();
@@ -286,6 +292,7 @@ public class CheckDataController {
                     ie.printStackTrace();
                 }
             }
+            e.printStackTrace();
             throw new RuntimeException();
         }
         return "";

+ 2 - 0
src/main/java/com/ghsc/partybuild/mapper/CfUsersCQuery.java

@@ -16,6 +16,8 @@ import java.util.Map;
 public interface CfUsersCQuery {
     List<HashMap<String, Object>> selectUserAll(@Param("username") String userName);
 
+    List<HashMap<String, Object>> selectUserAllByUserID(@Param("userID") String userID);
+
     List<HashMap<String, Object>> getMenuByUid(@Param("userid") String userID, @Param("appid") String appID);
 
     /**

+ 3 - 3
src/main/java/com/ghsc/partybuild/mapper/PtCheckdataCQuery.java

@@ -9,13 +9,13 @@ import java.util.List;
 @Repository
 public interface PtCheckdataCQuery {
 
-    List<HashMap<String,Object>> selectCheckNameList(Integer year, Integer quarter, String dzzdm, String checkUserName, String partyCode,Integer recordStatus);
+    List<HashMap<String,Object>> selectCheckNameList(Integer year, Integer quarter, String dzzdm, String checkUserName, String partyCode,Integer recordStatus, String checkuserid);
 
     List<HashMap<String,Object>> selectCheckPartyList(Integer year, Integer quarter);
 
-    List<HashMap<String,Object>> selectCheckDataList(Integer year, String dzzdm, String remark);
+    List<HashMap<String,Object>> selectCheckDataList(Integer year, String dzzdm, String remark, String dzzdmInStr);
 
     List<HashMap<String,Object>> selectCheckDataFleList(@Param("year") String year);
 
-    List<HashMap<String,Object>> selectCheckScoreList(Integer year, Integer quarter, String dzzdm, String checkUserName, Float minScore,Float maxScore,Integer recordStatus,String checkuserid);
+    List<HashMap<String,Object>> selectCheckScoreList(Integer year, Integer quarter, String dzzdm, String checkUserName, Float minScore,Float maxScore,Integer recordStatus,String checkuserid, String dzzdmInStr);
 }

+ 2 - 2
src/main/java/com/ghsc/partybuild/service/CheckDataService.java

@@ -20,7 +20,7 @@ public interface CheckDataService {
 
     Integer changeCheckNameListStatus(List<String>  nameIdList,Integer recordStatus);
 
-    PageInfo<HashMap<String, Object>> getCheckDataList(int pageIndex, int pageSize, Integer year, String dzzdm, String remark);
+    PageInfo<HashMap<String, Object>> getCheckDataList(int pageIndex, int pageSize, Integer year, String dzzdm, String remark, String roleID, String userid);
 
     List<HashMap<String, Object>> getCheckDataFleList( String year);
 
@@ -28,7 +28,7 @@ public interface CheckDataService {
 
     PtCheckdata getCheckdata(String id);
 
-    PageInfo<HashMap<String, Object>> getCheckScoreList(int pageIndex, int pageSize, Integer year, Integer quarter, String dzzdm, String checkUserName, Float minScore,Float maxScore,Integer recordStatus,String checkuserid);
+    PageInfo<HashMap<String, Object>> getCheckScoreList(int pageIndex, int pageSize, Integer year, Integer quarter, String dzzdm, String checkUserName, Float minScore,Float maxScore,Integer recordStatus,String checkuserid, String roleID, String userid);
 
     int saveCheckScore(PtCheckscore item, List<PtCheckquestion> questionList);
 

+ 65 - 8
src/main/java/com/ghsc/partybuild/service/impl/CheckDataServiceImpl.java

@@ -3,6 +3,8 @@ package com.ghsc.partybuild.service.impl;
 import com.ghsc.partybuild.mapper.*;
 import com.ghsc.partybuild.model.*;
 import com.ghsc.partybuild.service.CheckDataService;
+import com.ghsc.partybuild.service.UserService;
+import com.ghsc.partybuild.util.StringUtils;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -29,11 +31,21 @@ public class CheckDataServiceImpl implements CheckDataService {
     @Autowired
     PtCheckquestionMapper checkquestionMapper;
 
+    @Autowired
+    CfUsersCQuery cfUsersCQuery;
+
+    @Autowired
+    UserService userService;
+
+    @Autowired
+    StringUtils stringUtils;
+
+
     @Override
     public PageInfo<HashMap<String, Object>> getCheckNameList(int pageIndex, int pageSize, Integer year, Integer quarter, String dzzdm, String checkUserName, String partyCode, Integer recordStatus) {
 
         PageHelper.startPage(pageIndex, pageSize);
-        List<HashMap<String, Object>> list = checkdataCQuery.selectCheckNameList(year, quarter, dzzdm, checkUserName, partyCode, recordStatus);
+        List<HashMap<String, Object>> list = checkdataCQuery.selectCheckNameList(year, quarter, dzzdm, checkUserName, partyCode, recordStatus, null);
 
         PageInfo<HashMap<String, Object>> result = new PageInfo(list);
 
@@ -68,6 +80,17 @@ public class CheckDataServiceImpl implements CheckDataService {
             checkpartyMapper.insertSelective(it);
         });
         assetrCheckScore(item.getYear(),item.getQuarter(),item.getCheckuserid(),item.getCheckusername(),checkPartyList);
+        // 查询选择的用户是否有检查人员权限
+        List<HashMap<String, Object>> userInfo = cfUsersCQuery.selectUserAllByUserID(item.getCheckuserid());
+        if (!userInfo.isEmpty()) {
+            // 查询该用户是否绑定了检查人员角色
+            List<HashMap<String, Object>> roleList = cfUsersCQuery.GetRoleByUserId(item.getCheckuserid());
+            HashMap<String, Object> jcRole = roleList.stream().filter(it -> it.get("ROLEID").equals("27f0fd61-3107-486f-9240-4f9ef909103e")).findFirst().orElse(null);
+            if (jcRole == null) {
+                // 没有检查人员角色的,绑定一个
+                userService.saveUserRoleList("27f0fd61-3107-486f-9240-4f9ef909103e", item.getCheckuserid(), false);
+            }
+        }
         return 1;
     }
 
@@ -114,6 +137,10 @@ public class CheckDataServiceImpl implements CheckDataService {
         ckExp.or().andNameidIn(nameIdList);
         checknamelistMapper.deleteByExample(ckExp);
 
+        PtCheckdataExample cdExp = new PtCheckdataExample();
+        cdExp.or().andDataidIn(nameIdList);
+        CheckdataMapper.deleteByExample(cdExp);
+
         return 1;
     }
 
@@ -130,7 +157,7 @@ public class CheckDataServiceImpl implements CheckDataService {
     @Override
     public HashMap<String, Object> getCheckName(String id) {
 
-        List<HashMap<String, Object>> list = checkdataCQuery.selectCheckNameList(null, null, null, null, null, null);
+        List<HashMap<String, Object>> list = checkdataCQuery.selectCheckNameList(null, null, null, null, null, null, null);
 
         HashMap<String, Object> item = list.stream().filter(x -> x.get("nameid").toString().equals(id)).findFirst().orElse(null);
 
@@ -138,10 +165,25 @@ public class CheckDataServiceImpl implements CheckDataService {
     }
 
     @Override
-    public PageInfo<HashMap<String, Object>> getCheckDataList(int pageIndex, int pageSize, Integer year, String dzzdm, String remark) {
-
+    public PageInfo<HashMap<String, Object>> getCheckDataList(int pageIndex, int pageSize, Integer year, String dzzdm, String remark, String roleID, String userid) {
+        // 如果是核查人员,只允许查询用户核查名单中存在的组织的材料数据
+        String dzzdmInStr = null;
+        if (!stringUtils.IsNullOrEmpty(roleID) && roleID.equals("27f0fd61-3107-486f-9240-4f9ef909103e")) {
+            List<HashMap<String, Object>> checkNameList = checkdataCQuery.selectCheckNameList(null, null, null, null, null, null, userid);
+            // 获取党组织代码
+            List<String> distinctDzzdmList = checkNameList.stream()
+                    .map(item -> item.get("partcodes"))
+                    .filter(Objects::nonNull)
+                    .map(Object::toString).distinct().collect(Collectors.toList());
+            if (!distinctDzzdmList.isEmpty()) {
+                // 拼接in查询条件
+                dzzdmInStr = distinctDzzdmList.stream()
+                        .map(s -> "'" + s.replace("'", "''") + "'")
+                        .collect(Collectors.joining(",", "", ""));
+            }
+        }
         PageHelper.startPage(pageIndex, pageSize);
-        List<HashMap<String, Object>> list = checkdataCQuery.selectCheckDataList(year, dzzdm, remark);
+        List<HashMap<String, Object>> list = checkdataCQuery.selectCheckDataList(year, dzzdm, remark, dzzdmInStr);
 
         PageInfo<HashMap<String, Object>> result = new PageInfo(list);
 
@@ -181,10 +223,25 @@ public class CheckDataServiceImpl implements CheckDataService {
     }
 
     @Override
-    public PageInfo<HashMap<String, Object>> getCheckScoreList(int pageIndex, int pageSize, Integer year, Integer quarter, String dzzdm, String checkUserName, Float minScore,Float maxScore,Integer recordStatus,String checkuserid) {
-
+    public PageInfo<HashMap<String, Object>> getCheckScoreList(int pageIndex, int pageSize, Integer year, Integer quarter, String dzzdm, String checkUserName, Float minScore,Float maxScore,Integer recordStatus,String checkuserid, String roleID, String userid) {
+        // 如果是核查人员,只允许查询用户核查名单中存在的组织的材料数据
+        String dzzdmInStr = null;
+        if (!stringUtils.IsNullOrEmpty(roleID) && roleID.equals("27f0fd61-3107-486f-9240-4f9ef909103e")) {
+            List<HashMap<String, Object>> checkNameList = checkdataCQuery.selectCheckNameList(null, null, null, null, null, null, userid);
+            // 获取党组织代码
+            List<String> distinctDzzdmList = checkNameList.stream()
+                    .map(item -> item.get("partcodes"))
+                    .filter(Objects::nonNull)
+                    .map(Object::toString).distinct().collect(Collectors.toList());
+            if (!distinctDzzdmList.isEmpty()) {
+                // 拼接in查询条件
+                dzzdmInStr = distinctDzzdmList.stream()
+                        .map(s -> "'" + s.replace("'", "''") + "'")
+                        .collect(Collectors.joining(",", "", ""));
+            }
+        }
         PageHelper.startPage(pageIndex, pageSize);
-        List<HashMap<String, Object>> list = checkdataCQuery.selectCheckScoreList( year,  quarter,  dzzdm,  checkUserName,  minScore, maxScore, recordStatus,checkuserid);
+        List<HashMap<String, Object>> list = checkdataCQuery.selectCheckScoreList( year,  quarter,  dzzdm,  checkUserName,  minScore, maxScore, recordStatus,checkuserid,dzzdmInStr);
 
         PageInfo<HashMap<String, Object>> result = new PageInfo(list);
 

+ 3 - 0
src/main/resources/mapping/CfUsersCQuery.xml

@@ -4,6 +4,9 @@
     <select id="selectUserAll" resultType="java.util.HashMap">
         select * from cf_users where UserName like Concat('%',#{username},'%')
     </select>
+    <select id="selectUserAllByUserID" resultType="java.util.HashMap">
+        select * from cf_users where USERID = #{userID}
+    </select>
     <select id="GetRoleByUserId" resultType="java.util.HashMap">
          SELECT ROLENAME,CF_ROLES.ROLEID FROM CF_USERROLES,CF_ROLES WHERE CF_USERROLES.USERID = #{userId} and CF_USERROLES.ROLEID = CF_ROLES.ROLEID
     </select>

+ 10 - 1
src/main/resources/mapping/PtCheckdataCQuery.xml

@@ -32,6 +32,9 @@
         <if test="recordStatus != null and recordStatus != ''">
             and pcnl.recordStatus =#{recordStatus}
         </if>
+        <if test="checkuserid != null and checkuserid != ''">
+            and pcnl.checkuserid = #{checkuserid}
+        </if>
         order by pcnl.year,pcnl.quarter,pcnl.createTime desc
     </select>
     <select id="selectCheckPartyList" resultType="java.util.HashMap">
@@ -61,12 +64,15 @@
         <if test="dzzdm != null and dzzdm != ''">
             and pcd.dzzdm like concat('%',#{dzzdm},'%')
         </if>
+        <if test="dzzdmInStr != null and dzzdmInStr != ''">
+            and pcd.dzzdm in (${dzzdmInStr})
+        </if>
     </select>
 
     <select id="selectCheckDataFleList" resultType="java.util.HashMap" parameterType="java.lang.String">
         select  pcd.dataid, pcd.dzzdm, pcd.year, pcd.leadingdepartment, pcd.checkdatauserid, pcd.checkdatausername, pcd.recordstatus,
                 pcd.createtime, pcd.createuserid, pcd.createusername, pcd.updatetime, pcd.updateuserid, pcd.updateusername, pcd.remark
-                ,zz.dzzmc,cf.filename,cf.fileurl
+                ,zz.dzzmc,cf.filename,cf.fileurl,cf.CREATETIME as fileCreateTime
         from pt_checkData pcd inner join  ZZ_ZZQKXX zz on pcd.dzzdm = zz.DZZDM
                               left join cf_file cf on pcd.dataId = cf.FILEREFID
         <where>
@@ -109,6 +115,9 @@
             <if test="recordStatus != null">
                 and pcs.recordStatus =#{recordStatus}
             </if>
+            <if test="dzzdmInStr != null and dzzdmInStr != ''">
+                and pcs.dzzdm in (${dzzdmInStr})
+            </if>
         </where>
     </select>
 </mapper>

+ 1 - 1
src/main/resources/static/app/main/party/checkData/edit.html

@@ -42,7 +42,7 @@
                         </table>
                     </div>
                     <bsfiles ng-model="reqFileModel"/>
-                    <div class="form_foot">
+                    <div class="form_foot" ng-show="isView">
                         <button type="button" class="btn btn-default" ng-click="$hide()">取消</button>
                         <button type="submit" class="btn btn-primary" form="editForm">提交</button>
                     </div>

+ 8 - 0
src/main/resources/static/app/main/party/checkData/list.html

@@ -87,6 +87,7 @@
                                     ng-click="export()">导出
                             </button>
                             <button class="btn btn-default1"
+                                    role-permission-code="checkData.btnAdd"
                                     ng-click="add()">新增
                             </button>
                         </div>
@@ -140,14 +141,21 @@
                                 <tbody>
                                 <tr ng-repeat="it in dataList" zero-table-height>
                                     <td class="text-center">
+                                        <button
+                                                class="btn td-btn bg-pink waves-effect"
+                                                ng-click="view(it)" title="查看">
+                                            查看
+                                        </button>
                                         <button
                                                 class="btn td-btn bg-light-green waves-effect"
                                                 ng-click="edit(it.dataid)"
+                                                role-permission-code="checkData.btnEdit"
                                                 title="修改">
                                             修改
                                         </button>
                                         <button
                                                 class="btn td-btn bg-pink waves-effect"
+                                                role-permission-code="checkData.btnDel"
                                                 ng-click="delete(it.dataid)" title="删除">
                                             删除
                                         </button>

+ 12 - 1
src/main/resources/static/app/main/party/checkData/list.js

@@ -29,6 +29,7 @@
             userid: AuthUser.getUser().Id,
             onlyshow_dw: $stateParams.type == 1 ? 1 : 0,
             remark: '',
+            roleID: AuthUser.getUser().curRoleId
         };
 
         $scope.pageInfo = {ptotal: 0};
@@ -104,12 +105,13 @@
         var editCtrl = function ($scope, $http,$partySelect,AuthUser) {
             $scope.params = editModal.params;
             $scope.dataModel = editModal.data;
+            $scope.isView = editModal.isView;
 
             $scope.reqFileModel = {
                 selectdata: {FileRefID: $scope.dataModel.dataid, pageindex: 1, pagesize: 10, ptotal: 0},//查询参数:FileRefID为文件关联ID
                 filetype: 71,//文件类型
                 items: [],//列表数据地址
-                readonly: false,//是否只能查看
+                readonly: !editModal.isView,//是否只能查看
                 title: '附件',
                 addFileButton: '上传',
                 typeparams: {
@@ -163,8 +165,17 @@
             $scope.editRedit(null,'新增名单');
         };
         $scope.edit = function (id) {
+            editModal.isView = true;
             $scope.editRedit(id,'修改名单');
         };
+        $scope.view = function (it) {
+            editModal.data = JSON.parse(JSON.stringify(it));
+            editModal.isView = false;
+            editModal.params = {
+                title: '查看考核材料'
+            };
+            editModal.$promise.then(editModal.show);
+        };
 
         $scope.editRedit =(id,title)=>{
             $http.get("../../api/checkdata/getCheckdata", {

+ 1 - 0
src/main/resources/static/app/main/party/checkScore/edit.html

@@ -81,6 +81,7 @@
                             </tbody>
                         </table>
                     </div>
+                    <bsfiles ng-model="reqFileModel"/>
                     <div class="form_foot" ng-show="isView">
                         <button type="button" class="btn btn-default" ng-click="$hide()">取消</button>
                         <button type="submit" class="btn btn-primary" form="editForm">提交</button>

+ 16 - 0
src/main/resources/static/app/main/party/checkScore/list.js

@@ -30,6 +30,8 @@
             maxScore: null,
             onlyshow_dw: $stateParams.type == 1 ? 1 : 0,
             remark: '',
+            userid: AuthUser.getUser().Id,
+            roleID: AuthUser.getUser().curRoleId
         };
 
         $scope.pageInfo = {ptotal: 0};
@@ -167,6 +169,20 @@
             $scope.deleteQuestion = (index) => {
                 $scope.questionList.splice(index, 1);
             }
+
+            $scope.reqFileModel = {
+                selectdata: {FileRefID: $scope.dataModel.scoreid, pageindex: 1, pagesize: 10, ptotal: 0},//查询参数:FileRefID为文件关联ID
+                filetype: 71,//文件类型
+                items: [],//列表数据地址
+                readonly: !editModal.isView,//是否只能查看
+                title: '附件',
+                addFileButton: '上传',
+                typeparams: {
+                    types: ['jpg', 'bmp', 'png', 'gif', 'jpe', 'jpeg','mp4','avi','txt','pdf','doc','docx','xls','xlsx'],
+                    errormsg: '格式必须为*.jpg,*.gif,*.png,*.bmp,*.jpe,*.jpeg,*.mp4,*.avi,*.txt,*.pdf,*.doc,*.docx,*.xls,*.xlsx等格式'
+                }
+            };
+
             //保存
             $scope.save = function (isflag) {
                 if (isflag) {