Your Name лет назад: 3
Родитель
Сommit
8230798b49

+ 94 - 1
service-job/src/main/java/com/java110/job/adapt/Repair/MachineDistributeLeaflets.java

@@ -8,7 +8,12 @@ import com.java110.core.factory.WechatFactory;
 import com.java110.core.log.LoggerFactory;
 import com.java110.dto.community.CommunityDto;
 import com.java110.dto.file.FileRelDto;
+import com.java110.dto.machinePrinter.MachinePrinterDto;
 import com.java110.dto.owner.OwnerAppUserDto;
+import com.java110.dto.printerRule.PrinterRuleDto;
+import com.java110.dto.printerRuleFee.PrinterRuleFeeDto;
+import com.java110.dto.printerRuleMachine.PrinterRuleMachineDto;
+import com.java110.dto.printerRuleRepair.PrinterRuleRepairDto;
 import com.java110.dto.repair.RepairDto;
 import com.java110.dto.repair.RepairUserDto;
 import com.java110.dto.smallWeChat.SmallWeChatDto;
@@ -19,7 +24,7 @@ import com.java110.entity.order.Business;
 import com.java110.entity.wechat.Content;
 import com.java110.entity.wechat.Data;
 import com.java110.entity.wechat.PropertyFeeTemplateMessage;
-import com.java110.intf.common.IFileRelInnerServiceSMO;
+import com.java110.intf.common.*;
 import com.java110.intf.community.ICommunityInnerServiceSMO;
 import com.java110.intf.community.IRepairInnerServiceSMO;
 import com.java110.intf.community.IRepairUserInnerServiceSMO;
@@ -29,10 +34,14 @@ import com.java110.intf.user.IOwnerAppUserInnerServiceSMO;
 import com.java110.intf.user.IStaffAppAuthInnerServiceSMO;
 import com.java110.intf.user.IUserInnerServiceSMO;
 import com.java110.job.adapt.DatabusAdaptImpl;
+import com.java110.job.printer.IPrinter;
 import com.java110.po.owner.RepairUserPo;
 import com.java110.utils.cache.MappingCache;
 import com.java110.utils.cache.UrlCache;
 import com.java110.utils.constant.MappingConstant;
+import com.java110.utils.exception.CmdException;
+import com.java110.utils.factory.ApplicationContextFactory;
+import com.java110.utils.util.Assert;
 import com.java110.utils.util.ImageUtils;
 import com.java110.utils.util.StringUtil;
 import org.slf4j.Logger;
@@ -86,6 +95,19 @@ public class MachineDistributeLeaflets extends DatabusAdaptImpl {
     @Autowired
     private IFileRelInnerServiceSMO fileRelInnerServiceSMOImpl;
 
+
+    @Autowired
+    private IPrinterRuleRepairV1InnerServiceSMO printerRuleRepairV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IPrinterRuleV1InnerServiceSMO printerRuleV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IPrinterRuleMachineV1InnerServiceSMO printerRuleMachineV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IMachinePrinterV1InnerServiceSMO machinePrinterV1InnerServiceSMOImpl;
+
     //模板信息推送地址
     private static String sendMsgUrl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=";
 
@@ -174,8 +196,14 @@ public class MachineDistributeLeaflets extends DatabusAdaptImpl {
                 sendMsg(paramIn, communityDtos.get(0));
                 //派单成功给业主推送信息
                 publishMsg(paramIn, communityDtos.get(0));
+
+                // 自动打印小票
+                autoPrintRepair(repairUserDto.getRuId(),repairDtos.get(0).getRepairType(),communityDtos.get(0));
+                
                 //为企业微信群发消息
                 sendMsgToWechatGroup(paramIn, communityDtos.get(0));
+
+                
             } else if (repairState.equals("1100") && !businessRepairUser.getString("state").equals("10006")) {
                 JSONObject paramIn = new JSONObject();
                 paramIn.put("staffId", businessRepairUser.getString("staffId"));
@@ -205,6 +233,71 @@ public class MachineDistributeLeaflets extends DatabusAdaptImpl {
         }
     }
 
+    /**
+     * // 自动打印小票
+     * @param ruId
+     * @param repairType
+     * @param communityDto
+     */
+    private void autoPrintRepair(String ruId,String repairType, CommunityDto communityDto) {
+
+        PrinterRuleRepairDto printerRuleRepairDto = new PrinterRuleRepairDto();
+        printerRuleRepairDto.setCommunityId(communityDto.getCommunityId());
+        printerRuleRepairDto.setRepairType(repairType);
+        List<PrinterRuleRepairDto> printerRuleRepairDtos = printerRuleRepairV1InnerServiceSMOImpl.queryPrinterRuleRepairs(printerRuleRepairDto);
+
+        if (printerRuleRepairDtos == null || printerRuleRepairDtos.size() < 1) {
+            return;
+        }
+
+        PrinterRuleDto printerRuleDto = new PrinterRuleDto();
+        printerRuleDto.setRuleId(printerRuleRepairDtos.get(0).getRuleId());
+        printerRuleDto.setCommunityId(communityDto.getCommunityId());
+        printerRuleDto.setState(PrinterRuleDto.STATE_NORMAL);
+        int count = printerRuleV1InnerServiceSMOImpl.queryPrinterRulesCount(printerRuleDto);
+
+        if (count < 1) {
+            return;
+        }
+
+        PrinterRuleMachineDto printerRuleMachineDto = new PrinterRuleMachineDto();
+        printerRuleMachineDto.setCommunityId(communityDto.getCommunityId());
+        printerRuleMachineDto.setRuleId(printerRuleRepairDtos.get(0).getRuleId());
+        List<PrinterRuleMachineDto> printerRuleMachineDtos = printerRuleMachineV1InnerServiceSMOImpl.queryPrinterRuleMachines(printerRuleMachineDto);
+        if (printerRuleMachineDtos == null || printerRuleMachineDtos.size() < 1) {
+            return;
+        }
+
+        for (PrinterRuleMachineDto tmpPrinterRuleMachineDto : printerRuleMachineDtos) {
+            try {
+                doPrint(tmpPrinterRuleMachineDto, ruId);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+
+
+    }
+
+    private void doPrint(PrinterRuleMachineDto tmpPrinterRuleMachineDto, String ruId) {
+        MachinePrinterDto machinePrinterDto = new MachinePrinterDto();
+        machinePrinterDto.setCommunityId(tmpPrinterRuleMachineDto.getCommunityId());
+        machinePrinterDto.setMachineId(tmpPrinterRuleMachineDto.getMachineId());
+        List<MachinePrinterDto> machinePrinterDtos = machinePrinterV1InnerServiceSMOImpl.queryMachinePrinters(machinePrinterDto);
+
+        Assert.listOnlyOne(machinePrinterDtos, "云打印机不存在");
+
+        IPrinter printer = ApplicationContextFactory.getBean(machinePrinterDtos.get(0).getImplBean(), IPrinter.class);
+
+        if (printer == null) {
+            throw new CmdException("打印机异常,未包含适配器");
+        }
+
+        printer.printRepair(ruId, tmpPrinterRuleMachineDto.getCommunityId(), Integer.parseInt(tmpPrinterRuleMachineDto.getQuantity()), machinePrinterDtos.get(0));
+
+
+    }
+
     /**
      * 转单给维修师傅推送信息
      *

+ 56 - 0
service-job/src/main/java/com/java110/job/printer/manufactor/FeieGetPayFeeDetail.java

@@ -0,0 +1,56 @@
+package com.java110.job.printer.manufactor;
+
+import com.java110.dto.smallWeChat.SmallWeChatDto;
+import com.java110.intf.store.ISmallWeChatInnerServiceSMO;
+import com.java110.utils.cache.UrlCache;
+
+import java.util.List;
+
+public class FeieGetPayFeeDetail {
+
+
+    public static String getPrintPayFeeDetailHeaderContent(List<FeieLine> order) {
+        String orderInfo = "<CB>缴费通知单</CB><BR>";
+        orderInfo += "********************************<BR>";
+        for (int i = 0; i < order.size(); i++) {
+            String title = order.get(i).getTitle();
+            String value = order.get(i).getValue();
+            orderInfo += (title + ":" + value + "<BR>");
+        }
+        orderInfo += "********************************<BR>";
+        return orderInfo;
+    }
+
+    public static String getPrintPayFeeDetailBodyContent(List<FeieLine> business) {
+
+        String orderInfo = "";
+        for (int i = 0; i < business.size(); i++) {
+            String title = business.get(i).getTitle();
+            String value = business.get(i).getValue();
+            orderInfo += (title + ":" + value + "<BR>");
+        }
+        orderInfo += "********************************<BR>";
+        return orderInfo;
+    }
+
+    public static String getPrintPayFeeDetailFloorContent(String communityId, double totals, ISmallWeChatInnerServiceSMO smallWeChatInnerServiceSMOImpl) {
+        String orderInfo = "";
+        //orderInfo += "********************************<BR>";
+        orderInfo += "合计:" + totals + "元<BR>";
+
+        //查询公众号配置
+        SmallWeChatDto smallWeChatDto = new SmallWeChatDto();
+        smallWeChatDto.setWeChatType("1100");
+        smallWeChatDto.setObjType(SmallWeChatDto.OBJ_TYPE_COMMUNITY);
+        smallWeChatDto.setObjId(communityId);
+        List<SmallWeChatDto> smallWeChatDtos = smallWeChatInnerServiceSMOImpl.querySmallWeChats(smallWeChatDto);
+
+
+        if (smallWeChatDto != null && smallWeChatDtos.size() > 0) {
+            orderInfo += "<QR>" + UrlCache.getOwnerUrl() + "/#/?wAppId=" + smallWeChatDtos.get(0).getAppId() + "</QR>";
+        }
+
+        return orderInfo;
+    }
+
+}

+ 25 - 0
service-job/src/main/java/com/java110/job/printer/manufactor/FeieGetRepair.java

@@ -0,0 +1,25 @@
+package com.java110.job.printer.manufactor;
+
+import com.java110.dto.smallWeChat.SmallWeChatDto;
+import com.java110.intf.store.ISmallWeChatInnerServiceSMO;
+import com.java110.utils.cache.UrlCache;
+
+import java.util.List;
+
+public class FeieGetRepair {
+
+
+    public static String getPrintRepairHeaderContent(List<FeieLine> order) {
+        String orderInfo = "<CB>维修工单</CB><BR>";
+        orderInfo += "您有新的维修任务如下:";
+        orderInfo += "********************************<BR>";
+        for (int i = 0; i < order.size(); i++) {
+            String title = order.get(i).getTitle();
+            String value = order.get(i).getValue();
+            orderInfo += (title + ":" + value + "<BR>");
+        }
+        orderInfo += "********************************<BR>";
+        return orderInfo;
+    }
+
+}

+ 80 - 85
service-job/src/main/java/com/java110/job/printer/manufactor/FeieManufactor.java

@@ -7,9 +7,16 @@ import com.java110.dto.fee.FeeDto;
 import com.java110.dto.feeReceipt.FeeReceiptDetailDto;
 import com.java110.dto.feeReceipt.FeeReceiptDto;
 import com.java110.dto.machinePrinter.MachinePrinterDto;
+import com.java110.dto.repair.RepairDto;
+import com.java110.dto.repair.RepairUserDto;
 import com.java110.dto.smallWeChat.SmallWeChatDto;
+import com.java110.dto.user.UserDto;
+import com.java110.intf.community.IRepairInnerServiceSMO;
+import com.java110.intf.community.IRepairUserInnerServiceSMO;
 import com.java110.intf.fee.*;
 import com.java110.intf.store.ISmallWeChatInnerServiceSMO;
+import com.java110.intf.user.IUserInnerServiceSMO;
+import com.java110.intf.user.IUserV1InnerServiceSMO;
 import com.java110.job.printer.IPrinter;
 import com.java110.utils.cache.MappingCache;
 import com.java110.utils.cache.UrlCache;
@@ -74,6 +81,15 @@ public class FeieManufactor implements IPrinter {
     @Autowired
     private ISmallWeChatInnerServiceSMO smallWeChatInnerServiceSMOImpl;
 
+    @Autowired
+    private IRepairUserInnerServiceSMO repairUserInnerServiceSMO;
+
+    @Autowired
+    private IRepairInnerServiceSMO repairInnerServiceSMO;
+
+    @Autowired
+    private IUserV1InnerServiceSMO userV1InnerServiceSMOImpl;
+
     /**
      * **************************
      * 单号:832023020800440026
@@ -106,13 +122,6 @@ public class FeieManufactor implements IPrinter {
         List<FeeDetailDto> feeDetailDtos = feeDetailInnerServiceSMOImpl.queryFeeDetails(feeDetailDto);
         Assert.listOnlyOne(feeDetailDtos, "交费明细不存在");
 
-//        FeeDto feeDto = new FeeDto();
-//        feeDto.setFeeId(feeDetailDtos.get(0).getFeeId());
-//        feeDto.setCommunityId(communityId);
-//        List<FeeDto> feeDtos = feeInnerServiceSMOImpl.queryFees(feeDto);
-//
-//        Assert.listOnlyOne(feeDtos, "费用不存在");
-
         FeeReceiptDetailDto feeReceiptDetailDto = new FeeReceiptDetailDto();
         feeReceiptDetailDto.setDetailIds(detailIds);
         feeReceiptDetailDto.setCommunityId(communityId);
@@ -133,7 +142,7 @@ public class FeieManufactor implements IPrinter {
         feieLines.add(new FeieLine("房号", feeReceiptDtos.get(0).getObjName()));
         feieLines.add(new FeieLine("业主", feeReceiptDtos.get(0).getPayObjName()));
         feieLines.add(new FeieLine("时间", DateUtil.getFormatTimeString(DateUtil.getCurrentDate(), DateUtil.DATE_FORMATE_STRING_A)));
-        printStr = getPrintPayFeeDetailHeaderContent(feieLines);
+        printStr = FeieGetPayFeeDetail.getPrintPayFeeDetailHeaderContent(feieLines);
         /*************************************头部******************************************/
 
         feieLines = new ArrayList<>();
@@ -157,33 +166,76 @@ public class FeieManufactor implements IPrinter {
             feieLines.add(new FeieLine("面积/用量", tmpFeeReceiptDetailDto.getArea()));
             feieLines.add(new FeieLine("金额", tmpFeeReceiptDetailDto.getAmount()));
             feieLines.add(new FeieLine("备注", tmpFeeReceiptDetailDto.getRemark()));
-            printStr += getPrintPayFeeDetailBodyContent(feieLines);
-
+            printStr += FeieGetPayFeeDetail.getPrintPayFeeDetailBodyContent(feieLines);
             totalDecimal = totalDecimal.add(new BigDecimal(Double.parseDouble(tmpFeeReceiptDetailDto.getAmount())));
+        }
+        printStr += FeieGetPayFeeDetail.getPrintPayFeeDetailFloorContent(communityId, totalDecimal.doubleValue(), smallWeChatInnerServiceSMOImpl);
+
+        doPrint(quantity, machinePrinterDto, printStr);
+
+        return new ResultVo(ResultVo.CODE_OK, "成功");
+    }
+
+
+    @Override
+    public ResultVo printRepair(String ruId, String communityId, int quantity, MachinePrinterDto machinePrinterDto) {
 
+        RepairUserDto repairUserDto = new RepairUserDto();
+        repairUserDto.setRuId(ruId);
+        repairUserDto.setCommunityId(communityId);
+        List<RepairUserDto> repairUserDtos = repairUserInnerServiceSMO.queryRepairUsers(repairUserDto);
+
+        Assert.listOnlyOne(repairUserDtos, "报修单不存在");
+
+        if(RepairUserDto.STATE_SUBMIT.equals(repairUserDtos.get(0).getState())){
+            return new ResultVo(ResultVo.CODE_OK, "成功");
+        }
+
+        String repairId = repairUserDtos.get(0).getRepairId();
+        RepairDto repairDto = new RepairDto();
+        repairDto.setRepairId(repairId);
+        repairDto.setCommunityId(repairId);
+        List<RepairDto> repairDtos = repairInnerServiceSMO.queryRepairs(repairDto);
+        Assert.listOnlyOne(repairDtos, "报修单不存在");
+
+
+        UserDto userDto = new UserDto();
+        userDto.setUserId(repairUserDtos.get(0).getStaffId());
+        List<UserDto> userDtos = userV1InnerServiceSMOImpl.queryUsers(userDto);
+        String staffName = "-";
+        if(userDtos != null && userDtos.size() < 1){
+            staffName = userDtos.get(0).getStaffName();
         }
-        printStr += getPrintPayFeeDetailFloorContent(communityId, totalDecimal.doubleValue());
 
+        String printStr = "";
+        /*************************************内容******************************************/
+        List<FeieLine> feieLines = new ArrayList<>();
+        feieLines.add(new FeieLine("标题", repairDtos.get(0).getRepairName()));
+        feieLines.add(new FeieLine("联系人", repairDtos.get(0).getRepairName()));
+        feieLines.add(new FeieLine("电话", repairDtos.get(0).getTel()));
+        feieLines.add(new FeieLine("时间",  repairDtos.get(0).getAppointmentTime()));
+        feieLines.add(new FeieLine("位置", repairDtos.get(0).getRepairObjName()));
+        feieLines.add(new FeieLine("维修师傅", staffName));
+        feieLines.add(new FeieLine("单号", repairDtos.get(0).getRepairId()));
+        feieLines.add(new FeieLine("内容", repairDtos.get(0).getContext()));
+        printStr = FeieGetRepair.getPrintRepairHeaderContent(feieLines);
+        /*************************************内容******************************************/
+
+        doPrint(quantity, machinePrinterDto, printStr);
+
+        return new ResultVo(ResultVo.CODE_OK, "成功");
+    }
+
+
+    private static String signature(String USER, String UKEY, String STIME) {
+        return DigestUtils.sha1Hex(USER + UKEY + STIME);
+    }
+
+
+    private static void doPrint(int quantity, MachinePrinterDto machinePrinterDto, String printStr) {
         String stime = String.valueOf(System.currentTimeMillis() / 1000);
         String user = MappingCache.getValue(MappingConstant.FEIE_DOMAIN, "user");
         String ukey = MappingCache.getValue(MappingConstant.FEIE_DOMAIN, "ukey");
-
-//        MultiValueMap<String, Object> postParameters = new LinkedMultiValueMap<>();
-//        postParameters.add("user", user);
-//        postParameters.add("stime", stime);
-//        postParameters.add("sig", signature(user, ukey, stime));
-//        postParameters.add("apiname", "Open_printMsg");
-//        postParameters.add("sn", machinePrinterDto.getMachineCode());
-//        postParameters.add("content", printStr);
-//        postParameters.add("times", quantity+"");
-
-        //添加人脸
-//        HttpHeaders httpHeaders = new HttpHeaders();
-//        httpHeaders.add("Content-Type", "application/x-www-form-urlencoded");
-//        HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity(postParameters, httpHeaders);
-//        ResponseEntity<String> responseEntity = formRestTemplate.exchange(REQUEST_URL, HttpMethod.POST, httpEntity, String.class);
-//        logger.debug("请求信息 : " + httpEntity + ",返回信息:" + responseEntity);
-
         // 通过POST请求,发送打印信息到服务器
         RequestConfig requestConfig = RequestConfig.custom()
                 .setSocketTimeout(30000)// 读取超时
@@ -220,8 +272,6 @@ public class FeieManufactor implements IPrinter {
         } finally {
             close(response, post, httpClient);
         }
-
-        return new ResultVo(ResultVo.CODE_OK, "成功");
     }
 
     public static void close(CloseableHttpResponse response, HttpPost post, CloseableHttpClient httpClient) {
@@ -243,59 +293,4 @@ public class FeieManufactor implements IPrinter {
             e.printStackTrace();
         }
     }
-
-    public static String getPrintPayFeeDetailHeaderContent(List<FeieLine> order) {
-        String orderInfo = "<CB>缴费通知单</CB><BR>";
-        orderInfo += "********************************<BR>";
-        for (int i = 0; i < order.size(); i++) {
-            String title = order.get(i).getTitle();
-            String value = order.get(i).getValue();
-            orderInfo += (title + ":" + value + "<BR>");
-        }
-        orderInfo += "********************************<BR>";
-        return orderInfo;
-    }
-
-    public static String getPrintPayFeeDetailBodyContent(List<FeieLine> business) {
-
-        String orderInfo = "";
-        for (int i = 0; i < business.size(); i++) {
-            String title = business.get(i).getTitle();
-            String value = business.get(i).getValue();
-            orderInfo += (title + ":" + value + "<BR>");
-        }
-        orderInfo += "********************************<BR>";
-        return orderInfo;
-    }
-
-    public String getPrintPayFeeDetailFloorContent(String communityId, double totals) {
-        String orderInfo = "";
-        //orderInfo += "********************************<BR>";
-        orderInfo += "合计:" + totals + "元<BR>";
-
-        //查询公众号配置
-        SmallWeChatDto smallWeChatDto = new SmallWeChatDto();
-        smallWeChatDto.setWeChatType("1100");
-        smallWeChatDto.setObjType(SmallWeChatDto.OBJ_TYPE_COMMUNITY);
-        smallWeChatDto.setObjId(communityId);
-        List<SmallWeChatDto> smallWeChatDtos = smallWeChatInnerServiceSMOImpl.querySmallWeChats(smallWeChatDto);
-
-
-        if (smallWeChatDto != null && smallWeChatDtos.size() > 0) {
-            orderInfo += "<QR>" + UrlCache.getOwnerUrl() + "/#/?wAppId=" + smallWeChatDtos.get(0).getAppId() + "</QR>";
-        }
-
-        return orderInfo;
-    }
-
-
-    @Override
-    public ResultVo printRepair(String repairUserId, String communityId, int quantity, MachinePrinterDto machinePrinterDto) {
-
-        return new ResultVo(ResultVo.CODE_OK, "成功");
-    }
-
-    private static String signature(String USER, String UKEY, String STIME) {
-        return DigestUtils.sha1Hex(USER + UKEY + STIME);
-    }
 }