Browse Source

修改分摊比例设置,支持2为小数
增加栏目上的项目code显示

seyason 1 year ago
parent
commit
195d7856ac

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

@@ -946,7 +946,7 @@ public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, Exp
                 item.add(first.isPresent()?first.get().getName():"");
                 item.add(record.getTotalAmount()==null?"0":record.getTotalAmount()+"");
                 item.add(record.getRemark()==null?"":record.getRemark());
-                switch (record.getStatus()){
+                switch (expenseItem.getStatus()){
                     case 0:
                         item.add("审核通过");
                         break;
@@ -1014,7 +1014,7 @@ public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, Exp
         expenseItemMapper.updateById(item);
         ExpenseItem expenseItem = expenseItemMapper.selectById(itemId);
         //查询单据下的全部费用项目状态
-        int count = expenseItemMapper.selectCount(new QueryWrapper<ExpenseItem>().eq("expense_id", item.getExpenseId()).ne("status", 0));
+        int count = expenseItemMapper.selectCount(new QueryWrapper<ExpenseItem>().eq("expense_id", expenseItem.getExpenseId()).ne("status", 0));
         if (count == 0) {
             ExpenseSheet sheet = new ExpenseSheet();
             sheet.setId(expenseItem.getExpenseId());

+ 10 - 3
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/FinanceServiceImpl.java

@@ -1385,8 +1385,11 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
                 }
                 totalMoneyCost = totalMoneyCost.add(cost);
             }
-
-
+            BigDecimal bgCostTotal = new BigDecimal(0);
+            for (ProjectSumItem p : pList) {
+                bgCostTotal = bgCostTotal.add(p.cost);
+            }
+            BigDecimal percentTotal = new BigDecimal(0);
             //加上待分摊的无工时项目,如果当前项目列表没有的话
             if (assignNoProUser != null && assignNoProUser && noProjectItem.project != null) {
                 List<FinanceProjects> financeProjects = financeProjectsMapper.selectList(new QueryWrapper<FinanceProjects>().eq("company_id", companyId).eq("ymonth", yearMonth));
@@ -1428,6 +1431,8 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
                                 userCostMap.put("projectId", f.getProjectId());
                                 userCostMap.put("projectCode", f.getProjectCode());
                                 noPUserDataList.add(userCostMap);
+                            } else {
+                                System.out.println("@@@@@@@noProjectUser中不存在该人员:"+username+"["+userId+"]");
                             }
                         }
                     }
@@ -1455,7 +1460,6 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
                 //按比例分配
                 for (ProjectSumItem p : pList) {
                     List<Map> filterUserList = noPUserDataList.stream().filter(map->((Integer)map.get("projectId")).equals(p.projectId)).collect(Collectors.toList());
-                    System.out.println("过滤到的无项目人员size==="+filterUserList.size());
                     for (Map f : filterUserList) {
                         String curUserId = (String)f.get("creatorId");
                         double percent = (double)f.get("percent");
@@ -1465,6 +1469,7 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
                         p.cost = p.cost.add(newFinance.getTotalCost());
                         //叠加到总计的各项成本上
                         totalMoneyCost = totalMoneyCost.add(newFinance.getTotalCost());
+                        percentTotal = percentTotal.add(newFinance.getTotalCost());
                     }
                 }
             }
@@ -1475,6 +1480,8 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
                 p.cost = p.cost.setScale(2, BigDecimal.ROUND_HALF_UP);
             });
             resultMap.put("costList", pList);
+            resultMap.put("percentTotal", percentTotal);
+            resultMap.put("workCost", bgCostTotal);
             resultMap.put("noProjectItem", noProjectItem);
             resultMap.put("totalMoneyCost", totalMoneyCost);
             if (missingFinanceUserIds.size() > 0) {

+ 2 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/util/ExcelUtil.java

@@ -701,14 +701,14 @@ public class ExcelUtil {
                         CellRangeAddress cellRangeAddress3 = new CellRangeAddress(nextStartIndex, nextEndIndex, 3,3);
                         CellRangeAddress cellRangeAddress4 = new CellRangeAddress(nextStartIndex, nextEndIndex, 4,4);
                         CellRangeAddress cellRangeAddress5 = new CellRangeAddress(nextStartIndex, nextEndIndex, 5,5);
-                        CellRangeAddress cellRangeAddress6 = new CellRangeAddress(nextStartIndex, nextEndIndex, 6,6);
+//                        CellRangeAddress cellRangeAddress6 = new CellRangeAddress(nextStartIndex, nextEndIndex, 6,6);
                         sheet.addMergedRegion(cellRangeAddress);
                         sheet.addMergedRegion(cellRangeAddress1);
                         sheet.addMergedRegion(cellRangeAddress2);
                         sheet.addMergedRegion(cellRangeAddress3);
                         sheet.addMergedRegion(cellRangeAddress4);
                         sheet.addMergedRegion(cellRangeAddress5);
-                        sheet.addMergedRegion(cellRangeAddress6);
+//                        sheet.addMergedRegion(cellRangeAddress6);
                     }
                     nextStartIndex+=Integer.valueOf(String.valueOf(mapList.get(i).get("size")));
                 }

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

@@ -495,7 +495,7 @@
             </el-table-column>
             <el-table-column prop="status" label="审核" width="172" v-if="auditTypeItem.auditType == 1 && showSingleAudit" fixed="right">
               <template slot-scope="scope">
-                  <el-button v-if="scope.row.isIncharger" @click="approveSingle(scope.row)">通过</el-button><el-button v-if="scope.row.isIncharger" @click="denySingle(scope.row)">驳回</el-button>
+                  <el-button v-if="scope.row.isIncharger && scope.row.status == 1"  @click="approveSingle(scope.row)">通过</el-button><el-button v-if="scope.row.isIncharger && scope.row.status == 1" @click="denySingle(scope.row)">驳回</el-button>
                 </template>
             </el-table-column>
           </el-table>
@@ -1237,8 +1237,8 @@ export default {
           res => {
               if (res.code == "ok") {
                   this.getList();
-                  this.showSingleAudit = false;
-                  this.dialog = false;
+                  // this.dialog = false;
+                  this.getParticulars(item.expenseId);
               } else {
                   this.$message({
                   message: res.msg,

+ 4 - 4
fhKeeper/formulahousekeeper/timesheet/src/views/project/finance.vue

@@ -438,7 +438,7 @@
                         </template>
                     </el-table-column>
                     
-                    <el-table-column :label="item.projectName" v-for="(item) in projectCols" width="180" size="small"
+                    <el-table-column :label="item.projectCode+'/'+item.projectName" v-for="(item) in projectCols" width="180" size="small"
                         :key="item.id" align="center">
                         <template slot-scope="scope">
                             <span>{{scope.row[item.projectId]}}</span>%
@@ -921,11 +921,11 @@ import { error } from 'dingtalk-jsapi';
             saveMonthSetting() {
                 //检查数据是否都分配到100%了,防止由于修改了项目列而导致之前的数据不正确的情况
                 var errorList = this.userCostSettingList.filter(u=>{
-                    let totalPercent = 0.0;
+                    let totalPercent = 0.00;
                     this.projectCols.forEach(p=>{
                         totalPercent += parseFloat(u[p.projectId]);
                     });
-                    totalPercent = totalPercent.toFixed(1);
+                    totalPercent = totalPercent.toFixed(2);
                     if (totalPercent != 100) {
                         return true;
                     } else {
@@ -952,7 +952,7 @@ import { error } from 'dingtalk-jsapi';
                 this.projectCols.forEach(p=>{
                     total += parseFloat(this.curPercentVal[p.projectId]);
                 })
-                this.totalPercent = total.toFixed(1);
+                this.totalPercent = total.toFixed(2);
                 this.$forceUpdate();
             },
             averageCost() {

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

@@ -559,10 +559,11 @@
                         <el-form-item :label="yonghuUser.customTextName" v-if="yonghuUser.customTextActive == 1" :prop="'domains.' + index + '.customText'" :rules="user.timeType.customTextStatus == 1 ? { required: true, message: $t('defaultText.pleaseFillOut') + yonghuUser.customTextName, trigger: ['change','blur'] } : null">
                             <el-input :disabled="!domain.canEdit" v-model="domain.customText" type="textarea" :rows="1" style="width:75%;margin-right:7%" maxlength="1000" show-word-limit></el-input>
                         </el-form-item>
+                        <!--按比例填报-->
                         <el-form-item v-if="reportTimeType.type == 3" :label="$t('lable.percentageOfTime')" :prop="'domains.' + index + '.'+timeFields[reportTimeType.type]"
                             :rules="{ required: true, message: $t('defaultText.pleaseSetTheTimeRatio'), trigger: 'blur' }">
                             <div style="width:400px;">
-                                <el-col span="14"><el-slider :disabled="!domain.canEdit" v-model="domain.progress" :min="5" :show-tooltip="false" :step="5" style="width:280px;" @input="domain.workingTime = (reportTimeType.allday*domain.progress/100).toFixed(1)" @change="seleChn(0)" show-input="true" input-size="small"></el-slider></el-col>
+                                <el-col span="14"><el-slider :disabled="!domain.canEdit" v-model="domain.progress" :min="0" :show-tooltip="false" :step="5" style="width:280px;" @input="domain.workingTime = (reportTimeType.allday*domain.progress/100).toFixed(1)" @change="seleChn(0)" show-input="true" input-size="small"></el-slider></el-col>
                                 <el-col :span="isBatch?6:10"><span style="margin-left:10px;float:right;"><span style="margin-right:10px;">{{domain.progress}}%</span><span v-if="isBatch == 0">{{domain.workingTime}}{{$t('time.hour')}}</span></span></el-col>
                             </div>
                             <div class="overtime" v-if="user.timeType.fillOvertime || isWeekend"><el-checkbox :disabled="!domain.canEdit" v-model="domain.isOvertime">{{$t('other.WorkOvertime')}}</el-checkbox>