Prechádzať zdrojové kódy

Merge branch 'master' of http://47.100.37.243:10191/wutt/manHourHousekeeper

Lijy 1 rok pred
rodič
commit
e5e8ccbc65

+ 18 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/UserController.java

@@ -433,6 +433,24 @@ public class UserController {
         return msg;
     }
 
+    @RequestMapping("/updateUserDeptHierarchy")
+    public HttpRespMsg updateUserDeptHierarchy(Integer companyId) throws Exception {
+        HttpRespMsg httpRespMsg=new HttpRespMsg();
+        List<User> userList = userService.list(new QueryWrapper<User>().eq("company_id", companyId));
+        List<Department> departmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId));
+        List<User> updateUserList = new ArrayList<>();
+        for (User user : userList) {
+            String departmentCascade = convertDepartmentIdToCascade(user.getDepartmentId(), departmentList);
+            user.setDepartmentCascade(departmentCascade);
+            User upUser = new User();
+            upUser.setId(user.getId());
+            upUser.setDepartmentCascade(departmentCascade);
+            updateUserList.add(upUser);
+        }
+        userService.updateBatchById(updateUserList);
+        return httpRespMsg;
+    }
+
     //将部门id转换为部门层级
     private String convertDepartmentIdToCascade(Integer id, List<Department> allDeptList) {
         StringBuilder cascade = new StringBuilder();

+ 3 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ExpenseSheetServiceImpl.java

@@ -808,6 +808,9 @@ public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, Exp
         //sumRow.add("合计");
         sumRow.add(MessageUtils.message("entry.total"));
         sumRow.add(sumAmount.setScale(2,BigDecimal.ROUND_UP)+"");
+        for (int i = 0; i < titleList.size() - 2; i++) {
+            sumRow.add("");
+        }
         allList.add(sumRow);
         HttpRespMsg msg = new HttpRespMsg();
         //生成excel文件导出

+ 61 - 58
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -861,56 +861,56 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                         }
 
                         //如果不存在基线成本快照,则生成
-                        List<EarningSnapshot> earningSnapshots = earningSnapshotMapper.selectList(new QueryWrapper<EarningSnapshot>().eq("project_id", p.getId()).orderByDesc("id").last("limit 1"));
-                        boolean shouldAdd = false;
-                        if (earningSnapshots.size() == 0) {
-                            shouldAdd = true;
-                        } else {
-                            //检查是否发生变化
-                            String data = earningSnapshots.get(0).getCostData();
-                            if (data == null) {
-                                shouldAdd = true;
-                            } else {
-                                JSONArray oldArray = JSONArray.parseArray(data);
-                                if (oldArray.size() != costList.size()) {
-                                    //条目数量有变化,需要新增
-                                    shouldAdd = true;
-                                } else {
-                                    for (int i=0; i<oldArray.size(); i++) {
-                                        JSONObject jsonObject = oldArray.getJSONObject(i);
-                                        ProjectBasecost projectBasecost = JSONObject.toJavaObject(jsonObject, ProjectBasecost.class);
-                                        Optional<ProjectBasecost> first = costList.stream().filter(cost -> cost.getBaseId().equals(projectBasecost.getBaseId())).findFirst();
-                                        if (first.isPresent()) {
-                                            if (!first.get().getBaseAmount().equals(projectBasecost.getBaseAmount())) {
-                                                shouldAdd = true;
-                                                break;
-                                            }
-                                        } else {
-                                            //有新增的条目,需要增加
-                                            shouldAdd = true;
-                                            break;
-                                        }
-                                    }
-                                }
-
-                            }
-                        }
-
-                        if (shouldAdd) {
-                            EarningSnapshot record = new EarningSnapshot();
-                            record.setProjectId(p.getId());
-                            record.setCreatorId(user.getId());
-                            record.setCreatorName(user.getName());
-                            record.setContractAmount(p.getContractAmount());
-                            record.setCostData(projectBaseCostData);
-                            record.setCostTotal(p.getBudget());
-                            record.setProfit(p.getContractAmount() - p.getBudget());
-                            if (p.getContractAmount() > 0) {
-                                record.setProfitPercent(100.0*(p.getContractAmount() - p.getBudget())/p.getContractAmount());
-                                earningSnapshotMapper.insert(record);
-                            }
+//                        List<EarningSnapshot> earningSnapshots = earningSnapshotMapper.selectList(new QueryWrapper<EarningSnapshot>().eq("project_id", p.getId()).orderByDesc("id").last("limit 1"));
+//                        boolean shouldAdd = false;
+//                        if (earningSnapshots.size() == 0) {
+//                            shouldAdd = true;
+//                        } else {
+//                            //检查是否发生变化
+//                            String data = earningSnapshots.get(0).getCostData();
+//                            if (data == null) {
+//                                shouldAdd = true;
+//                            } else {
+//                                JSONArray oldArray = JSONArray.parseArray(data);
+//                                if (oldArray.size() != costList.size()) {
+//                                    //条目数量有变化,需要新增
+//                                    shouldAdd = true;
+//                                } else {
+//                                    for (int i=0; i<oldArray.size(); i++) {
+//                                        JSONObject jsonObject = oldArray.getJSONObject(i);
+//                                        ProjectBasecost projectBasecost = JSONObject.toJavaObject(jsonObject, ProjectBasecost.class);
+//                                        Optional<ProjectBasecost> first = costList.stream().filter(cost -> cost.getBaseId().equals(projectBasecost.getBaseId())).findFirst();
+//                                        if (first.isPresent()) {
+//                                            if (!first.get().getBaseAmount().equals(projectBasecost.getBaseAmount())) {
+//                                                shouldAdd = true;
+//                                                break;
+//                                            }
+//                                        } else {
+//                                            //有新增的条目,需要增加
+//                                            shouldAdd = true;
+//                                            break;
+//                                        }
+//                                    }
+//                                }
+//
+//                            }
+//                        }
 
-                        }
+//                        if (shouldAdd) {
+//                            EarningSnapshot record = new EarningSnapshot();
+//                            record.setProjectId(p.getId());
+//                            record.setCreatorId(user.getId());
+//                            record.setCreatorName(user.getName());
+//                            record.setContractAmount(p.getContractAmount());
+//                            record.setCostData(projectBaseCostData);
+//                            record.setCostTotal(p.getBudget());
+//                            record.setProfit(p.getContractAmount() - p.getBudget());
+//                            if (p.getContractAmount() > 0) {
+//                                record.setProfitPercent(100.0*(p.getContractAmount() - p.getBudget())/p.getContractAmount());
+//                                earningSnapshotMapper.insert(record);
+//                            }
+//
+//                        }
                     }
                     if (projectKeyNodesData != null) {
                         updateProjectKeyNodesData(projectKeyNodesData, p.getId());
@@ -1096,6 +1096,9 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         for (int i=0;i<array.size(); i++) {
             ProjectBasecost projectBasecost = JSONObject.toJavaObject(array.getJSONObject(i), ProjectBasecost.class);
             projectBasecost.setProjectId(projectId);
+            if (projectBasecost.getBaseAmount() == null) {
+                projectBasecost.setBaseAmount(0.0);
+            }
             Optional<ProjectCurrentcost> first = projectCurrentcostList.stream().filter(pc -> pc.getBaseId().equals(projectBasecost.getBaseId())).findFirst();
             if(first.isPresent()){
                 ProjectCurrentcost projectCurrentcost = first.get();
@@ -10239,9 +10242,9 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     sum.add("合计");
                     sum.add("");
                     sum.add("");
-                    sum.add(pTimeSum.toString());
+                    sum.add(new BigDecimal(pTimeSum).setScale(2, RoundingMode.HALF_UP).toString());
                     sum.add(new BigDecimal(pFteSum).setScale(2, RoundingMode.HALF_UP) + "");
-                    sum.add((monthTime - pTimeSum) + "");
+                    sum.add(new BigDecimal(monthTime - pTimeSum).setScale(2, RoundingMode.HALF_UP).toString());
                     pTimeSum = 0.0F;
                     pFteSum = 0.0F;
                     dataList.add(sum);
@@ -10279,9 +10282,9 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 pSum.add("合计");
                 pSum.add("");
                 pSum.add("");
-                pSum.add(pTimeSum.toString());
+                pSum.add(new BigDecimal(pTimeSum).setScale(2, RoundingMode.HALF_UP).toString());
                 pSum.add(new BigDecimal(pFteSum).setScale(2, RoundingMode.HALF_UP) + "");
-                pSum.add((monthTime - pTimeSum) + "");
+                pSum.add(new BigDecimal(monthTime - pTimeSum).setScale(2, RoundingMode.HALF_UP).toString());
                 pTimeSum = 0.0F;
                 pFteSum = 0.0F;
 
@@ -10293,10 +10296,10 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 sum.add(customName + "合计");
                 sum.add("");
                 sum.add("");
-                sum.add(aTimeSum.toString());
+                sum.add(new BigDecimal((aTimeSum)).setScale(2, RoundingMode.HALF_UP).toString());
                 //sum.add(new BigDecimal(aFteSum).setScale(2, RoundingMode.HALF_UP) + "");
                 sum.add("");
-                sum.add((monthTime - aTimeSum) + "");
+                sum.add(new BigDecimal((monthTime - aTimeSum)).setScale(2, RoundingMode.HALF_UP).toString());
                 pTimeSum = 0.0F;
                 pFteSum = 0.0F;
                 aTimeSum = 0.0F;
@@ -10340,9 +10343,9 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 pSum.add("合计");
                 pSum.add("");
                 pSum.add("");
-                pSum.add(pTimeSum.toString());
+                pSum.add(new BigDecimal(pTimeSum).setScale(2, RoundingMode.HALF_UP) + "");
                 pSum.add(new BigDecimal(pFteSum).setScale(2, RoundingMode.HALF_UP) + "");
-                pSum.add((monthTime - pTimeSum) + "");
+                pSum.add(new BigDecimal((monthTime - pTimeSum)).setScale(2, RoundingMode.HALF_UP).toString());
                 dataList.add(pSum);
 
                 ArrayList<String> sum = new ArrayList<>();
@@ -10354,7 +10357,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 sum.add(aTimeSum.toString());
                 //sum.add(new BigDecimal(aFteSum).setScale(2, RoundingMode.HALF_UP) + "");
                 sum.add("");
-                sum.add((monthTime - aTimeSum) + "");
+                sum.add(new BigDecimal((monthTime - aTimeSum)).setScale(2, RoundingMode.HALF_UP).toString());
                 dataList.add(sum);
             }
         }

+ 35 - 26
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/UserServiceImpl.java

@@ -97,6 +97,8 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
     private String dcFirst;
     @Value("${spring.ldap.base.dcSecond}")
     private String dcSecond;
+    @Value("${configEnv.isPrivateDeploy}")
+    private boolean isPrivateDeploy;
 
     public static final String GET_TOKEN_URL = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code";
     public static final String GET_USERINFO_URL = "https://api.weixin.qq.com/sns/userinfo?access_token=accessToken&openid=openId&lang=zh_CN";
@@ -1547,7 +1549,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
             cascade.append(id);
             Integer superiorId = deptList.stream().filter(d->d.getDepartmentId().equals(id)).findFirst().get().getSuperiorId();
             while (superiorId != null) {
-                cascade.append(",").append(id);
+                cascade.append(",").append(superiorId);
                 final Integer tempId = superiorId;
                 superiorId = deptList.stream().filter(d->d.getDepartmentId().equals(tempId)).findFirst().get().getSuperiorId();
             }
@@ -1715,29 +1717,32 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                 //httpRespMsg.setError("仅剩余"+canImportNum+"人可添加,请减少本次导入的人员数量或者联系客服提高人数上限。");
                 httpRespMsg.setError(MessageUtils.message("register.peopleNoEnough",canImportNum));
             } else {
-                //校验是否有重复账号
-                if (userMapper.selectCount(new QueryWrapper<User>().in("phone", phoneList)) == 0) {
-                    //检查工号是否在当前公司有重复
-                    if (jobNumList.size() > 0) {
-                        int jobNumCnt = userMapper.selectCount(new QueryWrapper<User>().eq("company_id", companyId).in("job_number", jobNumList));
-                        if (jobNumCnt > 0) {
-                            //有重复的
-                            List<User> jobNumUsers = userMapper.selectList(new QueryWrapper<User>().eq("company_id", companyId).in("job_number", jobNumList));
-                            String duplicateJobNums = jobNumUsers.stream().map(User::getJobNumber).collect(Collectors.joining(","));
-
-                            //httpRespMsg.setError("工号已存在:"+duplicateJobNums);
-                            httpRespMsg.setError(MessageUtils.message("register.jobNoExist")+duplicateJobNums);
-                        } else {
-                            saveBatch(userList);
+                //校验是否有重复账号,有重复的进行更新,没有重复的进行插入
+                List<User> userPhoneList = userMapper.selectList(new QueryWrapper<User>().in("phone", phoneList));
+                boolean hasNonCompUser = userPhoneList.stream().anyMatch(u->!u.getCompanyId().equals(companyId));
+                if (hasNonCompUser) {
+                    //httpRespMsg.setError("手机号已被其他公司使用,请检查后重试");
+                    httpRespMsg.setError(MessageUtils.message("register.phoneUsed")+":" + userPhoneList.stream().filter(u->!u.getCompanyId().equals(companyId)).map(User::getPhone).collect(Collectors.joining(",")));
+                    return httpRespMsg;
+                }
+
+                for (User oldUser : userPhoneList) {
+                    for (User newUser : userList) {
+                        if (oldUser.getPhone().equals(newUser.getPhone())) {
+                            newUser.setId(oldUser.getId())
+                                    .setPassword(null)
+                                    .setRoleId(null)
+                                    .setRoleName(null)
+                                    .setColor(null)
+                                    .setMonthCost(null)
+                                    .setCost(null)
+                                    .setSalaryType(null);
+                            break;
                         }
                     }
-                } else {
-                    List<User> existList = userMapper.selectList(new QueryWrapper<User>().in("phone", phoneList));
-                    String duplicatePhoneStr = existList.stream().map(User::getPhone).collect(Collectors.joining(","));
-                    //httpRespMsg.setError("手机号有重复 批量新建账号失败:" + duplicatePhoneStr);
-                    httpRespMsg.setError(MessageUtils.message("register.phoneRepeat",duplicatePhoneStr));
-                    /*这里以后可能需要返回重复的手机号的具体信息*/
                 }
+
+                saveOrUpdateBatch(userList);
             }
         } catch (IOException e) {
             e.printStackTrace();
@@ -2180,13 +2185,17 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
         UserVcode item = new UserVcode();
         item.setMobile(mobile);
         item.setVcode(""+vcode);
-//        userVcodeMapper.insert(item);
-        SendSmsResponse sendSmsResponse = SmsUtil.sendSms(mobile, "" + vcode);
-        if (!sendSmsResponse.getBody().getCode().equals("OK")) {
-            msg.setError(sendSmsResponse.getBody().getMessage());
-        } else {
+        if (isPrivateDeploy) {
             userVcodeMapper.insert(item);
+        } else {
+            SendSmsResponse sendSmsResponse = SmsUtil.sendSms(mobile, "" + vcode);
+            if (!sendSmsResponse.getBody().getCode().equals("OK")) {
+                msg.setError(sendSmsResponse.getBody().getMessage());
+            } else {
+                userVcodeMapper.insert(item);
+            }
         }
+
         return msg;
     }
 

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectMapper.xml

@@ -1644,7 +1644,7 @@
                 #{item}
             </foreach>
         </if>
-        order by area,workTime,id
+        order by area,id, workTime
         <if test="start!=null and size!=null">
             limit #{start},#{size}
         </if>

+ 1 - 1
fhKeeper/formulahousekeeper/timesheet/src/views/expense/expense.vue

@@ -359,7 +359,7 @@
               <el-input v-enter-number v-model="ParticularsList.ticketNum" :disabled="flg"></el-input>
             </el-form-item>
             <el-form-item :label="$t('costtype')" style="width: 270px"> 
-                <el-select size="small" v-model="expenseMainTypeValue"  style="width: 150px">
+                <el-select size="small" v-model="expenseMainTypeValue"  style="width: 150px" :disabled="flg">
                 <el-option
                 v-for="item in expenseMainTypes"
                 :key="item.id"

+ 3 - 1
fhKeeper/formulahousekeeper/timesheet/src/views/project/list.vue

@@ -4295,7 +4295,9 @@ a {
             addUpfun() {
                 var total = 0;
                 for (var i=0;i<this.projectBaseCostData.length; i++) {
-                    total += parseFloat(this.projectBaseCostData[i].baseAmount);
+                    if (this.projectBaseCostData[i].baseAmount) {
+                        total += parseFloat(this.projectBaseCostData[i].baseAmount);
+                    }
                 }
                 this.addForm.budget = total;
                 // var a = '0'