Min 1 year ago
parent
commit
48f0d83282

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/SapProjectServiceController.java

@@ -37,7 +37,7 @@ public class SapProjectServiceController {
     public HttpRespMsg sapServiceList(){
         HttpRespMsg msg=new HttpRespMsg();
         Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
-        List<SapProjectService> serviceList = sapProjectServiceService.list(new LambdaQueryWrapper<SapProjectService>().eq(SapProjectService::getCompanyId, companyId));
+        List<SapProjectService> serviceList = sapProjectServiceService.list(new LambdaQueryWrapper<SapProjectService>().eq(SapProjectService::getStatus,2).eq(SapProjectService::getCompanyId, companyId));
         msg.setData(serviceList);
         return msg;
     }

+ 4 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/SapProjectService.java

@@ -15,7 +15,7 @@ import lombok.experimental.Accessors;
  * </p>
  *
  * @author Seyason
- * @since 2023-11-27
+ * @since 2024-01-04
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -45,6 +45,9 @@ public class SapProjectService extends Model<SapProjectService> {
     @TableField("company_id")
     private Integer companyId;
 
+    @TableField("status")
+    private Integer status;
+
 
     @Override
     protected Serializable pkVal() {

+ 7 - 5
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -11806,21 +11806,23 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             List<ServiceProduct> serviceProducts = projectServiceData.getServiceProducts();
             if(serviceProducts!=null&&serviceProducts.size()>0){
                 for (ServiceProduct serviceProduct : serviceProducts) {
-                    if(serviceProduct.getProductCategoryID().equals("901")&&serviceProduct.getBaseMeasureUnitCode().equals("HUR")&&serviceProduct.getSales().getLifeCycleStatusCode().equals("2")){
+                    if(serviceProduct.getProductCategoryID().equals("901")&&serviceProduct.getBaseMeasureUnitCode().equals("HUR")&&serviceProduct.getSales()!=null&&serviceProduct.getSales().getLifeCycleStatusCode().equals("2")){
                         SapProjectService sapProjectService=new SapProjectService();
                         sapProjectService.setServiceCode(serviceProduct.getInternalID());
                         sapProjectService.setServiceName(serviceProduct.getDescription().getDescription());
                         sapProjectService.setCompanyId(companyId);
-                        boolean match = serviceList.stream().anyMatch(s -> s.getServiceCode().equals(serviceProduct.getInternalID()));
-                        if(!match){
-                            sapProjectServiceList.add(sapProjectService);
+                        sapProjectService.setStatus(Integer.valueOf(serviceProduct.getSales().getLifeCycleStatusCode()));
+                        Optional<SapProjectService> first = serviceList.stream().filter(s -> s.getServiceCode().equals(serviceProduct.getInternalID())).findFirst();
+                        if(first.isPresent()){
+                            sapProjectService.setId(first.get().getId());
                         }
+                        sapProjectServiceList.add(sapProjectService);
                     }
                 }
             }
         }
         if(sapProjectServiceList.size()>0){
-            sapProjectServiceService.saveBatch(sapProjectServiceList);
+            sapProjectServiceService.saveOrUpdateBatch(sapProjectServiceList);
         }
         msg.setData(xmlResponseData);
         return msg;

+ 51 - 31
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -8103,37 +8103,46 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             //查看全部
             resultList=reportMapper.getUserWorkTimeByCategory(categoryId,userId,user.getCompanyId(),null,deptId,startDate,endDate);
         }
-        List<String> userIdList = resultList.stream().map(m -> String.valueOf(m.get("userId"))).distinct().collect(Collectors.toList());
-        Map<String, List<Map<String, Object>>> listMap = resultList.stream().collect(Collectors.groupingBy(r -> String.valueOf(r.get("userId"))));
+
+        List<String> projectIdList = resultList.stream().map(m -> String.valueOf(m.get("projectId"))).distinct().collect(Collectors.toList());
+
+        Map<String, List<Map<String, Object>>> listMapGroupByProject = resultList.stream().collect(Collectors.groupingBy(r -> String.valueOf(r.get("projectId"))));
         List<Map<String,Object>> lastList=new ArrayList<>();
-        for (String targetUserId : userIdList) {
-            Optional<Map<String, Object>> first = resultList.stream().filter(r -> String.valueOf(r.get("userId")).equals(targetUserId)).findFirst();
-            if(first.isPresent()){
-                Map<String, Object> map = first.get();
-                Map<String,Object> item=new HashMap<>();
-                item.put("userId",String.valueOf(map.get("userId")));
-                item.put("categoryName",String.valueOf(map.get("categoryName")));
-                item.put("deptName",String.valueOf(map.get("deptName")));
-                item.put("userName",String.valueOf(map.get("userName")));
-                item.put("deptId",String.valueOf(map.get("deptId")));
-                item.put("targetWorkingTime",String.valueOf(map.get("targetWorkingTime")));
-                item.put("allWorkingTime",String.valueOf(map.get("allWorkingTime")));
-                item.put("plate1",map.get("plate1")==null?"":String.valueOf(map.get("plate1")));
-                item.put("plate2",map.get("plate2")==null?"":String.valueOf(map.get("plate2")));
-                item.put("plate3",map.get("plate3")==null?"":String.valueOf(map.get("plate3")));
-                item.put("plate4",map.get("plate4")==null?"":String.valueOf(map.get("plate4")));
-                item.put("plate5",map.get("plate5")==null?"":String.valueOf(map.get("plate5")));
-                if(map.get("corpWxUserId")!=null){
-                    item.put("corpWxUserId",String.valueOf(map.get("corpWxUserId")));
-                }
-                if(map.get("corpWxDeptId")!=null){
-                    item.put("corpWxDeptId",String.valueOf(map.get("corpWxDeptId")));
-                }
-                List<Map<String, Object>> mapList = listMap.get(targetUserId);
-                item.put("dataList",mapList);
-                lastList.add(item);
+        for (String targetProjectId : projectIdList) {
+            List<Map<String, Object>> maps = listMapGroupByProject.get(targetProjectId);
+            Optional<Map<String, Object>> first = resultList.stream().filter(r -> String.valueOf(r.get("projectId")).equals(targetProjectId)).findFirst();
+            Map<String, List<Map<String, Object>>> listMapGroupByUser = maps.stream().collect(Collectors.groupingBy(r -> String.valueOf(r.get("userId"))));
+            List<String> userIdList = maps.stream().map(m -> String.valueOf(m.get("userId"))).distinct().collect(Collectors.toList());
+            for (String targetUserId : userIdList) {
+                if(first.isPresent()){
+                    Map<String, Object> map = first.get();
+                    Map<String,Object> item=new HashMap<>();
+                    item.put("userId",String.valueOf(map.get("userId")));
+                    item.put("projectCode",String.valueOf(map.get("projectCode")));
+                    item.put("deptName",String.valueOf(map.get("deptName")));
+                    item.put("userName",String.valueOf(map.get("userName")));
+                    item.put("deptId",String.valueOf(map.get("deptId")));
+                    item.put("targetWorkingTime",String.valueOf(map.get("targetWorkingTime")));
+                    item.put("allWorkingTime",String.valueOf(map.get("allWorkingTime")));
+                    item.put("plate1",map.get("plate1")==null?"":String.valueOf(map.get("plate1")));
+                    item.put("plate2",map.get("plate2")==null?"":String.valueOf(map.get("plate2")));
+                    item.put("plate3",map.get("plate3")==null?"":String.valueOf(map.get("plate3")));
+                    item.put("plate4",map.get("plate4")==null?"":String.valueOf(map.get("plate4")));
+                    item.put("plate5",map.get("plate5")==null?"":String.valueOf(map.get("plate5")));
+                    if(map.get("corpWxUserId")!=null){
+                        item.put("corpWxUserId",String.valueOf(map.get("corpWxUserId")));
+                    }
+                    if(map.get("corpWxDeptId")!=null){
+                        item.put("corpWxDeptId",String.valueOf(map.get("corpWxDeptId")));
+                    }
+                    List<Map<String, Object>> mapList = listMapGroupByUser.get(targetUserId);
+                    item.put("dataList",mapList);
+                    lastList.add(item);
+                }
             }
         }
+
+
         if(start!=null&&size!=null){
             if(lastList.size()<size){
                 size=lastList.size();
@@ -8156,6 +8165,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
     public HttpRespMsg exportUserWorkTimeByCategory(Integer categoryId, Integer deptId, String userId, String startDate, String endDate) {
         HttpRespMsg msg = getUserWorkTimeByCategory(categoryId, deptId, userId, startDate, endDate, null, null);
         Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
+
         WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", companyId));
         DateTimeFormatter dtf=DateTimeFormatter.ofPattern("yyyy-MM-dd");
         List<LocalDate> dates = getDays(LocalDate.parse(startDate, dtf), LocalDate.parse(endDate, dtf));
@@ -8163,7 +8173,12 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         Map<String,Object> data = (Map<String, Object>) msg.getData();
         List<List<String>> dataList=new ArrayList<>();
         List<String> titleList=new ArrayList<>();
-        titleList.add("生产项目号");
+        if(categoryId!=null){
+            ProjectCategory projectCategory = projectCategoryMapper.selectById(categoryId);
+            titleList.add(projectCategory.getName()+"项目号");
+        }else {
+            titleList.add("未分配");
+        }
         titleList.add("姓名");
         titleList.add("部门");
         List<Map<String,Object>> headerList= (List<Map<String, Object>>) data.get("header");
@@ -8172,7 +8187,12 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             titleList.add(String.valueOf(custom.get("titleName")));
         }
         titleList.add("总工时");
-        titleList.add("生产工时");
+        if(categoryId!=null){
+            ProjectCategory projectCategory = projectCategoryMapper.selectById(categoryId);
+            titleList.add(projectCategory.getName()+"工时");
+        }else {
+            titleList.add("未分配工时");
+        }
         for (Map<String, Object> header : headerList) {
             titleList.add(String.valueOf(header.get("titleName")));
         }
@@ -8180,7 +8200,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         List<Map<String,Object>> records = (List<Map<String, Object>>) data.get("record");
         for (Map<String, Object> record : records) {
             List<String> item=new ArrayList<>();
-            item.add(String.valueOf(record.get("categoryName")));
+            item.add(String.valueOf(record.get("projectCode")));
             if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
                 item.add("$userName="+String.valueOf(record.get("corpWxUserId"))+"$");
                 item.add("$departmentName="+String.valueOf(record.get("corpWxDeptId"))+"$");

+ 5 - 4
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/task/TimingTask.java

@@ -1978,16 +1978,17 @@ public class TimingTask {
                             sapProjectService.setServiceCode(serviceProduct.getInternalID());
                             sapProjectService.setServiceName(serviceProduct.getDescription().getDescription());
                             sapProjectService.setCompanyId(companyId);
-                            boolean match = serviceList.stream().anyMatch(s -> s.getServiceCode().equals(serviceProduct.getInternalID()));
-                            if(!match){
-                                sapProjectServiceList.add(sapProjectService);
+                            Optional<SapProjectService> first = serviceList.stream().filter(s -> s.getServiceCode().equals(serviceProduct.getInternalID())).findFirst();
+                            if(first.isPresent()){
+                                sapProjectService.setId(first.get().getId());
                             }
+                            sapProjectServiceList.add(sapProjectService);
                         }
                     }
                 }
             }
             if(sapProjectServiceList.size()>0){
-                sapProjectServiceService.saveBatch(sapProjectServiceList);
+                sapProjectServiceService.saveOrUpdateBatch(sapProjectServiceList);
             }
         }
     }

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

@@ -1084,11 +1084,11 @@
     </select>
 
     <select id="getUserWorkTimeByCategory" resultType="java.util.Map">
-        select pc.id as categoryId, IFNULL(pc.name,'未分配') as categoryName,date_format(r.create_date,'%Y-%m-%d') as createDate,u.id as userId,u.name as userName,u.corpwx_userid as corpWxUserId,d.department_name as deptName,d.department_id as deptId
+        select p.id as projectId, p.project_code as projectCode,date_format(r.create_date,'%Y-%m-%d') as createDate,u.id as userId,u.name as userName,u.corpwx_userid as corpWxUserId,d.department_name as deptName,d.department_id as deptId
         ,d.corpwx_deptid as corpWxDeptId,u.plate1,u.plate2,u.plate3,u.plate4,u.plate5,SUM(r.working_time) as workingTime
         <if test="startDate!=null and startDate!='' and endDate!=null and endDate!=''">
             ,IFNULL((select SUM(working_time) from report where company_id=#{companyId} and create_date between  #{startDate} and #{endDate} and creator_id=u.id),0) as allWorkingTime
-            ,IFNULL((select SUM(working_time) from report where company_id=#{companyId} and create_date between  #{startDate} and #{endDate} and creator_id=u.id and project_id in (select id from project where category=pc.id)),0) as targetWorkingTime
+            ,IFNULL((select SUM(working_time) from report where company_id=#{companyId} and create_date between  #{startDate} and #{endDate} and creator_id=u.id and project_id =p.id),0) as targetWorkingTime
         </if>
         from
         report r
@@ -1118,6 +1118,6 @@
         <if test="userId!=null and userId!=''">
             and u.id=#{userId}
         </if>
-        group by r.create_date
+        group by p.id,r.create_date,u.id
     </select>
 </mapper>

+ 2 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/SapProjectServiceMapper.xml

@@ -8,11 +8,12 @@
         <result column="service_code" property="serviceCode" />
         <result column="service_name" property="serviceName" />
         <result column="company_id" property="companyId" />
+        <result column="status" property="status" />
     </resultMap>
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        id, service_code, service_name, company_id
+        id, service_code, service_name, company_id, status
     </sql>
 
 </mapper>

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

@@ -5390,6 +5390,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 item.put("nowCost",arrangeTotalNowCost.doubleValue());
                 item.put("planHour",arrangeTotalPlanHour.doubleValue());
                 item.put("nowHour",arrangeTotalNowHour.doubleValue());
+                BigDecimal progress = arrangeTotalNowNum.divide(arrangeTotalPlanNum,2, BigDecimal.ROUND_HALF_UP);
+                item.put("progress",format.format(progress.doubleValue()));
                 resultList.add(item);
             }
         }