소스 검색

Merge branch 'master' of https://gitee.com/antai-wuliu/ANTAI-API

dengpan 1 년 전
부모
커밋
c3814e4357

+ 7 - 1
src/main/java/com/steerinfo/dil/controller/TMSController.java

@@ -1043,8 +1043,14 @@ public class TMSController extends BaseRESTfulController {
         fileOutputStream.write(file.getBytes());
         fileOutputStream.flush();
         fileOutputStream.close();
+        List<Map<String, Object>> list = new ArrayList<>();
         //获取Excel中包含的对象数组
-        List<Map<String, Object>> list = ExcelToolUtils.getExcelList(file, 0);
+        if ("维保".equals(resultType)) {
+            List<String> excelHeads = Arrays.asList("车属单位","车型","车号","大号","维修时间","维修内容","维修","电器","钣焊","补胎","其它","工时合计","配件费用","外修费用","总合计");
+            list = ExcelToolUtils.getExcelList(file,2,excelHeads);
+        }else{
+            list = ExcelToolUtils.getExcelList(file, 0);
+        }
         map.put("list", list);
         map.put("userId", userId);
         map.put("userName", userName);

+ 7 - 0
src/main/java/com/steerinfo/dil/controller/UniversalController.java

@@ -426,4 +426,11 @@ public class UniversalController extends BaseRESTfulController {
         List<Map<String,Object>> list = universalMapper.getQueueGridList(map);
         return success(list);
     }
+
+    @PostMapping("/getTransOrderByJobNumber")
+    @ApiOperation("根据手机号查询运单")
+    public RESTfulResult getTransOrderByJobNumber(@RequestBody Map<String,Object> map) {
+        List<Map<String,Object>> list = universalMapper.getTransOrderByJobNumber(map);
+        return success(list);
+    }
 }

+ 3 - 0
src/main/java/com/steerinfo/dil/mapper/UniversalMapper.java

@@ -116,4 +116,7 @@ public interface UniversalMapper {
     List<Map<String, Object>> getQueueGridList(Map<String, Object> map);
 
     List<Map<String, Object>> getRequirementByLike(Map<String, Object> map);
+
+    List<Map<String, Object>> getTransOrderByJobNumber(Map<String, Object> map);
+
 }

+ 71 - 0
src/main/java/com/steerinfo/dil/util/ExcelToolUtils.java

@@ -518,4 +518,75 @@ public class ExcelToolUtils {
         }
         return list;
     }
+
+    public static List<Map<String,Object>> getExcelList(MultipartFile file, int startRow,List<String> excelHead)
+            throws Exception {
+        File excel = multipartFileToFile(file);
+        FileInputStream inputStream = null;
+        String fileName = excel.getName();
+        // 解决fileName兼容性问题
+        int lastindex = fileName.lastIndexOf("\\");
+        fileName = fileName.substring(lastindex + 1);
+        if (fileName != null && fileName.length() > 0) {
+            inputStream = new FileInputStream(excel);
+        }
+        //构建返回数组
+        List<Map<String,Object>> list = new ArrayList<>();
+        // 1. 创建工作簿
+        Workbook workbook = null;
+        // 2. 根据格式解析文件
+        if (fileName.endsWith(".xls")) {
+            workbook = new HSSFWorkbook(inputStream);
+        }else if(fileName.endsWith(".xlsx")){
+            workbook = new XSSFWorkbook(inputStream);
+        }else {
+            throw new Exception("请选择xls或者xlsx文件!");
+        }
+        for (int sheetIndex = 0; sheetIndex < workbook.getNumberOfSheets();sheetIndex++) {
+            // 获取工作表  excel分为若干个表. sheet
+            Sheet sheet = workbook.getSheetAt(sheetIndex);
+            if (sheet == null) {
+                break;
+            }
+            // 获取表格中最后一行的行号
+            int lastRowNum = sheet.getLastRowNum();
+            if (lastRowNum < startRow) {
+                throw new Exception("第"+(sheetIndex+1)+"个工作簿无数据!请检查Excel!");
+            }
+            // 定义行变量和单元格变量
+            Row row = null;
+            Cell cell = null;
+            //获取表头
+            Row titlesRow = sheet.getRow(startRow);
+            // 获取当前行的第一列和最后一列的标记(列数)
+            int firstCellNum = 0;//第一列
+            int lastCellNum = excelHead.size();//最后一列
+            try {
+                //遍历除表头外的所有行
+                for (int rowNum = startRow+1; rowNum <= lastRowNum; rowNum++) {
+                    row = sheet.getRow(rowNum);
+                    if(row == null){
+                        continue;
+                    }
+                    //遍历行的所有列
+                    Map<String,Object> item = new HashMap<>();
+                    for (int cellNum = firstCellNum; cellNum < lastCellNum; cellNum++) {
+                        cell = row.getCell(cellNum);
+                        //获取表头对应数据
+                        if (excelHead.get(cellNum) != null && !excelHead.get(cellNum).equals("")
+                                && cell !=null && !cell.toString().equals("")) {
+                            item.put(excelHead.get(cellNum),parseCell(cell));
+                        }
+                    }
+                    if(item.keySet().toArray().length >0 ){
+                        list.add(item);
+                    }
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+                throw new Exception("文件存在隐藏行或合并列!");
+            }
+        }
+        return list;
+    }
 }

+ 34 - 6
src/main/resources/com/steerinfo/dil/mapper/UniversalMapper.xml

@@ -1351,13 +1351,16 @@
     </select>
     <select id="getOrderIds" resultType="java.util.Map">
         SELECT oto.TRANS_ORDER_ID FROM OMS_TRANS_ORDER OTO
-        left join RMS_PERSONNEL RP
-        on rp.PERSONNEL_ID = oto.DRIVER_ID
-        left join RMS_PERSONNEL RP2
-        on RP2.PERSONNEL_ID = oto.DRIVER_ID2
-        where (rp.PERSONNEL_JOB_NUMBER = #{jobNumber}
-        or rp2.PERSONNEL_JOB_NUMBER =  #{jobNumber})
+        left join OMS_ORDER_CHILD OOC
+        on ooc.TRANS_ORDER_ID = oto.TRANS_ORDER_ID
+        where oto.DRIVER_PHONE = #{jobNumber}
         and oto.deleted = 5
+        <if test="transOrderBusinessName != null and !'日常任务'.equals(transOrderBusinessName)">
+            and ooc.material_Type_Name = #{transOrderBusinessName}
+        </if>
+        <if test="transOrderBusinessName != null and '日常任务'.equals(transOrderBusinessName)">
+            and oto.business_scene = '生产'
+        </if>
     </select>
     <select id="getFuelTypeByLike" resultType="java.util.Map">
         select * from(
@@ -2120,4 +2123,29 @@
             </foreach>
         </if>
     </select>
+    <select id="getTransOrderByJobNumber" resultType="java.util.Map">
+        SELECT *
+        FROM (
+                 SELECT RMT.MATERIAL_TYPE_NAME        "businessName",
+                        count(RMT.MATERIAL_TYPE_NAME) "count"
+                 FROM OMS_TRANS_ORDER OTO
+                          LEFT JOIN OMS_ORDER_CHILD OOC ON OOC.TRANS_ORDER_ID = OTO.TRANS_ORDER_ID
+                          LEFT JOIN RMS_MATERIAL RM ON RM.MATERIAL_ID = OOC.MATERIAL_ID
+                          LEFT JOIN RMS_MATERIAL_TYPE RMT ON RMT.MATERIAL_TYPE_ID = RM.MATERIAL_TYPE_ID
+                 WHERE OTO.DRIVER_PHONE = #{jobNumber}
+                   AND OTO.DELETED BETWEEN 4
+                     AND 5
+                   AND REGEXP_LIKE(OTO.BUSINESS_SCENE, '采购|销售')
+                 GROUP BY RMT.MATERIAL_TYPE_NAME
+                 union all
+                 SELECT '日常任务' "businessName",
+                        count(oto.TRANS_ORDER_ID)
+                 FROM OMS_TRANS_ORDER OTO
+                 WHERE REGEXP_LIKE(OTO.BUSINESS_SCENE, '生产')
+                   AND OTO.DELETED BETWEEN 4
+                     AND 5
+                   AND OTO.DRIVER_PHONE = #{jobNumber}
+             )
+        WHERE "count" > 0
+    </select>
 </mapper>