Procházet zdrojové kódy

Merge branch 'master' of http://47.100.37.243:10191/wutt/manHourHousekeeper

QuYueTing před 1 měsícem
rodič
revize
368b6c5ac3
24 změnil soubory, kde provedl 496 přidání a 44 odebrání
  1. 6 0
      fhKeeper/formulahousekeeper/management-platform/pom.xml
  2. 6 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ErpOrderInfoController.java
  3. 97 12
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/QRCodeController.java
  4. 11 7
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/BusinessTrip.java
  5. 11 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/ErpOrderInfo.java
  6. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/BusinessTripMapper.java
  7. 4 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/BustripProjectMapper.java
  8. 2 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ErpOrderInfoMapper.java
  9. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/LeaveSheetMapper.java
  10. 6 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ProjectCategoryMapper.java
  11. 2 3
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ProjectMapper.java
  12. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/UserFvTimeMapper.java
  13. 2 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ErpOrderInfoService.java
  14. 37 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ErpOrderInfoServiceImpl.java
  15. 17 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java
  16. 213 13
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/task/DataCollectTask.java
  17. 21 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/util/QRCodeUtil.java
  18. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/BusinessTripMapper.xml
  19. 8 0
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/BustripProjectMapper.xml
  20. 21 2
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ErpOrderInfoMapper.xml
  21. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/LeaveSheetMapper.xml
  22. 13 0
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectCategoryMapper.xml
  23. 13 0
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectMapper.xml
  24. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/UserFvTimeMapper.xml

+ 6 - 0
fhKeeper/formulahousekeeper/management-platform/pom.xml

@@ -15,6 +15,12 @@
 
     <dependencies>
 
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-compress</artifactId>
+            <version>1.21</version>
+        </dependency>
+
         <dependency>
             <groupId>com.google.zxing</groupId>
             <artifactId>core</artifactId>

+ 6 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ErpOrderInfoController.java

@@ -1,5 +1,6 @@
 package com.management.platform.controller;
 
+import com.management.platform.entity.ErpOrderInfo;
 import com.management.platform.service.ErpOrderInfoService;
 import com.management.platform.util.HttpRespMsg;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -17,6 +18,11 @@ public class ErpOrderInfoController {
     @Resource
     private ErpOrderInfoService erpOrderInfoService;
 
+    @RequestMapping("/getInfoPage")
+    public HttpRespMsg getInfoPage(ErpOrderInfo erpOrderInfo, HttpServletRequest request) {
+        return erpOrderInfoService.getInfoPage(erpOrderInfo,request);
+    }
+
 
     @RequestMapping("/getInfoByProjectId")
     public HttpRespMsg getInfoByProjectId(@RequestParam String projectId, HttpServletRequest request) {

+ 97 - 12
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/QRCodeController.java

@@ -2,18 +2,24 @@ package com.management.platform.controller;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.google.zxing.WriterException;
-import com.management.platform.entity.Report;
-import com.management.platform.mapper.ReportMapper;
+import com.management.platform.entity.ErpOrderInfo;
+import com.management.platform.mapper.ErpOrderInfoMapper;
 import com.management.platform.util.HttpRespMsg;
 import com.management.platform.util.QRCodeUtil;
+import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
+import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
-import java.io.IOException;
+import java.io.*;
+import java.util.Arrays;
+import java.util.List;
 
 @RestController
 @RequestMapping("/qrCode")
@@ -21,19 +27,82 @@ public class QRCodeController {
 
 
     @Resource
-    private ReportMapper reportMapper;
+    private ErpOrderInfoMapper erpOrderInfoMapper;
 
     @Value("${upload.path}")
     private String uploadPath;
 
-    @RequestMapping("/generateQRCodeByReportId")
-    public HttpRespMsg generateQRCode(@RequestParam("reportId")String reportId){
+    @RequestMapping("/generateQRCodeByErpIds")
+    public HttpRespMsg generateQRCodeByErpIds(@RequestParam("erpIds")String erpIds){
         HttpRespMsg msg = new HttpRespMsg();
-        Report report = reportMapper.selectById(reportId);
-        String data = JSON.toJSONString(report);
+        String[] split = erpIds.split(",");
+        List<String> list = Arrays.asList(split);
+        List<ErpOrderInfo> erpList = erpOrderInfoMapper.selectList(new LambdaQueryWrapper<ErpOrderInfo>()
+                .in(ErpOrderInfo::getId,list)
+        );
+        String[] filesToZip = new String[erpList.size()];
+        int index = 0;
+        for (ErpOrderInfo erpOrderInfo : erpList) {
+            String data = JSON.toJSONString(erpOrderInfo);
+            int width = 300; // 二维码宽度
+            int height = 300; // 二维码高度
+            String fileName = "项目二维码_"+null!=erpOrderInfo.getMoDId()?erpOrderInfo.getMoDId():""+System.currentTimeMillis()+".png";
+            try {
+                QRCodeUtil.generateQRCodeImage(data, width, height, uploadPath+fileName);
+            } catch (WriterException e) {
+                e.printStackTrace();
+                msg.setError("二维码生成失败,请联系管理员");
+                return msg;
+            } catch (IOException e) {
+                e.printStackTrace();
+                msg.setError("二维码生成失败,请联系管理员");
+                return msg;
+            }
+            filesToZip[index] = fileName;
+            index++;
+        }
+
+        String zipFile = uploadPath+System.currentTimeMillis()+".zip";
+        try (FileOutputStream fos = new FileOutputStream(zipFile);
+             ZipArchiveOutputStream zaos = new ZipArchiveOutputStream(fos)) {
+
+            for (String file : filesToZip) {
+                File fileToZip = new File(file);
+                try (FileInputStream fis = new FileInputStream(fileToZip)) {
+                    ZipArchiveEntry entry = new ZipArchiveEntry(fileToZip, fileToZip.getName());
+                    zaos.putArchiveEntry(entry);
+
+                    byte[] buffer = new byte[1024];
+                    int len;
+                    while ((len = fis.read(buffer)) > 0) {
+                        zaos.write(buffer, 0, len);
+                    }
+                    zaos.closeArchiveEntry();
+                }
+            }
+            zaos.finish();
+        } catch (FileNotFoundException e) {
+            e.printStackTrace();
+            msg.setError("二维码压缩包生成失败,请联系管理员");
+            return msg;
+        } catch (IOException e) {
+            e.printStackTrace();
+            msg.setError("二维码压缩包生成失败,请联系管理员");
+            return msg;
+        }
+        msg.setData(zipFile);
+        return msg;
+    }
+
+
+    @RequestMapping("/generateQRCodeByErpId")
+    public HttpRespMsg generateQRCodeByErpId(@RequestParam("erpId")String erpId){
+        HttpRespMsg msg = new HttpRespMsg();
+        ErpOrderInfo erpOrderInfo = erpOrderInfoMapper.selectById(erpId);
+        String data = JSON.toJSONString(erpOrderInfo);
         int width = 300; // 二维码宽度
         int height = 300; // 二维码高度
-        String fileName = "日报二维码_"+System.currentTimeMillis()+".png";
+        String fileName = "项目二维码_"+System.currentTimeMillis()+".png";
         try {
             QRCodeUtil.generateQRCodeImage(data, width, height, uploadPath+fileName);
         } catch (WriterException e) {
@@ -50,12 +119,28 @@ public class QRCodeController {
     }
 
 
-    @RequestMapping("/decodeQRCode")
-    public HttpRespMsg decodeQRCode(@RequestParam("filePath")String filePath){
+    @RequestMapping("/decodeQRCodeByPath")
+    public HttpRespMsg decodeQRCodeByPath(@RequestParam("filePath")String filePath){
+        HttpRespMsg msg = new HttpRespMsg();
+        String res = null;
+        try {
+            res = QRCodeUtil.decodeQRCodeByPath(filePath);
+        } catch (IOException e) {
+            e.printStackTrace();
+            msg.setError("文件解析失败,请联系管理员");
+            return msg;
+        }
+        JSONObject jsonObject = JSON.parseObject(res);
+        msg.setData(jsonObject);
+        return msg;
+    }
+
+    @RequestMapping("/decodeQRCodeByFile")
+    public HttpRespMsg decodeQRCodeByFile(@RequestParam("file") MultipartFile file){
         HttpRespMsg msg = new HttpRespMsg();
         String res = null;
         try {
-            res = QRCodeUtil.decodeQRCode(filePath);
+            res = QRCodeUtil.decodeQRCodeByFile(file);
         } catch (IOException e) {
             e.printStackTrace();
             msg.setError("文件解析失败,请联系管理员");

+ 11 - 7
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/BusinessTrip.java

@@ -1,20 +1,20 @@
 package com.management.platform.entity;
 
 import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.extension.activerecord.Model;
-import java.time.LocalDate;
-import com.baomidou.mybatisplus.annotation.TableId;
-import java.time.LocalDateTime;
 import com.baomidou.mybatisplus.annotation.TableField;
-import java.io.Serializable;
-import java.util.List;
-
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 import org.springframework.format.annotation.DateTimeFormat;
 
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.List;
+
 /**
  * <p>
  * 
@@ -33,6 +33,10 @@ public class BusinessTrip extends Model<BusinessTrip> {
     @TableId(value = "id", type = IdType.AUTO)
     private Integer id;
 
+
+    @TableField(exist = false)
+    private String cCcxmNo;
+
     @TableField("company_id")
     private Integer companyId;
 

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

@@ -8,6 +8,8 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 
+import java.util.Date;
+
 @Data
 @EqualsAndHashCode(callSuper = false)
 @Accessors(chain = true)
@@ -34,4 +36,13 @@ public class ErpOrderInfo extends Model<ErpOrderInfo> {
 
     @TableField("moDId")
     private String MoDId;
+
+    @TableField("rels_date")
+    private Date relsDate;
+
+    @TableField(exist = false)
+    private Integer pageIndex;
+
+    @TableField(exist = false)
+    private Integer pageSize;
 }

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/BusinessTripMapper.java

@@ -23,5 +23,5 @@ public interface BusinessTripMapper extends BaseMapper<BusinessTrip> {
 
     void batchInsert(@Param("resList") List<BusinessTrip> resList);
 
-    List<String> getExistIds(@Param("procinstIds") List<String> procinstIds);
+    List<String> getExistIds(@Param("procinstIds") List<String> procinstIds,@Param("companyId") Integer companyId);
 }

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

@@ -2,6 +2,9 @@ package com.management.platform.mapper;
 
 import com.management.platform.entity.BustripProject;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +16,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface BustripProjectMapper extends BaseMapper<BustripProject> {
 
+    List<BustripProject> getByDate(@Param("date") String date, @Param("userId") String userId);
 }

+ 2 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ErpOrderInfoMapper.java

@@ -12,4 +12,6 @@ public interface ErpOrderInfoMapper extends BaseMapper<ErpOrderInfo> {
     void batchInsert(@Param("resList") List<ErpOrderInfo> resList);
 
     List<String> getExistIds(@Param("moIds") List<String> moIds);
+
+    List<ErpOrderInfo> getPageInfo(@Param("erpOrderInfo") ErpOrderInfo erpOrderInfo);
 }

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/LeaveSheetMapper.java

@@ -30,5 +30,5 @@ public interface LeaveSheetMapper extends BaseMapper<LeaveSheet> {
 
     void batchInsert(@Param("resList") List<LeaveSheet> resList);
 
-    List<String> getExistIds(@Param("procinstIds") List<String> procinstIds);
+    List<String> getExistIds(@Param("procinstIds") List<String> procinstIds,@Param("companyId") Integer companyId);
 }

+ 6 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ProjectCategoryMapper.java

@@ -2,6 +2,9 @@ package com.management.platform.mapper;
 
 import com.management.platform.entity.ProjectCategory;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +16,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface ProjectCategoryMapper extends BaseMapper<ProjectCategory> {
 
+    List<String> getExistIds(@Param("citemccodes") List<String> citemccodes, @Param("companyId") Integer companyId);
+
+    void batchInsert(@Param("toAddList") List<ProjectCategory> toAddList);
 }

+ 2 - 3
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ProjectMapper.java

@@ -2,16 +2,13 @@ package com.management.platform.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.management.platform.entity.Project;
-import com.management.platform.entity.TaskGroup;
 import com.management.platform.entity.vo.CustomerProject;
 import com.management.platform.entity.vo.ProjectWithStage;
 import com.management.platform.entity.vo.StageCost;
 import com.management.platform.entity.vo.UserCateTimeVo;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Update;
-import org.omg.CORBA.INTERNAL;
 
-import java.time.LocalDate;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -265,5 +262,7 @@ public interface ProjectMapper extends BaseMapper<Project> {
     public List<Integer> getRelatedProjectIds(@Param("userId")String userId,@Param("companyId") Integer companyId);
 
 
+    List<String> getExistIds(@Param("projectCodes") List<String> projectCodes,@Param("companyId") Integer companyId);
 
+    void batchInsert(@Param("toAddList") List<Project> toAddList);
 }

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/UserFvTimeMapper.java

@@ -20,5 +20,5 @@ public interface UserFvTimeMapper extends BaseMapper<UserFvTime> {
 
     void batchInsertCollect(@Param("resList") List<UserFvTime> resList);
 
-    List<String> getExistIds(@Param("procinstIds") List<String> procinstIds);
+    List<String> getExistIds(@Param("procinstIds") List<String> procinstIds,@Param("companyId") Integer companyId);
 }

+ 2 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ErpOrderInfoService.java

@@ -8,4 +8,6 @@ import javax.servlet.http.HttpServletRequest;
 
 public interface ErpOrderInfoService extends IService<ErpOrderInfo> {
     HttpRespMsg getInfoByProjectId(String projectId, HttpServletRequest request);
+
+    HttpRespMsg getInfoPage(ErpOrderInfo erpOrderInfo, HttpServletRequest request);
 }

+ 37 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ErpOrderInfoServiceImpl.java

@@ -7,11 +7,14 @@ import com.management.platform.mapper.ErpOrderInfoMapper;
 import com.management.platform.mapper.UserMapper;
 import com.management.platform.service.ErpOrderInfoService;
 import com.management.platform.util.HttpRespMsg;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 @Service
 public class ErpOrderInfoServiceImpl extends ServiceImpl<ErpOrderInfoMapper, ErpOrderInfo> implements ErpOrderInfoService {
@@ -34,4 +37,38 @@ public class ErpOrderInfoServiceImpl extends ServiceImpl<ErpOrderInfoMapper, Erp
         httpRespMsg.setData(erpOrderInfos);
         return httpRespMsg;
     }
+
+    @Override
+    public HttpRespMsg getInfoPage(ErpOrderInfo erpOrderInfo, HttpServletRequest request) {
+        HttpRespMsg httpRespMsg = new HttpRespMsg();
+//        User user = userMapper.selectById(request.getHeader("Token"));
+//        int i = (erpOrderInfo.getPageIndex() - 1) * erpOrderInfo.getPageSize();
+//        System.out.println("i==== "+i);
+//        IPage<ErpOrderInfo> page = new Page<>(i,erpOrderInfo.getPageSize());
+////        page.setCurrent();
+////        page.setSize(erpOrderInfo.getPageSize());
+        LambdaQueryWrapper<ErpOrderInfo> lqw = new LambdaQueryWrapper<>();
+        if(StringUtils.isNotBlank(erpOrderInfo.getOrderId())){
+            lqw.like(ErpOrderInfo::getOrderId, erpOrderInfo.getOrderId());
+        }
+        if(StringUtils.isNotBlank(erpOrderInfo.getProjectId())){
+            lqw.like(ErpOrderInfo::getProjectId, erpOrderInfo.getProjectId());
+        }
+        if(StringUtils.isNotBlank(erpOrderInfo.getProjectName())){
+            lqw.like(ErpOrderInfo::getProjectName, erpOrderInfo.getProjectName());
+        }
+        if(null != erpOrderInfo.getLine()){
+            lqw.eq(ErpOrderInfo::getLine, erpOrderInfo.getLine());
+        }
+        lqw.eq(ErpOrderInfo::getStatus, 3);
+        Integer count = erpOrderInfoMapper.selectCount(lqw);
+//        lqw.eq(ErpOrderInfo::getStatus, 3).orderByDesc(ErpOrderInfo::getRelsDate).orderByDesc(ErpOrderInfo::getId);
+//        IPage<ErpOrderInfo> erpOrderInfoIPage = erpOrderInfoMapper.selectPage(page, lqw);
+        List<ErpOrderInfo> list = erpOrderInfoMapper.getPageInfo(erpOrderInfo);
+        Map<String,Object> map = new HashMap<>();
+        map.put("total",count);
+        map.put("data",list);
+        httpRespMsg.setData(map);
+        return httpRespMsg;
+    }
 }

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

@@ -229,6 +229,10 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
     private CompanyDictMapper companyDictMapper;
     @Value(value = "${upload.path}")
     private String path;
+    @Autowired
+    private BusinessTripMapper businessTripMapper;
+    @Autowired
+    private BustripProjectMapper bustripProjectMapper;
 
 
     //获取报告列表
@@ -848,6 +852,19 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 }
             });
             resultMap.put("report", reports);
+            if(CollectionUtils.isEmpty(reports)){
+                List<BustripProject> businessTrips = bustripProjectMapper.getByDate(date,userId);
+//                List<BusinessTrip> businessTrips = bustripProjectMapper.selectList(new LambdaQueryWrapper<BusinessTrip>()
+//                        .eq(BusinessTrip::getOwnerId, userId)
+//                        .lt(BusinessTrip::getStartDate,date)
+//                        .gt(BusinessTrip::getEndDate,date)
+//                );
+//                if(CollectionUtils.isNotEmpty(businessTrips)){
+//                    resultMap.put("businessTrips",businessTrips);
+//                }
+                resultMap.put("businessTrips",businessTrips);
+
+            }
             boolean showRefresh = false;
             if (timeType.getShowDdCardtime() == 1) {
                 List<UserDingdingTime> dingdingTimes = userDingdingTimeMapper.selectList(new QueryWrapper<UserDingdingTime>()

+ 213 - 13
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/task/DataCollectTask.java

@@ -1,15 +1,12 @@
 package com.management.platform.task;
 
-import com.management.platform.entity.BusinessTrip;
-import com.management.platform.entity.ErpOrderInfo;
-import com.management.platform.entity.LeaveSheet;
-import com.management.platform.entity.UserFvTime;
-import com.management.platform.mapper.BusinessTripMapper;
-import com.management.platform.mapper.ErpOrderInfoMapper;
-import com.management.platform.mapper.LeaveSheetMapper;
-import com.management.platform.mapper.UserFvTimeMapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.management.platform.entity.*;
+import com.management.platform.mapper.*;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.core.ParameterizedTypeReference;
 import org.springframework.http.*;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.scheduling.annotation.EnableScheduling;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
@@ -37,13 +34,25 @@ public class DataCollectTask {
     @Resource
     private ErpOrderInfoMapper erpOrderInfoMapper;
 
+    @Resource
+    private ProjectMapper projectMapper;
+
+    @Resource
+    private ProjectCategoryMapper projectCategoryMapper;
+
     private static final String PREFIX_URL = "http://58.210.104.138:10020";
 
+    private static final int specialCompanyId = 7536;
+
+    @Resource
+    private UserMapper userMapper;
+    @Resource
+    private BustripProjectMapper bustripProjectMapper;
 
 
     @Scheduled(cron = "0 0 1 * * ?")
+    @Async
     public void sqlServerTask() {
-        System.out.println("开始测试任务定时=======================");
         RestTemplate restTemplate = new RestTemplate();
         String sumUrl = PREFIX_URL+"/dataCollect/getSqlServerDataSum";
         String listUrl = PREFIX_URL+"/dataCollect/getSqlServerDataList";
@@ -137,6 +146,9 @@ public class DataCollectTask {
                 int offset = 0;
                 List<UserFvTime> toAddList = new ArrayList<>();
                 List<UserFvTime> toUpdateList = new ArrayList<>();
+                List<User> users = userMapper.selectList(new LambdaQueryWrapper<User>().eq(User::getCompanyId, specialCompanyId));
+                Map<String, User> userMap = users.stream().filter(t -> StringUtils.isNotBlank(t.getJobNumber()))
+                        .collect(Collectors.toMap(User::getJobNumber, t -> t));
                 while (offset < totalNum) {
                     HttpHeaders headers = new HttpHeaders();
                     headers.setContentType(MediaType.APPLICATION_JSON);
@@ -153,8 +165,12 @@ public class DataCollectTask {
                     if (listResponse.getStatusCode() == HttpStatus.OK) {
                         List<UserFvTime> dataList = listResponse.getBody();
                         if(org.apache.commons.collections.CollectionUtils.isNotEmpty(dataList)){
+                            for (UserFvTime userFvTime : dataList) {
+                                User tmp = userMap.get(userFvTime.getUserId());
+                                userFvTime.setUserId(null==tmp?null:tmp.getId());
+                            }
                             List<String> collect = dataList.stream().map(UserFvTime::getProcinstId).distinct().collect(Collectors.toList());
-                            List<String> existIds = userFvTimeMapper.getExistIds(collect);
+                            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()));
@@ -185,6 +201,7 @@ public class DataCollectTask {
     }
 
     @Scheduled(cron = "0 0 2 * * ?")
+    @Async
     public void leaveSheetTask(){
         RestTemplate restTemplate = new RestTemplate();
         String sumUrl = PREFIX_URL + "/dataCollect/getLeaveSheetDataSum";
@@ -208,6 +225,9 @@ public class DataCollectTask {
                 int offset = 0;
                 List<LeaveSheet> toAddList = new ArrayList<>();
                 List<LeaveSheet> toUpdateList = new ArrayList<>();
+                List<User> users = userMapper.selectList(new LambdaQueryWrapper<User>().eq(User::getCompanyId, specialCompanyId));
+                Map<String, User> userMap = users.stream().filter(t -> StringUtils.isNotBlank(t.getJobNumber()))
+                        .collect(Collectors.toMap(User::getJobNumber, t -> t));
                 while (offset < totalNum) {
                     HttpHeaders headers = new HttpHeaders();
                     headers.setContentType(MediaType.APPLICATION_JSON);
@@ -224,8 +244,14 @@ public class DataCollectTask {
                     if (listResponse.getStatusCode() == HttpStatus.OK) {
                         List<LeaveSheet> dataList = listResponse.getBody();
                         if(org.apache.commons.collections.CollectionUtils.isNotEmpty(dataList)){
+                            for (LeaveSheet leaveSheet : dataList) {
+                                User ownerTmp = userMap.get(leaveSheet.getOwnerId());
+                                User opTmp = userMap.get(leaveSheet.getOperatorId());
+                                leaveSheet.setOwnerId(null==ownerTmp?null:ownerTmp.getId());
+                                leaveSheet.setOperatorId(null==opTmp?null:opTmp.getId());
+                            }
                             List<String> collect = dataList.stream().map(LeaveSheet::getProcinstId).distinct().collect(Collectors.toList());
-                            List<String> existIds = leaveSheetMapper.getExistIds(collect);
+                            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()));
@@ -255,6 +281,161 @@ public class DataCollectTask {
     }
 
     @Scheduled(cron = "0 30 2 * * ?")
+    @Async
+    public void sqlServerProjectTypeTask() {
+        RestTemplate restTemplate = new RestTemplate();
+        String sumUrl = PREFIX_URL+"/dataCollect/getSqlServerProjectTypeDataSum";
+        String listUrl = PREFIX_URL+"/dataCollect/getSqlServerProjectTypeDataList";
+
+        try {
+            ResponseEntity<String> sumResponse = restTemplate.exchange(
+                    sumUrl,
+                    HttpMethod.GET,
+                    null,
+                    String.class
+            );
+            Integer totalNum = 0;
+            if (sumResponse.getStatusCode() == HttpStatus.OK) {
+                totalNum = Integer.parseInt(sumResponse.getBody());
+            } else {
+                System.out.println("请求失败,状态码: " + sumResponse.getStatusCode());
+            }
+            if(totalNum > 0){
+                int pageSize = 1000;
+                int offset = 0;
+                List<ProjectCategory> toAddList = new ArrayList<>();
+                List<ProjectCategory> toUpdateList = new ArrayList<>();
+                while (offset < totalNum) {
+                    HttpHeaders headers = new HttpHeaders();
+                    headers.setContentType(MediaType.APPLICATION_JSON);
+                    Map<String, Object> requestBody = new HashMap<>();
+                    requestBody.put("pageNo", offset);
+                    requestBody.put("pageSize", pageSize);
+                    HttpEntity<Object> requestEntity = new HttpEntity<>(requestBody, headers);
+                    ResponseEntity<List<String>> listResponse = restTemplate.exchange(
+                            listUrl,
+                            HttpMethod.POST,
+                            requestEntity,
+                            new  ParameterizedTypeReference<List<String>>(){}
+                    );
+                    if (listResponse.getStatusCode() == HttpStatus.OK) {
+                        List<String> dataList = listResponse.getBody();
+                        List<ProjectCategory> tmpList = new ArrayList<>();
+                        if(org.apache.commons.collections.CollectionUtils.isNotEmpty(dataList)){
+                            List<String> existIds = projectCategoryMapper.getExistIds(dataList,specialCompanyId);
+                            if(!CollectionUtils.isEmpty(existIds)){
+                                for (String name : dataList) {
+                                    ProjectCategory tmp = new ProjectCategory();
+                                    tmp.setName(name);
+                                    tmp.setCompanyId(specialCompanyId);
+                                    tmpList.add(tmp);
+                                }
+                                toUpdateList.addAll(tmpList.stream().filter(t -> existIds.contains(t.getName())).collect(Collectors.toList()));
+                                toAddList.addAll(tmpList.stream().filter(t -> !existIds.contains(t.getName())).collect(Collectors.toList()));
+                            }else{
+                                for (String name : dataList) {
+                                    ProjectCategory tmp = new ProjectCategory();
+                                    tmp.setName(name);
+                                    tmp.setCompanyId(specialCompanyId);
+                                    tmpList.add(tmp);
+                                }
+                                toAddList.addAll(tmpList);
+                            }
+                            if(!CollectionUtils.isEmpty(toAddList)){
+                                projectCategoryMapper.batchInsert(toAddList);
+                            }
+                            if(!CollectionUtils.isEmpty(toUpdateList)){
+                                for (ProjectCategory projectCategory : toUpdateList) {
+                                    projectCategoryMapper.updateById(projectCategory);
+                                }
+                            }
+                            toUpdateList.clear();
+                            toAddList.clear();
+                        }
+                    }
+                    offset += pageSize;
+                }
+            }
+        } catch (Exception e) {
+            System.out.println("请求发生异常: " + e.getMessage());
+            e.printStackTrace();
+        }
+
+    }
+
+    @Scheduled(cron = "0 0 3 * * ?")
+    @Async
+    public void sqlServerProjectTask() {
+        RestTemplate restTemplate = new RestTemplate();
+        String sumUrl = PREFIX_URL+"/dataCollect/getSqlServerProjectDataSum";
+        String listUrl = PREFIX_URL+"/dataCollect/getSqlServerProjectDataList";
+
+        try {
+            ResponseEntity<String> sumResponse = restTemplate.exchange(
+                    sumUrl,
+                    HttpMethod.GET,
+                    null,
+                    String.class
+            );
+            Integer totalNum = 0;
+            if (sumResponse.getStatusCode() == HttpStatus.OK) {
+                totalNum = Integer.parseInt(sumResponse.getBody());
+            } else {
+                System.out.println("请求失败,状态码: " + sumResponse.getStatusCode());
+            }
+            if(totalNum > 0){
+                int pageSize = 1000;
+                int offset = 0;
+                List<Project> toAddList = new ArrayList<>();
+                List<Project> toUpdateList = new ArrayList<>();
+                while (offset < totalNum) {
+                    HttpHeaders headers = new HttpHeaders();
+                    headers.setContentType(MediaType.APPLICATION_JSON);
+                    Map<String, Object> requestBody = new HashMap<>();
+                    requestBody.put("pageNo", offset);
+                    requestBody.put("pageSize", pageSize);
+                    HttpEntity<Object> requestEntity = new HttpEntity<>(requestBody, headers);
+                    ResponseEntity<List<Project>> listResponse = restTemplate.exchange(
+                            listUrl,
+                            HttpMethod.POST,
+                            requestEntity,
+                            new  ParameterizedTypeReference<List<Project>>(){}
+                    );
+                    if (listResponse.getStatusCode() == HttpStatus.OK) {
+                        List<Project> dataList = listResponse.getBody();
+                        if(org.apache.commons.collections.CollectionUtils.isNotEmpty(dataList)){
+                            List<String> collect = dataList.stream().map(Project::getProjectCode).distinct().collect(Collectors.toList());
+                            List<String> existIds = projectMapper.getExistIds(collect,specialCompanyId);
+                            if(!CollectionUtils.isEmpty(existIds)){
+                                toUpdateList.addAll(dataList.stream().filter(t -> existIds.contains(t.getProjectCode())).collect(Collectors.toList()));
+                                toAddList.addAll(dataList.stream().filter(t -> !existIds.contains(t.getProjectCode())).collect(Collectors.toList()));
+                            }else{
+                                toAddList.addAll(dataList);
+                            }
+                            if(!CollectionUtils.isEmpty(toAddList)){
+                                projectMapper.batchInsert(toAddList);
+                            }
+                            if(!CollectionUtils.isEmpty(toUpdateList)){
+                                for (Project orderInfo : toUpdateList) {
+                                    projectMapper.updateById(orderInfo);
+                                }
+                            }
+                            toUpdateList.clear();
+                            toAddList.clear();
+                        }
+                    }
+                    offset += pageSize;
+                }
+            }
+        } catch (Exception e) {
+            System.out.println("请求发生异常: " + e.getMessage());
+            e.printStackTrace();
+        }
+
+    }
+
+    @Scheduled(cron = "0 30 3 * * ?")
+    @Async
     public void businessTripTask(){
         RestTemplate restTemplate = new RestTemplate();
         String sumUrl = PREFIX_URL+"/dataCollect/getBusinessTripDataSum";
@@ -278,6 +459,11 @@ public class DataCollectTask {
                 int offset = 0;
                 List<BusinessTrip> toAddList = new ArrayList<>();
                 List<BusinessTrip> toUpdateList = new ArrayList<>();
+                List<User> users = userMapper.selectList(new LambdaQueryWrapper<User>().eq(User::getCompanyId, specialCompanyId));
+                Map<String, User> userMap = users.stream().filter(t -> StringUtils.isNotBlank(t.getJobNumber()))
+                        .collect(Collectors.toMap(User::getJobNumber, t -> t));
+                List<Project> projects = projectMapper.selectList(new LambdaQueryWrapper<Project>().eq(Project::getCompanyId, specialCompanyId));
+                Map<String, Project> projectCodeMap = projects.stream().collect(Collectors.toMap(Project::getProjectCode, t -> t));
                 while (offset < totalNum) {
                     HttpHeaders headers = new HttpHeaders();
                     headers.setContentType(MediaType.APPLICATION_JSON);
@@ -294,8 +480,12 @@ public class DataCollectTask {
                     if (listResponse.getStatusCode() == HttpStatus.OK) {
                         List<BusinessTrip> dataList = listResponse.getBody();
                         if(org.apache.commons.collections.CollectionUtils.isNotEmpty(dataList)){
+                            for (BusinessTrip businessTrip : dataList) {
+                                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);
+                            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()));
@@ -303,7 +493,17 @@ public class DataCollectTask {
                                 toAddList.addAll(dataList);
                             }
                             if(!CollectionUtils.isEmpty(toAddList)){
-                                businessTripMapper.batchInsert(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);
+                                }
                             }
                             if(!CollectionUtils.isEmpty(toUpdateList)){
                                 for (BusinessTrip tmp : toUpdateList) {

+ 21 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/util/QRCodeUtil.java

@@ -6,12 +6,14 @@ import com.google.zxing.common.BitMatrix;
 import com.google.zxing.common.HybridBinarizer;
 import com.google.zxing.qrcode.QRCodeWriter;
 import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.imageio.ImageIO;
 import java.awt.*;
 import java.awt.image.BufferedImage;
 import java.io.File;
 import java.io.IOException;
+import java.io.InputStream;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -47,7 +49,7 @@ public class QRCodeUtil {
     }
 
     /**根据路径解析二维码图片*/
-    public static String decodeQRCode(String filePath) throws IOException {
+    public static String decodeQRCodeByPath(String filePath) throws IOException {
         BufferedImage qrCodeImage = ImageIO.read(new File(filePath));
         LuminanceSource source = new BufferedImageLuminanceSource(qrCodeImage);
         BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
@@ -64,4 +66,22 @@ public class QRCodeUtil {
         }
     }
 
+    public static String decodeQRCodeByFile(MultipartFile multipartFile) throws IOException {
+        InputStream inputStream = multipartFile.getInputStream();
+        BufferedImage qrCodeImage = ImageIO.read(inputStream);
+        LuminanceSource source = new BufferedImageLuminanceSource(qrCodeImage);
+        BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
+
+        try {
+            Map<DecodeHintType, Object> hints = new HashMap<>();
+            hints.put(DecodeHintType.CHARACTER_SET, "UTF-8");
+
+            Result result = new MultiFormatReader().decode(bitmap, hints);
+            return result.getText();
+        } catch (NotFoundException e) {
+            System.out.println("未找到二维码: " + e.getMessage());
+            return null;
+        }
+    }
+
 }

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

@@ -77,7 +77,7 @@
     <select id="getExistIds" resultType="java.lang.String">
         select procinst_id
         from business_trip
-        where procinst_id in
+        where company_id = #{companyId} and procinst_id in
         <foreach collection="procinstIds" item="procinstId" separator="," open="(" close=")">#{procinstId}</foreach>
     </select>
 </mapper>

+ 8 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/BustripProjectMapper.xml

@@ -17,5 +17,13 @@
     <sql id="Base_Column_List">
         id, bustrip_id, project_id, start_date, end_date, degree_id, degree_name
     </sql>
+    <select id="getByDate" resultType="com.management.platform.entity.BustripProject">
+        select bp.*
+        from bustrip_project bp
+        left join business_trip bt on bp.bustrip_id = bt.id
+        where bt.owner_id = #{userId}
+        and bp.start_date &lt; str_to_date(#{date},'%Y-%m-%d')
+        and bp.end_date &gt; str_to_date(#{date},'%Y-%m-%d')
+    </select>
 
 </mapper>

+ 21 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ErpOrderInfoMapper.xml

@@ -4,10 +4,10 @@
 <mapper namespace="com.management.platform.mapper.ErpOrderInfoMapper">
 
     <insert id="batchInsert">
-        insert into erp_order_info(order_id, project_id, project_name, line, status)
+        insert into erp_order_info(order_id, project_id, project_name, line, status,rels_date)
         VALUES
             <foreach collection="resList" separator="," item="res">
-                (#{res.orderId},#{res.projectId},#{res.projectName},#{res.line},#{res.status})
+                (#{res.orderId},#{res.projectId},#{res.projectName},#{res.line},#{res.status},#{res.relsDate})
             </foreach>
     </insert>
     <select id="getExistIds" resultType="java.lang.String">
@@ -15,4 +15,23 @@
         from erp_order_info
         where moDId in <foreach collection="moIds" item="moId" separator="," open="(" close=")">#{moId}</foreach>
     </select>
+    <select id="getPageInfo" resultType="com.management.platform.entity.ErpOrderInfo">
+        SELECT id,order_id,project_id,project_name,line,status,moDId,rels_date FROM erp_order_info
+        <where>
+            status = 3
+            <if test="erpOrderInfo.orderId != null and erpOrderInfo.orderId != ''">
+                and order_id like concat('%',#{erpOrderInfo.orderId},'%')
+            </if>
+            <if test="erpOrderInfo.projectId != null and erpOrderInfo.projectId != ''">
+                and project_id like concat('%',#{erpOrderInfo.projectId},'%')
+            </if>
+            <if test="erpOrderInfo.projectName != null and erpOrderInfo.projectName != ''">
+                and project_name like concat('%',#{erpOrderInfo.projectName},'%')
+            </if>
+            <if test="erpOrderInfo.line != null">
+                and line = #{erpOrderInfo.line}
+            </if>
+            ORDER BY rels_date DESC , id DESC
+        </where>
+    </select>
 </mapper>

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

@@ -111,6 +111,6 @@
     <select id="getExistIds" resultType="java.lang.String">
         select procinst_id
         from leave_sheet
-        where procinst_id in <foreach collection="procinstIds" item="procinstId" separator="," open="(" close=")">#{procinstId}</foreach>
+        where company_id = #{companyId} and procinst_id in <foreach collection="procinstIds" item="procinstId" separator="," open="(" close=")">#{procinstId}</foreach>
     </select>
 </mapper>

+ 13 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectCategoryMapper.xml

@@ -15,5 +15,18 @@
     <sql id="Base_Column_List">
         id, name, company_id, pro_incharger_audit, pro_bu_audit
     </sql>
+    <insert id="batchInsert">
+        insert into project_category(name,company_id)
+        values
+        <foreach collection="toAddList" separator="," item="res">
+            (#{res.name},#{res.companyId})
+        </foreach>
+    </insert>
+    <select id="getExistIds" resultType="java.lang.String">
+        select *
+        from project_category
+        where company_id = #{companyId}
+          and name in <foreach collection="citemccodes" item="citemccode" separator="," open="(" close=")">#{citemccode}</foreach>
+    </select>
 
 </mapper>

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 13 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectMapper.xml


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

@@ -33,7 +33,7 @@
         </foreach>
     </insert>
     <select id="getExistIds" resultType="java.lang.String">
-        select procinst_id from user_fv_time where procinst_id in
+        select procinst_id from user_fv_time where company_id = #{companyId} and procinst_id in
         <foreach collection="procinstIds" item="procinstId" separator="," open="(" close=")">#{procinstId}</foreach>
     </select>