Prechádzať zdrojové kódy

Merge remote-tracking branch 'origin/master'

yusm 3 týždňov pred
rodič
commit
d87ffebd25
18 zmenil súbory, kde vykonal 351 pridanie a 85 odobranie
  1. 12 11
      fhKeeper/formulahousekeeper/collectdata/src/main/java/com/management/collectdata/controller/DataCollectController.java
  2. 3 0
      fhKeeper/formulahousekeeper/collectdata/src/main/java/com/management/collectdata/entity/UserFvTime.java
  3. 22 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/BillController.java
  4. 5 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectController.java
  5. 82 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Bill.java
  6. 2 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/FinanceMonthlyWorktime.java
  7. 7 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/BillMapper.java
  8. 11 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/BillService.java
  9. 1 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ProjectService.java
  10. 96 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/BillServiceImpl.java
  11. 5 19
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/FinanceMonthlyWorktimeServiceImpl.java
  12. 12 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java
  13. 0 3
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/TaskGroupServiceImpl.java
  14. 76 41
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/task/DataCollectTask.java
  15. 6 0
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/BillMapper.xml
  16. 2 2
      fhKeeper/formulahousekeeper/timesheet/src/components/taskComponent.vue
  17. 3 3
      fhKeeper/formulahousekeeper/timesheet/src/views/corpreport/list.vue
  18. 6 6
      fhKeeper/formulahousekeeper/timesheet/src/views/project/qrCodeManagement.vue

+ 12 - 11
fhKeeper/formulahousekeeper/collectdata/src/main/java/com/management/collectdata/controller/DataCollectController.java

@@ -43,15 +43,15 @@ public class DataCollectController {
 
     static {
         HikariConfig sqlServerConfig = new HikariConfig();
-        sqlServerConfig.setJdbcUrl("jdbc:sqlserver://172.168.10.84:1433;databaseName=UFDATA_001_2023;encrypt=true;trustServerCertificate=true");
-        sqlServerConfig.setUsername("zhangyuhua");
-        sqlServerConfig.setPassword("ZC12zyh18");
+        sqlServerConfig.setJdbcUrl("jdbc:sqlserver://192.168.0.174:1433;databaseName=UFDATA_001_2023;encrypt=true;trustServerCertificate=true");
+        sqlServerConfig.setUsername("gongshi");
+        sqlServerConfig.setPassword("Sgh-110c");
         sqlServerConfig.setMaximumPoolSize(5);
         sqlServerDataSource = new HikariDataSource(sqlServerConfig);
 
 
         HikariConfig mysqlConfig = new HikariConfig();
-        mysqlConfig.setJdbcUrl("jdbc:mysql://172.168.10.37:3306/DHG?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&useSSL=false");
+        mysqlConfig.setJdbcUrl("jdbc:mysql://172.168.10.37:3306/DHG2?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&useSSL=false");
         mysqlConfig.setUsername("readonly");
         mysqlConfig.setPassword("pasWsordL23");
         sqlServerConfig.setMaximumPoolSize(5);
@@ -262,7 +262,7 @@ public class DataCollectController {
                 "     ,RIGHT(mo.cbSysBarCode,1) as line,mo.Status,cb.cDeptID,cb.cDepName,mo.MoDId " +
                 " from mom_orderdetail mo " +
                 " left join ca_batchmap cb on SUBSTRING(mo.cbSysBarCode, 8, 15) = cb.cMOCode and RIGHT(mo.cbSysBarCode,1) = cb.iMOSubSN " +
-                " where mo.Status in (3,4) " +
+                " where mo.Status = 3 " +
                 "         )tmp ";
         int totalCount = 0;
         try (Connection connection = sqlServerDataSource.getConnection()) {
@@ -284,11 +284,11 @@ public class DataCollectController {
 //                " from mom_orderdetail " +
 //                " where status in (3,4) "
 //                +" ORDER BY MoDId OFFSET ? ROWS FETCH NEXT ? ROWS ONLY ";
-        String sqlQuery = "select mo.cbSysBarCode,SUBSTRING(mo.cbSysBarCode, 8, 15) as orderId,mo.Define24  as projectId,mo.Define25  as projectName,mo.relsdate" +
-                "     ,RIGHT(mo.cbSysBarCode,1) as line,mo.Status,cb.cDeptID,cb.cDepName,mo.MoDId " +
+        String sqlQuery = "select mo.MoDId,SUBSTRING(mo.cbSysBarCode, 8, 15) as orderId,mo.Define24  as projectId,mo.Define25  as projectName,mo.relsdate" +
+                "     ,RIGHT(mo.cbSysBarCode,1) as line,mo.Status,cb.cDeptID,cb.cDepName " +
                 " from mom_orderdetail mo " +
                 " left join ca_batchmap cb on SUBSTRING(mo.cbSysBarCode, 8, 15) = cb.cMOCode and RIGHT(mo.cbSysBarCode,1) = cb.iMOSubSN " +
-                " where mo.Status in (3,4) " +
+                " where mo.Status = 3 " +
                 " ORDER BY mo.MoDId OFFSET ? ROWS FETCH NEXT ? ROWS ONLY ";
         List<ErpOrderInfo> resList = new ArrayList<>();
         SimpleDateFormat sdfAll = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@@ -340,7 +340,7 @@ public class DataCollectController {
 
     @RequestMapping("/getWorkDayDataList")
     public List<UserFvTime> getWorkDayDataList(@RequestBody PageBO pageBO) {
-        String sqlQuery = " select id,emp_no,attendance_date,earliest_clock_date,last_clock_date,worktime_total_hour,overtime_total_hour " +
+        String sqlQuery = " select id,emp_no,emp_name,attendance_date,earliest_clock_date,last_clock_date,worktime_total_hour,overtime_total_hour " +
                 " from att_work_hour_day  where create_date >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)  order by id limit ?,? ";
         List<UserFvTime> resList = new ArrayList<>();
         SimpleDateFormat sdfAll = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@@ -355,6 +355,7 @@ public class DataCollectController {
                 while (resultSet.next()) {
                     UserFvTime userFvTime = new UserFvTime();
                     userFvTime.setCompanyId(companyId);
+                    userFvTime.setName(resultSet.getString("emp_name"));
                     userFvTime.setProcinstId(resultSet.getString("id"));
                     userFvTime.setUserId(resultSet.getString("emp_no"));
                     userFvTime.setWorkDate(null==resultSet.getDate("attendance_date")?null:LocalDate.parse(sdfYmd.format(resultSet.getDate("attendance_date")), DateTimeFormatter.ofPattern("yyyy-MM-dd")));
@@ -379,7 +380,7 @@ public class DataCollectController {
 
     @RequestMapping("/getLeaveSheetDataSum")
     public String getLeaveSheetDataSum() {
-        String sqlCount = "select count(*) from att_holiday_leave_order where audit_status = 3 and is_delete = 0 and create_date >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)";
+        String sqlCount = "select count(*) from att_holiday_leave_order where audit_status = 3 and is_delete = 0 and create_date >= DATE_SUB(CURDATE(), INTERVAL 14 DAY)";
         int totalCount = 0;
         try (Connection connection = mysqlDataSource.getConnection()) {
             PreparedStatement countStmt = connection.prepareStatement(sqlCount);
@@ -403,7 +404,7 @@ public class DataCollectController {
                 " from att_holiday_leave_order ahlo " +
                 " left join emp_info eie on ahlo.emp_origin_id = eie.origin_id " +
                 " left join emp_info eic on ahlo.create_id = eic.origin_id " +
-                " where ahlo.audit_status = 3 and ahlo.is_delete = 0 and ahlo.create_date >= DATE_SUB(CURDATE(), INTERVAL 7 DAY) order by ahlo.id limit ?,? ";
+                " where ahlo.audit_status = 3 and ahlo.is_delete = 0 and ahlo.create_date >= DATE_SUB(CURDATE(), INTERVAL 14 DAY) order by ahlo.id limit ?,? ";
         SimpleDateFormat sdfAll = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         SimpleDateFormat sdfYmd = new SimpleDateFormat("yyyy-MM-dd");
         List<LeaveSheet> resList = new ArrayList<>();

+ 3 - 0
fhKeeper/formulahousekeeper/collectdata/src/main/java/com/management/collectdata/entity/UserFvTime.java

@@ -59,6 +59,9 @@ public class UserFvTime extends Model<UserFvTime> {
     @TableField("cancel_normal")
     private Integer cancelNormal;
 
+    @TableField(exist = false)
+    private String name;
+
 
     @Override
     protected Serializable pkVal() {

+ 22 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/BillController.java

@@ -0,0 +1,22 @@
+package com.management.platform.controller;
+
+import com.management.platform.service.BillService;
+import com.management.platform.util.HttpRespMsg;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+
+@RestController
+@RequestMapping("/bill")
+public class BillController {
+
+    @Resource
+    private BillService billService;
+
+    @RequestMapping("/getPrepayId")
+    public HttpRespMsg getPrepayId(Integer id,HttpServletRequest request) {
+        return billService.getPrepayId(id,request);
+    }
+}

+ 5 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectController.java

@@ -1635,5 +1635,10 @@ public class ProjectController {
     public HttpRespMsg exportTaskPlanFTEData(String monthStart,String monthEnd,String area,String userId,Integer departmentId ,HttpServletRequest request){
         return projectService.exportTaskPlanFTEData(monthStart,monthEnd,area,userId,departmentId,request);
     }
+
+    @RequestMapping("/initTaskGroupsFromTemplate")
+    public HttpRespMsg initTaskGroupsFromTemplate(Integer companyId){
+        return projectService.initTaskGroups(companyId);
+    }
 }
 

+ 82 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Bill.java

@@ -0,0 +1,82 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class Bill extends Model<Bill> {
+	public static void main(String[] args) {
+		Date date = new Date();
+		SimpleDateFormat sdfYmd = new SimpleDateFormat("yyyy-MM-dd");
+		SimpleDateFormat sdfHms = new SimpleDateFormat("HH:mm:ss");
+		String format1 = sdfYmd.format(date);
+		String format2 = sdfHms.format(date);
+		String format = String.format("%sT%s+8:00", format1, format2);
+		System.out.println(format);
+	}
+
+	private static final long serialVersionUID=1L;
+	/**
+	 * This field was generated by MyBatis Generator. This field corresponds to the database column bill.id
+	 * @mbg.generated  Mon Feb 25 20:47:33 CST 2019
+	 */
+	private Integer id;
+	/**
+	 * This field was generated by MyBatis Generator. This field corresponds to the database column bill.seq
+	 * @mbg.generated  Mon Feb 25 20:47:33 CST 2019
+	 */
+	private String seq;
+	/**
+	 * This field was generated by MyBatis Generator. This field corresponds to the database column bill.user_id
+	 * @mbg.generated  Mon Feb 25 20:47:33 CST 2019
+	 */
+	private String userId;
+	/**
+	 * This field was generated by MyBatis Generator. This field corresponds to the database column bill.company_id
+	 * @mbg.generated  Mon Feb 25 20:47:33 CST 2019
+	 */
+	private String companyId;
+	/**
+	 * This field was generated by MyBatis Generator. This field corresponds to the database column bill.mobile
+	 * @mbg.generated  Mon Feb 25 20:47:33 CST 2019
+	 */
+	private String mobile;
+	/**
+	 * This field was generated by MyBatis Generator. This field corresponds to the database column bill.name
+	 * @mbg.generated  Mon Feb 25 20:47:33 CST 2019
+	 */
+	private String name;
+	/**
+	 * This field was generated by MyBatis Generator. This field corresponds to the database column bill.pay_type
+	 * @mbg.generated  Mon Feb 25 20:47:33 CST 2019
+	 */
+	private String payType;
+	/**
+	 * This field was generated by MyBatis Generator. This field corresponds to the database column bill.money
+	 * @mbg.generated  Mon Feb 25 20:47:33 CST 2019
+	 */
+	private Integer money;
+	/**
+	 * This field was generated by MyBatis Generator. This field corresponds to the database column bill.result
+	 * @mbg.generated  Mon Feb 25 20:47:33 CST 2019
+	 */
+	private Integer result;
+	/**
+	 * This field was generated by MyBatis Generator. This field corresponds to the database column bill.indate
+	 * @mbg.generated  Mon Feb 25 20:47:33 CST 2019
+	 */
+	private Date indate;
+	/**
+	 * This field was generated by MyBatis Generator. This field corresponds to the database column bill.year
+	 * @mbg.generated  Mon Feb 25 20:47:33 CST 2019
+	 */
+	private Integer year;
+
+}

+ 2 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/FinanceMonthlyWorktime.java

@@ -62,6 +62,8 @@ public class FinanceMonthlyWorktime extends Model<FinanceMonthlyWorktime> {
     /**
      * 最近一次发送时间
      */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @TableField("last_send_time")
     private LocalDateTime lastSendTime;
 

+ 7 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/BillMapper.java

@@ -0,0 +1,7 @@
+package com.management.platform.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.management.platform.entity.Bill;
+
+public interface BillMapper extends BaseMapper<Bill> {
+}

+ 11 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/BillService.java

@@ -0,0 +1,11 @@
+package com.management.platform.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.management.platform.entity.Bill;
+import com.management.platform.util.HttpRespMsg;
+
+import javax.servlet.http.HttpServletRequest;
+
+public interface BillService extends IService<Bill> {
+    HttpRespMsg getPrepayId(Integer id, HttpServletRequest request);
+}

+ 1 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ProjectService.java

@@ -331,4 +331,5 @@ public interface ProjectService extends IService<Project> {
 
     HttpRespMsg exportTaskPlanFTEData(String monthStart, String monthEnd, String area, String userId, Integer departmentId, HttpServletRequest request);
 
+    HttpRespMsg initTaskGroups(Integer companyId);
 }

+ 96 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/BillServiceImpl.java

@@ -0,0 +1,96 @@
+package com.management.platform.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.management.platform.entity.Bill;
+import com.management.platform.entity.User;
+import com.management.platform.mapper.BillMapper;
+import com.management.platform.mapper.UserMapper;
+import com.management.platform.service.BillService;
+import com.management.platform.util.HttpRespMsg;
+import org.apache.commons.codec.binary.Hex;
+import org.springframework.http.*;
+import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.security.SecureRandom;
+import java.text.SimpleDateFormat;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+@Service
+public class BillServiceImpl extends ServiceImpl<BillMapper, Bill> implements BillService {
+
+    private static final String APP_ID = "wxaaf19cfbbe1ff950";
+
+    private static final String MAIN_COM = "https://api.mch.weixin.qq.com";
+
+    private static final String PRE_PAY_URL = "/v3/pay/transactions/jsapi";
+
+    @Resource
+    private BillMapper billMapper;
+
+    @Resource
+    private UserMapper userMapper;
+
+    public static void main(String[] args) {
+        SecureRandom secureRandom = new SecureRandom();
+        // 生成16字节的随机数据
+        byte[] randomBytes = new byte[16];
+        secureRandom.nextBytes(randomBytes);
+        String hex = Hex.encodeHexString(randomBytes).toUpperCase();
+        System.out.println(hex);
+    }
+
+
+    @Override
+    public HttpRespMsg getPrepayId(Integer id, HttpServletRequest request) {
+        HttpRespMsg httpRespMsg = new HttpRespMsg();
+        User user = userMapper.selectById(request.getHeader("TOKEN"));
+        RestTemplate restTemplate = new RestTemplate();
+        HttpHeaders headers = new HttpHeaders();
+        headers.setContentType(MediaType.APPLICATION_JSON);
+        headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
+//        headers.add("Authorization", authCode);//TODO 设置签名认证auth
+
+        Bill bill = billMapper.selectById(id);
+        Date now = new Date();
+        String seq = new SimpleDateFormat("yyyyMMddHHmmss").format(now);
+        bill.setSeq(seq + (1000 + bill.getId()%1000));
+
+        Map<String, Object> requestBody = new HashMap<>();
+        requestBody.put("appid", APP_ID);
+//        requestBody.put("mchid", mchid);//TODO 商户号
+//        requestBody.put("description","")//TODO 商品真实信息
+        requestBody.put("out_trade_no",bill.getSeq());
+//        requestBody.put("notify_url",notify_url)//TODO 异步回调地址
+        Map<String,Object> amount = new HashMap<>();
+        amount.put("total",bill.getMoney());// TODO 此处默认库中money为分,如改动
+        amount.put("currency","CNY");
+        requestBody.put("amount",amount);
+
+        Map<String,Object> payer = new HashMap<>();
+//        payer.put("openid",openid);//TODO 用户在商户appid下的唯一标识 user.getXXX
+
+        HttpEntity<Object> requestEntity = new HttpEntity<>(requestBody, headers);
+        ResponseEntity<String> prepayResponse = restTemplate.exchange(
+                MAIN_COM+PRE_PAY_URL,
+                HttpMethod.POST,
+                requestEntity,
+                String.class
+        );
+        if (prepayResponse.getStatusCode() == HttpStatus.OK) {
+            String prepayJson = prepayResponse.getBody();
+            JSONObject jsonObject = JSON.parseObject(prepayJson);
+            String prepay_id = jsonObject.get("prepay_id").toString();
+            //TODO 更新prepay_id
+        }
+
+        return httpRespMsg;
+    }
+}

+ 5 - 19
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/FinanceMonthlyWorktimeServiceImpl.java

@@ -101,7 +101,7 @@ public class FinanceMonthlyWorktimeServiceImpl extends ServiceImpl<FinanceMonthl
                     httpRespMsg.setError("财务尚未完成操作,无法获取cppid");
                     return httpRespMsg;
                 }
-                timeVOList.forEach(t->t.setDateStr(timesheetDate));
+                resList.forEach(t->t.setDateStr(timesheetDate));
                 HttpHeaders insertHeaders = new HttpHeaders();
                 insertHeaders.setContentType(MediaType.APPLICATION_JSON);
 //                Map<String, Object> insertBody = new HashMap<>();
@@ -298,30 +298,16 @@ public class FinanceMonthlyWorktimeServiceImpl extends ServiceImpl<FinanceMonthl
                                                 }
                                             });
                                         } else {
-                                            throw new Exception("存在目标部门没有内部工时,导致公共工时无法分摊:targetDeptId=="+assignToDeptId);
+                                            Department dept = departmentMapper.selectById(assignToDeptId);
+                                            throw new Exception("存在目标部门没有内部工时,导致公共工时无法分摊:部门=="+dept.getDepartmentName()+",deptId=="+assignToDeptId);
                                         }
                                     }
                                 }
                             } else {
                                 //本部门也没有协作其他部门产生工单工时
-                                throw new Exception("公共工时无法分配,因为本部门没有协作其他部门产生工单工时,deptId=="+deptId);
+                                Department dept = departmentMapper.selectById(deptId);
+                                throw new Exception("公共工时无法分配,因为本部门没有协作其他部门产生工单工时,部门=="+dept.getDepartmentName()+",deptId=="+deptId);
                             }
-
-//                            List<FmwDetail> fmwDetails = insertDataList.stream().filter(fmwDetail -> fmwDetail.getDeptId().equals(deptId)).collect(Collectors.toList());
-//                            double assistDeptTotalTime = fmwDetails.stream().reduce(0.0, (a, b) -> a + b.getAssistTime(), Double::sum);
-//                            if (assistDeptTotalTime > 0) {
-//                                //计算总工时: 用维修组装工时,调试工时和等料工时相加
-//                                insertDataList.forEach(fmwDetail -> {
-//                                    //计算每一个项目的部门内部工时占比,按比例分摊公共工时
-//                                    if (fmwDetail.getProjectId().equals(publicReportDeptItem.getProjectId())) {
-//                                        double curProjectTime = fmwDetail.getMaintanceTime() + fmwDetail.getDebugTime() + fmwDetail.getWaitingTime();
-//                                        double assignTime = curProjectTime / assistDeptTotalTime * publicReportDeptItem.getWorkingTime();
-//                                        fmwDetail.setPublicTime(assignTime);
-//                                    }
-//                                });
-//                            } else {
-//                                throw new Exception("存在部门公共工时无法分配,来源deptId=="+deptId);
-//                            }
                         }
                     }
                 }

+ 12 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -13842,6 +13842,18 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         return httpRespMsg;
     }
 
+    @Override
+    public HttpRespMsg initTaskGroups(Integer companyId) {
+        HttpRespMsg httpRespMsg = new HttpRespMsg();
+        User user = userMapper.selectById(request.getHeader("TOKEN"));
+        List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().eq("company_id", user.getCompanyId()));
+        projectList.forEach(p->{
+            taskGroupService.initGroup(companyId, p.getId(), user);
+        });
+
+        return httpRespMsg;
+    }
+
     //导出FTE报表数据
     @Override
     public HttpRespMsg exportFTEData(String monthStart,String monthEnd, String area,Integer departmentId,HttpServletRequest request) {

+ 0 - 3
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/TaskGroupServiceImpl.java

@@ -219,9 +219,6 @@ public class TaskGroupServiceImpl extends ServiceImpl<TaskGroupMapper, TaskGroup
                 group.setName(groupTemplate.getName());
                 save(group);
                 //从模板创建任务列表
-                Project project = projectMapper.selectById(projectId);
-                String inchargerId = project.getInchargerId();
-                User inchargerUser = userMapper.selectById(inchargerId);
                 List<GroupTmpstages> stages = groupTmpstagesMapper.selectList(new QueryWrapper<GroupTmpstages>().eq("template_id", groupTemplate.getId()));
                 List<Stages> batchList = new ArrayList<>();
                 stages.forEach(s->{

+ 76 - 41
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/task/DataCollectTask.java

@@ -10,6 +10,7 @@ import com.management.platform.service.TaskService;
 import com.management.platform.util.MessageUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.core.ParameterizedTypeReference;
 import org.springframework.http.*;
 import org.springframework.scheduling.annotation.Async;
@@ -30,6 +31,9 @@ import java.util.stream.Collectors;
 @Component
 public class DataCollectTask {
 
+    @Value("${configEnv.isDev}")
+    public boolean isDev;
+
     @Resource
     private UserFvTimeMapper userFvTimeMapper;
     @Resource
@@ -80,6 +84,7 @@ public class DataCollectTask {
     @Scheduled(cron = "0 30 0 28-31 * ?")
     @Async
     public void caDayTisTask(){
+        if(isDev){return;}
         LocalDate nowDate = LocalDate.now();
         int today = nowDate.getMonthValue();
         int lastDay = Calendar.getInstance().getActualMaximum(Calendar.DAY_OF_MONTH);
@@ -190,8 +195,10 @@ public class DataCollectTask {
 
 
     @Scheduled(cron = "0 0 1 * * ?")
+//    @Scheduled(cron = "0 05 16 * * ?")
     @Async
     public void sqlServerTask() {
+        if(isDev){return;}
         RestTemplate restTemplate = new RestTemplate();
         String sumUrl = PREFIX_URL+"/dataCollect/getSqlServerDataSum";
         String listUrl = PREFIX_URL+"/dataCollect/getSqlServerDataList";
@@ -262,7 +269,9 @@ public class DataCollectTask {
     }
 
     @Scheduled(cron = "0 30 1 * * ?")
+//@Scheduled(cron = "0 33 16 * * ?")
     public void workDayTask(){
+        if(isDev){return;}
         RestTemplate restTemplate = new RestTemplate();
         String sumUrl = PREFIX_URL+"/dataCollect/getWorkDayDataSum";
         String listUrl = PREFIX_URL+"/dataCollect/getWorkDayDataList";
@@ -305,18 +314,24 @@ public class DataCollectTask {
                         List<UserFvTime> dataList = listResponse.getBody();
                         if(org.apache.commons.collections.CollectionUtils.isNotEmpty(dataList)){
                             for (UserFvTime userFvTime : dataList) {
+                                if(StringUtils.isBlank(userFvTime.getProcinstId())){
+                                    System.out.println(userFvTime);
+                                }
                                 User tmp = userMap.get(userFvTime.getUserId());
+                                if(null == tmp){
+                                    System.out.println("缺失id=== "+userFvTime.getUserId()+",缺失名字=== "+userFvTime.getName());
+                                }
                                 userFvTime.setUserId(null==tmp?null:tmp.getId());
                             }
-                            List<UserFvTime> realDataList = dataList.stream().filter(t -> null != t.getUserId()).collect(Collectors.toList());
+                            List<UserFvTime> realDataList = dataList.stream().filter(t -> StringUtils.isNotBlank(t.getUserId())).collect(Collectors.toList());
                             if(!CollectionUtils.isEmpty(realDataList)){
-                                List<String> collect = dataList.stream().map(UserFvTime::getProcinstId).distinct().collect(Collectors.toList());
+                                List<String> collect = realDataList.stream().map(UserFvTime::getProcinstId).distinct().collect(Collectors.toList());
                                 List<String> existIds = userFvTimeMapper.getExistIds(collect,specialCompanyId);
                                 if(!CollectionUtils.isEmpty(existIds)){
-                                    toUpdateList.addAll(dataList.stream().filter(t -> existIds.contains(t.getProcinstId())).collect(Collectors.toList()));
-                                    toAddList.addAll(dataList.stream().filter(t -> !existIds.contains(t.getProcinstId())).collect(Collectors.toList()));
+                                    toUpdateList.addAll(realDataList.stream().filter(t -> existIds.contains(t.getProcinstId())).collect(Collectors.toList()));
+                                    toAddList.addAll(realDataList.stream().filter(t -> !existIds.contains(t.getProcinstId())).collect(Collectors.toList()));
                                 }else{
-                                    toAddList.addAll(dataList);
+                                    toAddList.addAll(realDataList);
                                 }
                                 if(!CollectionUtils.isEmpty(toAddList)){
                                     userFvTimeMapper.batchInsertCollect(toAddList);
@@ -342,8 +357,10 @@ public class DataCollectTask {
     }
 
     @Scheduled(cron = "0 0 2 * * ?")
+//@Scheduled(cron = "0 43 16 * * ?")
     @Async
     public void leaveSheetTask(){
+        if(isDev){return;}
         RestTemplate restTemplate = new RestTemplate();
         String sumUrl = PREFIX_URL + "/dataCollect/getLeaveSheetDataSum";
         String listUrl = PREFIX_URL + "/dataCollect/getLeaveSheetDataList";
@@ -390,23 +407,31 @@ public class DataCollectTask {
                                 User opTmp = userMap.get(leaveSheet.getOperatorId());
                                 leaveSheet.setOwnerId(null==ownerTmp?null:ownerTmp.getId());
                                 leaveSheet.setOperatorId(null==opTmp?null:opTmp.getId());
+                                if(null != ownerTmp && null == opTmp){
+                                    leaveSheet.setOperatorId(ownerTmp.getId());
+                                }
+
                             }
-                            List<String> collect = dataList.stream().map(LeaveSheet::getProcinstId).distinct().collect(Collectors.toList());
-                            List<String> existIds = leaveSheetMapper.getExistIds(collect,specialCompanyId);
-                            if(!CollectionUtils.isEmpty(existIds)){
-                                toUpdateList.addAll(dataList.stream().filter(t -> existIds.contains(t.getProcinstId())).collect(Collectors.toList()));
-                                toAddList.addAll(dataList.stream().filter(t -> !existIds.contains(t.getProcinstId())).collect(Collectors.toList()));
-                            }else{
-                                toAddList.addAll(dataList);
-                            }
-                            if(!CollectionUtils.isEmpty(toAddList)){
-                                leaveSheetMapper.batchInsert(toAddList);
-                            }
-                            if(!CollectionUtils.isEmpty(toUpdateList)){
-                                for (LeaveSheet tmp : toUpdateList) {
-                                    leaveSheetMapper.updateById(tmp);
+                            List<LeaveSheet> realDataList = dataList.stream().filter(t -> StringUtils.isNotBlank(t.getOwnerId())).collect(Collectors.toList());
+                            if(!CollectionUtils.isEmpty(realDataList)){
+                                List<String> collect = realDataList.stream().map(LeaveSheet::getProcinstId).distinct().collect(Collectors.toList());
+                                List<String> existIds = leaveSheetMapper.getExistIds(collect,specialCompanyId);
+                                if(!CollectionUtils.isEmpty(existIds)){
+                                    toUpdateList.addAll(realDataList.stream().filter(t -> existIds.contains(t.getProcinstId())).collect(Collectors.toList()));
+                                    toAddList.addAll(realDataList.stream().filter(t -> !existIds.contains(t.getProcinstId())).collect(Collectors.toList()));
+                                }else{
+                                    toAddList.addAll(realDataList);
+                                }
+                                if(!CollectionUtils.isEmpty(toAddList)){
+                                    leaveSheetMapper.batchInsert(toAddList);
+                                }
+                                if(!CollectionUtils.isEmpty(toUpdateList)){
+                                    for (LeaveSheet tmp : toUpdateList) {
+                                        leaveSheetMapper.updateById(tmp);
+                                    }
                                 }
                             }
+
                             toUpdateList.clear();
                             toAddList.clear();
                         }
@@ -422,8 +447,10 @@ public class DataCollectTask {
     }
 
     @Scheduled(cron = "0 30 2 * * ?")
+//@Scheduled(cron = "0 46 16 * * ?")
     @Async
     public void sqlServerProjectTypeTask() {
+        if(isDev){return;}
         RestTemplate restTemplate = new RestTemplate();
         String sumUrl = PREFIX_URL+"/dataCollect/getSqlServerProjectTypeDataSum";
         String listUrl = PREFIX_URL+"/dataCollect/getSqlServerProjectTypeDataList";
@@ -505,8 +532,10 @@ public class DataCollectTask {
     }
 
     @Scheduled(cron = "0 0 3 * * ?")
+//@Scheduled(cron = "0 48 16 * * ?")
     @Async
     public void sqlServerProjectTask() {
+        if(isDev){return;}
         RestTemplate restTemplate = new RestTemplate();
         String sumUrl = PREFIX_URL+"/dataCollect/getSqlServerProjectDataSum";
         String listUrl = PREFIX_URL+"/dataCollect/getSqlServerProjectDataList";
@@ -655,8 +684,10 @@ public class DataCollectTask {
     }
 
     @Scheduled(cron = "0 30 3 * * ?")
+//@Scheduled(cron = "0 20 17 * * ?")
     @Async
     public void businessTripTask(){
+        if(isDev){return;}
         RestTemplate restTemplate = new RestTemplate();
         String sumUrl = PREFIX_URL+"/dataCollect/getBusinessTripDataSum";
         String listUrl = PREFIX_URL+"/dataCollect/getBusinessTripDataList";
@@ -704,32 +735,36 @@ public class DataCollectTask {
                                 User ownerTmp = userMap.get(businessTrip.getOwnerId());
                                 businessTrip.setOwnerId(null==ownerTmp?null:ownerTmp.getId());
                             }
-                            List<String> collect = dataList.stream().map(BusinessTrip::getProcinstId).distinct().collect(Collectors.toList());
-                            List<String> existIds = businessTripMapper.getExistIds(collect,specialCompanyId);
-                            if(!CollectionUtils.isEmpty(existIds)){
-                                toUpdateList.addAll(dataList.stream().filter(t -> existIds.contains(t.getProcinstId())).collect(Collectors.toList()));
-                                toAddList.addAll(dataList.stream().filter(t -> !existIds.contains(t.getProcinstId())).collect(Collectors.toList()));
-                            }else{
-                                toAddList.addAll(dataList);
-                            }
-                            if(!CollectionUtils.isEmpty(toAddList)){
+                            List<BusinessTrip> realDataList = dataList.stream().filter(t -> StringUtils.isNotBlank(t.getOwnerId())).collect(Collectors.toList());
+                            if(!CollectionUtils.isEmpty(realDataList)){
+                                List<String> collect = realDataList.stream().map(BusinessTrip::getProcinstId).distinct().collect(Collectors.toList());
+                                List<String> existIds = businessTripMapper.getExistIds(collect,specialCompanyId);
+                                if(!CollectionUtils.isEmpty(existIds)){
+                                    toUpdateList.addAll(realDataList.stream().filter(t -> existIds.contains(t.getProcinstId())).collect(Collectors.toList()));
+                                    toAddList.addAll(realDataList.stream().filter(t -> !existIds.contains(t.getProcinstId())).collect(Collectors.toList()));
+                                }else{
+                                    toAddList.addAll(realDataList);
+                                }
+                                if(!CollectionUtils.isEmpty(toAddList)){
 //                                businessTripMapper.batchInsert(toAddList);
-                                for (BusinessTrip businessTrip : toAddList) {
-                                    businessTripMapper.insert(businessTrip);
-                                    BustripProject bustripProject = new BustripProject();
-                                    bustripProject.setBustripId(businessTrip.getId());
-                                    Project project = projectCodeMap.get(businessTrip.getCCcxmNo());
-                                    bustripProject.setProjectId(null == project?null:project.getId());
-                                    bustripProject.setStartDate(businessTrip.getStartDate());
-                                    bustripProject.setEndDate(businessTrip.getEndDate());
-                                    bustripProjectMapper.insert(bustripProject);
+                                    for (BusinessTrip businessTrip : toAddList) {
+                                        businessTripMapper.insert(businessTrip);
+                                        BustripProject bustripProject = new BustripProject();
+                                        bustripProject.setBustripId(businessTrip.getId());
+                                        Project project = projectCodeMap.get(businessTrip.getCCcxmNo());
+                                        bustripProject.setProjectId(null == project?null:project.getId());
+                                        bustripProject.setStartDate(businessTrip.getStartDate());
+                                        bustripProject.setEndDate(businessTrip.getEndDate());
+                                        bustripProjectMapper.insert(bustripProject);
+                                    }
                                 }
-                            }
-                            if(!CollectionUtils.isEmpty(toUpdateList)){
-                                for (BusinessTrip tmp : toUpdateList) {
-                                    businessTripMapper.updateById(tmp);
+                                if(!CollectionUtils.isEmpty(toUpdateList)){
+                                    for (BusinessTrip tmp : toUpdateList) {
+                                        businessTripMapper.updateById(tmp);
+                                    }
                                 }
                             }
+
                             toUpdateList.clear();
                             toAddList.clear();
                         }

+ 6 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/BillMapper.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.management.platform.mapper.BillMapper">
+
+</mapper>

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 2 - 2
fhKeeper/formulahousekeeper/timesheet/src/components/taskComponent.vue


+ 3 - 3
fhKeeper/formulahousekeeper/timesheet/src/views/corpreport/list.vue

@@ -4954,8 +4954,8 @@ export default {
     },
     // 重置工时
     resetWorkingHours() {
-      this.$confirm('确定重置工时吗?', '重置工时', {
-        confirmButtonText: '确定',
+      this.$confirm('重置工时将丢失人工修改数据,使用工时报工数据重新生成月度报表,确定重置吗?', '重置工时', {
+        confirmButtonText: '重置',
         cancelButtonText: '取消',
         type: 'warning'
       }).then(() => {
@@ -4981,7 +4981,7 @@ export default {
           detailList: (res.data.detailList || []).map(item => {
             const timeFields = ['maintanceTime', 'debugTime', 'waitingTime', 'assistTime', 'publicTime'];
             const totalTime = timeFields.reduce((sum, key) => sum + (item[key] || 0), 0);
-            return { ...item, totalTime };
+            return { ...item, totalTime: (totalTime).toFixed(2) };
           })
         };
       }).finally(() => {

+ 6 - 6
fhKeeper/formulahousekeeper/timesheet/src/views/project/qrCodeManagement.vue

@@ -3,15 +3,15 @@
     <di class="qrCodeManagement-header">
       <div class="header-filter">
         <div>项目号:</div>
-        <el-input v-model="filterValForm.orderId" placeholder="请输入" size="small" style="width: 150px;"></el-input>
+        <el-input v-model="filterValForm.projectId" placeholder="请输入" size="small" style="width: 150px;"></el-input>
       </div>
       <div class="header-filter">
         <div>项目名:</div>
-        <el-input v-model="filterValForm.projectId" placeholder="请输入" size="small" style="width: 150px;"></el-input>
+        <el-input v-model="filterValForm.projectName" placeholder="请输入" size="small" style="width: 150px;"></el-input>
       </div>
       <div class="header-filter">
         <div>生产工单号:</div>
-        <el-input v-model="filterValForm.projectName" placeholder="请输入" size="small" style="width: 150px;"></el-input>
+        <el-input v-model="filterValForm.orderId" placeholder="请输入" size="small" style="width: 150px;"></el-input>
       </div>
       <div class="header-filter">
         <div>行号:</div>
@@ -27,9 +27,9 @@
     <div class="qrCodeManagement-con">
       <el-table :data="tableData" style="width: 100%;height: 100%" border @selection-change="handleSelectionChange" :loading="tableLoading">
         <el-table-column type="selection" width="55" />
-        <el-table-column prop="orderId" label="项目号" />
-        <el-table-column prop="projectId" label="项目名" />
-        <el-table-column prop="projectName" label="生产工单号" />
+        <el-table-column prop="projectId" label="项目号" />
+        <el-table-column prop="projectName" label="项目名" />
+        <el-table-column prop="orderId" label="生产工单号" />
         <el-table-column prop="line" label="行号" />
       </el-table>
     </div>