Browse Source

2023年8月29日17:49:45

纪新园 2 years ago
parent
commit
1374c52e27

+ 2 - 0
blade-service-api/blade-client-api/src/main/java/org/springblade/client/entity/CorpEquipmentArchives.java

@@ -16,6 +16,7 @@
  */
 package org.springblade.client.entity;
 
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
@@ -130,6 +131,7 @@ public class CorpEquipmentArchives implements Serializable {
 	@ApiModelProperty(value = "报修日期")
 	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
 	@DateTimeFormat(pattern = "yyyy-MM-dd")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Date repairReportDate;
 
 	@TableField(exist = false)

+ 16 - 0
blade-service-api/blade-client-api/src/main/java/org/springblade/client/entity/CorpEquipmentArchivesItem.java

@@ -16,11 +16,14 @@
  */
 package org.springblade.client.entity;
 
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.io.Serializable;
 import java.util.Date;
@@ -94,6 +97,9 @@ public class CorpEquipmentArchivesItem implements Serializable {
 	 * 报修日期
 	 */
 	@ApiModelProperty(value = "报修日期")
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+	@DateTimeFormat(pattern = "yyyy-MM-dd")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Date repairReportDate;
 	/**
 	 * 备注(收费指示)
@@ -146,10 +152,20 @@ public class CorpEquipmentArchivesItem implements Serializable {
 	/**
 	 * 保养日期
 	 */
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+	@DateTimeFormat(pattern = "yyyy-MM-dd")
 	@ApiModelProperty(value = "保养日期")
 	private Date maintenanceDate;
 
 	/**
+	 * 安装日期
+	 */
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+	@DateTimeFormat(pattern = "yyyy-MM-dd")
+	@ApiModelProperty(value = "安装日期")
+	private Date installDate;
+
+	/**
 	 * 工厂
 	 */
 	@ApiModelProperty(value = "工厂")

+ 7 - 1
blade-service-api/blade-client-api/src/main/java/org/springblade/client/feign/ICorpsArchivesClient.java

@@ -18,9 +18,15 @@ public interface ICorpsArchivesClient {
 
 	String API_PREFIX = "/client";
 	String UPDATE_ARCHIVES = API_PREFIX + "/corpequipmentarchives/updateArchives";
+	String UPDATE_ARCHIVES_REVOKE = API_PREFIX + "/corpequipmentarchives/updateArchivesRevoke";
 
 	@GetMapping(UPDATE_ARCHIVES)
 	R updateArchives(@RequestParam("archivesId") String archivesId,
-					 @RequestParam("date") Date date,
+					 @RequestParam("date") String date,
+					 @RequestParam("deviceId") String deviceId);
+
+	@GetMapping(UPDATE_ARCHIVES_REVOKE)
+	R updateArchivesRevoke(@RequestParam("archivesId") String archivesId,
+					 @RequestParam("date") String date,
 					 @RequestParam("deviceId") String deviceId);
 }

+ 4 - 1
blade-service-api/blade-client-api/src/main/java/org/springblade/client/feign/IWechatClient.java

@@ -30,7 +30,7 @@ public interface IWechatClient {
 	List<Map<String, String>> getAllUnionIds();
 
 	/**
-	 * 发布标书推送消息
+	 * maintenance推送消息
 	 */
 	@GetMapping(API_NEW_PUSH)
 	String newsPush(@RequestParam("unionId") String unionId,
@@ -64,10 +64,13 @@ public interface IWechatClient {
 	 */
 	@GetMapping(SEND_MESSAGE)
 	String sendMessage (@RequestParam("openid") String openid,
+						@RequestParam("title") String title,
+						@RequestParam("projectName") String projectName,
 						  @RequestParam("date") String date,
 						  @RequestParam("name") String name,
 						  @RequestParam("device") String device,
 						  @RequestParam("tel") String tel,
+						  @RequestParam("telW") String telW,
 						  @RequestParam("deviceDescription") String deviceDescription,
 						  @RequestParam("amount") BigDecimal amount,
 						@RequestParam("type") String type

+ 5 - 1
blade-service/blade-client/src/main/java/org/springblade/client/equipment/controller/CorpEquipmentArchivesController.java

@@ -20,6 +20,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import io.seata.spring.annotation.GlobalTransactional;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -37,6 +38,7 @@ import org.springblade.core.mp.support.Query;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
@@ -148,6 +150,8 @@ public class CorpEquipmentArchivesController extends BladeController {
 	@PostMapping("/remove")
 	@ApiOperationSupport(order = 8)
 	@ApiOperation(value = "删除", notes = "传入ids")
+	@Transactional(rollbackFor = Exception.class)
+	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
 	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
 		if (ObjectUtils.isNotNull(ids)) {
 			String[] arrs = ids.split(",");
@@ -203,7 +207,7 @@ public class CorpEquipmentArchivesController extends BladeController {
 
 	@GetMapping("/updateArchives")
 	public R updateArchives(@RequestParam("archivesId") String archivesId,
-							@RequestParam("date") Date date,
+							@RequestParam("date") String date,
 							@RequestParam("deviceId") String deviceId) {
 		return corpEquipmentArchivesService.updateArchives(archivesId,date,deviceId);
 	}

+ 6 - 1
blade-service/blade-client/src/main/java/org/springblade/client/equipment/fegin/CorpsArchivesClient.java

@@ -21,7 +21,12 @@ public class CorpsArchivesClient implements ICorpsArchivesClient {
 	private final ICorpEquipmentArchivesService corpEquipmentArchivesService;
 
 	@Override
-	public R updateArchives(String archivesId, Date date, String deviceId) {
+	public R updateArchives(String archivesId, String date, String deviceId) {
 		return corpEquipmentArchivesService.updateArchives(archivesId, date, deviceId);
 	}
+
+	@Override
+	public R updateArchivesRevoke(String archivesId, String date, String deviceId) {
+		return corpEquipmentArchivesService.updateArchivesRevoke(archivesId, date, deviceId);
+	}
 }

+ 3 - 1
blade-service/blade-client/src/main/java/org/springblade/client/equipment/service/ICorpEquipmentArchivesService.java

@@ -49,5 +49,7 @@ public interface ICorpEquipmentArchivesService extends IService<CorpEquipmentArc
 
 	List<CorpEquipmentArchivesExcel> exportOutInfo(CorpEquipmentArchives corpEquipmentArchives);
 
-	R updateArchives(String archivesId, Date date,String deviceId);
+	R updateArchives(String archivesId, String date,String deviceId);
+
+	R updateArchivesRevoke(String archivesId, String date, String deviceId);
 }

+ 53 - 5
blade-service/blade-client/src/main/java/org/springblade/client/equipment/service/impl/CorpEquipmentArchivesServiceImpl.java

@@ -42,6 +42,8 @@ import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
 import java.io.File;
 import java.io.IOException;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -210,6 +212,10 @@ public class CorpEquipmentArchivesServiceImpl extends ServiceImpl<CorpEquipmentA
 			}
 		}
 		if (filesList.size() > 0) {
+			long count = filesList.stream().filter(e -> "0".equals(e.getVersion())).count();
+			if (count > 1) {
+				throw new RuntimeException("存在多个主图,操作失败");
+			}
 			corpEquipmentArchivesFilesService.saveOrUpdateBatch(filesList);
 		}
 		return R.data(corpEquipmentArchives);
@@ -221,25 +227,67 @@ public class CorpEquipmentArchivesServiceImpl extends ServiceImpl<CorpEquipmentA
 	}
 
 	@Override
-	public R updateArchives(String archivesId, Date date, String deviceId) {
+	@Transactional(rollbackFor = Exception.class)
+	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
+	public R updateArchives(String archivesId, String date, String deviceId) {
 		if (ObjectUtils.isNull(archivesId)) {
 			throw new RuntimeException("缺少必要参数");
 		}
 		CorpEquipmentArchives corpEquipmentArchives = baseMapper.selectById(archivesId);
+		Date date1 = null;
 		if (ObjectUtils.isNull(date)) {
-			date = new Date();
+			date1 = new Date();
+		} else {
+			SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+			try {
+				date1 = format.parse(date);
+			} catch (ParseException e) {
+				e.printStackTrace();
+			}
+		}
+		corpEquipmentArchives.setRepairReportDate(date1);
+		if (ObjectUtils.isNotNull(corpEquipmentArchives.getMaintenanceSecond())) {
+			corpEquipmentArchives.setMaintenanceSecond(corpEquipmentArchives.getMaintenanceSecond() + 1);
+		} else {
+			corpEquipmentArchives.setMaintenanceSecond(1);
 		}
-		corpEquipmentArchives.setRepairReportDate(date);
-		corpEquipmentArchives.setMaintenanceSecond(1 + (corpEquipmentArchives.getMaintenanceSecond() == null ? 0 : corpEquipmentArchives.getMaintenanceSecond()));
 		CorpEquipmentArchivesItem corpEquipmentArchivesItem = corpEquipmentArchivesItemService.getOne(new LambdaQueryWrapper<CorpEquipmentArchivesItem>()
 			.eq(CorpEquipmentArchivesItem::getPid, archivesId)
 			.eq(CorpEquipmentArchivesItem::getId, deviceId)
 			.eq(CorpEquipmentArchivesItem::getIsDeleted, 0));
 		if (ObjectUtils.isNotNull(corpEquipmentArchivesItem)) {
 			corpEquipmentArchivesItem.setMaintenanceSecond(1 + (corpEquipmentArchivesItem.getMaintenanceSecond() == null ? 0 : corpEquipmentArchivesItem.getMaintenanceSecond()));
-			corpEquipmentArchivesItem.setRepairReportDate(date);
+			corpEquipmentArchivesItem.setRepairReportDate(date1);
+			corpEquipmentArchivesItemService.updateById(corpEquipmentArchivesItem);
+		}
+		baseMapper.updateById(corpEquipmentArchives);
+		return R.data("操作成功");
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
+	public R updateArchivesRevoke(String archivesId, String date, String deviceId) {
+		if (ObjectUtils.isNull(archivesId)) {
+			throw new RuntimeException("缺少必要参数");
+		}
+		CorpEquipmentArchives corpEquipmentArchives = baseMapper.selectById(archivesId);
+		corpEquipmentArchives.setRepairReportDate(null);
+		if (ObjectUtils.isNotNull(corpEquipmentArchives.getMaintenanceSecond())) {
+			corpEquipmentArchives.setMaintenanceSecond(corpEquipmentArchives.getMaintenanceSecond() - 1);
+		} else {
+			corpEquipmentArchives.setMaintenanceSecond(0);
+		}
+		CorpEquipmentArchivesItem corpEquipmentArchivesItem = corpEquipmentArchivesItemService.getOne(new LambdaQueryWrapper<CorpEquipmentArchivesItem>()
+			.eq(CorpEquipmentArchivesItem::getPid, archivesId)
+			.eq(CorpEquipmentArchivesItem::getId, deviceId)
+			.eq(CorpEquipmentArchivesItem::getIsDeleted, 0));
+		if (ObjectUtils.isNotNull(corpEquipmentArchivesItem)) {
+			corpEquipmentArchivesItem.setMaintenanceSecond((corpEquipmentArchivesItem.getMaintenanceSecond() == null ? 0 : corpEquipmentArchivesItem.getMaintenanceSecond()) - 1);
+			corpEquipmentArchivesItem.setRepairReportDate(null);
 			corpEquipmentArchivesItemService.updateById(corpEquipmentArchivesItem);
 		}
+		baseMapper.updateById(corpEquipmentArchives);
 		return R.data("操作成功");
 	}
 

+ 6 - 8
blade-service/blade-client/src/main/java/org/springblade/client/wechat/feign/WechatClient.java

@@ -149,7 +149,7 @@ public class WechatClient implements IWechatClient {
 	}
 
 	@Override
-	public String sendMessage(String openid, String date, String name, String device, String tel,
+	public String sendMessage(String openid, String title,String projectName, String date, String name, String device, String tel,String telW,
 							  String deviceDescription, BigDecimal amount, String type) {
 		WechatMessageTemplate wechatMessageTemplate = wechatMessageTemplateService.getOne(new LambdaQueryWrapper<WechatMessageTemplate>()
 			.eq(WechatMessageTemplate::getIsDeleted, 0)
@@ -166,13 +166,11 @@ public class WechatClient implements IWechatClient {
 		wxMpService.setWxMpConfigStorage(wxStorage);
 
 		List<WxMpTemplateData> data = Arrays.asList(
-			new WxMpTemplateData("first", "恭喜中标,合作愉快!"),
-			new WxMpTemplateData("keyword1", date),
-			new WxMpTemplateData("keyword2", name),
-			new WxMpTemplateData("keyword3", device),
-			new WxMpTemplateData("keyword4", deviceDescription),
-			new WxMpTemplateData("keyword5", tel),
-			new WxMpTemplateData("remark", "感谢您的使用。")
+			new WxMpTemplateData("first", title),
+			new WxMpTemplateData("keyword1", name + "/" + tel),
+			new WxMpTemplateData("keyword2", projectName),
+			new WxMpTemplateData("keyword3", date),
+			new WxMpTemplateData("keyword4", telW)
 		);
 		//2,推送消息
 		WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder()

+ 4 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/maintenance/controller/MaintenanceController.java

@@ -20,6 +20,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import io.seata.spring.annotation.GlobalTransactional;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -37,6 +38,7 @@ import org.springblade.salesPart.maintenance.entity.MaintenanceFees;
 import org.springblade.salesPart.maintenance.service.IMaintenanceFeesService;
 import org.springblade.salesPart.maintenance.service.IMaintenanceService;
 import org.springblade.salesPart.maintenance.vo.MaintenanceVO;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
@@ -194,6 +196,8 @@ public class MaintenanceController extends BladeController {
 	@PostMapping("/remove")
 	@ApiOperationSupport(order = 8)
 	@ApiOperation(value = "删除", notes = "传入ids")
+	@Transactional(rollbackFor = Exception.class)
+	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
 	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
 		if (ObjectUtils.isNotNull(ids)) {
 			String[] arrs = ids.split(",");

+ 50 - 9
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/maintenance/service/impl/MaintenanceServiceImpl.java

@@ -25,10 +25,7 @@ import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springblade.client.entity.FeesDesc;
 import org.springblade.client.entity.Message;
-import org.springblade.client.feign.ICorpsArchivesClient;
-import org.springblade.client.feign.IFeesDescClient;
-import org.springblade.client.feign.IMessageClient;
-import org.springblade.client.feign.ISerialClient;
+import org.springblade.client.feign.*;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.finance.dto.ApplyDTO;
@@ -56,6 +53,7 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
 import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -105,6 +103,8 @@ public class MaintenanceServiceImpl extends ServiceImpl<MaintenanceMapper, Maint
 	//财务
 	private final IFinanceClient financeClient;
 
+	private final IWechatClient wechatClient;
+
 	@Override
 	public IPage<MaintenanceVO> selectMaintenancePage(IPage<MaintenanceVO> page, MaintenanceVO maintenance) {
 		return page.setRecords(baseMapper.selectMaintenancePage(page, maintenance));
@@ -195,6 +195,13 @@ public class MaintenanceServiceImpl extends ServiceImpl<MaintenanceMapper, Maint
 		maintenanceLog.setCreateUserName(AuthUtil.getUserName());
 		maintenanceLog.setType("设备报修");
 		maintenanceLogService.save(maintenanceLog);
+		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+		String date = "";
+		if (ObjectUtils.isNotNull(maintenance.getRepairReportDate())) {
+			date = format.format(maintenance.getRepairReportDate());
+		}
+//		wechatClient.sendMessage("o9USS6462dtxKR9dCrqxZTrAsm5o", "报修通知", "设备报修", date, maintenance.getCorpName(), maintenance.getDeviceName(),
+//			maintenance.getCorpTel(), maintenance.getMaintenanceWorkerTel(), maintenance.getDeviceDescribe(), maintenance.getMaintenanceAmount(), "1");
 		return R.data(maintenance);
 	}
 
@@ -242,6 +249,8 @@ public class MaintenanceServiceImpl extends ServiceImpl<MaintenanceMapper, Maint
 		maintenanceLog.setCreateUserName(AuthUtil.getUserName());
 		maintenanceLog.setType("已派工");
 		maintenanceLogService.save(maintenanceLog);
+		//		wechatClient.sendMessage("o9USS6462dtxKR9dCrqxZTrAsm5o", "派工通知", "设备报修", date, maintenance.getCorpName(), maintenance.getDeviceName(),
+//			maintenance.getCorpTel(), maintenance.getMaintenanceWorkerTel(), maintenance.getDeviceDescribe(), maintenance.getMaintenanceAmount(), "1");
 		return R.data(maintenance);
 	}
 
@@ -292,6 +301,9 @@ public class MaintenanceServiceImpl extends ServiceImpl<MaintenanceMapper, Maint
 		maintenanceLog.setCreateUserName(AuthUtil.getUserName());
 		maintenanceLog.setType("已撤销");
 		maintenanceLogService.save(maintenanceLog);
+		//		wechatClient.sendMessage("o9USS6462dtxKR9dCrqxZTrAsm5o", "撤销派工通知", "设备报修", date, maintenance.getCorpName(), maintenance.getDeviceName(),
+//			maintenance.getCorpTel(), maintenance.getMaintenanceWorkerTel(), maintenance.getDeviceDescribe(), maintenance.getMaintenanceAmount(), "1");
+
 		return R.data(maintenance);
 	}
 
@@ -335,6 +347,9 @@ public class MaintenanceServiceImpl extends ServiceImpl<MaintenanceMapper, Maint
 		maintenanceLog.setCreateUserName(AuthUtil.getUserName());
 		maintenanceLog.setType("确认接单");
 		maintenanceLogService.save(maintenanceLog);
+		//		wechatClient.sendMessage("o9USS6462dtxKR9dCrqxZTrAsm5o", "接单通知", "设备报修", date, maintenance.getCorpName(), maintenance.getDeviceName(),
+//			maintenance.getCorpTel(), maintenance.getMaintenanceWorkerTel(), maintenance.getDeviceDescribe(), maintenance.getMaintenanceAmount(), "1");
+
 		return R.data(maintenance);
 	}
 
@@ -360,6 +375,8 @@ public class MaintenanceServiceImpl extends ServiceImpl<MaintenanceMapper, Maint
 	}
 
 	@Override
+	@Transactional(rollbackFor = Exception.class)
+	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
 	public R submitWX(Maintenance maintenance) {
 		maintenance.setCreateTime(new Date());
 		maintenance.setCreateUserName(AuthUtil.getUserName());
@@ -394,6 +411,8 @@ public class MaintenanceServiceImpl extends ServiceImpl<MaintenanceMapper, Maint
 	}
 
 	@Override
+	@Transactional(rollbackFor = Exception.class)
+	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
 	public R payPrepay(Maintenance maintenance, int type) {
 		if (null == maintenance) {
 			throw new RuntimeException("未找到订单信息,订单已取消");
@@ -483,6 +502,8 @@ public class MaintenanceServiceImpl extends ServiceImpl<MaintenanceMapper, Maint
 	}
 
 	@Override
+	@Transactional(rollbackFor = Exception.class)
+	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
 	public R confirmFees(Maintenance maintenance) {
 		if (maintenance.getId() == null) {
 			throw new RuntimeException("缺少必要参数");
@@ -523,7 +544,12 @@ public class MaintenanceServiceImpl extends ServiceImpl<MaintenanceMapper, Maint
 		maintenance.setUpdateUser(AuthUtil.getUserId());
 		maintenance.setUpdateUserName(AuthUtil.getUserName());
 		baseMapper.updateById(maintenance);
-		corpsArchivesClient.updateArchives(maintenance.getArchivesId() + "", maintenance.getRepairReportDate(), maintenance.getDeviceId() + "");
+		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+		String date = "";
+		if (ObjectUtils.isNotNull(maintenance.getRepairReportDate())) {
+			date = format.format(maintenance.getRepairReportDate());
+		}
+		corpsArchivesClient.updateArchives(maintenance.getArchivesId() + "", date, maintenance.getDeviceId() + "");
 		MaintenanceLog maintenanceLog = new MaintenanceLog();
 		maintenanceLog.setSysNo(maintenance.getSysNo());
 		maintenanceLog.setSrcId(maintenance.getId());
@@ -532,6 +558,9 @@ public class MaintenanceServiceImpl extends ServiceImpl<MaintenanceMapper, Maint
 		maintenanceLog.setCreateUserName(AuthUtil.getUserName());
 		maintenanceLog.setType("费用确认");
 		maintenanceLogService.save(maintenanceLog);
+		//		wechatClient.sendMessage("o9USS6462dtxKR9dCrqxZTrAsm5o", "待支付通知", "设备报修", date, maintenance.getCorpName(), maintenance.getDeviceName(),
+//			maintenance.getCorpTel(), maintenance.getMaintenanceWorkerTel(), maintenance.getDeviceDescribe(), maintenance.getMaintenanceAmount(), "1");
+
 		return R.data(maintenance);
 	}
 
@@ -597,6 +626,8 @@ public class MaintenanceServiceImpl extends ServiceImpl<MaintenanceMapper, Maint
 	}
 
 	@Override
+	@Transactional(rollbackFor = Exception.class)
+	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
 	public R scanPay(Maintenance maintenance) {
 		if (maintenance.getId() == null) {
 			throw new RuntimeException("缺少必要参数");
@@ -616,16 +647,26 @@ public class MaintenanceServiceImpl extends ServiceImpl<MaintenanceMapper, Maint
 	}
 
 	@Override
+	@Transactional(rollbackFor = Exception.class)
+	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
 	public R revokeConfirmFees(Maintenance maintenance) {
 		if (maintenance.getId() == null) {
 			throw new RuntimeException("缺少必要参数");
 		}
 		Acc acc = financeClient.selectBySrcId(maintenance.getId());
-		if (ObjectUtils.isNotNull(acc) && (new BigDecimal("0.00").compareTo(acc.getSettlementAmount()) == 0 || ObjectUtils.isNull(acc.getSettlementAmount()))){
-			financeClient.deleteBySrcId(maintenance.getId());
-		}else {
-			throw new RuntimeException("账单已结算,撤销失败");
+		if (ObjectUtils.isNotNull(acc)) {
+			if (ObjectUtils.isNotNull(acc) && (new BigDecimal("0.00").compareTo(acc.getSettlementAmount()) == 0 || ObjectUtils.isNull(acc.getSettlementAmount()))) {
+				financeClient.deleteBySrcId(maintenance.getId());
+			} else {
+				throw new RuntimeException("账单已结算,撤销失败");
+			}
+		}
+		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+		String date = "";
+		if (ObjectUtils.isNotNull(maintenance.getRepairReportDate())) {
+			date = format.format(maintenance.getRepairReportDate());
 		}
+		corpsArchivesClient.updateArchivesRevoke(maintenance.getArchivesId() + "", date, maintenance.getDeviceId() + "");
 		maintenance.setStatus(3);
 		maintenance.setUpdateTime(new Date());
 		maintenance.setUpdateUser(AuthUtil.getUserId());