Min 10 miesięcy temu
rodzic
commit
9928ce9e89

+ 4 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/mapper/ReportMapper.java

@@ -223,4 +223,8 @@ public interface ReportMapper extends BaseMapper<Report> {
     List<Map<String, Object>> findFinishNumErrorData();
 
     List<Map<String, Object>> getPersonWorkHoursWagesDetailForTemp(String date, String userId, Integer companyId, String startDate, String endDate);
+
+    List<Map<String, Object>> getPersonWorkHoursWagesWithNotReport(String date, String userId, Integer companyId, String startDate, String endDate,Integer checkStatus,Integer detailStatus);
+
+    List<Map<String, Object>> getPersonWorkHoursWagesWithHasReport(String date, String userId, Integer companyId, String startDate, String endDate,Integer checkStatus,Integer detailStatus);
 }

+ 20 - 4
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -4352,12 +4352,28 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         deptIds.addAll(otherDeptIds);
         //日期范围内所有请假数据
         List<LeaveSheet> leaveSheetList = leaveSheetService.list(new LambdaQueryWrapper<LeaveSheet>().le(LeaveSheet::getStartDate, endDate).ge(LeaveSheet::getEndDate, startDate).eq(LeaveSheet::getOwnerId,userId));
-        List<Map<String,Object>> mapList=reportMapper.getPersonWorkHoursWagesDetail(date,userId,user.getCompanyId(),startDate,endDate,null,null);
+        //获取未填报的分配数据
+        List<Map<String,Object>> mapListNoReport=reportMapper.getPersonWorkHoursWagesWithNotReport(date,userId,user.getCompanyId(),startDate,endDate,null,null);
+        mapListNoReport.forEach(m->{
+            m.put("colorType","black");
+        });
+        //获取已填报的分配数据
+        List<Map<String,Object>> mapListHasReport=reportMapper.getPersonWorkHoursWagesWithHasReport(date,userId,user.getCompanyId(),startDate,endDate,null,null);
+        mapListHasReport.forEach(m->{
+            m.put("colorType","blue");
+        });
+        //获取临时报工数据
+        List<Map<String,Object>> mapListTempReport=reportMapper.getPersonWorkHoursWagesDetailForTemp(date,userId,user.getCompanyId(),startDate,endDate);
+        mapListTempReport.forEach(m->{
+            m.put("colorType","green");
+        });
+        mapListHasReport.addAll(mapListTempReport);
+        mapListHasReport.addAll(mapListNoReport);
         HttpRespMsg httpRespMsg=new HttpRespMsg();
         HashMap map=new HashMap();
-        map.put("record",mapList);
-        map.put("totalWorkingTime",mapList.stream().filter(i->i.get("working_time")!=null).mapToDouble(mt->Double.valueOf(String.valueOf(mt.get("working_time")))).sum());
-        map.put("totalCost",mapList.stream().filter(i->i.get("cost")!=null).mapToDouble(mt->Double.valueOf(String.valueOf(mt.get("cost")))).sum());
+        map.put("record",mapListHasReport);
+//        map.put("totalWorkingTime",mapList.stream().filter(i->i.get("working_time")!=null).mapToDouble(mt->Double.valueOf(String.valueOf(mt.get("working_time")))).sum());
+//        map.put("totalCost",mapList.stream().filter(i->i.get("cost")!=null).mapToDouble(mt->Double.valueOf(String.valueOf(mt.get("cost")))).sum());
         httpRespMsg.setData(map);
         return httpRespMsg;
     }

+ 60 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/resources/mapper/ReportMapper.xml

@@ -243,6 +243,66 @@
         </if>
     </select>
 
+    <select id="getPersonWorkHoursWagesWithNotReport" resultType="java.util.Map">
+        select ppt.total_progress AS progress,DATE_FORMAT(r.create_date,'%Y%m%d') AS createDate,pp.name AS procedureName,(CASE  WHEN pp.check_type=0 THEN '自检' WHEN pp.check_type=1 THEN '互检' ELSE '专检' END) AS checkType,
+        p.name AS productName,DATE_FORMAT(plan.start_date,'%Y%m%d') AS planStartDate,DATE_FORMAT(plan.end_date,'%Y%m%d') AS planEndDate ,
+        plan.task_change_notice_num AS taskName,plan.plan_type AS planType,plan.product_scheduling_num
+        FROM prod_procedure_team ppt2
+        LEFT JOIN plan_procedure_total ppt ON ppt.id=ppt2.plan_procedure_id
+        LEFT JOIN plan ON plan.id=ppt.plan_id
+        LEFT JOIN report r ON r.user_procedure_team_id=ppt2.id
+        LEFT JOIN prod_procedure pp ON ppt.prod_procedure_id=pp.id
+        LEFT JOIN product p ON p.id=plan.product_id
+        WHERE ppt2.company_id=#{companyId} and r.id is null
+        <if test="date!=null and date!=''">
+            and ppt2.distribute_date=#{date}
+        </if>
+        <if test="userId!=null and userId!=''">
+            <choose>
+                <when test="checkStatus!=null and checkStatus==1 and detailStatus==null">
+                    and plan.foreman_id=#{userId}
+                </when>
+                <otherwise>
+                    and ppt2.user_id=#{userId}
+                </otherwise>
+            </choose>
+        </if>
+        <if test="startDate!=null and endDate!=null">
+            and ppt2.distribute_date between #{startDate} and #{endDate}
+        </if>
+    </select>
+
+    <select id="getPersonWorkHoursWagesWithHasReport" resultType="java.util.Map">
+        select r.cost,r.working_time,r.finish_num AS finish_num, r.creator_id,ppt.total_progress AS progress,DATE_FORMAT(r.create_date,'%Y%m%d') AS createDate,pp.name AS procedureName,(CASE  WHEN pp.check_type=0 THEN '自检' WHEN pp.check_type=1 THEN '互检' ELSE '专检' END) AS checkType,
+        p.name AS productName,DATE_FORMAT(plan.start_date,'%Y%m%d') AS planStartDate,DATE_FORMAT(plan.end_date,'%Y%m%d') AS planEndDate ,
+        plan.task_change_notice_num AS taskName,plan.plan_type AS planType,u.name AS checkerName,u2.name AS creatorName,plan.product_scheduling_num,r.finish_num AS finishNum
+        FROM prod_procedure_team ppt2
+        LEFT JOIN plan_procedure_total ppt ON ppt.id=ppt2.plan_procedure_id
+        LEFT JOIN plan ON plan.id=ppt.plan_id
+        LEFT JOIN report r ON r.user_procedure_team_id=ppt2.id AND r.finish_num>0
+        LEFT JOIN prod_procedure pp ON ppt.prod_procedure_id=pp.id
+        LEFT JOIN product p ON p.id=plan.product_id
+        LEFT JOIN `user` u ON r.checker_id=u.id
+        LEFT JOIN `user` u2 ON r.creator_id=u2.id
+        WHERE ppt2.company_id=#{companyId}
+        <if test="date!=null and date!=''">
+            and r.create_date=#{date}
+        </if>
+        <if test="userId!=null and userId!=''">
+            <choose>
+                <when test="checkStatus!=null and checkStatus==1 and detailStatus==null">
+                    and plan.foreman_id=#{userId}
+                </when>
+                <otherwise>
+                    and ppt2.user_id=#{userId}
+                </otherwise>
+            </choose>
+        </if>
+        <if test="startDate!=null and endDate!=null">
+            and r.create_date between #{startDate} and #{endDate}
+        </if>
+    </select>
+
     <select id="getProcedureRealTimeProgressList" resultType="java.util.Map">
         select a.id as pptId,b.id as planId,b.plan_type as planType,(Case when b.plan_type=0 then b.product_scheduling_num else b.task_change_notice_num end) as taskName,
         c.name as procedureName,a.total_working_hours as planWorkTime,a.total_fill_time as nowWorkTime,a.total_progress as progress

+ 41 - 8
fhKeeper/formulahousekeeper/timesheet-workshop/src/views/statistic/index.vue

@@ -89,10 +89,12 @@
                 <el-table-column v-for="(item, index) in personWorkHoursWagesHead" :key="index" :label="item" align="center" min-width="150">
                     <template slot-scope="scope">
                         <div v-for="(items, indexs) in scope.row.personWorkHoursWages" :key="indexs" :class="`${scope.row.departmentCascade== '小计' ? '' : 'colorText'}`">
-                            <div v-if="items.crateDate == item">
+                            <div v-if="items.crateDate == item" @click.stop="showReportDetail(scope.row,item,0)">
                               <div  style="color: black;" v-if="items.planWorkTime">平均 {{items.planWorkTime}}分钟  {{items.planCost}}元</div>
-                              <div @click.stop="showReportDetail(scope.row,item,0)" v-if="items.workTime>0">已填 {{items.workTime}}分钟  {{items.cost}}元 </div>{{items.leave}}
-                              <div style="color: green;" @click.stop="showTempReportDetail(scope.row,item,0)" v-if="items.tempWorkTime>0||items.tempCost>0">临时报工 {{items.tempWorkTime}}分钟  {{items.tempCost}}元</div>
+                              <!-- <div @click.stop="showReportDetail(scope.row,item,0)" v-if="items.workTime>0">已填 {{items.workTime}}分钟  {{items.cost}}元 </div>{{items.leave}}
+                              <div style="color: green;" @click.stop="showTempReportDetail(scope.row,item,0)" v-if="items.tempWorkTime>0||items.tempCost>0">临时报工 {{items.tempWorkTime}}分钟  {{items.tempCost}}元</div> -->
+                              <div  v-if="items.workTime>0">已填 {{items.workTime}}分钟  {{items.cost}}元 </div>{{items.leave}}
+                              <div style="color: green;" v-if="items.tempWorkTime>0||items.tempCost>0">临时报工 {{items.tempWorkTime}}分钟  {{items.tempCost}}元</div>
                               <div style="color: red;" v-if="items.surplusTime">剩余 {{items.surplusTime}}分钟  {{items.surplusCost}}元</div>
                             </div>
                         </div>
@@ -100,10 +102,14 @@
                 </el-table-column>
                 <el-table-column align="center" prop="totalResult" label="合计" min-width="180">
                    <template slot-scope="scope" >
-                    <div style="color: black;">{{scope.row.totalPlanResult | formatStr('平均') }}</div>
-                      <div style="color: #02a7f0;"  @click="showReportDetail(scope.row,item,1)"> {{scope.row.totalResult | formatStr('已填')}}</div> 
-                      <div style="color: green;"  @click="showTempReportDetail(scope.row,item,1)">{{scope.row.totalTempResult | formatStr('临时报工')}}</div> 
+                    <div @click="showReportDetail(scope.row,item,1)">
+                      <div style="color: black;">{{scope.row.totalPlanResult | formatStr('平均') }}</div>
+                      <!-- <div style="color: #02a7f0;"  @click="showReportDetail(scope.row,item,1)"> {{scope.row.totalResult | formatStr('已填')}}</div> 
+                      <div style="color: green;"  @click="showTempReportDetail(scope.row,item,1)">{{scope.row.totalTempResult | formatStr('临时报工')}}</div>  -->
+                      <div style="color: #02a7f0;" > {{scope.row.totalResult | formatStr('已填')}}</div> 
+                      <div style="color: green;" >{{scope.row.totalTempResult | formatStr('临时报工')}}</div> 
                       <div style="color: red;">{{scope.row.totalSurplusResult | formatStr('剩余') }}</div>
+                    </div>
                   </template>
                 </el-table-column>
             </el-table>
@@ -315,7 +321,7 @@
   </div>
   </div>
 
-  <el-dialog :title="'详情'" :visible.sync="reportDetailDialog" width="1480px">
+  <el-dialog :title="'详情99'" :visible.sync="reportDetailDialog" width="1480px">
           <div> 
             日期:<el-select v-model="simpleDateChoose" placeholder="请选择" @change="getPersonWorkHoursWagesDetail(simpleDateChoose)">
                 <el-option
@@ -360,7 +366,10 @@
           <div>
             <el-table
               :data="personWorkHoursWagesDetail"
-              style="width: 100%">
+              style="width: 100%"
+              :row-class-name="tableRowClassName"
+              height="500"
+              >
               <el-table-column
                 prop="date"
                 label="计划(开始-结束日期)"
@@ -841,6 +850,17 @@ export default {
           });
       });
     },
+    //处理列类别
+    tableRowClassName({row}) {
+      if (row.colorType == "blue") {
+        return 'blue-row';
+      } else if (row.colorType == "black") {
+        return 'black-row';
+      }else if(row.colorType == "green"){
+        return 'green-row';
+      }
+      return '';
+    },
     getUserList(e) {
       let param={}
       if(e){
@@ -1856,3 +1876,16 @@ export default {
 }
 
 </style>
+<style>
+.el-table .blue-row {
+  color: #02a7f0;
+}
+
+.el-table .black-row {
+  color: black;
+}
+
+.el-table .green-row {
+  color: green;
+}
+</style>