提交 03da8287 authored 作者: zhoushaopan's avatar zhoushaopan

fix(自查模块): 修改了系统发起自动完成的自查任务

修改了系统发起自动完成的自查任务
上级 49802d35
......@@ -1209,7 +1209,7 @@ public class AllotBillController {
packingLibraryService.addAllotPacking(newPackingLibrary);
packingLibraryMap.put(newPackingLibrary.getModel() + newPackingLibrary.getName() + newPackingLibrary.getMatchingRange(), newPackingLibrary);
List<PackingLibrary> packingLibraryList = packingLibraryService.getAllByPartPackingId(packingLibrary.getId());
if (packingLibraryList != null || packingLibraryList.size() != 0) {
if (packingLibraryList != null && packingLibraryList.size() != 0) {
packingLibraryList.forEach(packingLibrary1 -> {
getPackingLibrary2(packingLibrary1, newPackingLibrary.getId(), matchingRange, packingLibraryMap);
});
......
......@@ -93,7 +93,7 @@ public class AllotBillServiceImpl implements AllotBillService {
//异步上链
//延迟2s防止同时写入
sendText(allotBill.getId());
// sendText(allotBill.getId());
return allotBill;
}
......@@ -117,7 +117,7 @@ public class AllotBillServiceImpl implements AllotBillService {
AllotBill allotBill = allotBillDao.save(allotBillEntity);
//根据recordId追加上链
// CompletableFuture.runAsync(() -> blockChainUtil.appendHash(JacksonUtil.toJSon(allotBill), allotBill.getRecordId()),TaskBeanConfig.getThreadPoolTaskScheduler());
sendText(allotBill.getId());
// sendText(allotBill.getId());
return allotBill;
}
......
......@@ -49,36 +49,36 @@ public class BlockServiceImpl implements BlockService {
@Override
public void sendText( Integer subCode, String content,Integer billType,Integer billId,String unitName) {
SortedMap<Object, Object> request = getRequest();
request.put("systemId", systemId);
request.put("subCode", subCode);
request.put("content", content);
try {
BcText bcText = new RestTemplate().postForObject(
IP + ApI.CO_SEND_TEXT,
request,
BcText.class);
if (bcText.getCode() == 0) {
BlockData billTypeAndBillId = blockDataService.findBillTypeAndBillId(billType, billId);
if (billTypeAndBillId.getId()!=null){
billTypeAndBillId.setRecordID(bcText.getData().getRecordID());
blockDataService.saveBlockData(billTypeAndBillId);
}else {
blockDataService.saveBlockData(BlockData.builder()
.billId(billId)
.unitName(unitName)
.billType(billType)
.recordID(bcText.getData().getRecordID()).build());
}
}else {
throw new ApiException(bcText.getInfo());
}
}catch (Exception e){
log.error("错误:{}",e.getLocalizedMessage());
log.info("上链失败");
}
// SortedMap<Object, Object> request = getRequest();
// request.put("systemId", systemId);
// request.put("subCode", subCode);
// request.put("content", content);
// try {
// BcText bcText = new RestTemplate().postForObject(
// IP + ApI.CO_SEND_TEXT,
// request,
// BcText.class);
//
// if (bcText.getCode() == 0) {
// BlockData billTypeAndBillId = blockDataService.findBillTypeAndBillId(billType, billId);
// if (billTypeAndBillId.getId()!=null){
// billTypeAndBillId.setRecordID(bcText.getData().getRecordID());
// blockDataService.saveBlockData(billTypeAndBillId);
// }else {
// blockDataService.saveBlockData(BlockData.builder()
// .billId(billId)
// .unitName(unitName)
// .billType(billType)
// .recordID(bcText.getData().getRecordID()).build());
// }
// }else {
//
// throw new ApiException(bcText.getInfo());
// }
// }catch (Exception e){
// log.error("错误:{}",e.getLocalizedMessage());
// log.info("上链失败");
// }
}
@Override
......
//package com.tykj.dev.device.repair.init;
//
//import com.tykj.dev.device.repair.repository.RepairBillDao;
//import com.tykj.dev.device.repair.repository.RepairDetailDao;
//import com.tykj.dev.device.repair.repository.RepairSendBillDao;
//import com.tykj.dev.device.repair.subject.domin.RepairBill;
//import com.tykj.dev.device.repair.subject.domin.RepairSendBill;
//import com.tykj.dev.device.repair.subject.vo.RepairDetailStatVO;
//import lombok.Data;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.stereotype.Component;
//import javax.annotation.PostConstruct;
//import javax.annotation.Resource;
//import java.util.Map;
//import java.util.function.Function;
//import java.util.stream.Collectors;
//
///**
// * @author: zsp
// * @create: 2023-12-06 15:29
// **/
//@Component
//@Slf4j
//@Data
//public class InitRepair {
//
// @Resource
// private RepairBillDao repairBillDao;
//
// @Resource
// private RepairSendBillDao repairSendBillDao;
//
// @Resource
// private RepairDetailDao repairDetailDao;
//
// public Map<Integer,Integer> repairDetailStatMap;
//
// public Map<Integer, RepairSendBill> repairSendBillStatMap;
//
// @PostConstruct
// public void init(){
//
// repairDetailStatMap = repairDetailDao.findAllRepairDetailStat()
// .stream()
// .collect(Collectors.toMap(RepairDetailStatVO::getRepairBackBillId, RepairDetailStatVO::getDeviceRepairBillId));
//
// repairSendBillStatMap = repairSendBillDao.findAll()
// .stream()
// .collect(Collectors.toMap(RepairSendBill::getDeviceRepairBillId, Function.identity()));
//
// }
//}
package com.tykj.dev.device.repair.repository;
import com.tykj.dev.device.repair.subject.domin.RepairDetail;
import com.tykj.dev.device.repair.subject.vo.RepairDetailStatVO;
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
......@@ -52,4 +53,7 @@ public interface RepairDetailDao extends JpaRepository<RepairDetail, Integer>, J
@Modifying
@Query("update RepairDetail r set r.remark = :remake where r.id in :repairDetailIds")
void updateRemakeForClear(@Param("remake") String remake,@Param("repairDetailIds") List<Integer> repairDetailIds);
@Query(value = "select new com.tykj.dev.device.repair.subject.vo.RepairDetailStatVO(t.deviceRepairBillId,t.repairBackBillId) from RepairDetail t where t.deleteTag = 0")
List<RepairDetailStatVO> findAllRepairDetailStat();
}
package com.tykj.dev.device.repair.service;
import com.tykj.dev.device.repair.subject.vo.RepairStatVO;
import java.util.Map;
/**
* @author: zsp
* @create: 2023-12-06 14:04
**/
public interface RepairStatService {
/**
* 统计维修
* @param repairStatVO
* @return
*/
Map<String, Object> getRepairStat(RepairStatVO repairStatVO);
}
package com.tykj.dev.device.repair.service.impl;
import com.fasterxml.jackson.core.type.TypeReference;
import com.github.wenhao.jpa.PredicateBuilder;
import com.github.wenhao.jpa.Specifications;
import com.tykj.dev.device.library.subject.vo.ScriptSaveVo;
import com.tykj.dev.device.repair.repository.RepairBackBillDao;
import com.tykj.dev.device.repair.repository.RepairBillDao;
import com.tykj.dev.device.repair.repository.RepairDetailDao;
import com.tykj.dev.device.repair.repository.RepairSendBillDao;
import com.tykj.dev.device.repair.service.RepairStatService;
import com.tykj.dev.device.repair.subject.domin.RepairBackBill;
import com.tykj.dev.device.repair.subject.domin.RepairSendBill;
import com.tykj.dev.device.repair.subject.vo.RepairStatVO;
import com.tykj.dev.device.repair.subject.vo.RepairTimeVO;
import com.tykj.dev.misc.utils.JacksonUtil;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* @author: zsp
* @create: 2023-12-06 14:04
**/
@Service
public class RepairStatServiceImpl implements RepairStatService {
@Resource
private RepairDetailDao repositoryDetailDao;
@Resource
private RepairBillDao repairBillDao;
@Resource
private RepairSendBillDao repairSendBillDao;
@Resource
private RepairBackBillDao repairBackBillDao;
@Override
public Map<String, Object> getRepairStat(RepairStatVO repairStatVO) {
Date startTime = repairStatVO.getStartTime();
Date endTime = repairStatVO.getEndTime();
PredicateBuilder<RepairSendBill> predicateBuilder = Specifications.and();
predicateBuilder.ge(startTime != null,"createTime",startTime);
predicateBuilder.le(endTime != null,"createTime",endTime);
//接收单位为中办
predicateBuilder.in("receiveUnitId",2);
List<RepairSendBill> sendBillList = repairSendBillDao.findAll(predicateBuilder.build());
if (sendBillList.size() > 0){
//1 维修设备总数
Integer deviceCount = sendBillList.stream()
.mapToInt(RepairSendBill::getSendedCount)
.sum();
//2 各型号设备维修量占比分布
List<ScriptSaveVo> allScripts = sendBillList.parallelStream()
.map(repairSendBill -> {
String scriptJson = repairSendBill.getScriptJson();
return JacksonUtil.readValue(scriptJson, new TypeReference<List<ScriptSaveVo>>() {
});
})
.filter(Objects::nonNull)
.flatMap(List::stream)
.collect(Collectors.toList());
//型号列表
Map<String, Long> map = allScripts.stream()
.collect(Collectors.groupingBy(ScriptSaveVo::getModel, Collectors.counting()));
Map<Integer, RepairSendBill> sendBillMap = sendBillList.parallelStream()
.collect(Collectors.toMap(RepairSendBill::getId, Function.identity()));
List<RepairTimeVO> repairTimes = new ArrayList<>();
sendBillMap.forEach((k,v)->{
String scriptJson = v.getScriptJson();
List<ScriptSaveVo> scriptSaveVos = JacksonUtil.readValue(scriptJson, new TypeReference<List<ScriptSaveVo>>() {
});
if (scriptSaveVos != null && scriptSaveVos.size() > 0){
scriptSaveVos.forEach(scriptSaveVo ->{
RepairTimeVO repairTimeVO = new RepairTimeVO();
repairTimeVO.setStartTime(v.getCreateTime());
repairTimeVO.setSeqNumber(scriptSaveVo.getSeqNumber());
repairTimes.add(repairTimeVO);
});
}
});
//repairTimes 转换成map
Map<String, RepairTimeVO> collect = repairTimes.stream()
.collect(Collectors.toMap(RepairTimeVO::getSeqNumber, Function.identity()));
//3 维修平均周期
PredicateBuilder<RepairBackBill> backBillPredicateBuilder = Specifications.and();
backBillPredicateBuilder.ge(startTime != null,"createTime",startTime);
backBillPredicateBuilder.le(endTime != null,"createTime",endTime);
//发起单位为中办
predicateBuilder.in("sendUnitId",2);
List<RepairBackBill> backBillList = repairBackBillDao.findAll(backBillPredicateBuilder.build());
//维修完成之后的zbJson的集合
Map<Integer, RepairBackBill> backBillMap = backBillList.parallelStream()
.collect(Collectors.toMap(RepairBackBill::getId, Function.identity()));
AtomicInteger deviceNum = new AtomicInteger();
//计算总时间
AtomicInteger deviceTime = new AtomicInteger();
backBillMap.forEach((k,v)->{
List<ScriptSaveVo> scriptSaveVos = JacksonUtil.readValue(v.getScriptJson(), new TypeReference<List<ScriptSaveVo>>() {
});
if (scriptSaveVos != null && scriptSaveVos.size() > 0){
List<String> list = scriptSaveVos.stream()
.map(ScriptSaveVo::getSeqNumber)
.collect(Collectors.toList());
list.forEach(s -> {
deviceNum.getAndIncrement();
RepairTimeVO repairTimeVO = collect.get(s);
//计算单个时间
int days = days(repairTimeVO.getStartTime(), v.getSendTime());
//将所有单个时间加一起
deviceTime.addAndGet(days);
});
}
});
}
return null;
}
/**
* 时间差 单位为天数
*/
public int days(Date startDate, Date endDate) {
try {
// 转换成yyyy-MM-dd格式
SimpleDateFormat dateFormatDay = new SimpleDateFormat("yyyy-MM-dd");
String startStr = dateFormatDay.format(startDate);
String endStr = dateFormatDay.format(endDate);
// 计算日期差异
Date start = dateFormatDay.parse(startStr);
Date end = dateFormatDay.parse(endStr);
long diffInMillies = Math.abs(end.getTime() - start.getTime());
long diff = TimeUnit.DAYS.convert(diffInMillies, TimeUnit.MILLISECONDS);
return (int) diff;
} catch (ParseException e) {
e.printStackTrace();
}
return 0;
}
}
package com.tykj.dev.device.repair.subject.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author: zsp
* @create: 2023-12-06 15:22
**/
@AllArgsConstructor
@NoArgsConstructor
@Data
@ApiModel("详情统计vo")
public class RepairDetailStatVO {
@ApiModelProperty(value = "维修单id")
private Integer deviceRepairBillId;
@ApiModelProperty(value = "领取单id")
private Integer repairBackBillId;
public RepairDetailStatVO(Integer deviceRepairBillId, Integer repairBackBillId) {
this.deviceRepairBillId = deviceRepairBillId;
this.repairBackBillId = repairBackBillId;
}
}
package com.tykj.dev.device.repair.subject.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
/**
* @author: zsp
* @create: 2023-12-06 14:05
**/
@AllArgsConstructor
@NoArgsConstructor
@Data
@ApiModel("维修统计vo")
public class RepairStatVO {
@ApiModelProperty(value = "开始时间")
private Date startTime;
@ApiModelProperty(value = "结束时间")
private Date endTime;
}
package com.tykj.dev.device.repair.subject.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
/**
* @author: zsp
* @create: 2023-12-06 16:37
**/
@AllArgsConstructor
@NoArgsConstructor
@Data
public class RepairTimeVO {
private Date startTime;
private String seqNumber;
}
......@@ -14,7 +14,7 @@ public class PackageVersionServiceImpl implements PackageVersionService {
@Override
public PackageVersion getVersion() {
return packageVersionDao.findById(1).get();
return packageVersionDao.findAll().get(0);
}
/**
......@@ -67,4 +67,5 @@ public class PackageVersionServiceImpl implements PackageVersionService {
}
}
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论