Min 11 月之前
父节点
当前提交
3e45c3b985

+ 11 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/entity/ProdProcedureTeam.java

@@ -4,6 +4,8 @@ import java.math.BigDecimal;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableId;
+
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableField;
 import java.io.Serializable;
 import java.io.Serializable;
@@ -102,6 +104,15 @@ public class ProdProcedureTeam extends Model<ProdProcedureTeam> {
     @TableField("steel_num_array")
     @TableField("steel_num_array")
     private String steelNumArray;
     private String steelNumArray;
 
 
+
+    /**
+     * 分配日期
+     */
+    @TableField("distribute_date")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private LocalDate distributeDate;
+
     @Override
     @Override
     protected Serializable pkVal() {
     protected Serializable pkVal() {
         return this.id;
         return this.id;

+ 6 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/entity/User.java

@@ -313,6 +313,12 @@ public class User extends Model<User> {
     @TableField(exist = false)
     @TableField(exist = false)
     private String  totalResult;
     private String  totalResult;
 
 
+    @TableField(exist = false)
+    private String  totalPlanResult;
+
+    @TableField(exist = false)
+    private String  totalSurplusResult;
+
     @Override
     @Override
     protected Serializable pkVal() {
     protected Serializable pkVal() {
         return this.id;
         return this.id;

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

@@ -344,7 +344,7 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
                 new QueryWrapper<ProdProcedure>()
                 new QueryWrapper<ProdProcedure>()
                         .lambda()
                         .lambda()
                         .eq(plan.getProductId() != null, ProdProcedure::getProductId, plan.getProductId())
                         .eq(plan.getProductId() != null, ProdProcedure::getProductId, plan.getProductId())
-                        .eq(user.getCompanyId()!=null,ProdProcedure::getCompanyId,user.getCompanyId()).groupBy(ProdProcedure::getVersionNumber).orderByAsc(ProdProcedure::getSeq)
+                        .eq(user.getCompanyId()!=null,ProdProcedure::getCompanyId,user.getCompanyId()).orderByAsc(ProdProcedure::getSeq)
 
 
         );
         );
         if(plan.getPlanType()==0){
         if(plan.getPlanType()==0){
@@ -357,7 +357,7 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
         List<PlanProcedureTotal> oldPlanProcedureTotals=new ArrayList<>();
         List<PlanProcedureTotal> oldPlanProcedureTotals=new ArrayList<>();
         List<ProdProcedure> list;
         List<ProdProcedure> list;
         if(plan.getId()==null){
         if(plan.getId()==null){
-            list = procedureList.stream().filter(pl -> pl.getVersionNumber().equals(procedureList.get(0).getVersionNumber())).collect(Collectors.toList());
+            list = procedureList.stream().filter(pl -> pl.getVersionNumber().equals(procedureList.get(procedureList.size()-1).getVersionNumber())).collect(Collectors.toList());
             if(plan.getProductSchedulingNum()!=null){
             if(plan.getProductSchedulingNum()!=null){
                 if(count(new QueryWrapper<Plan>().eq("product_scheduling_num",plan.getProductSchedulingNum()))>0){
                 if(count(new QueryWrapper<Plan>().eq("product_scheduling_num",plan.getProductSchedulingNum()))>0){
                     msg.setError("当前排产工单号已存在");
                     msg.setError("当前排产工单号已存在");
@@ -1299,6 +1299,7 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
                 ProdProcedureTeam prodProcedureTeam=new ProdProcedureTeam();
                 ProdProcedureTeam prodProcedureTeam=new ProdProcedureTeam();
                 prodProcedureTeam.setCompanyId(companyId);
                 prodProcedureTeam.setCompanyId(companyId);
                 prodProcedureTeam.setPlanProcedureId(planProcedureTotal.getId());
                 prodProcedureTeam.setPlanProcedureId(planProcedureTotal.getId());
+                prodProcedureTeam.setDistributeDate(LocalDate.now());
                 prodProcedureTeam.setUserId(team[i]);
                 prodProcedureTeam.setUserId(team[i]);
                 int finalI = i;
                 int finalI = i;
                 //已存在的人员更新处理
                 //已存在的人员更新处理

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

@@ -4112,15 +4112,82 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         }
         }
 //        totalUser.setPersonWorkHoursWages(totalList);
 //        totalUser.setPersonWorkHoursWages(totalList);
         personWorkHoursWagesList.addAll(totalList);
         personWorkHoursWagesList.addAll(totalList);
+        //获取所有人员在指定日期的分配数据
+        List<ProdProcedureTeam> prodProcedureTeamList = prodProcedureTeamMapper.selectList(new QueryWrapper<ProdProcedureTeam>().select("SUM(work_time) AS workTime,SUM(job_of_money) AS jobOfMoney,user_id as userId,distribute_date as distributeDate").between("distribute_date", startDate, endDate).groupBy("user_id,distribute_date"));
         userList.forEach(u->{
         userList.forEach(u->{
             List<Map<String, Object>> mapList = personWorkHoursWagesList.stream().filter(pl -> String.valueOf(pl.get("userId")).equals(u.getId())).collect(Collectors.toList());
             List<Map<String, Object>> mapList = personWorkHoursWagesList.stream().filter(pl -> String.valueOf(pl.get("userId")).equals(u.getId())).collect(Collectors.toList());
+            for (String date : dataStringList) {
+                Optional<ProdProcedureTeam> first = prodProcedureTeamList.stream().filter(p -> p.getUserId().equals(u.getId()) && p.getDistributeDate().format(dtf1).equals(date)).findFirst();
+                Optional<Map<String, Object>> createDateValue = mapList.stream().filter(m -> String.valueOf(m.get("crateDate")).equals(date)).findFirst();
+                if(createDateValue.isPresent()){
+                    Map<String, Object> map = createDateValue.get();
+                    if(first.isPresent()){
+                        map.put("planCost",first.get().getJobOfMoney());
+                        map.put("planWorkTime",first.get().getWorkTime());
+                        BigDecimal decimalCost = new BigDecimal(String.valueOf(first.get().getJobOfMoney()));
+                        decimalCost=decimalCost.subtract(new BigDecimal(String.valueOf(map.get("cost")))).setScale(1,RoundingMode.HALF_UP);
+                        if(decimalCost.doubleValue()<0){
+                            decimalCost=new BigDecimal(0);
+                        }
+                        BigDecimal decimalWorkTime = new BigDecimal(String.valueOf(first.get().getWorkTime()));
+                        decimalWorkTime=decimalWorkTime.subtract(new BigDecimal(String.valueOf(map.get("workTime")))).setScale(1,RoundingMode.HALF_UP);
+                        if(decimalWorkTime.doubleValue()<0){
+                            decimalWorkTime=new BigDecimal(0);
+                        }
+                        map.put("surplusCost",decimalCost.doubleValue());
+                        map.put("surplusTime",decimalWorkTime.doubleValue());
+                    }else {
+                        map.put("planCost",0);
+                        map.put("planWorkTime",0);
+                        map.put("surplusCost",0);
+                        map.put("surplusTime",0);
+                    }
+                }else {
+                    Map map=new HashMap();
+                    map.put("crateDate",date);
+                    map.put("cost",0);
+                    map.put("workTime",0);
+                    map.put("departmentName",u.getDepartmentName());
+                    if(first.isPresent()){
+                        map.put("planCost",first.get().getJobOfMoney());
+                        map.put("planWorkTime",first.get().getWorkTime());
+                        BigDecimal decimalCost = new BigDecimal(String.valueOf(first.get().getJobOfMoney()));
+                        decimalCost=decimalCost.subtract(new BigDecimal(String.valueOf(map.get("cost")))).setScale(1,RoundingMode.HALF_UP);
+                        if(decimalCost.doubleValue()<0){
+                            decimalCost=new BigDecimal(0);
+                        }
+                        BigDecimal decimalWorkTime = new BigDecimal(String.valueOf(first.get().getWorkTime()));
+                        decimalWorkTime=decimalWorkTime.subtract(new BigDecimal(String.valueOf(map.get("workTime")))).setScale(1,RoundingMode.HALF_UP);
+                        if(decimalWorkTime.doubleValue()<0){
+                            decimalWorkTime=new BigDecimal(0);
+                        }
+                        map.put("surplusCost",decimalCost.doubleValue());
+                        map.put("surplusTime",decimalWorkTime.doubleValue());
+                    }else {
+                        map.put("planCost",0);
+                        map.put("planWorkTime",0);
+                        map.put("surplusCost",0);
+                        map.put("surplusTime",0);
+                    }
+                    map.put("userId",u.getId());
+                    map.put("userName",u.getName());
+                    mapList.add(map);
+                }
+            }
             u.setPersonWorkHoursWages(mapList);
             u.setPersonWorkHoursWages(mapList);
             u.setDepartmentCascade(u.getId().equals("0")?"小计":convertDepartmentIdToCascade(u.getDepartmentId(),departmentList));
             u.setDepartmentCascade(u.getId().equals("0")?"小计":convertDepartmentIdToCascade(u.getDepartmentId(),departmentList));
             double workTime = mapList.stream().mapToDouble(mt -> Double.valueOf(String.valueOf(mt.get("workTime")))).sum();
             double workTime = mapList.stream().mapToDouble(mt -> Double.valueOf(String.valueOf(mt.get("workTime")))).sum();
             BigDecimal bigDecimal=new BigDecimal(workTime);
             BigDecimal bigDecimal=new BigDecimal(workTime);
-//            bigDecimal=bigDecimal.multiply(new BigDecimal(60)).setScale(2, BigDecimal.ROUND_HALF_UP);
-             double cost = mapList.stream().mapToDouble(mt -> Double.valueOf(String.valueOf(mt.get("cost")))).sum();
+            double cost = mapList.stream().mapToDouble(mt -> Double.valueOf(String.valueOf(mt.get("cost")))).sum();
+            double planWorkTime = mapList.stream().mapToDouble(mt -> Double.valueOf(String.valueOf(mt.get("planWorkTime")))).sum();
+            BigDecimal planBigDecimal=new BigDecimal(planWorkTime);
+            double planCost = mapList.stream().mapToDouble(mt -> Double.valueOf(String.valueOf(mt.get("planCost")))).sum();
+            double surplusWorkTime = mapList.stream().mapToDouble(mt -> Double.valueOf(String.valueOf(mt.get("surplusTime")))).sum();
+            BigDecimal surplusBigDecimal=new BigDecimal(surplusWorkTime);
+            double surplusCost = mapList.stream().mapToDouble(mt -> Double.valueOf(String.valueOf(mt.get("surplusCost")))).sum();
             u.setTotalResult(String.valueOf(bigDecimal.doubleValue())+"分钟 "+String.format("%.2f",cost)+"元");
             u.setTotalResult(String.valueOf(bigDecimal.doubleValue())+"分钟 "+String.format("%.2f",cost)+"元");
+            u.setTotalPlanResult(String.valueOf(planBigDecimal.doubleValue())+"分钟 "+String.format("%.2f",planCost)+"元");
+            u.setTotalSurplusResult(String.valueOf(surplusBigDecimal.doubleValue())+"分钟 "+String.format("%.2f",surplusCost)+"元");
         });
         });
         resultMap.put("total",userIPage.getTotal());
         resultMap.put("total",userIPage.getTotal());
         resultMap.put("records",userList);
         resultMap.put("records",userList);

+ 2 - 1
fhKeeper/formulahousekeeper/management-workshop/src/main/resources/mapper/ProdProcedureTeamMapper.xml

@@ -17,11 +17,12 @@
         <result column="status" property="status" />
         <result column="status" property="status" />
         <result column="is_change" property="isChange" />
         <result column="is_change" property="isChange" />
         <result column="steel_num_array" property="steelNumArray" />
         <result column="steel_num_array" property="steelNumArray" />
+        <result column="distribute_date" property="distributeDate" />
     </resultMap>
     </resultMap>
 
 
     <!-- 通用查询结果列 -->
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
     <sql id="Base_Column_List">
-        id, company_id, user_id, work_time, job_of_money, progress, checker_id, checker_name, update_time, plan_procedure_id, status, is_change, steel_num_array
+        id, company_id, user_id, work_time, job_of_money, progress, checker_id, checker_name, update_time, plan_procedure_id, status, is_change, steel_num_array, distribute_date
     </sql>
     </sql>
 
 
     <select id="getReportForWorkList" resultType="java.util.HashMap" >
     <select id="getReportForWorkList" resultType="java.util.HashMap" >

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

@@ -136,11 +136,7 @@
 
 
     <select id="getPersonWorkHoursWagesList" resultType="java.util.Map">
     <select id="getPersonWorkHoursWagesList" resultType="java.util.Map">
         select b.id AS userId,c.department_name AS departmentName,b.name AS userName,DATE_FORMAT(a.create_date,'%Y%m%d') AS crateDate,IFNULL(SUM(a.cost),0) AS cost,IFNULL(SUM(a.working_time),0) AS workTime
         select b.id AS userId,c.department_name AS departmentName,b.name AS userName,DATE_FORMAT(a.create_date,'%Y%m%d') AS crateDate,IFNULL(SUM(a.cost),0) AS cost,IFNULL(SUM(a.working_time),0) AS workTime
-        ,SUM(ppt.`work_time`) AS planWorkTime,SUM(ppt.`job_of_money`) AS planCost,
-        IF((SUM(ppt.`work_time`)-IFNULL(SUM(a.working_time),0))&lt;0,0,FORMAT((SUM(ppt.`work_time`)-IFNULL(SUM(a.working_time),0)),1)) AS surplusTime,
-        IF((SUM(ppt.`job_of_money`)-IFNULL(SUM(a.cost),0))&lt;0,0,FORMAT((SUM(ppt.`job_of_money`)-IFNULL(SUM(a.cost),0)),1)) AS surplusCost
         from report a
         from report a
-        LEFT JOIN `prod_procedure_team` ppt ON ppt.id=a.`user_procedure_team_id`
         left join user b on a.creator_id=b.id
         left join user b on a.creator_id=b.id
         left join department c on c.department_id=b.department_id
         left join department c on c.department_id=b.department_id
         where a.company_id=#{companyId}
         where a.company_id=#{companyId}

+ 5 - 1
fhKeeper/formulahousekeeper/timesheet-workshop/src/views/statistic/index.vue

@@ -99,7 +99,11 @@
                 </el-table-column>
                 </el-table-column>
                 <el-table-column align="center" prop="totalResult" label="合计" min-width="150">
                 <el-table-column align="center" prop="totalResult" label="合计" min-width="150">
                    <template slot-scope="scope" >
                    <template slot-scope="scope" >
-                    <span :class="`${'colorText'}`" @click="showReportDetail(scope.row,item,1)">{{scope.row.totalResult}}</span>
+                    <div @click="showReportDetail(scope.row,item,1)">
+                      <div  style="color: black;">{{scope.row.totalPlanResult}}</div>
+                      <div style="color: #02a7f0;"  @click="showReportDetail(scope.row,item,1)"> {{scope.row.totalResult}}</div> 
+                      <div style="color: red;">{{scope.row.totalSurplusResult}}</div>
+                    </div>
                   </template>
                   </template>
                 </el-table-column>
                 </el-table-column>
             </el-table>
             </el-table>