Browse Source

东台体检工单上传照片

chengxiaowen 3 tháng trước cách đây
mục cha
commit
995129d3f9

+ 152 - 0
src/main/java/com/poteviohealth/cgp/statistics/controller/DevOpsController.java

@@ -0,0 +1,152 @@
+package com.poteviohealth.cgp.statistics.controller;
+
+import cn.hutool.core.io.IoUtil;
+import com.poteviohealth.cgp.common.controller.BaseWebController;
+import com.poteviohealth.cgp.common.integrated.StringParams;
+import com.poteviohealth.cgp.common.model.VaultsResponse;
+import com.poteviohealth.cgp.statistics.job.OrderFaceJobHandler;
+import com.poteviohealth.cgp.statistics.mapper.WatermarkImgMapper;
+import com.poteviohealth.cgp.statistics.model.indto.PriceUploadDto;
+import com.poteviohealth.cgp.statistics.model.outdto.DistinctionDTO;
+import com.poteviohealth.cgp.statistics.service.IDistinctionService;
+import com.poteviohealth.cgp.statistics.utils.OssUtils;
+import io.swagger.annotations.Api;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 运维 前端控制器
+ * </p>
+ *
+ * @author potevio
+ * @since 2019-07-18
+ */
+@RestController
+@RequestMapping("/statistics/web/devops")
+@Api(value = "DevOpsController", tags = "运维", produces = MediaType.APPLICATION_JSON_VALUE)
+public class DevOpsController extends BaseWebController {
+    @Value("${sync.dbName}")
+    private String dbName;
+    @Resource
+    private OssUtils ossUtils;
+    @Resource
+    private IDistinctionService distinctionService;
+    @Resource
+    private OrderController orderController;
+    @Resource
+    private WatermarkImgMapper watermarkImgMapper;
+    @Resource
+    private OrderFaceJobHandler orderFaceJobHandler;
+
+    @RequestMapping(value = "/executeJob", method = {RequestMethod.POST})
+    @ResponseBody
+    public VaultsResponse<String> executeJob(){
+        orderFaceJobHandler.execute("{}");
+        return VaultsResponse.success();
+    }
+
+    @RequestMapping(value = "/uploadExamPhoto", method = {RequestMethod.POST})
+    @ResponseBody
+    public VaultsResponse<List<String>> uploadExamPhoto(@RequestBody StringParams param){
+        String area = param.getId();
+        File base = new File("D:\\数据处理\\dongtai\\体检照片\\"+area);
+        File[] nameFiles = base.listFiles();
+        Map<String, PriceUploadDto> nameMap = this.toNameOrder(6, area);
+        Random rand = new Random();
+        int min = 0;
+        int max = 10;
+        List<String> errorUsers = new ArrayList<>();
+        for (File nameFile:nameFiles){
+            String name = nameFile.getName();
+            System.out.println("user:"+ name);
+            try {
+                File[] files = nameFile.listFiles();
+                PriceUploadDto order = nameMap.get(name);
+                if (order == null){
+                    String error = "no user:" + name;
+                    System.out.println(error);
+                    errorUsers.add(error);
+                    continue;
+                }
+                Long orderId = order.getOrderId();
+                List<PriceUploadDto> list = new ArrayList<>();
+                Calendar c = Calendar.getInstance();
+                SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+                int idx = 1;
+                for (int i=0; i<files.length; i++){
+                    File file = files[i];
+                    DistinctionDTO dto = distinctionService.checkImg(file, orderId, Collections.emptyList());
+                    FileInputStream inputStream = new FileInputStream(file);
+                    VaultsResponse<String> vaultsResponse = ossUtils.uploadOneFile(file.getName(),orderId,inputStream);
+                    dto.setUrl(vaultsResponse.getData());
+                    IoUtil.close(inputStream);
+
+                    PriceUploadDto uploadDto = new PriceUploadDto();
+                    uploadDto.setOrderId(orderId);
+                    uploadDto.setUid(dto.getUid());
+                    uploadDto.setUrl(dto.getUrl());
+                    if (i==0){//开始时间
+                        int delta = rand.nextInt(max - min + 1) + min;
+                        c.setTime(format.parse(order.getDate()));
+                        c.add(Calendar.SECOND, -37 * 3-delta);
+                    }else if (i==3){//结束时间
+                        int delta = rand.nextInt(max - min + 1) + min;
+                        c.setTime(format.parse(order.getType()));
+                        c.add(Calendar.SECOND, -37 * (files.length -1)-delta);
+                        idx = 7;
+                    }else{
+                        c.add(Calendar.SECOND, 37);
+                        ++idx;
+                    }
+                    uploadDto.setDate(format.format(c.getTime()));
+                    uploadDto.setIndex(idx);
+                    uploadDto.setType("image");
+                    uploadDto.setPunchAddress(order.getPunchAddress());
+                    uploadDto.setPunchLatitude(order.getPunchLatitude());
+                    uploadDto.setPunchLongitude(order.getPunchLongitude());
+                    list.add(uploadDto);
+                }
+                orderController.orderFile(list);
+
+            } catch (Exception e) {
+                String error = "wrong user:" + name;
+                System.out.println(error);
+                errorUsers.add(error);
+                e.printStackTrace();
+            }
+        }
+        return VaultsResponse.success(errorUsers);
+    }
+
+    private Map<String, PriceUploadDto> toNameOrder(Integer operatorId, String area){
+        List<PriceUploadDto> list = watermarkImgMapper.listExamOrders(operatorId, dbName, area);
+        return list.stream().collect(Collectors.toMap(PriceUploadDto::getUid, Function.identity()));
+    }
+
+    public static void main(String[] args){
+        String area = "tz";
+        File base = new File("D:\\数据处理\\dongtai\\体检照片\\"+area);
+        File[] nameFiles = base.listFiles();
+        for (File nameFile:nameFiles) {
+            File[] files = nameFile.listFiles();
+            for (File f : files) {
+                if (f.isDirectory()) {
+                    System.out.println(f.getAbsolutePath());
+                }
+            }
+        }
+
+    }
+}

+ 6 - 0
src/main/java/com/poteviohealth/cgp/statistics/mapper/WatermarkImgMapper.java

@@ -4,10 +4,13 @@ import com.baomidou.mybatisplus.annotation.SqlParser;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.poteviohealth.cgp.statistics.model.WatermarkImg;
 import com.poteviohealth.cgp.statistics.model.indto.OrderRecordDto;
+import com.poteviohealth.cgp.statistics.model.indto.PriceUploadDto;
 import com.poteviohealth.cgp.statistics.model.outdto.OrderImageDTO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 /**
  * 图片处理
  * @author Qin
@@ -22,4 +25,7 @@ public interface WatermarkImgMapper extends BaseMapper<WatermarkImg>{
 
     @SqlParser(filter = true)
     OrderImageDTO getOrderUrl(@Param("operatorId")Integer operatorId,@Param("dbName") String dbName, @Param("orderId") Long orderId);
+
+    @SqlParser(filter = true)
+    List<PriceUploadDto> listExamOrders(@Param("operatorId")Integer operatorId, @Param("dbName") String dbName, @Param("station") String station);
 }

+ 6 - 0
src/main/resources/mapper/statistics/WatermarkImgMapper.xml

@@ -7,6 +7,12 @@
     <select id="getOrderUrl" resultType="com.poteviohealth.cgp.statistics.model.outdto.OrderImageDTO">
         select IFNULL(start_url,'') AS startUrl,IFNULL(end_url,'') AS endUrl from ${dbName}_order.o_order_detail_${operatorId} where order_id = #{orderId}
     </select>
+    <select id="listExamOrders" resultType="com.poteviohealth.cgp.statistics.model.indto.PriceUploadDto">
+        select o.order_id, o.punch_address, d.`用户名` as uid, d.`开始时间` as `date`, d.`结束时间` as type, a.longitude as punchLongitude, a.latitude as punchLatitude
+        from ${dbName}_order.dttj_${station} d join ${dbName}_order.o_order_${operatorId} o on d.orderid = o.order_id
+        join ${dbName}_customer.c_customer_address_${operatorId} a on o.service_address_id = a.id
+        join ${dbName}_order.o_order_detail_${operatorId} od on d.orderid = od.order_id and (od.start_url is null or od.end_url is null)
+    </select>
 
     <insert id="saveOrderRecord">
         INSERT INTO ${dbName}_order.o_order_record_${dto.operatorId}