Min 1 год назад
Родитель
Сommit
b00e4a4487

+ 10 - 1
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/PlanController.java

@@ -1,10 +1,13 @@
 package com.management.platform.controller;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.management.platform.entity.Plan;
 import com.management.platform.entity.PlanProcedureTotal;
+import com.management.platform.entity.PlanSteelStampNumber;
 import com.management.platform.entity.ProdProcedureTeam;
 import com.management.platform.service.PlanService;
+import com.management.platform.service.PlanSteelStampNumberService;
 import com.management.platform.util.HttpRespMsg;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.transaction.annotation.Transactional;
@@ -16,6 +19,7 @@ import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
+import java.util.List;
 
 /**
  * <p>
@@ -31,6 +35,8 @@ public class PlanController {
 
     @Resource
     private PlanService planService;
+    @Resource
+    private PlanSteelStampNumberService planSteelStampNumberService;
 
     @RequestMapping("/list")
     public HttpRespMsg list(String date,String steelStampNumber,@RequestParam(defaultValue = "3") Integer planType,Integer deptId,Integer pageIndex,Integer pageSize){
@@ -40,7 +46,10 @@ public class PlanController {
     @RequestMapping("/getById")
     public HttpRespMsg getById(Plan plan){
         HttpRespMsg httpRespMsg=new HttpRespMsg();
-        httpRespMsg.setData(planService.getById(plan.getId()));
+        Plan byId = planService.getById(plan.getId());
+        List<PlanSteelStampNumber> planSteelStampNumbers = planSteelStampNumberService.list(new QueryWrapper<PlanSteelStampNumber>().eq("plan_id", plan.getId()));
+        byId.setSteelStampNumberList(planSteelStampNumbers);
+        httpRespMsg.setData(byId);
         return httpRespMsg;
     }
 

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

@@ -1059,9 +1059,14 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
                 }
 
             }
+        }else {
+            msg.setError("请选择人员");
+            return msg;
         }
-        if(!prodProcedureTeamService.saveOrUpdateBatch(list)){
-            msg.setError("验证失败");
+        if(list.size()>0){
+            if(!prodProcedureTeamService.saveOrUpdateBatch(list)){
+                msg.setError("验证失败");
+            }
         }
         return msg;
     }

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

@@ -4272,18 +4272,45 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         map.put("totalWorkingTime",mapList.stream().mapToDouble(mt->Double.valueOf(String.valueOf(mt.get("working_time")))).sum());
         map.put("totalCost",mapList.stream().mapToDouble(mt->Double.valueOf(String.valueOf(mt.get("cost")))).sum());
         if(checkStatus!=null && detailStatus==null){
+            DateTimeFormatter dtf=DateTimeFormatter.ofPattern("yyyy-MM-dd");
+            DateTimeFormatter dtf1=DateTimeFormatter.ofPattern("yyyyMMdd");
+            List<LocalDate> allDateList = getDays(LocalDate.parse(startDate, dtf), LocalDate.parse(endDate, dtf));
+            List<String> dataStringList=new ArrayList<>();
+            //补全日期列表
+            for (LocalDate localDate : allDateList) {
+                dataStringList.add(localDate.format(dtf1));
+            }
             map=new HashMap();
             List<String> dateList = mapList.stream().map(m -> String.valueOf(m.get("createDate"))).distinct().collect(Collectors.toList());
+            dateList.addAll(dataStringList.stream().filter(dl->!dateList.contains(dl)).collect(Collectors.toList()));
             Map<Object, List<Map<String, Object>>> listMap = mapList.stream().collect(Collectors.groupingBy(m -> m.get("createDate")));
             List<Map<String,Object>> resultList=new ArrayList<>();
+            List<User> userList = userMapper.selectList(new QueryWrapper<User>().eq("company_id", user.getCompanyId()));
+            List<Department> departmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", user.getCompanyId()).eq("manager_id", user.getId()));
+            List<DepartmentOtherManager> departmentOtherManagers = departmentOtherManagerMapper.selectList(new QueryWrapper<DepartmentOtherManager>().eq("company_id", user.getCompanyId()).eq("other_manager_id", user.getId()));
+            List<Integer> deptIds = departmentList.stream().map(Department::getDepartmentId).distinct().collect(Collectors.toList());
+            List<Integer> otherDeptIds = departmentOtherManagers.stream().map(DepartmentOtherManager::getDepartmentId).distinct().collect(Collectors.toList());
+            deptIds.addAll(otherDeptIds);
+            List<Integer> targetDeptIds = deptIds.stream().distinct().collect(Collectors.toList());
+            boolean canViewAll = sysFunctionService.hasPriviledge(user.getRoleId(), "查看全部人员工时工价");
             for (String s : dateList) {
                 Map<String,Object> item=new HashMap();
                 List<Map<String, Object>> list = listMap.get(s);
                 item.put("createDate",s);
+                //补全的日期无数据的情况 手填填入
+                if(list==null){
+                    list=new ArrayList<>();
+                    Map<String,Object> ob=new HashMap<>();
+                    ob.put("creator_id",user.getId());
+                    ob.put("creatorName",user.getName());
+                    ob.put("working_time",0);
+                    ob.put("cost",0);
+                    list.add(ob);
+                }
                 Map<Object, Map<String, Object>> mapMap = list.stream().collect(Collectors.groupingBy(m -> m.get("creator_id"), Collectors.collectingAndThen(Collectors.toList(), i -> {
                     Map<String, Object> retMap = new HashMap<>();
-                    double working_time = i.stream().mapToDouble(mmm -> Double.valueOf(String.valueOf(mmm.get("working_time")))).sum();
-                    double cost = i.stream().mapToDouble(mmm -> Double.valueOf(String.valueOf(mmm.get("cost")))).sum();
+                    double working_time = i.stream().mapToDouble(mmm -> Double.valueOf(String.valueOf(mmm.get("working_time")==null?0:mmm.get("working_time")))).sum();
+                    double cost = i.stream().mapToDouble(mmm -> Double.valueOf(String.valueOf(mmm.get("cost")==null?0:mmm.get("cost")))).sum();
                     retMap.put("working_time", working_time);
                     retMap.put("creatorName",i.get(0).get("creatorName"));
                     retMap.put("creatorId",i.get(0).get("creator_id"));
@@ -4296,6 +4323,19 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                     Map<String, Object> nameItem = mapMap.get(id);
                     theData.add(nameItem);
                 }
+                if(checkStatus==1){
+                    List<User> users = userList.stream().filter(ul -> !theData.stream().anyMatch(td -> td.get("creatorId").equals(ul.getId()))).collect(Collectors.toList());
+                    for (User u : users) {
+                        if(canViewAll?(targetDeptIds.size()>0):(targetDeptIds.size()>0&&targetDeptIds.contains(u.getDepartmentId()))){
+                            Map<String, Object> nameItem =new HashMap<>();
+                            nameItem.put("working_time", 0);
+                            nameItem.put("creatorName",u.getName());
+                            nameItem.put("creatorId",u.getId());
+                            nameItem.put("cost", 0);
+                            theData.add(nameItem);
+                        }
+                    }
+                }
                 item.put("subDataList",theData);
                 item.put("working_time",list.stream().mapToDouble(mt->Double.valueOf(String.valueOf(mt.get("working_time")))).sum());
                 item.put("cost",list.stream().mapToDouble(mt->Double.valueOf(String.valueOf(mt.get("cost")))).sum());

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

@@ -196,7 +196,7 @@
         <if test="startDate!=null and startDate!='' and endDate!=null and endDate!=''">
             and (b.start_date &gt;= #{startDate} and b.end_date &lt;= #{endDate})
         </if>
-        order by b.create_time,a.id desc
+        order by b.create_time desc ,a.id
         <if test="pageStart!=null and pageSize!=null">
             limit #{pageStart},#{pageSize}
         </if>

+ 2 - 2
fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/views/planView/todayPlan/distribution.vue

@@ -16,13 +16,13 @@
             <span>{{ item.prodProcedure.name }}</span>
           </div>
           <div class="PlanItem">
-            <div>单件工价:</div><span class="textBeyondHiding">{{ item.prodProcedure.workingTime }}</span>
+            <div>单件工价:</div><span class="textBeyondHiding">{{ item.prodProcedure.unitPrice }}</span>
           </div>
           <div class="PlanItem">
             <div>总工价:</div><span class="textBeyondHiding">{{ item.totalWages }}</span>
           </div>
           <div class="PlanItem">
-            <div>单件工时:</div><span class="textBeyondHiding">{{ item.prodProcedure.unitPrice }} min</span>
+            <div>单件工时:</div><span class="textBeyondHiding">{{ item.prodProcedure.workingTime }} min</span>
           </div>
           <div class="PlanItem">
             <div>总工时:</div><span class="textBeyondHiding">{{ item.totalWorkingHours }} min</span>

+ 12 - 3
fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/views/statisticsView/statisticsView.vue

@@ -18,7 +18,9 @@
             <van-collapse  v-model="activeNames">
               <van-collapse-item v-for="(item,index) in groupList" :key="index" :title="item.createDate+' 工时:'+item.working_time+'分钟 工价:'+item.cost+'元'" :name="index">
                  <van-cell v-for="(item2,index2) in item.subDataList" :key="index2" @click="goDetail(item2)">
-                    {{item2.creatorName}}:    工时:{{item2.working_time}}分钟   工价:{{item2.cost}}元
+                  <span>{{item2.creatorName}}:</span>
+                  工时:<span :style="{color:item2.working_time==0?'red':''}">{{item2.working_time}}</span>分钟
+                  工价:<span :style="{color:item2.cost==0?'red':''}">{{item2.cost}}</span>元
                  </van-cell>
               </van-collapse-item>
             </van-collapse>
@@ -54,7 +56,7 @@ export default {
   data() {
     return {
       checkStatus: '0',
-      labelList: [{name: '我的统计', id: '0'},{name: '工位统计', id: '1'}],
+      labelList: [],
       groupList: [],
       currentDate: new Date(),
       dateShow: false,
@@ -64,11 +66,18 @@ export default {
       totalWorkingTime:0,
       totalCost:0,
       activeNames: ['1'],
+      beDeptList: JSON.parse(localStorage.getItem('beDeptList')), // 是否为工长
     };
   },
   computed: {},
   watch: {},
-  created() {},
+  created() {
+    if(this.beDeptList){
+      this.labelList=[{name: '我的统计', id: '0'},{name: '工位统计', id: '1'}]
+    }else{
+      this.labelList=[{name: '我的统计', id: '0'}]
+    }
+  },
   mounted() {
     this.getData()
   },

+ 1 - 1
fhKeeper/formulahousekeeper/timesheet-workshop/src/views/plan/orderInsert.vue

@@ -57,7 +57,7 @@
         </el-table-column>
         <el-table-column prop="startDate" label="开工时间" width="180"></el-table-column>
         <el-table-column prop="endDate" label="完工时间" width="180"></el-table-column>
-        <el-table-column label="编辑">
+        <el-table-column label="操作" :fixed="'right'">
           <template slot-scope="scope">
             <div @click="editPlan(scope.row)" class="colorText">编辑</div>
           </template>

+ 4 - 4
fhKeeper/formulahousekeeper/timesheet-workshop/src/views/plan/planComponent.vue

@@ -122,10 +122,10 @@
           <!-- <el-form-item label="进度"  :style="this.titleName==='编辑今日计划'?'':'width: 100%'" prop="progress">
             <el-input v-model="todayPlanForm.progress" maxlength="20"></el-input>
           </el-form-item> -->
-            <el-form-item label="车辆序号" style="width: 100%" prop="steelStampNumberStart">
-            <el-input-number class="w45" v-model="todayPlanForm.chicleNumStart" maxlength="20"></el-input-number>
-            {{ "-" }}
-            <el-input-number class="w45" v-model="todayPlanForm.chicleNumEnd" maxlength="20"></el-input-number>
+          <el-form-item label="车辆序号" style="width: 100%" prop="steelStampNumberStart">
+          <el-input-number class="w45" v-model="todayPlanForm.chicleNumStart" maxlength="20"></el-input-number>
+          {{ "-" }}
+          <el-input-number class="w45" v-model="todayPlanForm.chicleNumEnd" maxlength="20"></el-input-number>
           </el-form-item>
           <el-form-item label="数量" prop="num">
             <el-input v-model="todayPlanForm.num" maxlength="10" type="number"></el-input>

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

@@ -94,10 +94,14 @@
                 </el-table-column>
                 <el-table-column align="center" prop="procedureName" label="工序" min-width="250"></el-table-column>
                 <el-table-column align="center" prop="userName" label="人员" min-width="150"></el-table-column>
-                <el-table-column align="center" prop="planWorkTime" label="计划工时" min-width="250"></el-table-column>
-                <el-table-column align="center" prop="nowWorkTime" label="当前工时" min-width="250"></el-table-column>
+                <el-table-column align="center" prop="planWorkTime" label="计划工时" min-width="250">
+                  <template slot-scope="scope" v-if="scope.row.planWorkTime">{{scope.row.planWorkTime}}分钟</template>
+                </el-table-column>
+                <el-table-column align="center" prop="nowWorkTime" label="当前工时" min-width="250">
+                  <template slot-scope="scope" v-if="scope.row.nowWorkTime">{{scope.row.nowWorkTime}}分钟</template>
+                </el-table-column>
                 <el-table-column align="center" prop="progress" label="进度" min-width="250">
-                  <template slot-scope="scope">
+                  <template slot-scope="scope" v-if="scope.row.progress">
                     {{scope.row.progress}}%
                   </template>
                 </el-table-column>
@@ -222,16 +226,21 @@
           <el-form-item label="项目代码" style="width: 100%" prop="projectCode">
             <el-input v-model="planForm.projectCode" maxlength="50" readonly></el-input>
           </el-form-item>
-          <el-form-item label="钢印号" style="width: 100%" prop="steelStampNumberStart">
-            <el-input class="w45" v-model="planForm.steelStampNumberStart" maxlength="20"></el-input>
+          <el-form-item label="钢印号" v-for="(item,index) in planForm.steelStampNumberList" :key="index" style="width: 100%" prop="steelStampNumberStart">
+            <el-input class="w45" v-model="item.steelStampNumberStart" maxlength="20"></el-input>
             {{ "-" }}
-            <el-input class="w45" v-model="planForm.steelStampNumberEnd" maxlength="20"></el-input>
+            <el-input class="w45" v-model="item.steelStampNumberEnd" maxlength="20"></el-input>
           </el-form-item>
           <el-form-item label="计划总工价" v-if="this.titleName==='编辑今日计划'"  prop="planTotalWages">
             <el-input v-model="planForm.planTotalWages" type="number"></el-input>
           </el-form-item>
-          <el-form-item label="进度"  :style="this.titleName==='编辑今日计划'?'':'width: 100%'" prop="progress">
+          <!-- <el-form-item label="进度"  :style="this.titleName==='编辑今日计划'?'':'width: 100%'" prop="progress">
             <el-input v-model="planForm.progress" maxlength="20"></el-input>
+          </el-form-item> -->
+          <el-form-item label="车辆序号" style="width: 100%" prop="steelStampNumberStart">
+          <el-input-number class="w45" v-model="planForm.chicleNumStart" maxlength="20"></el-input-number>
+          {{ "-" }}
+          <el-input-number class="w45" v-model="planForm.chicleNumEnd" maxlength="20"></el-input-number>
           </el-form-item>
           <el-form-item label="数量" prop="num">
             <el-input v-model="planForm.num" maxlength="10" type="number"></el-input>
@@ -412,7 +421,16 @@ export default {
         endDate: "",
         describtion: "",
         versionNumber: "",
-        planTotalWages:0
+        planTotalWages:0,
+        chicleNumStart:'',
+        chicleNumEnd:'',
+        steelStampNumberList:[
+          {
+            id:null,
+            steelStampNumberStart:'',
+            steelStampNumberEnd:''
+          }
+        ],
       },
 
       orderInsertPlanForm : {