From a8f5761841bcf481eb2f2a7c535dbac145d2a468 Mon Sep 17 00:00:00 2001 From: fuliqi <fuliqi@qq.com> Date: 星期一, 29 七月 2024 10:14:54 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CalculateRule.java | 33 +- ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateRuleServiceImpl.java | 42 -- ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml | 47 ++ ycl-server/src/main/java/com/ycl/platform/service/impl/TContractServiceImpl.java | 106 +++--- ycl-server/src/main/java/com/ycl/handler/CommentWriteHandler.java | 4 ycl-server/src/main/java/com/ycl/platform/service/ICalculateRuleService.java | 9 ycl-pojo/src/main/java/com/ycl/platform/domain/vo/WorkOrderVO.java | 15 + ycl-server/src/main/java/com/ycl/task/WorkOrderTask.java | 77 +++++ ycl-server/src/main/resources/application-dev.yml | 12 ycl-common/src/main/java/enumeration/ContractRule.java | 59 +++ ycl-pojo/src/main/java/com/ycl/platform/domain/vo/YwPointJobVO.java | 40 ++ ycl-server/src/main/java/com/ycl/handler/CustomCellWriteHandler.java | 258 +++++++++++++++++ ycl-server/src/main/java/com/ycl/platform/service/impl/ContractScoreServiceImpl.java | 4 ycl-pojo/src/main/java/com/ycl/platform/domain/entity/WorkOrder.java | 2 ycl-server/src/main/resources/application.yml | 5 ycl-server/src/main/java/com/ycl/utils/DateUtils.java | 8 ycl-common/src/main/java/constant/PointConfigConstants.java | 33 ++ ycl-server/src/main/resources/application-prod.yml | 7 ycl-common/src/main/java/enumeration/OvertimeStatus.java | 25 + ycl-server/src/main/java/com/ycl/web/UYClient.java | 8 ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java | 8 ycl-server/src/main/java/com/ycl/web/HKClient.java | 35 +- ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java | 7 23 files changed, 667 insertions(+), 177 deletions(-) diff --git a/ycl-common/src/main/java/constant/PointConfigConstants.java b/ycl-common/src/main/java/constant/PointConfigConstants.java new file mode 100644 index 0000000..2c3d102 --- /dev/null +++ b/ycl-common/src/main/java/constant/PointConfigConstants.java @@ -0,0 +1,33 @@ +package constant; + +/** + * @author锛歺p + * @date锛�2024/7/25 14:27 + */ +public class PointConfigConstants { + + /** + * 鏅�氱偣浣嶉厤缃殑key + * + */ + public final static String NORMAL = "normal.workorder.time"; + + /** + * 鏅�氱偣浣嶅憡璀﹂厤缃殑key + * + */ + public final static String NORMAL_ALARM = "normal.wordkorder.alarm.time"; + + /** + * 閲嶇偣鐐逛綅閰嶇疆鐨刱ey + * + */ + public final static String IMPORTANT = "important.wordkorder.time"; + + /** + * 閲嶇偣鐐逛綅鍛婅閰嶇疆鐨刱ey + * + */ + public final static String IMPORTANT_ALARM = "important.wordkorder.alarm.time"; + +} diff --git a/ycl-common/src/main/java/enumeration/ContractRule.java b/ycl-common/src/main/java/enumeration/ContractRule.java new file mode 100644 index 0000000..1e8080b --- /dev/null +++ b/ycl-common/src/main/java/enumeration/ContractRule.java @@ -0,0 +1,59 @@ +package enumeration; + +import lombok.Getter; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; + +/** + * @author gonghl + * @since 2024/7/25 涓婂崍 10:50 + */ +@Getter +public enum ContractRule { + + CONTRACT_RULE_1("瑙嗛骞冲潎鍦ㄧ嚎鐜�", Arrays.asList("CONTRACT_RULE_2", "CONTRACT_RULE_3", "CONTRACT_RULE_4", "CONTRACT_RULE_5")), + CONTRACT_RULE_2("鈮�98%", Collections.EMPTY_LIST), + CONTRACT_RULE_3("95%鈮よ棰戝钩鍧囧湪绾跨巼锛�98%", Collections.EMPTY_LIST), + CONTRACT_RULE_4("90%鈮よ棰戝钩鍧囧湪绾跨巼锛�95%", Collections.EMPTY_LIST), + CONTRACT_RULE_5("锛�90%", Collections.EMPTY_LIST), + CONTRACT_RULE_6("鍓嶇鎰熺煡婧愭不鐞嗗伐浣�", Arrays.asList("CONTRACT_RULE_7", "CONTRACT_RULE_8", "CONTRACT_RULE_9")), + CONTRACT_RULE_7("鏃堕挓鍚屾锛堣秴杩嚶�3绉掍负涓嶅悎鏍硷級", Collections.EMPTY_LIST), + CONTRACT_RULE_8("OSD鏍囪瘑", Collections.EMPTY_LIST), + CONTRACT_RULE_9("涓�鏈轰竴妗�", Collections.EMPTY_LIST), + CONTRACT_RULE_10("瀛樺偍鏁呴殰", Arrays.asList("CONTRACT_RULE_11", "CONTRACT_RULE_12")), + CONTRACT_RULE_11("鍥犲瓨鍌ㄨ澶囥�佷簯瀛樺偍杞欢绛夊紩璧峰钩鍙颁笉鑳芥甯告煡鐪嬪巻鍙插浘鍍忥紝椤诲湪24灏忔椂鎺掗櫎鏁呴殰", Collections.EMPTY_LIST), + CONTRACT_RULE_12("鍥犺棰戞垨鑰呭浘鐗囦涪澶卞鑷撮噸瑕佹浜嬩欢涓嶈兘鍥炴斁鎴栨煡鐪�", Collections.EMPTY_LIST), + CONTRACT_RULE_13("瀵逛簬鍓嶇鐐逛綅寮傚父鎯呭喌鐨勫鐞�", List.of("CONTRACT_RULE_14")), + CONTRACT_RULE_14("闀滃ご鏁呴殰鎴栨薄鏌撴垨鏍戞灊閬尅鎴栨灙鏈鸿瑙掑亸绉绘甯歌搴︽垨琛ュ厜鐏簲浜湭浜�", Collections.EMPTY_LIST), + CONTRACT_RULE_15("寤虹珛鏁版嵁鐩戞祴缁存姢鏈哄埗", List.of("CONTRACT_RULE_16")), + CONTRACT_RULE_16("涓爣浜哄簲褰撳缓绔嬫暟鎹洃娴嬬淮鎶ゆ満鍒讹紝褰撳彂鐢熸暟鎹紓甯告儏鍐垫椂锛屽簲鍦� 24 灏忔椂鍐呮仮澶嶃�傦紙鏁版嵁寮傚父鍖呮嫭瀹炴椂鐩戞帶鎴栧綍鍍忚棰戞媺娴佸け璐ワ紝鍥剧墖鑾峰彇澶辫触銆佽瑙夎绠楄В鏋愬紓甯哥瓑锛夈��", Collections.EMPTY_LIST), + CONTRACT_RULE_17("纭繚褰曞儚瀹屾暣涓嶅畾鏈熷鎵�鏈夌偣浣嶅綍鍍忓畬鏁存�ф娊鏌�", Arrays.asList("CONTRACT_RULE_18", "CONTRACT_RULE_19", "CONTRACT_RULE_20", "CONTRACT_RULE_21", "CONTRACT_RULE_22")), + CONTRACT_RULE_18("姣忚矾瑙嗛绱涓㈠け10鍒嗛挓浠ュ唴", Collections.EMPTY_LIST), + CONTRACT_RULE_19("涓㈠け10-60 鍒嗛挓", Collections.EMPTY_LIST), + CONTRACT_RULE_20("涓㈠け1 灏忔椂-4 灏忔椂锛堝惈锛�", Collections.EMPTY_LIST), + CONTRACT_RULE_21("涓㈠け4 灏忔椂-12 灏忔椂锛堝惈锛�", Collections.EMPTY_LIST), + CONTRACT_RULE_22("涓㈠け12 灏忔椂浠ヤ笂", Collections.EMPTY_LIST), + CONTRACT_RULE_23("纭繚鍥剧墖瀹屾暣涓嶅畾鏈熷鎵�鏈変汉鑴歌溅杈嗕互鍙婃櫤鑳藉墠绔姄鎷嶇殑鍥剧墖瀹屾暣鎬ф娊鏌�", List.of("CONTRACT_RULE_24")), + CONTRACT_RULE_24("鍙戠幇鍚庡彴瀛樺偍涓嶈兘璋冨彇鍓嶇璁惧鍥剧墖", Collections.EMPTY_LIST), + ; + + private final String name; + private final List<String> children; + + ContractRule(String name, List<String> children) { + this.name = name; + this.children = children; + } + + public static List<ContractRule> getParent() { + return Arrays.stream(ContractRule.values()).filter(contractRule -> !contractRule.getChildren().isEmpty()).toList(); + } + + public static List<ContractRule> getChildren(ContractRule parent) { + return parent.getChildren().stream().map(ContractRule::valueOf).collect(Collectors.toList()); + } + +} diff --git a/ycl-common/src/main/java/enumeration/OvertimeStatus.java b/ycl-common/src/main/java/enumeration/OvertimeStatus.java new file mode 100644 index 0000000..cf674de --- /dev/null +++ b/ycl-common/src/main/java/enumeration/OvertimeStatus.java @@ -0,0 +1,25 @@ +package enumeration; + +import lombok.Getter; + +/** + * @author锛歺p + * @date锛�2024/7/25 16:54 + */ +@Getter +public enum OvertimeStatus { + + NOT(0, "鏈秴鏃�"), + ALARM(1, "璀﹀憡"), + YES(2, "瓒呮椂"), + ; + + private final Integer value; + + private final String desc; + + OvertimeStatus(Integer value, String desc) { + this.value = value; + this.desc = desc; + } +} diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CalculateRule.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CalculateRule.java index b6af342..2e2cb7e 100644 --- a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CalculateRule.java +++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CalculateRule.java @@ -7,8 +7,6 @@ import com.alibaba.excel.enums.poi.VerticalAlignmentEnum; import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.TableName; -import com.ycl.system.domain.TreeEntity; -import com.ycl.system.domain.TreeNode; import enumeration.converter.RuleDeductCategoryConverter; import enumeration.general.RuleDeductCategoryEnum; import lombok.Data; @@ -25,14 +23,12 @@ @ExcelIgnoreUnannotated @ContentStyle(horizontalAlignment = HorizontalAlignmentEnum.CENTER, verticalAlignment = VerticalAlignmentEnum.CENTER) @TableName("t_calculate_rule") -public class CalculateRule extends TreeNode { - private static final long serialVersionUID = 1L; +public class CalculateRule { /** - * 涓婚敭 + * id */ - @ExcelProperty("搴忓彿") - private Long id; + private Integer id; /** * 鍚堝悓id @@ -46,23 +42,24 @@ private String ruleName; /** - * 鍏宠仈涓婄骇id - */ - private Long parentId; - - /** - * 瑙勫垯鎻忚堪 - */ - @ExcelProperty("璇勫垽鏍囧噯") - private String ruleDesc; - - /** * 瑙勫垯鏉′欢 */ @ExcelProperty("鑰冩牳瑕佹眰") private String ruleCondition; /** + * 杩濊鏈�灏忓�� + */ + @ExcelProperty("杩濊鏈�灏忓��") + private Double min; + + /** + * 杩濊鏈�澶у�� + */ + @ExcelProperty("杩濊鏈�澶у��") + private Double max; + + /** * 鎵e噺鏂瑰紡 鎵f寚瀹氬垎鏁�/鍒嗘暟涔樹互鏁伴噺/闄や互鏁伴噺鍚庝箻浠ュ垎鏁� */ @ExcelProperty(value = "鎵e垎鏂瑰紡", converter = RuleDeductCategoryConverter.class) diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/WorkOrder.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/WorkOrder.java index 0bd7f2a..b286248 100644 --- a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/WorkOrder.java +++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/WorkOrder.java @@ -70,7 +70,7 @@ @TableField("processing_period") private Integer processingPeriod; - @ApiModelProperty("鏄惁瓒呮椂锛�0娌℃湁 1瓒呮椂") + @ApiModelProperty("鏄惁瓒呮椂锛�0娌℃湁 1璀﹀憡 2瓒呮椂") @TableField("overtime") private Integer overtime; } diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/WorkOrderVO.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/WorkOrderVO.java index dda5d06..55d2059 100644 --- a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/WorkOrderVO.java +++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/WorkOrderVO.java @@ -5,6 +5,7 @@ import com.ycl.platform.domain.entity.WorkOrder; import java.time.LocalDateTime; +import java.util.Date; import java.util.List; import org.springframework.lang.NonNull; import org.springframework.beans.BeanUtils; @@ -41,6 +42,13 @@ */ private Integer pointId; + private String pointTag; + + /** + * 鏄惁閲嶇偣鐐逛綅 + */ + private Boolean important; + /** 鏁呴殰绫诲瀷 */ private String errorType; @@ -64,6 +72,13 @@ /** 0鏈秴鏃� 1瓒呮椂 */ private Integer overtime; + /** 涓嬪彂鏃堕棿 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date distributeTime; + + /** 涓嬪彂浜� */ + private String realName; + public static WorkOrderVO getVoByEntity(@NonNull WorkOrder entity, WorkOrderVO vo) { if(vo == null) { vo = new WorkOrderVO(); diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/YwPointJobVO.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/YwPointJobVO.java new file mode 100644 index 0000000..ef883c9 --- /dev/null +++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/YwPointJobVO.java @@ -0,0 +1,40 @@ +package com.ycl.platform.domain.vo; + +import com.ycl.platform.base.AbsVo; +import com.ycl.platform.domain.entity.YwPoint; +import lombok.Data; +import lombok.experimental.Accessors; +import org.springframework.beans.BeanUtils; +import org.springframework.lang.NonNull; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + * 瀹氭椂浠诲姟澶勭悊宸ュ崟鏃舵晥 + * + * @author xp + * @since 2024-03-05 + */ +@Data +public class YwPointJobVO { + + private Integer id; + + /** 鐐逛綅鍚嶇О */ + private Date createTime; + + /** 鐐逛綅鏍囩 */ + private String [] pointTags; + private String pointTagString; + + public static YwPointJobVO getVoByEntity(@NonNull YwPoint entity, YwPointJobVO vo) { + if(vo == null) { + vo = new YwPointJobVO(); + } + BeanUtils.copyProperties(entity, vo); + return vo; + } + +} diff --git a/ycl-server/src/main/java/com/ycl/handler/CommentWriteHandler.java b/ycl-server/src/main/java/com/ycl/handler/CommentWriteHandler.java index dff2657..f57b1c6 100644 --- a/ycl-server/src/main/java/com/ycl/handler/CommentWriteHandler.java +++ b/ycl-server/src/main/java/com/ycl/handler/CommentWriteHandler.java @@ -24,11 +24,11 @@ Sheet sheet = context.getWriteSheetHolder().getSheet(); Drawing<?> drawingPatriarch = sheet.createDrawingPatriarch(); - Comment comment1 = drawingPatriarch.createCellComment(new XSSFClientAnchor(0, 0, 0, 0, 5, 4, 4, 5)); + Comment comment1 = drawingPatriarch.createCellComment(new XSSFClientAnchor(0, 0, 0, 0, 5, 5, 4, 6)); comment1.setString(new XSSFRichTextString("鎵i櫎鐩稿叧闀滃ご鏁伴噺*0.1鍒�")); sheet.getRow(0).getCell(1).setCellComment(comment1); - Comment comment2 = drawingPatriarch.createCellComment(new XSSFClientAnchor(0, 0, 0, 0, 5, 7, 7, 8)); + Comment comment2 = drawingPatriarch.createCellComment(new XSSFClientAnchor(0, 0, 0, 0, 5, 8, 7, 9)); comment2.setString(new XSSFRichTextString("鎵�2鍒�/12灏忔椂")); sheet.getRow(0).getCell(1).setCellComment(comment2); } diff --git a/ycl-server/src/main/java/com/ycl/handler/CustomCellWriteHandler.java b/ycl-server/src/main/java/com/ycl/handler/CustomCellWriteHandler.java new file mode 100644 index 0000000..41b9066 --- /dev/null +++ b/ycl-server/src/main/java/com/ycl/handler/CustomCellWriteHandler.java @@ -0,0 +1,258 @@ +package com.ycl.handler; + +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.util.BooleanUtils; +import com.alibaba.excel.write.handler.CellWriteHandler; +import com.alibaba.excel.write.handler.context.CellWriteHandlerContext; +import com.alibaba.excel.write.metadata.holder.WriteSheetHolder; +import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; +import com.ycl.platform.domain.entity.CalculateRule; +import enumeration.ContractRule; +import enumeration.general.RuleDeductCategoryEnum; +import lombok.Data; +import org.apache.poi.ss.usermodel.*; +import org.apache.poi.ss.util.CellRangeAddressList; +import org.apache.poi.ss.util.CellReference; +import org.apache.poi.xssf.usermodel.XSSFDataValidation; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class CustomCellWriteHandler implements CellWriteHandler { + + /** + * 杩欎釜澶勭悊鍣ㄥ叾瀹炲彲浠ュ仛寰堝浜嬫儏 + * 浠栬兘鎷垮埌鏁翠釜 Excel 鐨� WorkHook + * 涔熻兘鎷垮埌褰撳墠鐨� sheet + * 涔熻兘鎷垮埌褰撳墠鐨� cell + * 鎵�浠ヨ兘鍋氱殑鑷畾涔夋搷浣滃緢涓板瘜 + */ + // static class CustomCellWriteHandler { + + @Override + public void afterCellDispose(CellWriteHandlerContext context) { + // 褰撳墠鐨� cell + Cell cell = context.getCell(); + // 杩欓噷鍙互瀵筩ell杩涜浠讳綍鎿嶄綔 + // 杩欓噷灏辫鑰冭檻 浣犺閽堝鍝竴鍒楄繘琛屼釜鎬у寲澶勭悊 涓�瀹氳璁板緱鍔犲垽鏂� 鍥犱负姣忎釜 cell 閮戒細鎵ц鍒拌繖閲� 鎵�浠ヨ璁板緱鍖哄垎 + if (BooleanUtils.isTrue(context.getHead()) && cell.getColumnIndex() == 1) { + // 1 琛ㄧず 鐪侀偅涓�鍒� 瑕佸鐪佸競鍖鸿繘琛岃仈鍔ㄤ笅鎷夊鐞� + ExcelAreaUtil.writeAreaInfo(context, 0); + } + } + // } + + public static class ExcelAreaUtil { + + @Data + static class AreaInfo { + + private String name; + + private List<String> areaList; + + + public AreaInfo(String name, List<String> areaList) { + this.name = name; + this.areaList = areaList; + } + } + + + /** + * @param context handler 鐨� 涓婁笅鏂� + * @param startIndex 鐪佺殑鍒楀彿 浠�0寮�濮嬬殑 + */ + public static void writeAreaInfo(CellWriteHandlerContext context, int startIndex) { + // 鑾峰彇鍒板綋鍓嶇殑 sheet 鍚庣画瑕佺粰鐪佸競鍖哄垪鍔犱笅鎷� + WriteSheetHolder writeSheetHolder = context.getWriteSheetHolder(); + Sheet sheet = writeSheetHolder.getSheet(); + + // 鐪佸競鍖烘尐鐫�鐨勫垪鍙� + int cIndex = startIndex + 1; + int aIndex = cIndex + 1; + + // 鍑嗗鐐规暟鎹� + List<AreaInfo> provinceList = new ArrayList<>(); + for (ContractRule contractRule : ContractRule.getParent()) { + provinceList.add(new AreaInfo(contractRule.getName(), ContractRule.getChildren(contractRule).stream().map(ContractRule::getName).toList())); + } + + // 鑾峰彇鍒板綋鍓嶇殑 excel 鍥犱负瑕佸垱寤洪殣钘忕殑 sheet 涔熷氨鏄渷甯傚尯鐨勫疄闄呭唴瀹归兘鏉ヨ嚜浜庨殣钘忕殑 sheet + Workbook workbook = context.getWriteSheetHolder().getParentWriteWorkbookHolder().getWorkbook(); + Sheet hideSheet = workbook.createSheet("area"); + workbook.setSheetHidden(workbook.getSheetIndex(hideSheet), true); + // 鍐欓殣钘� sheet 鐨勭渷甯傚尯淇℃伅 + int rowId = 0; + // 璁剧疆绗竴琛岋紝瀛樼渷鐨勪俊鎭� + Row provinceRow = hideSheet.createRow(rowId++); + provinceRow.createCell(0).setCellValue("鐪佸垪琛�"); + for (int i = 0; i < provinceList.size(); i++) { + Cell provinceCell = provinceRow.createCell(i + 1); + provinceCell.setCellValue(provinceList.get(i).getName()); + } + + for (AreaInfo pro : provinceList) { + String pName = pro.getName(); + List<String> cList = pro.getAreaList(); + Row cRow = hideSheet.createRow(rowId++); + cRow.createCell(0).setCellValue(pName); + for (int j = 0; j < cList.size(); j++) { + String cInfo = cList.get(j); + Cell cCell = cRow.createCell(j + 1); + cCell.setCellValue(cInfo); + } + + // 娣诲姞鍚嶇О绠$悊鍣� + String range = getRange(1, rowId, cList.size()); + Name name = workbook.createName(); + // key涓嶅彲閲嶅 + name.setNameName(pName); + String formula = "area!" + range; + name.setRefersToFormula(formula); + } + + // 缁欑渷娣诲姞涓嬫媺 + int lastRow = 100; + setDataValidation(sheet, 1, lastRow, startIndex, startIndex); + + // 缁欏競 鍖� 娣诲姞涓嬫媺 + // 璁剧疆绗簩鍒楀拰绗笁鍒楃殑鏈夋晥鎬� + for (int i = 2; i < lastRow; i++) { + setDataValidation(CellReference.convertNumToColString(startIndex), sheet, i - 1, i - 1, cIndex, cIndex); + setDataValidation(CellReference.convertNumToColString(cIndex), sheet, i - 1, i - 1, aIndex, aIndex); + } + } + + public static void setDataValidation(Sheet sheetPro, int firstRow, int lastRow, int firstCol, int lastCol) { + DataValidationHelper dvHelper = sheetPro.getDataValidationHelper(); + String formula = getFormula(1, 1, 1, 34); + // 鐪佽鍒� + DataValidationConstraint provConstraint = dvHelper.createFormulaListConstraint(formula); + // 鍥涗釜鍙傛暟鍒嗗埆鏄細璧峰琛屻�佺粓姝㈣銆佽捣濮嬪垪銆佺粓姝㈠垪 + CellRangeAddressList provRangeAddressList = new CellRangeAddressList(firstRow, lastRow, firstCol, lastCol); + DataValidation provinceDataValidation = dvHelper.createValidation(provConstraint, provRangeAddressList); + // 楠岃瘉 + provinceDataValidation.createErrorBox("error", "璇烽�夋嫨姝g‘鐨勭渷浠�"); + provinceDataValidation.setShowErrorBox(true); + provinceDataValidation.setSuppressDropDownArrow(true); + sheetPro.addValidationData(provinceDataValidation); + } + + public static void setDataValidation(String offset, Sheet sheet, int firstRow, int lastRow, int firstCol, int lastCol) { + DataValidationHelper dvHelper = sheet.getDataValidationHelper(); + String formulaString = String.format("INDIRECT($%s%s)", offset, firstRow + 1); + DataValidation dataValidation = getDataValidationByFormula(formulaString, dvHelper, firstRow, lastRow, firstCol, lastCol); + sheet.addValidationData(dataValidation); + } + + private static DataValidation getDataValidationByFormula(String formulaString, DataValidationHelper dvHelper, + int firstRow, int lastRow, int firstCol, int lastCol) { + // 鍔犺浇涓嬫媺鍒楄〃鍐呭 + // 涓句緥锛氳嫢formulaString = "INDIRECT($A$2)" 琛ㄧず瑙勫垯鏁版嵁浼氫粠鍚嶇О绠$悊鍣ㄤ腑鑾峰彇key涓庡崟鍏冩牸 A2 鍊肩浉鍚岀殑鏁版嵁锛� + // 濡傛灉A2鏄睙鑻忕渷锛岄偅涔堟澶勫氨鏄睙鑻忕渷涓嬬殑甯備俊鎭�� + DataValidationConstraint dvConstraint = dvHelper.createFormulaListConstraint(formulaString); + // 璁剧疆鏁版嵁鏈夋晥鎬у姞杞藉湪鍝釜鍗曞厓鏍间笂銆� + // 鍥涗釜鍙傛暟鍒嗗埆鏄細璧峰琛屻�佺粓姝㈣銆佽捣濮嬪垪銆佺粓姝㈠垪 + CellRangeAddressList regions = new CellRangeAddressList(firstRow, lastRow, firstCol, lastCol); + // 缁戝畾 鏁版嵁鏈夋晥鎬у璞� + XSSFDataValidation dataValidation = (XSSFDataValidation) dvHelper.createValidation(dvConstraint, regions); + dataValidation.setEmptyCellAllowed(true); + dataValidation.setSuppressDropDownArrow(true); + dataValidation.setShowErrorBox(true); + // 璁剧疆杈撳叆閿欒鎻愮ず淇℃伅 + dataValidation.createErrorBox("閫夋嫨閿欒鎻愮ず", "浣犺緭鍏ョ殑鍊兼湭鍦ㄥ閫夊垪琛ㄤ腑锛岃涓嬫媺閫夋嫨鍚堥�傜殑鍊硷紒"); + return dataValidation; + } + + private static String getFormula(int firstRow, int lastRow, int firstCol, int lastCol) { + String ss = String.format("$%s$%s:$%s$%s", CellReference.convertNumToColString(firstCol), firstRow, + CellReference.convertNumToColString(lastCol), lastRow); + return String.format("=%s!%s", "area", ss); + } + + private static String getRange(int offset, int rowId, int colCount) { + String columnLetter1 = CellReference.convertNumToColString(offset); + String columnLetter2 = CellReference.convertNumToColString(offset + colCount - 1); + return String.format("$%s$%s:$%s$%s", columnLetter1, rowId, columnLetter2, rowId); + } + + } + + + public static void main(String[] args) { + EasyExcel.write("test.xlsx", CalculateRule.class) + // 鑷�傚簲鍒楀 + .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) + // 涓嬫媺妗� + .registerWriteHandler(new CustomSheetWriteHandler(Arrays.asList("鎵f寚瀹氬垎鏁�", "鍒嗘暟涔樹互鏁伴噺", "闄や互鏁伴噺鍚庝箻浠ュ垎鏁�"))) + .registerWriteHandler(new CustomCellWriteHandler()) + // 鏍囨敞 + .registerWriteHandler(new CommentWriteHandler()) + .sheet("鍚堝悓瀵煎叆妯℃澘") + .doWrite(getExcelData()); + } + + private static List<CalculateRule> getExcelData() { + ArrayList<CalculateRule> list = new ArrayList<>(); + CalculateRule calculateRule1 = new CalculateRule(); + calculateRule1.setId(1); + calculateRule1.setRuleName("瑙嗛骞冲潎鍦ㄧ嚎鐜�"); + calculateRule1.setRuleCondition("鈮�98%"); + calculateRule1.setMax(98D); + calculateRule1.setDeductCategory(RuleDeductCategoryEnum.DEDUCT_POINTS); + calculateRule1.setCalcFraction(0.00); + list.add(calculateRule1); + CalculateRule calculateRule2 = new CalculateRule(); + calculateRule2.setRuleName("瑙嗛骞冲潎鍦ㄧ嚎鐜�"); + calculateRule2.setRuleCondition("95%鈮よ棰戝钩鍧囧湪绾跨巼锛�98%"); + calculateRule2.setMax(97D); + calculateRule2.setMin(95D); + calculateRule2.setDeductCategory(RuleDeductCategoryEnum.DEDUCT_POINTS); + calculateRule2.setCalcFraction(5.00); + list.add(calculateRule2); + CalculateRule calculateRule3 = new CalculateRule(); + calculateRule3.setRuleName("瑙嗛骞冲潎鍦ㄧ嚎鐜�"); + calculateRule3.setRuleCondition("90%鈮よ棰戝钩鍧囧湪绾跨巼锛�95%"); + calculateRule3.setMax(94D); + calculateRule3.setMin(90D); + calculateRule3.setDeductCategory(RuleDeductCategoryEnum.DEDUCT_POINTS); + calculateRule3.setCalcFraction(10.00); + list.add(calculateRule3); + CalculateRule calculateRule33 = new CalculateRule(); + calculateRule33.setRuleName("瑙嗛骞冲潎鍦ㄧ嚎鐜�"); + calculateRule33.setRuleCondition("锛�90%"); + calculateRule33.setMin(89D); + calculateRule33.setDeductCategory(RuleDeductCategoryEnum.DEDUCT_POINTS); + calculateRule33.setCalcFraction(10.00); + list.add(calculateRule33); + CalculateRule calculateRule4 = new CalculateRule(); + calculateRule4.setId(2); + calculateRule4.setRuleName("鍓嶇鎰熺煡婧愭不鐞嗗伐浣�"); + calculateRule4.setRuleCondition("鏃堕挓鍚屾锛堣秴杩嚶�3绉掍负涓嶅悎鏍硷級"); + calculateRule4.setDeductCategory(RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY); + calculateRule4.setCalcFraction(0.1); + list.add(calculateRule4); + CalculateRule calculateRule7 = new CalculateRule(); + calculateRule7.setRuleName("鍓嶇鎰熺煡婧愭不鐞嗗伐浣�"); + calculateRule7.setRuleCondition("OSD鏍囪瘑"); + list.add(calculateRule7); + CalculateRule calculateRule6 = new CalculateRule(); + calculateRule6.setRuleName("鍓嶇鎰熺煡婧愭不鐞嗗伐浣�"); + calculateRule6.setRuleCondition("涓�鏈轰竴妗�"); + list.add(calculateRule6); + CalculateRule calculateRule5 = new CalculateRule(); + calculateRule5.setId(3); + calculateRule5.setRuleName("鍚庡彴绯荤粺鐨勪繚闅�"); + calculateRule5.setRuleCondition("鍗曟鏁呴殰鏃堕暱鑻ヨ秴鍑�72灏忔椂涓嶈冻144灏忔椂鐨勶紝姣忚秴鍑�12灏忔椂锛堜笉瓒�12灏忔椂鎸�12灏忔椂璁★級"); + calculateRule5.setMax(144D); + calculateRule5.setMin(72D); + calculateRule5.setDeductCategory(RuleDeductCategoryEnum.MULTIPLY_POINTS_AFTER_DIVIDING_QUANTITY); + calculateRule5.setCalcFraction(2.00); + calculateRule5.setCalcUnit(12); + list.add(calculateRule5); + return list; + } + +} \ No newline at end of file diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java index f42af24..6f29f18 100644 --- a/ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java +++ b/ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java @@ -10,6 +10,7 @@ import java.util.List; import com.ycl.platform.domain.vo.WorkOrderYwConditionRecordVO; +import com.ycl.platform.domain.vo.YwPointJobVO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -26,4 +27,10 @@ IPage<WorkOrderVO> distributePage(IPage page, @Param("query") DistributeWorkOrderQuery query); + /** + * 澶勭悊涓殑宸ュ崟 + * + * @return + */ + List<YwPointJobVO> handlingWorkOrderList(); } diff --git a/ycl-server/src/main/java/com/ycl/platform/service/ICalculateRuleService.java b/ycl-server/src/main/java/com/ycl/platform/service/ICalculateRuleService.java index d0db182..22295fa 100644 --- a/ycl-server/src/main/java/com/ycl/platform/service/ICalculateRuleService.java +++ b/ycl-server/src/main/java/com/ycl/platform/service/ICalculateRuleService.java @@ -2,9 +2,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.ycl.platform.domain.entity.CalculateRule; -import com.ycl.platform.domain.entity.TContract; import com.ycl.platform.domain.vo.CalculateRuleCascaderVO; -import org.springframework.web.multipart.MultipartFile; import java.util.List; @@ -62,13 +60,6 @@ * @return 缁撴灉 */ public int deleteDefaultRuleById(Long id); - - /** - * 璇诲彇Excel鏁版嵁 - * - * @param file 鏂囦欢 - */ - List<CalculateRule> readExcel(MultipartFile file); /** * 鏍规嵁鍚堝悓id鏌ヨ瑙勫垯 diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateRuleServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateRuleServiceImpl.java index 0cadd77..34c406f 100644 --- a/ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateRuleServiceImpl.java +++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateRuleServiceImpl.java @@ -1,12 +1,8 @@ package com.ycl.platform.service.impl; -import com.alibaba.excel.EasyExcel; -import com.alibaba.excel.context.AnalysisContext; -import com.alibaba.excel.read.listener.ReadListener; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ycl.platform.domain.entity.CalculateRule; -import com.ycl.platform.domain.entity.TContract; import com.ycl.platform.domain.vo.CalculateRuleCascaderVO; import com.ycl.platform.mapper.CalculateRuleMapper; import com.ycl.platform.mapper.TContractMapper; @@ -14,11 +10,8 @@ import com.ycl.system.domain.TreeUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import org.springframework.web.multipart.MultipartFile; import utils.DateUtils; -import java.io.IOException; -import java.util.ArrayList; import java.util.List; /** @@ -102,44 +95,11 @@ return calculateRuleMapper.deleteDefaultRuleById(id); } - /** - * 鑾峰彇鍚堝悓Excel瑙勫垯 - * - * @param file 鍚堝悓Excel鏂囦欢 - * @return 瑙勫垯 - */ - - @Override - public List<CalculateRule> readExcel(MultipartFile file) { - List<CalculateRule> calculateRuleList = new ArrayList<>(); - try { - EasyExcel.read(file.getInputStream(), CalculateRule.class, new ReadListener<CalculateRule>() { - @Override - public void invoke(CalculateRule calculateRule, AnalysisContext analysisContext) { - calculateRule.setId(null); - calculateRuleList.add(calculateRule); - } - - @Override - public void doAfterAllAnalysed(AnalysisContext analysisContext) { - } - - }) - .head(CalculateRule.class) - .sheet() - .doRead(); - } catch (IOException e) { - throw new RuntimeException(e); - } - return calculateRuleList; - } - @Override public List<CalculateRule> getRuleListByContractId(Integer contractId) { - List<CalculateRule> list = new LambdaQueryChainWrapper<>(calculateRuleMapper) + return new LambdaQueryChainWrapper<>(calculateRuleMapper) .eq(CalculateRule::getContractId, contractId) .list(); - return TreeUtils.build(list, 0L); } @Override diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/ContractScoreServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/ContractScoreServiceImpl.java index 9b9ebef..ec9831f 100644 --- a/ycl-server/src/main/java/com/ycl/platform/service/impl/ContractScoreServiceImpl.java +++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/ContractScoreServiceImpl.java @@ -10,10 +10,8 @@ import com.ycl.platform.mapper.YwUnitMapper; import com.ycl.platform.service.IContractScoreService; import com.ycl.system.entity.SysUser; -import com.ycl.utils.DateUtils; import com.ycl.utils.SecurityUtils; import enumeration.general.AuditingStatus; -import org.apache.commons.lang3.ObjectUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -66,7 +64,7 @@ contractScore.setRuleIds(Arrays.stream(contractScore.getRuleIdsArray()).map(String::valueOf).collect(Collectors.joining(","))); contractScore.setRuleIdsArray(Arrays.stream(contractScore.getRuleIds().split(",")).map(Long::parseLong).toArray(Long[]::new)); List<CalculateRule> list = new LambdaQueryChainWrapper<>(calculateRuleMapper).in(CalculateRule::getId, contractScore.getRuleIdsArray()).list(); - contractScore.setRuleName(String.join(" / ", new String[]{list.get(0).getRuleName(), list.get(1).getRuleDesc(), list.get(2).getRuleCondition()})); + contractScore.setRuleName(String.join(" / ", new String[]{list.get(0).getRuleName(), list.get(2).getRuleCondition()})); return super.save(contractScore); } diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/TContractServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/TContractServiceImpl.java index 855a8a2..346b141 100644 --- a/ycl-server/src/main/java/com/ycl/platform/service/impl/TContractServiceImpl.java +++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/TContractServiceImpl.java @@ -1,13 +1,14 @@ package com.ycl.platform.service.impl; import com.alibaba.excel.EasyExcel; -import com.alibaba.excel.write.merge.LoopMergeStrategy; +import com.alibaba.excel.read.listener.PageReadListener; import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ycl.handler.CommentWriteHandler; +import com.ycl.handler.CustomCellWriteHandler; import com.ycl.handler.CustomSheetWriteHandler; import com.ycl.platform.domain.entity.CalculateMoneyRule; import com.ycl.platform.domain.entity.CalculateRule; @@ -26,6 +27,7 @@ import enumeration.general.RuleDeductCategoryEnum; import jakarta.servlet.http.HttpServletResponse; import lombok.AllArgsConstructor; +import lombok.SneakyThrows; import org.apache.commons.lang3.ObjectUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -35,6 +37,7 @@ import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.util.ArrayList; +import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.stream.Collectors; @@ -51,33 +54,24 @@ private final ICalculateRuleService calculateRuleService; private final CalculateMoneyRuleServiceImpl calculateMoneyRuleService; - private final YwUnitServiceImpl ywUnitService; @Override public void importTemplate(HttpServletResponse response) { try { - List<CalculateRule> list = getExcelData(); - ArrayList<String> arrayList = new ArrayList<>(); - arrayList.add("鎵f寚瀹氬垎鏁�"); - arrayList.add("鍒嗘暟涔樹互鏁伴噺"); - arrayList.add("闄や互鏁伴噺鍚庝箻浠ュ垎鏁�"); response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); response.setCharacterEncoding("utf-8"); String fileName = URLEncoder.encode("瀵煎叆鍚堝悓妯℃澘", StandardCharsets.UTF_8).replace("\\+", "%20"); response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); - // 绗竴鍒椼�佺浜屽垪涓婁笅鍚堝苟3琛� - LoopMergeStrategy loopMergeStrategy1 = new LoopMergeStrategy(3, 0); - LoopMergeStrategy loopMergeStrategy2 = new LoopMergeStrategy(3, 1); EasyExcel.write(response.getOutputStream(), CalculateRule.class) - .registerWriteHandler(loopMergeStrategy1) - .registerWriteHandler(loopMergeStrategy2) // 鑷�傚簲鍒楀 .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) // 涓嬫媺妗� - .registerWriteHandler(new CustomSheetWriteHandler(arrayList)) + .registerWriteHandler(new CustomSheetWriteHandler(Arrays.asList("鎵f寚瀹氬垎鏁�", "鍒嗘暟涔樹互鏁伴噺", "闄や互鏁伴噺鍚庝箻浠ュ垎鏁�"))) + .registerWriteHandler(new CustomCellWriteHandler()) // 鏍囨敞 .registerWriteHandler(new CommentWriteHandler()) - .sheet("鍚堝悓瀵煎叆妯℃澘").doWrite(list); + .sheet("鍚堝悓瀵煎叆妯℃澘") + .doWrite(getExcelData()); } catch (Exception e) { throw new RuntimeException(e); } @@ -86,46 +80,61 @@ private List<CalculateRule> getExcelData() { ArrayList<CalculateRule> list = new ArrayList<>(); CalculateRule calculateRule1 = new CalculateRule(); - calculateRule1.setId(1L); + calculateRule1.setId(1); calculateRule1.setRuleName("瑙嗛骞冲潎鍦ㄧ嚎鐜�"); - calculateRule1.setRuleDesc("锛�1锛夎棰戝湪绾跨巼=瑙嗛鍦ㄧ嚎鏁伴噺梅鍓嶇鏈嶅姟閰嶇疆鏁帮紙搴旀墸闄や笉鍙姉鍔涙垨涓庝腑鏍囦汉鏈嶅姟鏃犲叧閫犳垚鐨勬帀绾块櫎澶栥�傦級"); calculateRule1.setRuleCondition("鈮�98%"); + calculateRule1.setMax(98D); calculateRule1.setDeductCategory(RuleDeductCategoryEnum.DEDUCT_POINTS); calculateRule1.setCalcFraction(0.00); list.add(calculateRule1); CalculateRule calculateRule2 = new CalculateRule(); - calculateRule2.setRuleDesc("锛�2锛夎棰戝钩鍧囧湪绾跨巼锛氬綋鏈堟瘡鏃ヨ棰戝湪绾跨巼鐨勫钩鍧囧�笺��"); + calculateRule2.setRuleName("瑙嗛骞冲潎鍦ㄧ嚎鐜�"); calculateRule2.setRuleCondition("95%鈮よ棰戝钩鍧囧湪绾跨巼锛�98%"); + calculateRule2.setMax(97D); + calculateRule2.setMin(95D); calculateRule2.setDeductCategory(RuleDeductCategoryEnum.DEDUCT_POINTS); calculateRule2.setCalcFraction(5.00); list.add(calculateRule2); CalculateRule calculateRule3 = new CalculateRule(); - calculateRule3.setRuleDesc("锛�3锛夎棰戝湪绾跨巼淇濈暀鏁存暟骞朵笖鍚戜笅鍙栨暣銆�"); + calculateRule3.setRuleName("瑙嗛骞冲潎鍦ㄧ嚎鐜�"); calculateRule3.setRuleCondition("90%鈮よ棰戝钩鍧囧湪绾跨巼锛�95%"); + calculateRule3.setMax(94D); + calculateRule3.setMin(90D); calculateRule3.setDeductCategory(RuleDeductCategoryEnum.DEDUCT_POINTS); calculateRule3.setCalcFraction(10.00); list.add(calculateRule3); + CalculateRule calculateRule33 = new CalculateRule(); + calculateRule33.setRuleName("瑙嗛骞冲潎鍦ㄧ嚎鐜�"); + calculateRule33.setRuleCondition("锛�90%"); + calculateRule33.setMin(89D); + calculateRule33.setDeductCategory(RuleDeductCategoryEnum.DEDUCT_POINTS); + calculateRule33.setCalcFraction(10.00); + list.add(calculateRule33); CalculateRule calculateRule4 = new CalculateRule(); - calculateRule4.setId(2L); + calculateRule4.setId(2); calculateRule4.setRuleName("鍓嶇鎰熺煡婧愭不鐞嗗伐浣�"); - calculateRule4.setRuleDesc("鏃堕挓鍚屾锛堣秴杩嚶�3绉掍负涓嶅悎鏍硷級"); - calculateRule4.setRuleCondition("瑙嗛鐩戞帶鎽勫儚鏈烘椂閽熶笉鍚屾锛�24灏忔椂鍐呮湭淇鐨�"); + calculateRule4.setRuleCondition("鏃堕挓鍚屾锛堣秴杩嚶�3绉掍负涓嶅悎鏍硷級"); calculateRule4.setDeductCategory(RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY); calculateRule4.setCalcFraction(0.1); list.add(calculateRule4); CalculateRule calculateRule7 = new CalculateRule(); - calculateRule7.setRuleDesc("鈥︹�︹�︹��"); - calculateRule7.setRuleCondition("鈥︹�︹�︹��"); + calculateRule7.setRuleName("鍓嶇鎰熺煡婧愭不鐞嗗伐浣�"); + calculateRule7.setRuleCondition("OSD鏍囪瘑"); + calculateRule7.setDeductCategory(RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY); + calculateRule7.setCalcFraction(0.1); list.add(calculateRule7); CalculateRule calculateRule6 = new CalculateRule(); - calculateRule6.setRuleDesc("鈥︹�︹�︹��"); - calculateRule6.setRuleCondition("鈥︹�︹�︹��"); + calculateRule6.setRuleName("鍓嶇鎰熺煡婧愭不鐞嗗伐浣�"); + calculateRule6.setRuleCondition("涓�鏈轰竴妗�"); + calculateRule6.setDeductCategory(RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY); + calculateRule6.setCalcFraction(0.1); list.add(calculateRule6); CalculateRule calculateRule5 = new CalculateRule(); - calculateRule5.setId(3L); + calculateRule5.setId(3); calculateRule5.setRuleName("鍚庡彴绯荤粺鐨勪繚闅�"); - calculateRule5.setRuleDesc("鍦ㄤ釜鍒澶囨晠闅滀絾涓嶅奖鍝嶈鍔熻兘妯″潡鏁翠綋搴旂敤鎯呭喌涓嬶紝椤诲湪72灏忔椂浠ュ唴鎺掗櫎鏁呴殰銆�"); - calculateRule5.setRuleCondition("鍗曟鏁呴殰鏃堕暱鑻ヨ秴鍑�144灏忔椂浠ュ悗锛屾瘡瓒呭嚭12灏忔椂锛堜笉瓒�12灏忔椂鎸�12灏忔椂璁★級"); + calculateRule5.setRuleCondition("鍗曟鏁呴殰鏃堕暱鑻ヨ秴鍑�72灏忔椂涓嶈冻144灏忔椂鐨勶紝姣忚秴鍑�12灏忔椂锛堜笉瓒�12灏忔椂鎸�12灏忔椂璁★級"); + calculateRule5.setMax(144D); + calculateRule5.setMin(72D); calculateRule5.setDeductCategory(RuleDeductCategoryEnum.MULTIPLY_POINTS_AFTER_DIVIDING_QUANTITY); calculateRule5.setCalcFraction(2.00); calculateRule5.setCalcUnit(12); @@ -135,17 +144,18 @@ @Override @Transactional + @SneakyThrows public AjaxResult importData(MultipartFile file, TContract tContract) { // 淇濆瓨鍚堝悓 tContract.setCreateTime(DateUtils.getNowDate()); save(tContract); - List<CalculateRule> list = calculateRuleService.readExcel(file); + + // 鑾峰彇鍚堝悓Excel瑙勫垯 + List<CalculateRule> list = new ArrayList<>(); + EasyExcel.read(file.getInputStream(), CalculateRule.class, new PageReadListener<CalculateRule>(list::addAll)).sheet().doRead(); // 閬嶅巻鐖跺瓙鍏崇郴 List<CalculateRule> calculateRulesToSave = new ArrayList<>(); - CalculateRule fu1 = new CalculateRule(); - CalculateRule fu2 = new CalculateRule(); - boolean fuNew = true; for (CalculateRule calculateRule : list) { // 鍒ゆ柇鏁版嵁瀹屾暣鎬� if (ObjectUtils.isEmpty(calculateRule.getDeductCategory())) { @@ -160,35 +170,13 @@ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return AjaxResult.warn("璇峰~鍐�" + calculateRule.getRuleName() + calculateRule.getRuleCondition() + "鎵e垎鏁板��"); } - // 淇濆瓨鐖惰鍒欒幏鍙栫埗id + // 淇濆瓨瑙勫垯 if (StringUtils.isNotBlank(calculateRule.getRuleName())) { - CalculateRule one = new CalculateRule(); - one.setParentId(0L); - one.setContractId(tContract.getId().intValue()); - one.setRuleName(calculateRule.getRuleName()); - one.setCreateTime(DateUtils.getNowDate()); - one.setDeleted(0); - calculateRuleService.save(one); - fu1 = one; - fuNew = true; + calculateRule.setContractId(tContract.getId().intValue()); + calculateRule.setCreateTime(DateUtils.getNowDate()); + calculateRule.setUpdateTime(DateUtils.getNowDate()); + calculateRulesToSave.add(calculateRule); } - // 淇濆瓨绗簩灞傜埗瑙勫垯鑾峰彇绗簩灞傜埗id - if (StringUtils.isNotBlank(calculateRule.getRuleDesc())) { - CalculateRule two = new CalculateRule(); - two.setContractId(tContract.getId().intValue()); - two.setParentId(fu1.getId()); - two.setRuleDesc(calculateRule.getRuleDesc()); - two.setCreateTime(DateUtils.getNowDate()); - two.setDeleted(0); - calculateRuleService.save(two); - fu2 = two; - fuNew = false; - } - calculateRule.setContractId(tContract.getId().intValue()); - calculateRule.setCreateTime(DateUtils.getNowDate()); - calculateRule.setDeleted(0); - calculateRule.setParentId(fuNew ? fu1.getId() : fu2.getId()); - calculateRulesToSave.add(calculateRule); } // 鎵归噺淇濆瓨瑙勫垯 calculateRuleService.saveBatch(calculateRulesToSave); diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java index 7e75841..8485cc6 100644 --- a/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java +++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java @@ -24,6 +24,7 @@ import com.ycl.utils.SecurityUtils; import com.ycl.utils.redis.RedisCache; import com.ycl.utils.uuid.IdUtils; +import constant.PointConfigConstants; import enumeration.general.*; import lombok.RequiredArgsConstructor; import org.apache.commons.lang3.ArrayUtils; @@ -63,6 +64,7 @@ private final WorkOrderDistributeRecordMapper workOrderDistributeRecordMapper; private final String DISTRIBUTE_LOCK_KEY = "distributeLock"; + private final static String IMPORTANT = "important"; @Autowired private RedisCache redisCache; @@ -257,8 +259,12 @@ @Override public Result distributePage(DistributeWorkOrderQuery query) { IPage<WorkOrderVO> page = PageUtil.getPage(query, WorkOrderVO.class); - // todo 鍏抽敭璇嶆悳绱� baseMapper.distributePage(page, query); + page.getRecords().stream().forEach(workOrder -> { + if (StringUtils.hasText(workOrder.getPointTag()) && workOrder.getPointTag().contains(IMPORTANT)) { + workOrder.setImportant(Boolean.TRUE); + } + }); return Result.ok().data(page).total(page.getTotal()); } diff --git a/ycl-server/src/main/java/com/ycl/task/WorkOrderTask.java b/ycl-server/src/main/java/com/ycl/task/WorkOrderTask.java new file mode 100644 index 0000000..e40a3a3 --- /dev/null +++ b/ycl-server/src/main/java/com/ycl/task/WorkOrderTask.java @@ -0,0 +1,77 @@ +package com.ycl.task; + +import com.ycl.platform.domain.entity.WorkOrder; +import com.ycl.platform.domain.vo.YwPointJobVO; +import com.ycl.platform.mapper.WorkOrderMapper; +import com.ycl.system.domain.SysConfig; +import com.ycl.system.mapper.SysConfigMapper; +import com.ycl.utils.DateUtils; +import constant.PointConfigConstants; +import enumeration.OvertimeStatus; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; +import org.springframework.util.StringUtils; + +import java.util.Date; +import java.util.List; + +/** + * @author锛歺p + * @date锛�2024/7/25 13:36 + */ +@Slf4j +@RequiredArgsConstructor +@Component("workOrderTask") +public class WorkOrderTask { + + private final WorkOrderMapper workOrderMapper; + private final SysConfigMapper configMapper; + + private final static String IMPORTANT = "important"; + private final static String NORMAL = "normal"; + + /** + * 澶勭悊宸ュ崟鏈夋晥鏃堕棿锛岃秴鏃剁姸鎬� + * + */ + public void handleTime() { + List<YwPointJobVO> handlingWorkOrderList = workOrderMapper.handlingWorkOrderList(); + SysConfig config = new SysConfig(); + config.setConfigKey(PointConfigConstants.IMPORTANT); + Integer importantTime = Integer.valueOf(configMapper.selectConfig(config).getConfigValue()); + config.setConfigKey(PointConfigConstants.NORMAL); + Integer normalTime = Integer.valueOf(configMapper.selectConfig(config).getConfigValue()); + config.setConfigKey(PointConfigConstants.NORMAL_ALARM); + Integer normalAlarmTime = Integer.valueOf(configMapper.selectConfig(config).getConfigValue()); + config.setConfigKey(PointConfigConstants.IMPORTANT_ALARM); + Integer importantAlarmTime = Integer.valueOf(configMapper.selectConfig(config).getConfigValue()); + + Date now = new Date(); + handlingWorkOrderList.stream().forEach(workOrder -> { + int diffHours = DateUtils.differentHoursByMillisecond(now, workOrder.getCreateTime()); + if (StringUtils.hasText(workOrder.getPointTagString()) && workOrder.getPointTagString().contains(IMPORTANT)) { + this.handleOverTime(workOrder.getId(), diffHours, importantTime, importantAlarmTime); + } else { + this.handleOverTime(workOrder.getId(), diffHours, normalTime, normalAlarmTime); + } + }); + log.info("宸ュ崟瓒呮椂鐘舵�佷换鍔℃墽琛屽畬鎴�"); + } + + private void handleOverTime(Integer id, Integer diffHours, Integer time, Integer alarmTime) { + if (diffHours <= time) { + if (time - diffHours < alarmTime) { + WorkOrder wo = new WorkOrder(); + wo.setId(id); + wo.setOvertime(OvertimeStatus.ALARM.getValue()); + workOrderMapper.updateById(wo); + } + } else { + WorkOrder wo = new WorkOrder(); + wo.setId(id); + wo.setOvertime(OvertimeStatus.YES.getValue()); + workOrderMapper.updateById(wo); + } + } +} diff --git a/ycl-server/src/main/java/com/ycl/utils/DateUtils.java b/ycl-server/src/main/java/com/ycl/utils/DateUtils.java index 4ab7585..0be7f5f 100644 --- a/ycl-server/src/main/java/com/ycl/utils/DateUtils.java +++ b/ycl-server/src/main/java/com/ycl/utils/DateUtils.java @@ -145,6 +145,14 @@ } /** + * 璁$畻鐩稿樊灏忔椂 + */ + public static int differentHoursByMillisecond(Date date1, Date date2) + { + return Math.abs((int) ((date2.getTime() - date1.getTime()) / (1000 * 3600))); + } + + /** * 璁$畻鏃堕棿宸� * * @param endDate 鏈�鍚庢椂闂� diff --git a/ycl-server/src/main/java/com/ycl/web/HKClient.java b/ycl-server/src/main/java/com/ycl/web/HKClient.java index 58c13fe..c1b9a2d 100644 --- a/ycl-server/src/main/java/com/ycl/web/HKClient.java +++ b/ycl-server/src/main/java/com/ycl/web/HKClient.java @@ -7,6 +7,7 @@ import org.springframework.stereotype.Component; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; /** * @author gonghl @@ -29,7 +30,7 @@ * @return 鎸夊尯鍩熺粺璁$粡绾害寮傚父璁惧鎴栧崱鍙� */ @PostMapping("/dqd/service/rs/v1/device/coordinateExpInfo/query") - JSONObject coordinateByArea(CoordinateByAreaParam param); + JSONObject coordinateByArea(@RequestBody CoordinateByAreaParam param); /** * 鎸夊尯鍩熺粺璁$紪鐮佸紓甯歌澶囨垨鍗″彛 @@ -43,7 +44,7 @@ * @return 鎸夊尯鍩熺粺璁$紪鐮佸紓甯歌澶囨垨鍗″彛 */ @PostMapping("/dqd/service/rs/v1/device/gbCodeExpInfo/query") - JSONObject codeByArea(CodeByAreaParam param); + JSONObject codeByArea(@RequestBody CodeByAreaParam param); /** * 鎸夊尯鍩熺粺璁′汉鑴告暟鎹洃娴嬫寚鏍囬」 @@ -64,7 +65,7 @@ * @return 鎸夊尯鍩熺粺璁′汉鑴告暟鎹洃娴嬫寚鏍囬」 */ @PostMapping("/dqd/service/rs/v2/data/faceDetect/query") - JSONObject faceDetectByArea(FaceDetectParam param); + JSONObject faceDetectByArea(@RequestBody FaceDetectParam param); /** * 鎸夊尯鍩熺粺璁¤溅杈嗘暟鎹洃娴嬫寚鏍囬」 @@ -86,7 +87,7 @@ * @return 鎸夊尯鍩熺粺璁¤溅杈嗘暟鎹洃娴嬫寚鏍囬」 */ @PostMapping("/dqd/service/rs/v2/data/passDetect/query") - JSONObject carDetectByArea(CarDetectParam param); + JSONObject carDetectByArea(@RequestBody CarDetectParam param); /** * 閲囬泦璁惧灞炴�х洃娴嬬粨鏋� @@ -96,7 +97,7 @@ * @return 閲囬泦璁惧灞炴�х洃娴嬬粨鏋� */ @PostMapping("/dqd/service/rs/v1/device/cameraExpDetailInfo/query") - JSONObject monitorDetail(MonitoringDetailParam param); + JSONObject monitorDetail(@RequestBody MonitoringDetailParam param); /** * 鍗″彛灞炴�х洃娴嬬粨鏋� @@ -106,7 +107,7 @@ * @return 鍗″彛灞炴�х洃娴嬬粨鏋� */ @PostMapping("/dqd/service/rs/v1/device/crossExpDetailInfo/query") - JSONObject crossDetail(CrossDetailParam param); + JSONObject crossDetail(@RequestBody CrossDetailParam param); /** * 鎶撴媿鏁版嵁閲忕洃娴嬬粨鏋� @@ -127,7 +128,7 @@ * @return 鎶撴媿鏁版嵁閲忕洃娴嬬粨鏋� */ @PostMapping("/dqd/service/rs/v1/data/snapCountDetail/query") - JSONObject SnapshotDataMonitor(SnapshotDataMonitorParam param); + JSONObject SnapshotDataMonitor(@RequestBody SnapshotDataMonitorParam param); /** * 鎶撴媿鏁版嵁鏃跺欢鐩戞祴缁撴灉 @@ -143,7 +144,7 @@ * @return 鎶撴媿鏁版嵁鏃跺欢鐩戞祴缁撴灉 */ @PostMapping("/dqd/service/rs/v1/data/snapAgingDetail/query") - JSONObject SnapshotDelayMonitor(SnapshotDelayMonitorParam param); + JSONObject SnapshotDelayMonitor(@RequestBody SnapshotDelayMonitorParam param); /** * 鍥剧墖璁块棶鐩戞祴缁撴灉 @@ -154,7 +155,7 @@ * @return 鍥剧墖璁块棶鐩戞祴缁撴灉 */ @PostMapping("/dqd/service/rs/v1/data/picAccessDetail/query") - JSONObject PicAccessMonitor(PicAccessParam param); + JSONObject PicAccessMonitor(@RequestBody PicAccessParam param); /** * 灞炴�ц瘑鍒噯纭洃娴嬬粨鏋� @@ -164,7 +165,7 @@ * @return 灞炴�ц瘑鍒噯纭洃娴嬬粨鏋� */ @PostMapping("/dqd/service/rs/v1/data/attributeRecognition/query") - JSONObject AttrRecognitionMonitor(AttrRecognitionParam param); + JSONObject AttrRecognitionMonitor(@RequestBody AttrRecognitionParam param); /** * 鏁版嵁瀹屾暣鎬х洃娴嬬粨鏋� @@ -178,7 +179,7 @@ * @return 鏁版嵁瀹屾暣鎬х洃娴嬬粨鏋� */ @PostMapping("/dqd/service/rs/v1/data/attributeIntegrity/query") - JSONObject DataIntegrityMonitoring(DataIntegrityMonitoringParam param); + JSONObject DataIntegrityMonitoring(@RequestBody DataIntegrityMonitoringParam param); /** * 浜鸿劯璁惧鍏ㄦ鎸囨爣鐩戞祴缁撴灉 @@ -189,7 +190,7 @@ * @return 浜鸿劯璁惧鍏ㄦ鎸囨爣鐩戞祴缁撴灉 */ @PostMapping("/dqd/service/rs/v2/data/faceFullAmount/query") - JSONObject FaceDeviceInspection(FaceDeviceInspectionParam param); + JSONObject FaceDeviceInspection(@RequestBody FaceDeviceInspectionParam param); /** * 浜鸿劯璁惧鎶芥鎸囨爣鐩戞祴缁撴灉 @@ -200,7 +201,7 @@ * @return 浜鸿劯璁惧鎶芥鎸囨爣鐩戞祴缁撴灉 */ @PostMapping("/dqd/service/rs/v2/data/faceSampleAmount/query") - JSONObject FaceDeviceSampling(FaceDeviceSamplingParam param); + JSONObject FaceDeviceSampling(@RequestBody FaceDeviceSamplingParam param); /** * 杞﹁締璁惧鍏ㄦ鎸囨爣鐩戞祴缁撴灉 @@ -211,7 +212,7 @@ * @return 杞﹁締璁惧鍏ㄦ鎸囨爣鐩戞祴缁撴灉 */ @PostMapping("/dqd/service/rs/v2/data/vehFullAmount/query") - JSONObject VehicleDeviceInspection(VehicleDeviceInspectionParam param); + JSONObject VehicleDeviceInspection(@RequestBody VehicleDeviceInspectionParam param); /** * 杞﹁締璁惧鎶芥鎸囨爣鐩戞祴缁撴灉 @@ -222,7 +223,7 @@ * @return 杞﹁締璁惧鎶芥鎸囨爣鐩戞祴缁撴灉 */ @PostMapping("/dqd/service/rs/v2/data/vehSampleAmount/query") - JSONObject VehicleDeviceSampling(VehicleDeviceSamplingParam param); + JSONObject VehicleDeviceSampling(@RequestBody VehicleDeviceSamplingParam param); /** * 鍏虫敞鐩戞祴璧勬簮鏌ヨ @@ -231,7 +232,7 @@ * @return 鍏虫敞鐩戞祴璧勬簮鏌ヨ */ @PostMapping("/dqd/service/rs/v1/alarm/monitorResource/query") - JSONObject monitorResource(MonitorResourceParam param); + JSONObject monitorResource(@RequestBody MonitorResourceParam param); /** * 鎸囨爣閰嶇疆淇℃伅鏌ヨ @@ -247,5 +248,5 @@ * @return 缁勭粐鏍戞煡璇� */ @PostMapping("/dqd/service/rs/v1/orgInfo/standard/query") - JSONObject OrganizationTree(OrganizationTreeParam param); + JSONObject OrganizationTree(@RequestBody OrganizationTreeParam param); } diff --git a/ycl-server/src/main/java/com/ycl/web/UYClient.java b/ycl-server/src/main/java/com/ycl/web/UYClient.java index 8757669..55c0f27 100644 --- a/ycl-server/src/main/java/com/ycl/web/UYClient.java +++ b/ycl-server/src/main/java/com/ycl/web/UYClient.java @@ -9,6 +9,8 @@ import org.springframework.stereotype.Component; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestParam; /** * @author gonghl @@ -26,7 +28,7 @@ * @return 鏌ヨ鎽勫儚鏈烘竻鍗曢泦鍚� */ @GetMapping("/VIID/Cameras") - JSONObject cameraList(CameraParam cameraParam); + JSONObject cameraList(@RequestParam CameraParam cameraParam); /** * 鐐逛綅鍦ㄧ嚎 @@ -35,7 +37,7 @@ * @return 鏌ヨ鍦ㄧ嚎缁熻鍒楄〃 */ @GetMapping("/openapi/v1/report/online/list") - JSONObject onlineList(OnlineParam onlineParam); + JSONObject onlineList(@RequestParam OnlineParam onlineParam); /** * 褰曞儚鍙敤 @@ -44,7 +46,7 @@ * @return 鏌ヨ婊¤冻鏉′欢鐨勫綍鍍忔眹鎬讳俊鎭� */ @PostMapping("/report/recordMetaDSum/list") - JSONObject recordMetaDSumList(RecordMetaDSumParam recordMetaDSumParam); + JSONObject recordMetaDSumList(@RequestBody RecordMetaDSumParam recordMetaDSumParam); @GetMapping("/api/v1/app/osdMonitor/list") JSONObject osdMonitorList(); diff --git a/ycl-server/src/main/resources/application-dev.yml b/ycl-server/src/main/resources/application-dev.yml index ff8109b..2ce8bcc 100644 --- a/ycl-server/src/main/resources/application-dev.yml +++ b/ycl-server/src/main/resources/application-dev.yml @@ -7,7 +7,7 @@ # 鐗堟潈骞翠唤 copyrightYear: 2024 # 鏂囦欢璺緞 绀轰緥锛� Windows閰嶇疆D:/zgyw/uploadPath锛孡inux閰嶇疆 /home/zgyw/uploadPath锛� - profile: D:/zgyw/uploadPath + profile: E:/ycl/zgyw/uploadPath # 鑾峰彇ip鍦板潃寮�鍏� addressEnabled: false # 楠岃瘉鐮佺被鍨� math 鏁板瓧璁$畻 char 瀛楃楠岃瘉 @@ -17,7 +17,7 @@ # 寮�鍙戠幆澧冮厤缃� server: # 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080 - port: 8080 + port: 8085 servlet: # 搴旂敤鐨勮闂矾寰� context-path: / @@ -36,7 +36,7 @@ spring: # 鏁版嵁婧愰厤缃� datasource: - url: jdbc:mysql://101.35.247.188:3306/zgyw?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false + url: jdbc:mysql://101.35.247.188:3306/zgyw?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8 username: root password: ycl@202466 type: com.alibaba.druid.pool.DruidDataSource @@ -126,3 +126,9 @@ username: admin password: ycl@202466 + +# 鎷夊彇鏁版嵁璇锋眰閰嶇疆 +request: + retry: 4 # 鏈�澶ч噸璇曟鏁� + youYunDomain: 123.123.123.5 # 浼樹簯鍦板潃 + haiKangDomain: 123.123.123.1 # 娴峰悍鍦板潃 diff --git a/ycl-server/src/main/resources/application-prod.yml b/ycl-server/src/main/resources/application-prod.yml index b28e93a..d1c5a60 100644 --- a/ycl-server/src/main/resources/application-prod.yml +++ b/ycl-server/src/main/resources/application-prod.yml @@ -36,7 +36,7 @@ spring: # 鏁版嵁婧愰厤缃� datasource: - url: jdbc:mysql://101.35.247.188:3306/zgyw?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false + url: jdbc:mysql://101.35.247.188:3306/zgyw?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8 username: root password: ycl@202466 type: com.alibaba.druid.pool.DruidDataSource @@ -120,3 +120,8 @@ pathMapping: /prod-api +# 鎷夊彇鏁版嵁璇锋眰閰嶇疆 +request: + retry: 4 # 鏈�澶ч噸璇曟鏁� + youYunDomain: 123.123.123.5 # 浼樹簯鍦板潃 + haiKangDomain: 123.123.123.1 # 娴峰悍鍦板潃 diff --git a/ycl-server/src/main/resources/application.yml b/ycl-server/src/main/resources/application.yml index a3822bf..7473044 100644 --- a/ycl-server/src/main/resources/application.yml +++ b/ycl-server/src/main/resources/application.yml @@ -108,8 +108,3 @@ # 鍖归厤閾炬帴 urlPatterns: /system/*,/monitor/*,/tool/* -# 鎷夊彇鏁版嵁璇锋眰閰嶇疆 -request: - retry: 4 # 鏈�澶ч噸璇曟鏁� - youYunDomain: 123.123.123.5 # 浼樹簯鍦板潃 - haiKangDomain: 123.123.123.1 # 娴峰悍鍦板潃 diff --git a/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml index a9387f9..1fe79c6 100644 --- a/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml +++ b/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml @@ -44,22 +44,41 @@ <select id="distributePage" resultType="com.ycl.platform.domain.vo.WorkOrderVO"> SELECT - wo.*, - u.unit_name, - p.yw_person_name + wo.*, + u.unit_name, + p.yw_person_name, + yp.point_tag, + odr.create_time as distributeTime, + su.nick_name as realName FROM - t_work_order wo - LEFT JOIN t_yw_unit u ON wo.unit_id = u.id and u.deleted = 0 - LEFT JOIN t_yw_people p ON wo.yw_people_id = p.id and p.deleted = 0 - where - wo.deleted = 0 - <if test="query.unitId != null"> - AND wo.unit_id = #{query.unitId} - </if> - <if test="query.status != null and query.status != ''"> - AND wo.status = #{query.status} - </if> + t_work_order wo + LEFT JOIN t_yw_unit u ON wo.unit_id = u.id and u.deleted = 0 + LEFT JOIN t_yw_people p ON wo.yw_people_id = p.id and p.deleted = 0 + INNER JOIN t_yw_point yp ON yp.id = wo.point_id AND yp.deleted = 0 + LEFT JOIN t_work_order_distribute_record odr ON odr.work_order_id = wo.id AND odr.deleted = 0 + LEFT JOIN sys_user su ON su.user_id = odr.user_id + WHERE + wo.deleted = 0 + <if test="query.unitId != null"> + AND wo.unit_id = #{query.unitId} + </if> + <if test="query.status != null and query.status != ''"> + AND wo.status = #{query.status} + </if> ORDER BY wo.create_time DESC </select> + <select id="handlingWorkOrderList" resultType="com.ycl.platform.domain.vo.YwPointJobVO"> + SELECT + wo.id, + wod.create_time, + yp.point_tag + FROM + t_work_order wo + INNER JOIN t_yw_point yp ON yp.id = wo.point_id AND yp.deleted = 0 + INNER JOIN t_work_order_distribute_record wod ON wod.work_order_id = wo.id + WHERE + wo.status = 'DISTRIBUTED' AND wo.deleted = 0 + </select> + </mapper> -- Gitblit v1.8.0