|
|
@@ -1,24 +1,31 @@
|
|
|
package com.repair.controller;
|
|
|
|
|
|
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.interfaces.Func;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.jcraft.jsch.*;
|
|
|
import com.repair.api.RepairRecordControllerAPI;
|
|
|
import com.repair.common.utils.*;
|
|
|
+import com.repair.config.WxOpenidConfig;
|
|
|
import com.repair.model.enumModel.*;
|
|
|
import com.repair.model.pojo.*;
|
|
|
import com.repair.model.request.*;
|
|
|
-import com.repair.model.result.CommonResult;
|
|
|
-import com.repair.model.result.PageUtils;
|
|
|
+import com.repair.model.result.*;
|
|
|
import com.repair.model.vo.*;
|
|
|
import com.repair.services.*;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.apache.poi.ss.usermodel.DateUtil;
|
|
|
import org.apache.poi.ss.usermodel.Row;
|
|
|
import org.apache.poi.ss.usermodel.Sheet;
|
|
|
import org.apache.poi.ss.usermodel.Workbook;
|
|
|
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
|
|
+import org.apache.tomcat.util.http.ResponseUtil;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.validation.BindingResult;
|
|
|
@@ -28,8 +35,12 @@ import org.springframework.web.bind.annotation.RequestHeader;
|
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
+import java.io.BufferedReader;
|
|
|
+import java.io.IOException;
|
|
|
import java.io.InputStream;
|
|
|
+import java.io.PrintWriter;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.text.MessageFormat;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
@@ -85,10 +96,14 @@ public class RepairRecordController implements RepairRecordControllerAPI {
|
|
|
private RepairSchoolService repairSchoolService;
|
|
|
@Autowired
|
|
|
private WeiXiaoUtil weiXiaoUtil;
|
|
|
+ @Autowired
|
|
|
+ private WxOpenidConfig wxOpenidConfig;
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = {Exception.class})
|
|
|
public CommonResult pay(WxPayRequest wpr, BindingResult bindingResult) throws Exception {
|
|
|
+ System.out.println("进入微信支付====");
|
|
|
+ System.out.println("微信支付参数====:"+JSON.toJSON(wpr));
|
|
|
if (bindingResult.hasErrors()) {
|
|
|
String st = paramUtils.getParamError(bindingResult);
|
|
|
return CommonResult.fail(st);
|
|
|
@@ -154,9 +169,129 @@ public class RepairRecordController implements RepairRecordControllerAPI {
|
|
|
return CommonResult.fail("无法为其他订单支付");
|
|
|
}
|
|
|
|
|
|
- return null;
|
|
|
+ //微信支付以分为单位
|
|
|
+ int totalfee = (wpr.getTotalPrice().multiply(new BigDecimal(100))).intValue();
|
|
|
+ Map<String, String> params = new HashMap<String, String>();
|
|
|
+ params.put("attach", "报修系统");//附加数据,在查询API和支付通知中原样返回,可作为自定义参数使用。
|
|
|
+ params.put("appid", wxOpenidConfig.getXappid());//微信分配的小程序ID
|
|
|
+ params.put("mch_id", wxOpenidConfig.getShappid());//微信支付分配的商户号
|
|
|
+ String nonceStr = WxUtil.getWxNonceStr();
|
|
|
+ params.put("nonce_str", nonceStr);//随机字符串,长度要求在32位以内。推荐随机数生成算法
|
|
|
+ params.put("body", "南交-报修系统");//商品简单描述,该字段请按照规范传递,具体请见参数规定
|
|
|
+ params.put("out_trade_no", rr.getRecordNo());//商户系统内部订单号,要求32个字符内,只能是数字、大小写字母_-|*@ ,且在同一个商户号下唯一。详见商户订单号
|
|
|
+ params.put("total_fee", String.valueOf(totalfee));//支付金额
|
|
|
+ params.put("spbill_create_ip", wxOpenidConfig.getIpconfig());//支持IPV4和IPV6两种格式的IP地址。调用微信支付API的机器IP:服务器IP地址
|
|
|
+ params.put("notify_url", "https://chtech.ncjti.edu.cn/campusMaintenance/repair-api/repair/api/repairPayRecord/repairPayment");//异步接收微信支付结果通知的回调地址,通知url必须为外网可访问的url,不能携带参数。
|
|
|
+ params.put("trade_type", "JSAPI");//取值如下:JSAPI,NATIVE,APP等,说明详见参数规定
|
|
|
+ params.put("openid", wpr.getOpenid());//trade_type=JSAPI时(即公众号支付),此参数必传,此参数为微信用户在商户对应appid下的唯一标识
|
|
|
+ String Sign = WxUtil.getSign(params, wxOpenidConfig.getShsecret());//参数 + 商户密钥
|
|
|
+ params.put("sign", Sign);
|
|
|
+ String retXml = WxUtil.getRequestXml(params);
|
|
|
+ String msg = HttpUtils.post("https://api.mch.weixin.qq.com/pay/unifiedorder", retXml);
|
|
|
+ System.out.println(msg);
|
|
|
+
|
|
|
+ // 支付失败
|
|
|
+ if (msg.indexOf("FAIL") > -1) {
|
|
|
+ return CommonResult.fail("支付异常");
|
|
|
+ }
|
|
|
+
|
|
|
+ JaxbUtil requestBinder = new JaxbUtil(TongYiReturn.class, JaxbUtil.CollectionWrapper.class);
|
|
|
+ TongYiReturn to = requestBinder.fromXml(msg);
|
|
|
+
|
|
|
+ // 支付成功
|
|
|
+ if (to.getReturn_code().equals("SUCCESS") && to.getResult_code().equals("SUCCESS")) {
|
|
|
+ EndPay pay = new EndPay();
|
|
|
+ pay.setAppId(wxOpenidConfig.getXappid());
|
|
|
+ pay.setSignType("MD5");
|
|
|
+ pay.setTimeStamp(System.currentTimeMillis() / 1000 + "");
|
|
|
+ pay.setPrepay_id(to.getPrepay_id());
|
|
|
+ pay.setNonceStr(nonceStr);
|
|
|
+ Map<String, String> requestMap = new HashMap<String, String>();
|
|
|
+ requestMap.put("appId", pay.getAppId());
|
|
|
+ requestMap.put("timeStamp", pay.getTimeStamp());
|
|
|
+ requestMap.put("nonceStr", pay.getNonceStr());
|
|
|
+ requestMap.put("package", "prepay_id=" + pay.getPrepay_id());
|
|
|
+ requestMap.put("signType", "MD5");
|
|
|
+ pay.setPaySign(WxUtil.getSign(requestMap, wxOpenidConfig.getShsecret()));
|
|
|
+
|
|
|
+ return CommonResult.ok(pay);
|
|
|
+ }
|
|
|
+
|
|
|
+ return CommonResult.ok();
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 支付成功后回调,推送消息给商家
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void returnPay(HttpServletRequest request, HttpServletResponse response) throws IOException {
|
|
|
+ System.out.println("进入支付回调====");
|
|
|
+ try {
|
|
|
+ BufferedReader reader = null;// BufferedReader 字符输入流
|
|
|
+ reader = request.getReader();
|
|
|
+ String line = "";
|
|
|
+ String xmlString = null;
|
|
|
+ StringBuilder inputString = new StringBuilder();
|
|
|
+ while ((line = reader.readLine()) != null) {
|
|
|
+ inputString.append(line);
|
|
|
+ }
|
|
|
+ xmlString = inputString.toString();
|
|
|
+ request.getReader().close();
|
|
|
+ JaxbUtil requestBinder = new JaxbUtil(PayResult.class, PayResult.class);
|
|
|
+ PayResult result = requestBinder.fromXml(xmlString);// Xml到Java,用fromXML()方法
|
|
|
+ String recordNo = result.getOut_trade_no();
|
|
|
+ System.out.println("支付成功回调,维修单号:" + recordNo);
|
|
|
+ RepairRecord rr = repairRecordService.queryRepairByRecordno(recordNo);
|
|
|
+ // 支付成功
|
|
|
+ if (result.getResult_code().equals("SUCCESS") && rr != null) {
|
|
|
+ RepairPayRecord rpr = repairPayRecordService.getRepairPayByRecordId(rr.getId());
|
|
|
+ if (rpr == null) {
|
|
|
+ // 保存支付信息
|
|
|
+ rpr = new RepairPayRecord();
|
|
|
+ rpr.setRecordId(rr.getId());
|
|
|
+ rpr.setUserId(rr.getUserId());
|
|
|
+ rpr.setPayNo(result.getNonce_str());
|
|
|
+ rpr.setPayPrice(new BigDecimal(result.getTotal_fee() / 100));
|
|
|
+ rpr.setIsSuccess(ePayStatu.Paysuccess.getValue());
|
|
|
+ rpr.setRemark("微信支付支付成功");
|
|
|
+ int insertRpr = repairPayRecordService.insertRepairPayRecord(rpr);
|
|
|
+ if (insertRpr <= 0) {
|
|
|
+ String returnMsg = "<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[MESSAGE]]></return_msg></xml>";
|
|
|
+ response.getWriter().write(returnMsg);// 发送消息返回给微信
|
|
|
+ }
|
|
|
+ } else if (rpr.getIsSuccess() != ePayStatu.Paysuccess.getValue()) {
|
|
|
+ rpr.setPayNo(result.getNonce_str());
|
|
|
+ rpr.setPayPrice(new BigDecimal(result.getTotal_fee() / 100));
|
|
|
+ rpr.setIsSuccess(ePayStatu.Paysuccess.getValue());
|
|
|
+ rpr.setRemark(rpr.getRemark() + "微信支付支付成功");
|
|
|
+ int updateRpr = repairPayRecordService.updateRepairPayRecord(rpr);
|
|
|
+ if (updateRpr <= 0) {
|
|
|
+ String returnMsg = "<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[MESSAGE]]></return_msg></xml>";
|
|
|
+ response.getWriter().write(returnMsg);// 发送消息返回给微信
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ rr.setMaintenanceState(eRecordStatu.Maintenance.getValue());
|
|
|
+
|
|
|
+ int updateRecord = repairRecordService.updateRepairRecord(rr);
|
|
|
+ if (updateRecord <= 0) {
|
|
|
+ String returnMsg = "<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[MESSAGE]]></return_msg></xml>";
|
|
|
+ response.getWriter().write(returnMsg);// 发送消息返回给微信
|
|
|
+ }
|
|
|
+
|
|
|
+ String returnMsg = "<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>";
|
|
|
+ response.getWriter().write(returnMsg);// 发送成功消息返回给微信
|
|
|
+ } else {
|
|
|
+ String returnMsg = "<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[MESSAGE]]></return_msg></xml>";
|
|
|
+ response.getWriter().write(returnMsg);// 发送消息返回给微信
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ String returnMsg = "<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[MESSAGE]]></return_msg></xml>";
|
|
|
+ response.getWriter().write(returnMsg);// 发送消息返回给微信
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = {Exception.class})
|
|
|
public CommonResult InsertRepairRecord(repairRecordRequest rrr, BindingResult bindingResult) throws Exception {
|
|
|
@@ -487,11 +622,15 @@ public class RepairRecordController implements RepairRecordControllerAPI {
|
|
|
|
|
|
List<RepairConsumables> rcs = repairConsumablesService.getRepairsByRecordIds(recordIds);
|
|
|
|
|
|
+ List<RepairEvaluate> evaluates = repairEvaluateService.getRepairByRecordIds(recordIds);
|
|
|
+
|
|
|
for (MyRepairRecordVo r : result.getList()) {
|
|
|
+ long count = evaluates.stream().filter(e -> e.getRecordId().equals(r.getId())).count();
|
|
|
r.setState(eRecordStatu.stringOf(r.getStateId()));
|
|
|
r.setImages(Arrays.asList(r.getImage().split(",")));
|
|
|
List<RepairConsumables> datas = rcs.stream().filter(e -> e.getRecordId() == r.getId()).collect(Collectors.toList());
|
|
|
r.setConsumables(datas);
|
|
|
+ r.setEvaluate((count <= 0 && r.getStateId() == eRecordStatu.Finished.getValue()) ? 1 : 0);
|
|
|
}
|
|
|
return CommonResult.ok(result);
|
|
|
}
|
|
|
@@ -522,6 +661,9 @@ public class RepairRecordController implements RepairRecordControllerAPI {
|
|
|
break;
|
|
|
case 3://已超时
|
|
|
result = repairRecordService.queryTimeoutOrderList(currentPage, pageCount, userId, dateNow);
|
|
|
+ for (RepairTechnicianVo re:result.getList()) {
|
|
|
+ re.setState(eRecordStatu.stringOf(re.getMaintenanceState()));
|
|
|
+ }
|
|
|
break;
|
|
|
case 4://待审核
|
|
|
result = repairRecordService.queryExamineOrderList(currentPage, pageCount, userId);
|
|
|
@@ -2188,10 +2330,10 @@ public class RepairRecordController implements RepairRecordControllerAPI {
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
@Override
|
|
|
- public CommonResult repairArea(int state,int currentPage, int pageCount) throws Exception {
|
|
|
+ public CommonResult repairArea(int state, int currentPage, int pageCount) throws Exception {
|
|
|
// 全部
|
|
|
if (state == 0) {
|
|
|
- IPage<RepairAreaVo> repairAreaTotal = repairRecordService.repairAreaTotal(currentPage,pageCount);
|
|
|
+ IPage<RepairAreaVo> repairAreaTotal = repairRecordService.repairAreaTotal(currentPage, pageCount);
|
|
|
return CommonResult.ok(repairAreaTotal);
|
|
|
}
|
|
|
|
|
|
@@ -2202,18 +2344,19 @@ public class RepairRecordController implements RepairRecordControllerAPI {
|
|
|
return CommonResult.fail("参数有误");
|
|
|
}
|
|
|
|
|
|
- IPage<RepairAreaVo> repairAreaTotal = repairRecordService.repairArea(startTime, endTime,currentPage,pageCount);
|
|
|
+ IPage<RepairAreaVo> repairAreaTotal = repairRecordService.repairArea(startTime, endTime, currentPage, pageCount);
|
|
|
|
|
|
return CommonResult.ok(repairAreaTotal);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 报修区域导出
|
|
|
+ *
|
|
|
* @param state
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
@Override
|
|
|
- public void repairAreaExport(HttpServletResponse response,int state) throws Exception {
|
|
|
+ public void repairAreaExport(HttpServletResponse response, int state) throws Exception {
|
|
|
String startTime = DateUtils.startTime(state);
|
|
|
String endTime = DateUtils.endTime();
|
|
|
List<RepairAreaVo> vos = repairRecordService.repairAreaExport(startTime, endTime);
|
|
|
@@ -2241,12 +2384,12 @@ public class RepairRecordController implements RepairRecordControllerAPI {
|
|
|
dataRow1.createCell(2).setCellValue(areaName);
|
|
|
dataRow1.createCell(3).setCellValue(vo.getOrdersTotal());
|
|
|
dataRow1.createCell(4).setCellValue(vo.getOrdersCompensation());
|
|
|
- dataRow1.createCell(5).setCellValue( vo.getOrdersGratis());
|
|
|
+ dataRow1.createCell(5).setCellValue(vo.getOrdersGratis());
|
|
|
BigDecimal totalPrice = vo.getTotalPrice();
|
|
|
if (ObjectUtils.isEmpty(totalPrice)) {
|
|
|
- totalPrice=new BigDecimal(0);
|
|
|
+ totalPrice = new BigDecimal(0);
|
|
|
}
|
|
|
- dataRow1.createCell(6).setCellValue( totalPrice.toString());
|
|
|
+ dataRow1.createCell(6).setCellValue(totalPrice.toString());
|
|
|
|
|
|
}
|
|
|
|
|
|
@@ -2263,10 +2406,10 @@ public class RepairRecordController implements RepairRecordControllerAPI {
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
@Override
|
|
|
- public CommonResult maintenanceGoods(int state,int currentPage, int pageCount) throws Exception {
|
|
|
+ public CommonResult maintenanceGoods(int state, int currentPage, int pageCount) throws Exception {
|
|
|
// 全部
|
|
|
if (state == 0) {
|
|
|
- IPage<MaintenanceGoodsVo> maintenanceGoodsVoList = repairRecordService.maintenanceGoodsTotal(currentPage,pageCount);
|
|
|
+ IPage<MaintenanceGoodsVo> maintenanceGoodsVoList = repairRecordService.maintenanceGoodsTotal(currentPage, pageCount);
|
|
|
return CommonResult.ok(maintenanceGoodsVoList);
|
|
|
}
|
|
|
|
|
|
@@ -2277,7 +2420,7 @@ public class RepairRecordController implements RepairRecordControllerAPI {
|
|
|
return CommonResult.fail("参数有误");
|
|
|
}
|
|
|
|
|
|
- IPage<MaintenanceGoodsVo> maintenanceGoodsVoList = repairRecordService.maintenanceGoods(startTime, endTime,currentPage,pageCount);
|
|
|
+ IPage<MaintenanceGoodsVo> maintenanceGoodsVoList = repairRecordService.maintenanceGoods(startTime, endTime, currentPage, pageCount);
|
|
|
return CommonResult.ok(maintenanceGoodsVoList);
|
|
|
}
|
|
|
|
|
|
@@ -2286,7 +2429,7 @@ public class RepairRecordController implements RepairRecordControllerAPI {
|
|
|
String startTime = DateUtils.startTime(state);
|
|
|
String endTime = DateUtils.endTime();
|
|
|
|
|
|
- List<MaintenanceGoodsVo> vos=repairRecordService.maintenanceGoodsExport(startTime, endTime);
|
|
|
+ List<MaintenanceGoodsVo> vos = repairRecordService.maintenanceGoodsExport(startTime, endTime);
|
|
|
|
|
|
// 导出
|
|
|
Workbook workbook = new XSSFWorkbook();
|
|
|
@@ -2306,13 +2449,13 @@ public class RepairRecordController implements RepairRecordControllerAPI {
|
|
|
dataRow1.createCell(1).setCellValue(vo.getArticleName());
|
|
|
dataRow1.createCell(2).setCellValue(vo.getOrdersTotal());
|
|
|
dataRow1.createCell(3).setCellValue(vo.getOrdersCompensation());
|
|
|
- dataRow1.createCell(4).setCellValue( vo.getOrdersGratis());
|
|
|
+ dataRow1.createCell(4).setCellValue(vo.getOrdersGratis());
|
|
|
|
|
|
BigDecimal totalPrice = vo.getTotalPrice();
|
|
|
if (ObjectUtils.isEmpty(totalPrice)) {
|
|
|
- totalPrice=new BigDecimal(0);
|
|
|
+ totalPrice = new BigDecimal(0);
|
|
|
}
|
|
|
- dataRow1.createCell(5).setCellValue( totalPrice.toString());
|
|
|
+ dataRow1.createCell(5).setCellValue(totalPrice.toString());
|
|
|
|
|
|
}
|
|
|
// 将工作簿写入文件
|
|
|
@@ -2328,7 +2471,7 @@ public class RepairRecordController implements RepairRecordControllerAPI {
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
@Override
|
|
|
- public CommonResult maintenanceWorker(int state,int currentPage, int pageCount) throws Exception {
|
|
|
+ public CommonResult maintenanceWorker(int state, int currentPage, int pageCount) throws Exception {
|
|
|
|
|
|
String startTime = DateUtils.startTime(state);
|
|
|
String endTime = DateUtils.endTime();
|
|
|
@@ -2337,7 +2480,7 @@ public class RepairRecordController implements RepairRecordControllerAPI {
|
|
|
wrapperReceiving.between(ObjectUtils.isNotEmpty(startTime), RepairReceiving::getReceivingTime, startTime, endTime);
|
|
|
wrapperReceiving.isNotNull(RepairReceiving::getFinishTime);
|
|
|
wrapperReceiving.groupBy(RepairReceiving::getUserId);
|
|
|
- IPage<RepairReceiving> repairReceivingListPage = repairReceivingService.page(new Page<RepairReceiving>(currentPage,pageCount),wrapperReceiving);
|
|
|
+ IPage<RepairReceiving> repairReceivingListPage = repairReceivingService.page(new Page<RepairReceiving>(currentPage, pageCount), wrapperReceiving);
|
|
|
|
|
|
LambdaQueryWrapper<RepairReceiving> wrapperReceiving2 = new LambdaQueryWrapper<>();
|
|
|
wrapperReceiving2.between(ObjectUtils.isNotEmpty(startTime), RepairReceiving::getReceivingTime, startTime, endTime);
|
|
|
@@ -2432,8 +2575,8 @@ public class RepairRecordController implements RepairRecordControllerAPI {
|
|
|
Map<Integer, Long> sendMap = new HashMap<>();
|
|
|
|
|
|
|
|
|
- LambdaQueryWrapper<RepairDispatchRecord> rdrsWrapper=new LambdaQueryWrapper<>();
|
|
|
- rdrsWrapper.in(RepairDispatchRecord::getRecordId,recordList)
|
|
|
+ LambdaQueryWrapper<RepairDispatchRecord> rdrsWrapper = new LambdaQueryWrapper<>();
|
|
|
+ rdrsWrapper.in(RepairDispatchRecord::getRecordId, recordList)
|
|
|
.isNotNull(RepairDispatchRecord::getReceivingTime);
|
|
|
|
|
|
|
|
|
@@ -2444,7 +2587,7 @@ public class RepairRecordController implements RepairRecordControllerAPI {
|
|
|
// 接单考核时间
|
|
|
Integer acceptanceAssessTime = repairDispatchRecord.getAcceptanceAssessTime() * 1000 * 60;
|
|
|
|
|
|
- long time=sendTime+acceptanceAssessTime;
|
|
|
+ long time = sendTime + acceptanceAssessTime;
|
|
|
|
|
|
// 接单时间
|
|
|
long receivingTime = repairDispatchRecord.getReceivingTime().getTime();
|
|
|
@@ -2455,10 +2598,10 @@ public class RepairRecordController implements RepairRecordControllerAPI {
|
|
|
if (sendCountMap.containsKey(usersId)) {
|
|
|
List<Integer> integers = sendCountMap.get(usersId);
|
|
|
integers.add(recordId);
|
|
|
- sendCountMap.put(usersId,integers);
|
|
|
- }else {
|
|
|
+ sendCountMap.put(usersId, integers);
|
|
|
+ } else {
|
|
|
ArrayList<Integer> integers = new ArrayList<>();
|
|
|
- sendCountMap.put(usersId,integers);
|
|
|
+ sendCountMap.put(usersId, integers);
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -2475,8 +2618,8 @@ public class RepairRecordController implements RepairRecordControllerAPI {
|
|
|
}
|
|
|
|
|
|
// 接单时长=接单时间-派单时间(分)
|
|
|
- Long orderReceivingTime=receivingTime-sendTime;
|
|
|
- orderReceivingTime=orderReceivingTime/1000/60;
|
|
|
+ Long orderReceivingTime = receivingTime - sendTime;
|
|
|
+ orderReceivingTime = orderReceivingTime / 1000 / 60;
|
|
|
|
|
|
if (sendMap.containsKey(usersId)) {
|
|
|
// 接单总时长
|
|
|
@@ -2491,15 +2634,13 @@ public class RepairRecordController implements RepairRecordControllerAPI {
|
|
|
}
|
|
|
|
|
|
|
|
|
- LambdaQueryWrapper<RepairUser> userWrapper=new LambdaQueryWrapper<>();
|
|
|
- userWrapper.in(RepairUser::getId,userList);
|
|
|
+ LambdaQueryWrapper<RepairUser> userWrapper = new LambdaQueryWrapper<>();
|
|
|
+ userWrapper.in(RepairUser::getId, userList);
|
|
|
|
|
|
List<RepairUser> users = repairUserService.list(userWrapper);
|
|
|
|
|
|
|
|
|
-
|
|
|
-
|
|
|
- Wrapper<RepairSchool> schoolWrapper=new LambdaQueryWrapper<>();
|
|
|
+ Wrapper<RepairSchool> schoolWrapper = new LambdaQueryWrapper<>();
|
|
|
List<RepairSchool> schoolList = repairSchoolService.list(schoolWrapper);
|
|
|
|
|
|
ArrayList<MaintenanceWorkerVo> vos = new ArrayList<>();
|
|
|
@@ -2531,25 +2672,25 @@ public class RepairRecordController implements RepairRecordControllerAPI {
|
|
|
if (maintainTimeOutMap.containsKey(id)) {
|
|
|
Integer integer = maintainTimeOutMap.get(id);
|
|
|
BigDecimal a = new BigDecimal(integer);
|
|
|
- BigDecimal c= b;
|
|
|
+ BigDecimal c = b;
|
|
|
// 接单
|
|
|
if (sendTimeOutMap.containsKey(id)) {
|
|
|
Integer integer1 = sendTimeOutMap.get(id);
|
|
|
BigDecimal bigDecimal = new BigDecimal(integer1);
|
|
|
- a=a.add(bigDecimal);
|
|
|
+ a = a.add(bigDecimal);
|
|
|
List<Integer> integers = sendCountMap.get(id);
|
|
|
- c=c.add(new BigDecimal(integers.size()));
|
|
|
+ c = c.add(new BigDecimal(integers.size()));
|
|
|
}
|
|
|
|
|
|
- BigDecimal bigDecimal = a.divide(c,2,BigDecimal.ROUND_HALF_UP);
|
|
|
+ BigDecimal bigDecimal = a.divide(c, 2, BigDecimal.ROUND_HALF_UP);
|
|
|
BigDecimal multiply = bigDecimal.multiply(new BigDecimal(100));
|
|
|
- maintenanceWorkerVo.setTimeOut(multiply+"%");
|
|
|
+ maintenanceWorkerVo.setTimeOut(multiply + "%");
|
|
|
}
|
|
|
|
|
|
// 平均维修时间
|
|
|
Long aLong = maintainMap.get(id);
|
|
|
BigDecimal bigDecimal = new BigDecimal(aLong);
|
|
|
- BigDecimal maintain = bigDecimal.divide(b,2,BigDecimal.ROUND_HALF_UP);
|
|
|
+ BigDecimal maintain = bigDecimal.divide(b, 2, BigDecimal.ROUND_HALF_UP);
|
|
|
maintenanceWorkerVo.setMaintain(maintain);
|
|
|
|
|
|
// 平均响应时长
|
|
|
@@ -2558,41 +2699,40 @@ public class RepairRecordController implements RepairRecordControllerAPI {
|
|
|
BigDecimal bigDecimal1 = new BigDecimal(aLong1);
|
|
|
List<Integer> integers = sendCountMap.get(id);
|
|
|
BigDecimal bigDecimal2 = new BigDecimal(integers.size());
|
|
|
- BigDecimal send = bigDecimal1.divide(bigDecimal2,2,BigDecimal.ROUND_HALF_UP);
|
|
|
+ BigDecimal send = bigDecimal1.divide(bigDecimal2, 2, BigDecimal.ROUND_HALF_UP);
|
|
|
maintenanceWorkerVo.setAnswer(send);
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
// 总费用
|
|
|
- LambdaQueryWrapper<RepairRecord> recordWrapper=new LambdaQueryWrapper<>();
|
|
|
- recordWrapper.in(RepairRecord::getId,recordsList);
|
|
|
+ LambdaQueryWrapper<RepairRecord> recordWrapper = new LambdaQueryWrapper<>();
|
|
|
+ recordWrapper.in(RepairRecord::getId, recordsList);
|
|
|
|
|
|
List<RepairRecord> list = repairRecordService.list(recordWrapper);
|
|
|
- BigDecimal totalPrice=new BigDecimal(0);
|
|
|
+ BigDecimal totalPrice = new BigDecimal(0);
|
|
|
for (RepairRecord repairRecord : list) {
|
|
|
BigDecimal price = repairRecord.getPrice();
|
|
|
if (ObjectUtils.isNotEmpty(price)) {
|
|
|
- totalPrice=totalPrice.add(price);
|
|
|
+ totalPrice = totalPrice.add(price);
|
|
|
}
|
|
|
}
|
|
|
maintenanceWorkerVo.setTotalPrice(totalPrice);
|
|
|
|
|
|
// 好评率
|
|
|
- LambdaQueryWrapper<RepairEvaluate> evaluateWrapper=new LambdaQueryWrapper<>();
|
|
|
- evaluateWrapper.in(RepairEvaluate::getRecordId,recordsList);
|
|
|
+ LambdaQueryWrapper<RepairEvaluate> evaluateWrapper = new LambdaQueryWrapper<>();
|
|
|
+ evaluateWrapper.in(RepairEvaluate::getRecordId, recordsList);
|
|
|
// 根据工单id来查询对应的评价
|
|
|
List<RepairEvaluate> repairEvaluates = repairEvaluateService.list(evaluateWrapper);
|
|
|
BigDecimal evaluatesDecimal = new BigDecimal(repairEvaluates.size());
|
|
|
- BigDecimal satisfaction=new BigDecimal(0);
|
|
|
+ BigDecimal satisfaction = new BigDecimal(0);
|
|
|
for (RepairEvaluate repairEvaluate : repairEvaluates) {
|
|
|
Integer star = repairEvaluate.getStar();
|
|
|
- if (star>3) {
|
|
|
- satisfaction=satisfaction.add(new BigDecimal(1));
|
|
|
+ if (star > 3) {
|
|
|
+ satisfaction = satisfaction.add(new BigDecimal(1));
|
|
|
}
|
|
|
}
|
|
|
- BigDecimal degreePraise = satisfaction.divide(evaluatesDecimal,2,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100));
|
|
|
- maintenanceWorkerVo.setDegreePraise(degreePraise+"%");
|
|
|
+ BigDecimal degreePraise = satisfaction.divide(evaluatesDecimal, 2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100));
|
|
|
+ maintenanceWorkerVo.setDegreePraise(degreePraise + "%");
|
|
|
|
|
|
|
|
|
vos.add(maintenanceWorkerVo);
|
|
|
@@ -2600,7 +2740,7 @@ public class RepairRecordController implements RepairRecordControllerAPI {
|
|
|
});
|
|
|
|
|
|
IPage<MaintenanceWorkerVo> page = new Page();
|
|
|
- BeanUtils.copyProperties(repairReceivingListPage,page);
|
|
|
+ BeanUtils.copyProperties(repairReceivingListPage, page);
|
|
|
page.setRecords(vos);
|
|
|
|
|
|
return CommonResult.ok(page);
|
|
|
@@ -2608,6 +2748,7 @@ public class RepairRecordController implements RepairRecordControllerAPI {
|
|
|
|
|
|
/**
|
|
|
* 维修师傅导出
|
|
|
+ *
|
|
|
* @param response
|
|
|
* @param state
|
|
|
* @throws Exception
|
|
|
@@ -2709,8 +2850,8 @@ public class RepairRecordController implements RepairRecordControllerAPI {
|
|
|
Map<Integer, Long> sendMap = new HashMap<>();
|
|
|
|
|
|
|
|
|
- LambdaQueryWrapper<RepairDispatchRecord> rdrsWrapper=new LambdaQueryWrapper<>();
|
|
|
- rdrsWrapper.in(RepairDispatchRecord::getRecordId,recordList)
|
|
|
+ LambdaQueryWrapper<RepairDispatchRecord> rdrsWrapper = new LambdaQueryWrapper<>();
|
|
|
+ rdrsWrapper.in(RepairDispatchRecord::getRecordId, recordList)
|
|
|
.isNotNull(RepairDispatchRecord::getReceivingTime);
|
|
|
|
|
|
|
|
|
@@ -2721,7 +2862,7 @@ public class RepairRecordController implements RepairRecordControllerAPI {
|
|
|
// 接单考核时间
|
|
|
Integer acceptanceAssessTime = repairDispatchRecord.getAcceptanceAssessTime() * 1000 * 60;
|
|
|
|
|
|
- long time=sendTime+acceptanceAssessTime;
|
|
|
+ long time = sendTime + acceptanceAssessTime;
|
|
|
|
|
|
// 接单时间
|
|
|
long receivingTime = repairDispatchRecord.getReceivingTime().getTime();
|
|
|
@@ -2732,10 +2873,10 @@ public class RepairRecordController implements RepairRecordControllerAPI {
|
|
|
if (sendCountMap.containsKey(usersId)) {
|
|
|
List<Integer> integers = sendCountMap.get(usersId);
|
|
|
integers.add(recordId);
|
|
|
- sendCountMap.put(usersId,integers);
|
|
|
- }else {
|
|
|
+ sendCountMap.put(usersId, integers);
|
|
|
+ } else {
|
|
|
ArrayList<Integer> integers = new ArrayList<>();
|
|
|
- sendCountMap.put(usersId,integers);
|
|
|
+ sendCountMap.put(usersId, integers);
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -2752,8 +2893,8 @@ public class RepairRecordController implements RepairRecordControllerAPI {
|
|
|
}
|
|
|
|
|
|
// 接单时长=接单时间-派单时间(分)
|
|
|
- Long orderReceivingTime=receivingTime-sendTime;
|
|
|
- orderReceivingTime=orderReceivingTime/1000/60;
|
|
|
+ Long orderReceivingTime = receivingTime - sendTime;
|
|
|
+ orderReceivingTime = orderReceivingTime / 1000 / 60;
|
|
|
|
|
|
if (sendMap.containsKey(usersId)) {
|
|
|
// 接单总时长
|
|
|
@@ -2768,13 +2909,13 @@ public class RepairRecordController implements RepairRecordControllerAPI {
|
|
|
}
|
|
|
|
|
|
|
|
|
- LambdaQueryWrapper<RepairUser> userWrapper=new LambdaQueryWrapper<>();
|
|
|
- userWrapper.in(RepairUser::getId,userList);
|
|
|
+ LambdaQueryWrapper<RepairUser> userWrapper = new LambdaQueryWrapper<>();
|
|
|
+ userWrapper.in(RepairUser::getId, userList);
|
|
|
|
|
|
List<RepairUser> users = repairUserService.list(userWrapper);
|
|
|
|
|
|
|
|
|
- Wrapper<RepairSchool> schoolWrapper=new LambdaQueryWrapper<>();
|
|
|
+ Wrapper<RepairSchool> schoolWrapper = new LambdaQueryWrapper<>();
|
|
|
List<RepairSchool> schoolList = repairSchoolService.list(schoolWrapper);
|
|
|
|
|
|
ArrayList<MaintenanceWorkerVo> vos = new ArrayList<>();
|
|
|
@@ -2806,25 +2947,25 @@ public class RepairRecordController implements RepairRecordControllerAPI {
|
|
|
if (maintainTimeOutMap.containsKey(id)) {
|
|
|
Integer integer = maintainTimeOutMap.get(id);
|
|
|
BigDecimal a = new BigDecimal(integer);
|
|
|
- BigDecimal c= b;
|
|
|
+ BigDecimal c = b;
|
|
|
// 接单
|
|
|
if (sendTimeOutMap.containsKey(id)) {
|
|
|
Integer integer1 = sendTimeOutMap.get(id);
|
|
|
BigDecimal bigDecimal = new BigDecimal(integer1);
|
|
|
- a=a.add(bigDecimal);
|
|
|
+ a = a.add(bigDecimal);
|
|
|
List<Integer> integers = sendCountMap.get(id);
|
|
|
- c=c.add(new BigDecimal(integers.size()));
|
|
|
+ c = c.add(new BigDecimal(integers.size()));
|
|
|
}
|
|
|
|
|
|
- BigDecimal bigDecimal = a.divide(c,2,BigDecimal.ROUND_HALF_UP);
|
|
|
+ BigDecimal bigDecimal = a.divide(c, 2, BigDecimal.ROUND_HALF_UP);
|
|
|
BigDecimal multiply = bigDecimal.multiply(new BigDecimal(100));
|
|
|
- maintenanceWorkerVo.setTimeOut(multiply+"%");
|
|
|
+ maintenanceWorkerVo.setTimeOut(multiply + "%");
|
|
|
}
|
|
|
|
|
|
// 平均维修时间
|
|
|
Long aLong = maintainMap.get(id);
|
|
|
BigDecimal bigDecimal = new BigDecimal(aLong);
|
|
|
- BigDecimal maintain = bigDecimal.divide(b,2,BigDecimal.ROUND_HALF_UP);
|
|
|
+ BigDecimal maintain = bigDecimal.divide(b, 2, BigDecimal.ROUND_HALF_UP);
|
|
|
maintenanceWorkerVo.setMaintain(maintain);
|
|
|
|
|
|
// 平均响应时长
|
|
|
@@ -2833,41 +2974,40 @@ public class RepairRecordController implements RepairRecordControllerAPI {
|
|
|
BigDecimal bigDecimal1 = new BigDecimal(aLong1);
|
|
|
List<Integer> integers = sendCountMap.get(id);
|
|
|
BigDecimal bigDecimal2 = new BigDecimal(integers.size());
|
|
|
- BigDecimal send = bigDecimal1.divide(bigDecimal2,2,BigDecimal.ROUND_HALF_UP);
|
|
|
+ BigDecimal send = bigDecimal1.divide(bigDecimal2, 2, BigDecimal.ROUND_HALF_UP);
|
|
|
maintenanceWorkerVo.setAnswer(send);
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
// 总费用
|
|
|
- LambdaQueryWrapper<RepairRecord> recordWrapper=new LambdaQueryWrapper<>();
|
|
|
- recordWrapper.in(RepairRecord::getId,recordsList);
|
|
|
+ LambdaQueryWrapper<RepairRecord> recordWrapper = new LambdaQueryWrapper<>();
|
|
|
+ recordWrapper.in(RepairRecord::getId, recordsList);
|
|
|
|
|
|
List<RepairRecord> list = repairRecordService.list(recordWrapper);
|
|
|
- BigDecimal totalPrice=new BigDecimal(0);
|
|
|
+ BigDecimal totalPrice = new BigDecimal(0);
|
|
|
for (RepairRecord repairRecord : list) {
|
|
|
BigDecimal price = repairRecord.getPrice();
|
|
|
if (ObjectUtils.isNotEmpty(price)) {
|
|
|
- totalPrice=totalPrice.add(price);
|
|
|
+ totalPrice = totalPrice.add(price);
|
|
|
}
|
|
|
}
|
|
|
maintenanceWorkerVo.setTotalPrice(totalPrice);
|
|
|
|
|
|
// 好评率
|
|
|
- LambdaQueryWrapper<RepairEvaluate> evaluateWrapper=new LambdaQueryWrapper<>();
|
|
|
- evaluateWrapper.in(RepairEvaluate::getRecordId,recordsList);
|
|
|
+ LambdaQueryWrapper<RepairEvaluate> evaluateWrapper = new LambdaQueryWrapper<>();
|
|
|
+ evaluateWrapper.in(RepairEvaluate::getRecordId, recordsList);
|
|
|
// 根据工单id来查询对应的评价
|
|
|
List<RepairEvaluate> repairEvaluates = repairEvaluateService.list(evaluateWrapper);
|
|
|
BigDecimal evaluatesDecimal = new BigDecimal(repairEvaluates.size());
|
|
|
- BigDecimal satisfaction=new BigDecimal(0);
|
|
|
+ BigDecimal satisfaction = new BigDecimal(0);
|
|
|
for (RepairEvaluate repairEvaluate : repairEvaluates) {
|
|
|
Integer star = repairEvaluate.getStar();
|
|
|
- if (star>3) {
|
|
|
- satisfaction=satisfaction.add(new BigDecimal(1));
|
|
|
+ if (star > 3) {
|
|
|
+ satisfaction = satisfaction.add(new BigDecimal(1));
|
|
|
}
|
|
|
}
|
|
|
- BigDecimal degreePraise = satisfaction.divide(evaluatesDecimal,2,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100));
|
|
|
- maintenanceWorkerVo.setDegreePraise(degreePraise+"%");
|
|
|
+ BigDecimal degreePraise = satisfaction.divide(evaluatesDecimal, 2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100));
|
|
|
+ maintenanceWorkerVo.setDegreePraise(degreePraise + "%");
|
|
|
|
|
|
|
|
|
vos.add(maintenanceWorkerVo);
|
|
|
@@ -2891,29 +3031,29 @@ public class RepairRecordController implements RepairRecordControllerAPI {
|
|
|
for (int i = 0; i < vos.size(); i++) {
|
|
|
MaintenanceWorkerVo vo = vos.get(i);
|
|
|
Row dataRow1 = sheet.createRow(i + 1);
|
|
|
- dataRow1.createCell(0).setCellValue(i+1);
|
|
|
+ dataRow1.createCell(0).setCellValue(i + 1);
|
|
|
dataRow1.createCell(1).setCellValue(vo.getSchoolName());
|
|
|
dataRow1.createCell(2).setCellValue(vo.getName());
|
|
|
dataRow1.createCell(3).setCellValue(vo.getWorkOrderTotal());
|
|
|
- dataRow1.createCell(4).setCellValue( vo.getDegreePraise());
|
|
|
- dataRow1.createCell(5).setCellValue( vo.getTimeOut());
|
|
|
+ dataRow1.createCell(4).setCellValue(vo.getDegreePraise());
|
|
|
+ dataRow1.createCell(5).setCellValue(vo.getTimeOut());
|
|
|
BigDecimal answer = vo.getAnswer();
|
|
|
if (ObjectUtils.isEmpty(answer)) {
|
|
|
- answer=new BigDecimal(0);
|
|
|
+ answer = new BigDecimal(0);
|
|
|
}
|
|
|
dataRow1.createCell(6).setCellValue(answer.toString());
|
|
|
BigDecimal maintain = vo.getMaintain();
|
|
|
if (ObjectUtils.isEmpty(maintain)) {
|
|
|
- maintain=new BigDecimal(0);
|
|
|
+ maintain = new BigDecimal(0);
|
|
|
}
|
|
|
|
|
|
dataRow1.createCell(7).setCellValue(maintain.toString());
|
|
|
|
|
|
BigDecimal totalPrice = vo.getTotalPrice();
|
|
|
if (ObjectUtils.isEmpty(totalPrice)) {
|
|
|
- totalPrice=new BigDecimal(0);
|
|
|
+ totalPrice = new BigDecimal(0);
|
|
|
}
|
|
|
- dataRow1.createCell(8).setCellValue( totalPrice.toString());
|
|
|
+ dataRow1.createCell(8).setCellValue(totalPrice.toString());
|
|
|
|
|
|
}
|
|
|
// 将工作簿写入文件
|
|
|
@@ -2934,14 +3074,13 @@ public class RepairRecordController implements RepairRecordControllerAPI {
|
|
|
String startTime = DateUtils.startTime(state);
|
|
|
String endTime = DateUtils.endTime();
|
|
|
|
|
|
-
|
|
|
-
|
|
|
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 报修趋势
|
|
|
+ *
|
|
|
* @param state
|
|
|
* @return
|
|
|
* @throws Exception
|