Browse Source

费用报销补充提交

Min 2 năm trước cách đây
mục cha
commit
e3eb941ddb

+ 35 - 7
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ExpenseMainTypeController.java

@@ -73,6 +73,11 @@ public class ExpenseMainTypeController {
         }
         if (setting.getId() == null) {
             setting.setCompanyId(companyId);
+            int num = expenseMainTypeService.count(new QueryWrapper<ExpenseMainType>().eq("company_id", setting.getCompanyId()));
+            if(num>=10){
+                msg.setError("已有类型上限为10");
+                return msg;
+            }
             int count = expenseMainTypeService.count(new QueryWrapper<ExpenseMainType>().eq("name", setting.getName()).eq("company_id", setting.getCompanyId()));
             if (count > 0) {
                 //msg.setError("该名称已存在");
@@ -82,11 +87,6 @@ public class ExpenseMainTypeController {
                 msg.data = expenseMainTypeService.list(new QueryWrapper<ExpenseMainType>().eq("company_id", setting.getCompanyId()));
             }
         } else {
-            int num = expenseMainTypeService.count(new QueryWrapper<ExpenseMainType>().eq("company_id", setting.getCompanyId()));
-            if(num>=10){
-                msg.setError("已有类型上限为10");
-                return msg;
-            }
             int count = expenseMainTypeService.count(new QueryWrapper<ExpenseMainType>().eq("name", setting.getName())
                     .eq("company_id", setting.getCompanyId()));
             if (count > 0) {
@@ -132,20 +132,48 @@ public class ExpenseMainTypeController {
             expenseMainTypes.add(expenseMainType1);
             expenseMainTypes.add(expenseMainType2);
             expenseMainTypeService.saveBatch(expenseMainTypes);
-            List<ExpenseType> expenseTypeList = expenseTypeMapper.selectList(new QueryWrapper<ExpenseType>().eq("company_id", company.getId()).eq("main_type", 10));
+            List<ExpenseType> expenseTypeList = expenseTypeMapper.selectList(new QueryWrapper<ExpenseType>().eq("company_id", company.getId()).eq("main_type", 1111111));
             expenseTypeList.forEach(et->{
                 et.setMainType(expenseMainType.getId());
             });
-            List<ExpenseSheet> expenseSheetList = expenseSheetMapper.selectList(new QueryWrapper<ExpenseSheet>().eq("company_id", company.getId()).eq("type", 10));
+            List<ExpenseSheet> expenseSheetList = expenseSheetMapper.selectList(new QueryWrapper<ExpenseSheet>().eq("company_id", company.getId()).eq("type", 1111111));
             expenseSheetList.forEach(es->{
                 es.setType(expenseMainType.getId());
             });
+            List<ExpenseType> expenseTypeList1 = expenseTypeMapper.selectList(new QueryWrapper<ExpenseType>().eq("company_id", company.getId()).eq("main_type", 2222222));
+            expenseTypeList1.forEach(et->{
+                et.setMainType(expenseMainType1.getId());
+            });
+            List<ExpenseSheet> expenseSheetList1 = expenseSheetMapper.selectList(new QueryWrapper<ExpenseSheet>().eq("company_id", company.getId()).eq("type", 2222222));
+            expenseSheetList1.forEach(es->{
+                es.setType(expenseMainType1.getId());
+            });
+            List<ExpenseType> expenseTypeList2 = expenseTypeMapper.selectList(new QueryWrapper<ExpenseType>().eq("company_id", company.getId()).eq("main_type", 3333333));
+            expenseTypeList2.forEach(et->{
+                et.setMainType(expenseMainType2.getId());
+            });
+            List<ExpenseSheet> expenseSheetList2 = expenseSheetMapper.selectList(new QueryWrapper<ExpenseSheet>().eq("company_id", company.getId()).eq("type", 3333333));
+            expenseSheetList2.forEach(es->{
+                es.setType(expenseMainType2.getId());
+            });
             if(expenseSheetList.size()>0){
                 expenseSheetService.updateBatchById(expenseSheetList);
             }
             if(expenseTypeList.size()>0){
                 expenseTypeService.updateBatchById(expenseTypeList);
             }
+            if(expenseSheetList1.size()>0){
+                expenseSheetService.updateBatchById(expenseSheetList1);
+            }
+            if(expenseTypeList1.size()>0){
+                expenseTypeService.updateBatchById(expenseTypeList1);
+            }if(expenseSheetList2.size()>0){
+                expenseSheetService.updateBatchById(expenseSheetList2);
+            }
+            if(expenseTypeList2.size()>0){
+                expenseTypeService.updateBatchById(expenseTypeList2);
+            }
+
         }
         return new HttpRespMsg();
     }

+ 24 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectDocumentTemplateController.java

@@ -119,5 +119,29 @@ public class ProjectDocumentTemplateController {
         return proDocumentTemDetailList;
     }
 
+    @RequestMapping("/delete")
+    public HttpRespMsg delete(Integer id){
+        HttpRespMsg httpRespMsg=new HttpRespMsg();
+        if(!projectDocumentTemplateService.removeById(id)){
+            httpRespMsg.setError("验证失败");
+            return httpRespMsg;
+        }
+        if(!proDocumentTemDetailService.remove(new QueryWrapper<ProDocumentTemDetail>().eq("template_id",id))){
+            httpRespMsg.setError("验证失败");
+            return httpRespMsg;
+        }
+        return httpRespMsg;
+    }
+
+    @RequestMapping("/update")
+    public HttpRespMsg update(ProjectDocumentTemplate projectDocumentTemplate){
+        HttpRespMsg httpRespMsg=new HttpRespMsg();
+        if(!projectDocumentTemplateService.updateById(projectDocumentTemplate)){
+            httpRespMsg.setError("验证失败");
+            return httpRespMsg;
+        }
+        return httpRespMsg;
+    }
+
 }
 

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ProjectMapper.java

@@ -51,7 +51,7 @@ public interface ProjectMapper extends BaseMapper<Project> {
     List<Map<String, Object>> getAllMembCost(@Param("startDate") String startDate, @Param("endDate") String endDate, @Param("projectId") Integer projectId,
                                              @Param("companyId") Integer companyId);
 
-    List<Project> getAllProjectCost(Integer companyId, Integer pageStart, Integer pageSize, Integer projectId,List<Integer> inchagerIds);
+    List<Map<String,Object>> getAllProjectCost(Integer companyId, Integer pageStart, Integer pageSize, Integer projectId,List<Integer> inchagerIds);
 
     List<Project> getProjectInAndOut(Integer companyId, Integer pageStart, Integer pageSize, Integer projectId,List<Integer> inchagerIds);
 

+ 68 - 13
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -199,6 +199,12 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
     WxCorpInfoService wxCorpInfoService;
     @Resource
     private LeaveSheetService leaveSheetService;
+    @Resource
+    private ExpenseMainTypeMapper expenseMainTypeMapper;
+    @Resource
+    private ExpenseSheetMapper expenseSheetMapper;
+    @Resource
+    private ExpenseTypeMapper expenseTypeMapper;
 
     @Resource
     private HttpServletResponse response;
@@ -2132,6 +2138,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
     public HttpRespMsg getAllProjectCost(Integer pageIndex, Integer pageSize, Integer projectId, HttpServletRequest request) {
         User user = userMapper.selectById(request.getHeader("Token"));
         Integer companyId = user.getCompanyId();
+        DecimalFormat df = new DecimalFormat("#.00");
         List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().eq("company_id", companyId));
         List<SysRichFunction> functionAllList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "全部项目成本报表");
         List<SysRichFunction> functionInchargeList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "负责项目成本报表");
@@ -2158,11 +2165,39 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         int total = projectMapper.selectCount(queryWrapper);
         int pageStart = (pageIndex -1) * pageSize;
         System.out.println("companyId="+companyId+", pageStart="+pageStart+", pageSize="+pageSize);
-        List projectTask = projectMapper.getAllProjectCost(companyId, pageStart, pageSize, projectId,inchagerIds);
+        List<Map<String, Object>> projectTask = projectMapper.getAllProjectCost(companyId, pageStart, pageSize, projectId, inchagerIds);
+        List<Integer> projectIdCollect = projectTask.stream().map(pt -> Integer.valueOf(String.valueOf(pt.get("id")))).distinct().collect(Collectors.toList());
+        projectIdCollect.add(-1);
+        List<ExpenseMainType> expenseMainTypes = expenseMainTypeMapper.selectList(new QueryWrapper<ExpenseMainType>().eq("company_id", companyId));
+        List<ExpenseSheet> expenseSheetList = expenseSheetMapper.selectList(new QueryWrapper<ExpenseSheet>().eq("company_id", companyId).eq("status", 0));
+        List<ExpenseItem> expenseItemList = expenseItemMapper.selectList(new QueryWrapper<ExpenseItem>().in("project_id", projectIdCollect));
+        for (Map<String, Object> map : projectTask) {
+            BigDecimal bigDecimal=new BigDecimal(0);
+            List<Map<String,Object>> itemList=new ArrayList<>();
+            for (ExpenseMainType expenseMainType : expenseMainTypes) {
+                Map<String,Object> item=new HashMap<>();
+                item.put("type",expenseMainType.getId());
+                List<ExpenseSheet> sheetList = expenseSheetList.stream().filter(es -> es.getType().equals(expenseMainType.getId())).collect(Collectors.toList());
+                List<Integer> collect = sheetList.stream().map(ExpenseSheet::getId).distinct().collect(Collectors.toList());
+                collect.add(-1);
+                double sum = expenseItemList.stream().filter(el -> collect.contains(el.getExpenseId())&&el.getProjectId()!=null&&el.getProjectId().equals(map.get("id"))).mapToDouble(el -> el.getAmount()==null?0:el.getAmount()).sum();
+                item.put("amount",sum);
+                itemList.add(item);
+                map.put(expenseMainType.getName(),sum);
+                bigDecimal=bigDecimal.add(new BigDecimal(sum));
+            }
+            map.put("costDetail",itemList);
+            double totalFee = bigDecimal.doubleValue();
+            //totalFee保留小数点后两位
+            totalFee = Double.parseDouble(df.format(totalFee));
+            map.put("allCost",totalFee);
+        }
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         Map<String, Object> map = new HashMap<>();
         map.put("records", projectTask);
         map.put("total", total);
+        String[] split = expenseMainTypes.stream().map(ExpenseMainType::getName).collect(Collectors.joining(",")).split(",");
+        map.put("expenseMainTypeList",split);
         httpRespMsg.data = map;
         return httpRespMsg;
     }
@@ -2192,21 +2227,41 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             }
         }
         QueryWrapper<Project> queryWrapper = new QueryWrapper<Project>().eq("company_id", companyId);
-        List<Project> projectList = projectMapper.getAllProjectCost(companyId, null, null, null,inchagerIds);
+        List<Map<String, Object>> projectList = projectMapper.getAllProjectCost(companyId, null, null, null, inchagerIds);
+        List<Integer> projectIdCollect = projectList.stream().map(pt -> Integer.valueOf(String.valueOf(pt.get("id")))).distinct().collect(Collectors.toList());
+        projectIdCollect.add(-1);
+        List<ExpenseMainType> expenseMainTypes = expenseMainTypeMapper.selectList(new QueryWrapper<ExpenseMainType>().eq("company_id", companyId));
+        List<ExpenseSheet> expenseSheetList = expenseSheetMapper.selectList(new QueryWrapper<ExpenseSheet>().eq("company_id", companyId).eq("status", 0));
+        List<ExpenseItem> expenseItemList = expenseItemMapper.selectList(new QueryWrapper<ExpenseItem>().in("project_id", projectIdCollect));
         List<List<String>> exportList = new ArrayList<>();
-        //String[] titles = {"项目编号", "项目名称", "人工成本", "一般费用", "差旅费用","外包费用", "总费用"};
-        String[] titles = {MessageUtils.message("entry.projectId"), MessageUtils.message("entry.projectName"), MessageUtils.message("entry.laborCost"), MessageUtils.message("excel.genExp"), MessageUtils.message("excel.traExp"),MessageUtils.message("excel.OutExp"), MessageUtils.message("excel.totalExp")};
-        exportList.add(Lists.list(titles));
+        List<String> titles=new ArrayList<>();
+        titles.add("项目编号");
+        titles.add("项目名称");
+        titles.add("人工成本");
+        for (ExpenseMainType expenseMainType : expenseMainTypes) {
+            titles.add(expenseMainType.getName());
+        }
+        titles.add("总费用");
+        exportList.add(titles);
         DecimalFormat df = new DecimalFormat("#.00");
-        for (Project project : projectList) {
+        for (Map<String,Object> item : projectList) {
             List<String> data = new ArrayList<>();
-            data.add(project.getProjectCode());
-            data.add(project.getProjectName());
-            data.add(project.getFeeMan().toString());
-            data.add(project.getFeeNormal().toString());
-            data.add(project.getFeeTravel().toString());
-            data.add(project.getFeeOutsourcing().toString());
-            double totalFee = project.getFeeMan() + project.getFeeNormal()+ project.getFeeTravel()+ project.getFeeOutsourcing();
+            data.add(String.valueOf(item.get("projectCode")));
+            data.add(String.valueOf(item.get("projectName")));
+            data.add(String.valueOf(item.get("feeMan")));
+            BigDecimal bigDecimal=new BigDecimal(0);
+            for (ExpenseMainType expenseMainType : expenseMainTypes) {
+                Map<String,Object> it=new HashMap<>();
+                it.put("type",expenseMainType.getId());
+                List<ExpenseSheet> sheetList = expenseSheetList.stream().filter(es -> es.getType().equals(expenseMainType.getId())).collect(Collectors.toList());
+                List<Integer> collect = sheetList.stream().map(ExpenseSheet::getId).distinct().collect(Collectors.toList());
+                collect.add(-1);
+                double sum = expenseItemList.stream().filter(el -> collect.contains(el.getExpenseId())&&el.getProjectId()!=null&&el.getProjectId().equals(item.get("id"))).mapToDouble(el -> el.getAmount()==null?0:el.getAmount()).sum();
+                it.put("amount",sum);
+                data.add(String.valueOf(sum));
+                bigDecimal=bigDecimal.add(new BigDecimal(sum));
+            }
+            double totalFee = bigDecimal.doubleValue();
             //totalFee保留小数点后两位
             totalFee = Double.parseDouble(df.format(totalFee));
             data.add(totalFee+"");

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

@@ -587,12 +587,9 @@
         ORDER BY b.id ASC
     </select>
     <!--分页获取项目成本 -->
-    <select id="getAllProjectCost" resultMap="BaseResultMap">
-        SELECT id, project_code, project_name,
-        (SELECT IFNULL(SUM(cost),0) FROM report WHERE state = 1 AND project_id = project.id) AS fee_man,
-        (SELECT IFNULL(SUM(amount),0) FROM expense_item , expense_sheet WHERE project_id = project.id AND  expense_sheet.id = expense_item.`expense_id` AND expense_sheet.type = 0 and expense_sheet.status = 0) AS fee_normal,
-        (SELECT IFNULL(SUM(amount),0) FROM expense_item , expense_sheet WHERE project_id = project.id AND  expense_sheet.id = expense_item.`expense_id` AND expense_sheet.type = 1 and expense_sheet.status = 0) AS fee_travel,
-        (SELECT IFNULL(SUM(amount),0) FROM expense_item , expense_sheet WHERE project_id = project.id AND  expense_sheet.id = expense_item.`expense_id` AND expense_sheet.type = 2 and expense_sheet.status = 0) AS fee_outsourcing
+    <select id="getAllProjectCost"  resultType="java.util.Map">
+        SELECT id, project_code as projectCode, project_name as projectName,
+        (SELECT IFNULL(SUM(cost),0) FROM report WHERE state = 1 AND project_id = project.id) AS feeMan
         FROM project WHERE project.`company_id` = #{companyId}
         and (project.status &lt;&gt; 3 or project.status is null)
         <if test="projectId != null">

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

@@ -282,7 +282,7 @@
                 
                 <el-table-column  :label="$t('totalcostos')"  width="100" align="right">
                   <template slot-scope="scope">
-                        {{(scope.row.feeMan+scope.row.feeNormal+scope.row.feeTravel+scope.row.feeOutsourcing).toFixed(2)}}
+                         {{scope.row.allCost.toFixed(2)}}
                     </template>
                 </el-table-column>
                 <el-table-column  :label="$t('costdetail')"  width="100" align="right">

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

@@ -206,7 +206,7 @@
       <div v-if="displayTable">
         <div style="padding-left:10px;padding-right:10px;">
           <div>
-          <el-form label-width="70px" inline >
+          <el-form label-width="100px" inline >
             <!-- 报销人 -->
             <el-form-item :label="$t('peopleconcerned')">
               <el-select v-if="user.userNameNeedTranslate != '1'" v-model="ownerId" size="small" clearable :placeholder="$t('selecttheapplicant')" style="width: 120px" :disabled="!permissions.costAudit" filterable="true">
@@ -764,7 +764,7 @@ export default {
         this.editTypeData = row
       }else{
         this.editTypeData = {
-          mainType: 0,
+          mainType: '',
           typeName: '',
           companyId: this.user.companyId
         }

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

@@ -3646,6 +3646,7 @@ a {
                 if (subProject == null) {
                     this.temaddForm = {projectId: this.currentProject.id, level:1}
                 } else {
+                    subProject.status=subProject.status==true?1:0
                     this.temaddForm = JSON.parse(JSON.stringify(subProject));
                 }
                 this.addSubProject = true;