소스 검색

Merge remote-tracking branch 'origin/master'

yusm 1 개월 전
부모
커밋
3163da6bbd

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

@@ -15,6 +15,17 @@
 
     <dependencies>
 
+        <dependency>
+            <groupId>com.google.zxing</groupId>
+            <artifactId>core</artifactId>
+            <version>3.4.1</version>
+        </dependency>
+        <dependency>
+            <groupId>com.google.zxing</groupId>
+            <artifactId>javase</artifactId>
+            <version>3.4.1</version>
+        </dependency>
+
 <!--        <dependency>-->
 <!--            <groupId>cn.hutool</groupId>-->
 <!--            <artifactId>hutool-all</artifactId>-->

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

@@ -0,0 +1,26 @@
+package com.management.platform.controller;
+
+import com.management.platform.service.ErpOrderInfoService;
+import com.management.platform.util.HttpRespMsg;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+
+@RestController
+@RequestMapping("/erpOrderInfo")
+public class ErpOrderInfoController {
+
+
+    @Resource
+    private ErpOrderInfoService erpOrderInfoService;
+
+
+    @RequestMapping("/getInfoByProjectId")
+    public HttpRespMsg getInfoByProjectId(@RequestParam String projectId, HttpServletRequest request) {
+        return erpOrderInfoService.getInfoByProjectId(projectId,request);
+    }
+
+}

+ 69 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/QRCodeController.java

@@ -0,0 +1,69 @@
+package com.management.platform.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.google.zxing.WriterException;
+import com.management.platform.entity.Report;
+import com.management.platform.mapper.ReportMapper;
+import com.management.platform.util.HttpRespMsg;
+import com.management.platform.util.QRCodeUtil;
+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 javax.annotation.Resource;
+import java.io.IOException;
+
+@RestController
+@RequestMapping("/qrCode")
+public class QRCodeController {
+
+
+    @Resource
+    private ReportMapper reportMapper;
+
+    @Value("${upload.path}")
+    private String uploadPath;
+
+    @RequestMapping("/generateQRCodeByReportId")
+    public HttpRespMsg generateQRCode(@RequestParam("reportId")String reportId){
+        HttpRespMsg msg = new HttpRespMsg();
+        Report report = reportMapper.selectById(reportId);
+        String data = JSON.toJSONString(report);
+        int width = 300; // 二维码宽度
+        int height = 300; // 二维码高度
+        String fileName = "日报二维码_"+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;
+        }
+        msg.setData(uploadPath+fileName);
+        return msg;
+    }
+
+
+    @RequestMapping("/decodeQRCode")
+    public HttpRespMsg decodeQRCode(@RequestParam("filePath")String filePath){
+        HttpRespMsg msg = new HttpRespMsg();
+        String res = null;
+        try {
+            res = QRCodeUtil.decodeQRCode(filePath);
+        } catch (IOException e) {
+            e.printStackTrace();
+            msg.setError("文件解析失败,请联系管理员");
+            return msg;
+        }
+        JSONObject jsonObject = JSON.parseObject(res);
+        msg.setData(jsonObject);
+        return msg;
+    }
+
+}

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

@@ -0,0 +1,11 @@
+package com.management.platform.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.management.platform.entity.ErpOrderInfo;
+import com.management.platform.util.HttpRespMsg;
+
+import javax.servlet.http.HttpServletRequest;
+
+public interface ErpOrderInfoService extends IService<ErpOrderInfo> {
+    HttpRespMsg getInfoByProjectId(String projectId, HttpServletRequest request);
+}

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

@@ -0,0 +1,37 @@
+package com.management.platform.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.management.platform.entity.ErpOrderInfo;
+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.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+
+@Service
+public class ErpOrderInfoServiceImpl extends ServiceImpl<ErpOrderInfoMapper, ErpOrderInfo> implements ErpOrderInfoService {
+
+    @Resource
+    private ErpOrderInfoMapper erpOrderInfoMapper;
+
+    @Resource
+    private UserMapper userMapper;
+
+
+    @Override
+    public HttpRespMsg getInfoByProjectId(String projectId, HttpServletRequest request) {
+        HttpRespMsg httpRespMsg = new HttpRespMsg();
+//        User user = userMapper.selectById(request.getHeader("Token"));
+        List<ErpOrderInfo> erpOrderInfos = erpOrderInfoMapper.selectList(new LambdaQueryWrapper<ErpOrderInfo>()
+                .eq(ErpOrderInfo::getProjectId, projectId)
+                .ne(ErpOrderInfo::getStatus, 4)
+        );
+        httpRespMsg.setData(erpOrderInfos);
+        return httpRespMsg;
+    }
+}

+ 12 - 18
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/UserWithBeisenServiceImpl.java

@@ -71,12 +71,9 @@ public class UserWithBeisenServiceImpl extends ServiceImpl<UserWithBeisenMapper,
         DateTimeFormatter df2=DateTimeFormatter.ofPattern("HH:mm");
         DateTimeFormatter df3=DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
         DateTimeFormatter df4=DateTimeFormatter.ofPattern("HH:mm:ss");
-        TimeType timeType = timeTypeMapper.selectById(companyId);
         List<User> userList = userMapper.selectList(new LambdaQueryWrapper<User>().eq(User::getCompanyId, companyId));
         List<UserWithBeisen> userWithBeisenList = userWithBeisenService.list(new LambdaQueryWrapper<UserWithBeisen>().eq(UserWithBeisen::getCompanyId, companyId));
         BeisenConfig beisenConfig = beisenConfigMapper.selectById(companyId);
-        //获取特殊节假日设置
-        List<HolidaySetting> holidaySettings = holidaySettingService.list(new LambdaQueryWrapper<HolidaySetting>().eq(HolidaySetting::getCompanyId, companyId));
         if(beisenConfig==null){
             msg.setError("北森基础数据配置未完成,请联系服务商完成配置");
             return msg;
@@ -89,6 +86,18 @@ public class UserWithBeisenServiceImpl extends ServiceImpl<UserWithBeisenMapper,
         JSONArray allVacationList=new JSONArray();
         JSONArray allDailyReportList=new JSONArray();
         List<LeaveSheet> leaveSheetList=new ArrayList<>();
+
+        List<UserFvTime> userFvTimeList=new ArrayList<>();
+        for (LocalDate localDate : workDaysListInRange) {
+            JSONArray statisticList = BeiSenUtils.getAttendanceStatistics(df.format(localDate), df.format(localDate), beisenConfig.getAppKey(), beisenConfig.getAppSecret(), 1, 100);
+            JSONArray overTimeList = BeiSenUtils.getOverTimeList(df.format(localDate), beisenConfig.getAppKey(), beisenConfig.getAppSecret(), 1, 100);
+            JSONArray vacationList = BeiSenUtils.getVacationList(df.format(localDate), beisenConfig.getAppKey(), beisenConfig.getAppSecret(),1,100);
+            JSONArray dailyReportList = BeiSenUtils.getDailyReportList(df.format(localDate), beisenConfig.getAppKey(), beisenConfig.getAppSecret(), 1, 100);
+            allOverTimeList.addAll(overTimeList);
+            attendanceStatistics.addAll(statisticList);
+            allVacationList.addAll(vacationList);
+            allDailyReportList.addAll(dailyReportList);
+        }
         //同步休假数据到工时管家
         for (int i = 0; i < allVacationList.size(); i++) {
             JSONObject jsonObject = allVacationList.getJSONObject(i);
@@ -140,22 +149,7 @@ public class UserWithBeisenServiceImpl extends ServiceImpl<UserWithBeisenMapper,
         if(leaveSheetList.size()>0){
             leaveSheetService.saveOrUpdateBatch(leaveSheetList);
         }
-        List<UserFvTime> userFvTimeList=new ArrayList<>();
-        for (LocalDate localDate : workDaysListInRange) {
-            JSONArray statisticList = BeiSenUtils.getAttendanceStatistics(df.format(localDate), df.format(localDate), beisenConfig.getAppKey(), beisenConfig.getAppSecret(), 1, 100);
-            JSONArray overTimeList = BeiSenUtils.getOverTimeList(df.format(localDate), beisenConfig.getAppKey(), beisenConfig.getAppSecret(), 1, 100);
-            JSONArray vacationList = BeiSenUtils.getVacationList(df.format(localDate), beisenConfig.getAppKey(), beisenConfig.getAppSecret(),1,100);
-            JSONArray dailyReportList = BeiSenUtils.getDailyReportList(df.format(localDate), beisenConfig.getAppKey(), beisenConfig.getAppSecret(), 1, 100);
-            allOverTimeList.addAll(overTimeList);
-            attendanceStatistics.addAll(statisticList);
-            allVacationList.addAll(vacationList);
-            allDailyReportList.addAll(dailyReportList);
-        }
         //打印数据
-        System.out.println("allOverTimeList:"+allOverTimeList);
-        System.out.println("attendanceStatistics:"+attendanceStatistics);
-        System.out.println("allVacationList:"+allVacationList);
-        System.out.println("allDailyReportList:"+allDailyReportList);
         for (LocalDate localDate : workDaysListInRange) {
             Stream<JSONObject> swipingCardsStream = attendanceStatistics.stream().map(item -> (JSONObject) item);
             //todo: 获取当天的考勤数据

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

@@ -113,7 +113,7 @@ public class DataCollectTask {
 
     }
 
-    @Scheduled(cron = "0 21 11 * * ?")
+    @Scheduled(cron = "0 30 1 * * ?")
     public void workDayTask(){
         RestTemplate restTemplate = new RestTemplate();
         String sumUrl = PREFIX_URL+"/dataCollect/getWorkDayDataSum";

+ 67 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/util/QRCodeUtil.java

@@ -0,0 +1,67 @@
+package com.management.platform.util;
+
+import com.google.zxing.*;
+import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
+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 javax.imageio.ImageIO;
+import java.awt.*;
+import java.awt.image.BufferedImage;
+import java.io.File;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+public class QRCodeUtil {
+
+    /**字符串生成二维码*/
+    public static void generateQRCodeImage(String text, int width, int height, String filePath)
+            throws WriterException, IOException {
+        QRCodeWriter qrCodeWriter = new QRCodeWriter();
+        Map<EncodeHintType, Object> hints = new HashMap<>();
+        hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
+        hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
+        hints.put(EncodeHintType.MARGIN, 1);
+
+        BitMatrix bitMatrix = qrCodeWriter.encode(text, BarcodeFormat.QR_CODE, width, height, hints);
+
+        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
+        image.createGraphics();
+
+        Graphics2D graphics = (Graphics2D) image.getGraphics();
+        graphics.setColor(Color.WHITE);
+        graphics.fillRect(0, 0, width, height);
+        graphics.setColor(Color.BLACK);
+
+        for (int i = 0; i < width; i++) {
+            for (int j = 0; j < height; j++) {
+                if (bitMatrix.get(i, j)) {
+                    graphics.fillRect(i, j, 1, 1);
+                }
+            }
+        }
+        ImageIO.write(image, "PNG", new File(filePath));
+    }
+
+    /**根据路径解析二维码图片*/
+    public static String decodeQRCode(String filePath) throws IOException {
+        BufferedImage qrCodeImage = ImageIO.read(new File(filePath));
+        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-workshop/src/main/java/com/management/platform/task/TimingTask.java

@@ -588,7 +588,7 @@ public class TimingTask {
             return;
         }
         DateTimeFormatter df=DateTimeFormatter.ofPattern("yyyy-MM-dd");
-        LocalDate start=LocalDate.now().minusDays(7);
+        LocalDate start=LocalDate.now().minusDays(10);
         LocalDate end=LocalDate.now();
         JSONArray jsonArrayFilter = new JSONArray();
         JSONObject filter1 = new JSONObject();

BIN
fhKeeper/formulahousekeeper/timesheet/src/assets/image/shenhejianto.png


+ 12 - 1
fhKeeper/formulahousekeeper/timesheet/src/components/taskComponent.vue

@@ -57,7 +57,10 @@
                         <el-select v-model="addForm.checkFirstId" :disabled="true" size="small">
                             <el-option v-for="item in users" :key="item.id" :label="item.name" :value="item.id"></el-option>
                         </el-select>
-                        <div style="margin: 0 20px;"> ------------------ > </div> 
+                        <div class="reviewImages"> 
+                            <img src="../assets/image/shenhejianto.png" alt="">
+                            <img src="../assets/image/shenhejianto.png" alt="">
+                        </div> 
                         <el-select v-model="addForm.checkSecondId" :disabled="!addForm.checkFirstId || doYouWantToDisableAll" size="small">
                             <el-option v-for="item in pmUserList" :key="item.id" :label="item.name" :value="item.id"></el-option>
                         </el-select>
@@ -2621,6 +2624,14 @@ export default {
 
 <style lang="scss" scoped>
 @import "../assets/scss/handle";
+.reviewImages {
+    display: flex;
+    align-items: center;
+    margin: 0 25px;
+    img {
+        width: 100px
+    }
+}
 .themeFontColor {
     @include font_color("color");
 }