Jelajahi Sumber

导入工时相关修改

seyason 1 tahun lalu
induk
melakukan
33747cb18c

+ 13 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportImportLogController.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.management.platform.entity.Project;
 import com.management.platform.entity.ReportImportLog;
+import com.management.platform.entity.User;
 import com.management.platform.mapper.ReportImportLogMapper;
 import com.management.platform.mapper.UserMapper;
 import com.management.platform.util.HttpRespMsg;
@@ -16,6 +17,7 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.HashMap;
@@ -38,12 +40,22 @@ public class ReportImportLogController {
     private ReportImportLogMapper reportImportLogMapper;
     @Resource
     private UserMapper userMapper;
+    @Resource
+    private HttpServletRequest request;
 
     @RequestMapping("/getList")
     public HttpRespMsg getList(Integer companyId, @RequestParam Integer pageIndex, @RequestParam Integer pageSize) {
         HttpRespMsg msg = new HttpRespMsg();
         QueryWrapper<ReportImportLog> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("company_id", companyId).orderByDesc("indate");
+        //先硬编码,后面再改;针对角色是管理员的写死可见全部,其他人只能看到自己上传的记录
+        String token = request.getHeader("TOKEN");
+        User user = userMapper.selectById(token);
+        if (user.getRoleName().contains("管理员")) {
+            queryWrapper.eq("company_id", companyId).orderByDesc("indate");
+        } else {
+            queryWrapper.eq("user_id", token).eq("company_id", companyId).orderByDesc("indate");
+        }
+
         IPage<ReportImportLog> iPage = reportImportLogMapper.selectPage(new Page<>(pageIndex, pageSize),
                 queryWrapper);
         List<ReportImportLog> list = iPage.getRecords();

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

@@ -202,9 +202,9 @@ public class UserController {
                                   @RequestParam Integer roleId, Double monthCost, Double cost,
                                   Integer departmentId, Integer salaryType, String costApplyDate,
                                     String position, String certJson,String inductionDate,String superiorId,
-                                    String plate1,String plate2,String plate3,String plate4,String plate5, String jobNumber) {
+                                    String plate1,String plate2,String plate3,String plate4,String plate5, String jobNumber, String inactiveDate) {
         return userService.insertUser(id, name, phone, roleId, monthCost, cost, departmentId, salaryType, costApplyDate,
-                    position, certJson, request,inductionDate,superiorId,plate1, plate2, plate3,plate4,plate5, jobNumber);
+                    position, certJson, request,inductionDate,superiorId,plate1, plate2, plate3,plate4,plate5, jobNumber, inactiveDate);
     }
 
     /**

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/UserService.java

@@ -38,7 +38,7 @@ public interface UserService extends IService<User> {
     HttpRespMsg insertUser(String id, String name, String phone, Integer roleId, Double monthCost, Double cost, Integer departmentId,
                            Integer salaryType, String costApplyDate, String position, String certJson,
                            HttpServletRequest request,String inductionDate, String superiorId,String plate1,
-                           String plate2,String plate3,String plate4,String plate5, String jobNumber);
+                           String plate2,String plate3,String plate4,String plate5, String jobNumber, String inactiveDate);
 
     HttpRespMsg importUser(MultipartFile multipartFile, HttpServletRequest request);
 

+ 0 - 71
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -669,23 +669,6 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     } else {
                         if (projectBaseCostData != null) {
                             updateProjectBaseCostData(projectBaseCostData, project.getId());
-
-                            //创建项目涉及到基线成本数据,要填写到快照表中
-//                            EarningSnapshot snapshot = new EarningSnapshot();
-//                            snapshot.setProjectId(project.getId());
-//                            snapshot.setContractAmount(project.getContractAmount());
-//                            snapshot.setCostData(projectBaseCostData);
-//                            snapshot.setCreatorId(user.getId());
-//                            snapshot.setCreatorName(user.getName());
-//                            snapshot.setCostTotal(budget);
-
-//                            if (project.getContractAmount() == null || project.getContractAmount() == 0 ) {
-//                                //无需处理
-//                            } else {
-//                                snapshot.setProfit(project.getContractAmount() - budget);
-//                                snapshot.setProfitPercent(100.0*(project.getContractAmount() - budget)/project.getContractAmount());
-//                                earningSnapshotMapper.insert(snapshot);
-//                            }
                         }
                         if (projectKeyNodesData != null) {
                             updateProjectKeyNodesData(projectKeyNodesData, project.getId());
@@ -844,7 +827,6 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     //httpRespMsg.setError("操作失败");
                     httpRespMsg.setError(MessageUtils.message("other.operationFail"));
                 } else {
-
                     if (customerId == null) {
                         //去掉客户
                         projectMapper.removeProjectCustomer(id);
@@ -859,58 +841,6 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                         if(costList==null){
                             return respMsg;
                         }
-
-                        //如果不存在基线成本快照,则生成
-//                        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());
@@ -922,7 +852,6 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     financeProjectsMapper.update(fp, new QueryWrapper<FinanceProjects>().eq("project_id", p.getId()));
                 }
                 Project newProject = projectMapper.selectById(id);
-                String path = Project.class.getClassLoader().getResource("/").getPath();
                 BeanChangeUtil<Project> beanChangeUtil=new BeanChangeUtil();
                 String content = beanChangeUtil.contrastObj(oldProject, newProject);
                 OperationRecord operationRecord =new OperationRecord();

+ 3 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/UserServiceImpl.java

@@ -1280,7 +1280,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
     @Override
     public HttpRespMsg insertUser(String targetId, String name, String phone, Integer roleId, Double monthCost, Double cost,
                                   Integer departmentId, Integer salaryType, String costApplyDate, String position, String certJson, HttpServletRequest request,String inductionDate,
-                                  String superiorId,   String plate1,String plate2,String plate3,String plate4,String plate5, String jobNumber) {
+                                  String superiorId,   String plate1,String plate2,String plate3,String plate4,String plate5, String jobNumber, String inactiveDate) {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
         try {
@@ -1385,7 +1385,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                 }
 
                 String oldCostApplyDate = oldUser.getCostApplyDate();
-                if(inductionDate!=null&&inductionDate!=""){
+                if(!StringUtils.isEmpty(inductionDate)){
                     oldUser.setInductionDate(LocalDate.parse(inductionDate,dtf));
                 }
                 //检查直属审核人是否发生变化
@@ -1404,6 +1404,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                         .setCost(costValue)
                         .setPosition(position)
                         .setCostApplyDate(costApplyDate)
+                        .setInactiveDate(StringUtils.isEmpty(inactiveDate) ? null : LocalDate.parse(inactiveDate, dtf))
                         .setSalaryType(salaryType)
                         .setDepartmentId(departmentId == null ? 0 : departmentId)
                         .setDepartmentCascade(departmentId == null ?

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

@@ -54,7 +54,7 @@
             </foreach> GROUP BY r.`creator_id` ) report_time
         ON report_time.creator_id = user.id
         WHERE user.company_id=#{companyId}
-        and  ((user.`is_active` = 1 AND (user.`induction_date` IS NULL OR DATE_FORMAT(user.`induction_date`, '%Y%m') &lt;= #{ymonth} )) OR (user.`is_active` = 0 AND DATE_FORMAT(user.`inactive_date`, '%Y%m') &gt;= #{ymonth}))
+        and  ((user.`is_active` = 1 AND (user.`induction_date` IS NULL OR DATE_FORMAT(user.`induction_date`, '%Y%m') &lt;= #{ymonth} )) OR (user.`is_active` = 0 AND DATE_FORMAT(user.`inactive_date`, '%Y%m%d') &gt; CONCAT(#{ymonth}, '01')))
         <if test="deptIds != null">
             AND user.`department_id` in
             <foreach collection="deptIds" item="deptId" open="(" separator="," close=")">

+ 0 - 6
fhKeeper/formulahousekeeper/timesheet/src/views/project/cost.vue

@@ -697,12 +697,6 @@
                                 restore:{
                                     show:true
                                 },
-                                // dataView:{
-                                //     show:true
-                                // },
-                                // dataZoom:{
-                                //     show:true
-                                // },
                                 magicType:{
                                     type:['line','bar']
                                 }

+ 1 - 7
fhKeeper/formulahousekeeper/timesheet/src/views/project/detail.vue

@@ -173,17 +173,11 @@
                         show: true,
                         feature:{
                             saveAsImage:{
-                                show:true
+                                show: this.user.userNameNeedTranslate == 1 ? false : true
                             },
                             restore:{
                                 show:true
                             },
-                            dataView:{
-                                show:true
-                            },
-                            dataZoom:{
-                                show:true
-                            },
                             magicType:{
                                 type:['line','bar']
                             }

+ 11 - 2
fhKeeper/formulahousekeeper/timesheet/src/views/project/list.vue

@@ -417,11 +417,12 @@
                 <el-button size="small" type="primary" v-if="user.roleName='超级管理员'" @click="batchDelete()" :loading="isDeleting">批量删除</el-button>
             </template>
             
-            <el-pagination
+            <el-pagination :key="projectListPageComponentKey"
                 @size-change="handleSizeChange"
                 @current-change="handleCurrentChange"
                 :page-sizes="[20 , 50 , 80 , 100]"
                 :page-size="size"
+                :current-page.sync="page"
                 layout="total, sizes, prev, pager, next"
                 :total="total"
                 style="float:right;"
@@ -1418,6 +1419,7 @@ a {
         },
         data() {
             return {
+                projectListPageComponentKey: 1,
                 isDeleting: false,
                 forSubProjectlist:[],
                 copySubPListVisible: false,
@@ -3820,6 +3822,7 @@ a {
 
             //获取项目列表
             getList() {
+                localStorage.projectPageIndex = this.page;
                 this.listLoading = true;
                 let parameter = {
                     pageIndex: this.page,
@@ -3891,7 +3894,7 @@ a {
                         // this.$nextTick(()=>{
                         //     this.$refs.projectlistOfWudulist.doLayout();
                         // })
-                        this.listHeader = res.data.nameList
+                        this.listHeader = res.data.nameList;
                     } else {
                         this.$message({
                         message: res.msg,
@@ -4770,6 +4773,12 @@ a {
             this.userssHu()
             this.getDepartment();
             this.getDepartment2();
+            this.projectListPageComponentKey++;
+            //localStorage中为string类型,需转化为int类型才会发生渲染
+            if (localStorage.projectPageIndex) {
+                this.page = parseInt(localStorage.projectPageIndex);
+            }
+            
             this.getList();
             this.getUsers();
             this.getCustomerList();

+ 11 - 3
fhKeeper/formulahousekeeper/timesheet/src/views/team/index.vue

@@ -220,10 +220,10 @@
                 <el-table-column :label="$t('jiao-se')" width="100">
                     <template slot-scope="scope">{{scope.row.roleName}}</template>
                 </el-table-column>
-                <el-table-column prop="monthCost" :label="$t('monthcost')"  v-if="permissions.structurePersonnel">
-                    <template slot-scope="scope">{{user.timeType.isSecretSalary==0?(scope.row.monthCost==null?0:scope.row.monthCost):'*'}} {{ $t('yuan') }}</template>
+                <el-table-column prop="monthCost" :label="$t('monthcost')" align="right" v-if="permissions.structurePersonnel" width="140">
+                    <template slot-scope="scope">{{user.timeType.isSecretSalary==0?(scope.row.monthCost==null?0:scope.row.monthCost.toFixed(2)):'*'}} {{ $t('yuan') }}</template>
                 </el-table-column>
-                <el-table-column prop="cost" :label="$t('hourlywage')"  v-if="permissions.structurePersonnel" width="150">
+                <el-table-column prop="cost" :label="$t('hourlywage')"  v-if="permissions.structurePersonnel" width="150" align="right">
                     <template slot-scope="scope">{{user.timeType.isSecretSalary==0?(scope.row.cost==null?0:scope.row.cost):'*'}} {{ $t('yuan') }}
                         <el-link v-if="user.timeType.isSecretSalary==0" @click.native="showSalaryList(scope.row)"><i class="iconfont firerock-iconrecord"></i></el-link>
                     </template>
@@ -448,6 +448,9 @@
                   <el-form-item :label="$t('entrytime')" prop="phone">
                       <el-date-picker v-model="insertForm.inductionDate" value-format="yyyy-MM-dd"></el-date-picker>
                   </el-form-item>
+                  <el-form-item label="离职日期" prop="inactiveDate" v-if="insertForm.isActive == 0">
+                      <el-date-picker v-model="insertForm.inactiveDate" value-format="yyyy-MM-dd"></el-date-picker>
+                  </el-form-item>
                   <el-form-item :label="$t('postrank')" prop="phone">
                       <el-input v-model="insertForm.position" :placeholder="$t('joblevel')" clearable></el-input>
                   </el-form-item>
@@ -2638,6 +2641,8 @@ export default {
                 salaryType: res.data.salaryType,
                 costApplyDate: res.data.costApplyDate,
                 // inductionDate: res.data.inductionDate,
+                inactiveDate: res.data.inactiveDate,
+                isActive: res.data.isActive,
                 position: res.data.position,
                 certJson: res.data.certList,
                 plateMap: {},
@@ -2750,6 +2755,9 @@ export default {
             plate5: this.insertForm.plate5,
             jobNumber: this.insertForm.jobNumber,
           };
+          if (this.insertForm.isActive == 0) {
+            form.inactiveDate = this.insertForm.inactiveDate;
+          }
 
           // for(let i=0;i<5;i++) {
           //     if(this.insertFormPlates[i]){

+ 1 - 1
fhKeeper/formulahousekeeper/timesheet/src/views/workReport/daily.vue

@@ -1636,7 +1636,7 @@
                 <span style="font-size:16px;">{{$t('other.Batchimportofworkinghours')}}</span>
                 <el-link v-if="active==0"  style="float:right;margin-right:100px;" type="primary" @click="toView()">{{$t('other.viewLaborImportRecords')}}</el-link>
                 <el-link v-if="active==0"  style="float:right;margin-right:100px;" type="primary" @click="downloadProjectRatio">下载填报工时占比表</el-link>
-                <el-link v-if="active==0 && user.companyId == 469"  style="float:right;margin-right:100px;" type="primary" @click="importCardTimeVisi = true">导入考勤时长</el-link>
+                <el-link v-if="active==0 && user.companyId == 469 && user.roleName.indexOf('管理员') > 0"  style="float:right;margin-right:100px;" type="primary" @click="importCardTimeVisi = true">导入考勤时长</el-link>
                 <el-link v-if="active==0 && user.companyId == 469 && user.roleName == '超级管理员'"  style="float:right;margin-right:50px;" type="primary" @click="showBatchDeleteReport = true; startDeleting = false;">批量删除日报</el-link>
                 <el-link v-if="active==0 && user.companyId == 469 && user.roleName == '超级管理员'"  style="float:right;margin-right:50px;" type="primary" @click="showBatchSimpleApproveReport = true; startDeleting = false;">批量审核日报</el-link>
             </div>