提交 f19ec192 authored 作者: zjm's avatar zjm

合并分支 'dev' 到 'master'

Dev to master 查看合并请求 !29
...@@ -441,6 +441,9 @@ public class DeviceApplyController { ...@@ -441,6 +441,9 @@ public class DeviceApplyController {
if (uploadApplyFile.getReplyFiles() != null && uploadApplyFile.getReplyFiles().size() > 0) { if (uploadApplyFile.getReplyFiles() != null && uploadApplyFile.getReplyFiles().size() > 0) {
deviceApplyBill.setReplyFiles(FilesUtil.stringFileToList(uploadApplyFile.getReplyFiles())); deviceApplyBill.setReplyFiles(FilesUtil.stringFileToList(uploadApplyFile.getReplyFiles()));
} }
//add
deviceApplyBill.setAgent(uploadApplyFile.getAgent());
deviceApplyBill.setReplyUnit(uploadApplyFile.getReplyUnit());
deviceApplyBillService.update(deviceApplyBill); deviceApplyBillService.update(deviceApplyBill);
} }
else { else {
...@@ -476,7 +479,17 @@ public class DeviceApplyController { ...@@ -476,7 +479,17 @@ public class DeviceApplyController {
if (uploadApplyFile.getApplyBillDetailVos() != null && uploadApplyFile.getApplyBillDetailVos().size() > 0) { if (uploadApplyFile.getApplyBillDetailVos() != null && uploadApplyFile.getApplyBillDetailVos().size() > 0) {
deviceApplyBill.setApplyStat(JacksonUtil.toJSon(uploadApplyFile.getApplyBillDetailVos())); deviceApplyBill.setApplyStat(JacksonUtil.toJSon(uploadApplyFile.getApplyBillDetailVos()));
} }
//add
deviceApplyBill.setAgent(uploadApplyFile.getAgent());
deviceApplyBill.setReplyUnit(uploadApplyFile.getReplyUnit());
DeviceApplyBill deviceApplyBill1 = deviceApplyBillService.update(deviceApplyBill); DeviceApplyBill deviceApplyBill1 = deviceApplyBillService.update(deviceApplyBill);
//通过列装id查询列装
// List<ApplyBillDetailVo> applyBillDetailVos = uploadApplyFile.getApplyBillDetailVos();
// for (ApplyBillDetailVo applyBillDetailVo : applyBillDetailVos) {
// PackingLibrary packingLibrary = packingLibraryService.getOne(applyBillDetailVo.getPackingId());
// BeanUtils.copyProperties(applyBillDetailVo,packingLibrary);
// packingLibraryService.update(packingLibrary);
// }
if (deviceApplyBill.getApplyType() > 1) { if (deviceApplyBill.getApplyType() > 1) {
List<String> seqs = new ArrayList<>(); List<String> seqs = new ArrayList<>();
List<ReplyVo> replyVos = JacksonUtil.readValue(deviceApplyBill1.getReplyVos(), new TypeReference<List<ReplyVo>>() { List<ReplyVo> replyVos = JacksonUtil.readValue(deviceApplyBill1.getReplyVos(), new TypeReference<List<ReplyVo>>() {
......
...@@ -23,6 +23,9 @@ public class ApplyBillDetailVo { ...@@ -23,6 +23,9 @@ public class ApplyBillDetailVo {
@ApiModelProperty(value = "申请数量") @ApiModelProperty(value = "申请数量")
private Integer storageCount; private Integer storageCount;
@ApiModelProperty(value = "批复数量")
private Integer waitNum;
@ApiModelProperty(value = "已入库数量") @ApiModelProperty(value = "已入库数量")
private Integer completeCount = 0; private Integer completeCount = 0;
......
...@@ -39,4 +39,15 @@ public class UploadApplyFile { ...@@ -39,4 +39,15 @@ public class UploadApplyFile {
@ApiModelProperty(value = "申请批复结果(0:未通过,1:通过)") @ApiModelProperty(value = "申请批复结果(0:未通过,1:通过)")
private Integer status; private Integer status;
/**
* 批复单位
*/
@ApiModelProperty(value = "批复单位")
private String replyUnit;
/**
* 经办人
*/
@ApiModelProperty(value = "经办人")
private String agent;
} }
...@@ -437,7 +437,7 @@ public class DeviceCheckController { ...@@ -437,7 +437,7 @@ public class DeviceCheckController {
linkVo.setType(2); linkVo.setType(2);
//看到的都是自查 根据tpye和billId找到父级节点 这里的根节点只能是检查节点 //看到的都是自查 根据tpye和billId找到父级节点 这里的根节点只能是检查节点
Task rootTask = taskRepo.findAllByBillIdAndBusinessType(billId, type).stream() Task rootTask = taskRepo.findAllByBillIdAndBusinessType(billId, type).stream()
.filter(task -> task.getCustomInfo().contains("exam")) .filter(task -> Objects.nonNull(task.getCustomInfo()) &&task.getCustomInfo().contains("exam"))
.findFirst() .findFirst()
.orElseThrow(() -> new ApiException("[核查模块]没有找到对应billId的检查任务,您给的billId = " + billId)); .orElseThrow(() -> new ApiException("[核查模块]没有找到对应billId的检查任务,您给的billId = " + billId));
// 找到所有的子节点 // 找到所有的子节点
...@@ -941,7 +941,7 @@ public class DeviceCheckController { ...@@ -941,7 +941,7 @@ public class DeviceCheckController {
Integer fatherId = 0; Integer fatherId = 0;
Integer initStatusId = 0; Integer initStatusId = 0;
// level = 1 或者2 市省级 否则 区级 ,市省级的自查初始状态160,区级的自查初始状态140 // level = 1 或者2 市省级 否则 就是区级 ,市省级的自查初始状态160,区级的自查初始状态140
if (unit.getLevel() == 1 || unit.getLevel() == 2) { if (unit.getLevel() == 1 || unit.getLevel() == 2) {
fatherId = cityExamIdMap.get(unit.getUnitId()); fatherId = cityExamIdMap.get(unit.getUnitId());
initStatusId = CHECK_DETAIL_CITY_0.id; initStatusId = CHECK_DETAIL_CITY_0.id;
...@@ -1331,7 +1331,6 @@ public class DeviceCheckController { ...@@ -1331,7 +1331,6 @@ public class DeviceCheckController {
detailRepo.updateCheckDetail4Check(id, detailString, checkResult, (int) count); detailRepo.updateCheckDetail4Check(id, detailString, checkResult, (int) count);
} }
//依据detail账单对应的checkUserId来判断是2流程还是多流程的 //依据detail账单对应的checkUserId来判断是2流程还是多流程的
Integer userAId = currentDetail.getCheckUserAId(); Integer userAId = currentDetail.getCheckUserAId();
Integer userBId = currentDetail.getCheckUserBId(); Integer userBId = currentDetail.getCheckUserBId();
...@@ -1352,6 +1351,8 @@ public class DeviceCheckController { ...@@ -1352,6 +1351,8 @@ public class DeviceCheckController {
log.info("[核查模块] 详情任务推进到下个阶段..."); log.info("[核查模块] 详情任务推进到下个阶段...");
taskService.moveToNext(currentTask); taskService.moveToNext(currentTask);
summaryDetail(currentTask, currentDetail); summaryDetail(currentTask, currentDetail);
// // 检查该exam任务是否可以完结推进了
// advanceExamTask(currentTask.getParentTaskId());
} }
} else { } else {
//不通过则回到第一阶段 //不通过则回到第一阶段
...@@ -1392,6 +1393,9 @@ public class DeviceCheckController { ...@@ -1392,6 +1393,9 @@ public class DeviceCheckController {
currentDetail.setUserCId(userId); currentDetail.setUserCId(userId);
currentDetail = detailRepo.save(currentDetail); currentDetail = detailRepo.save(currentDetail);
summaryDetail(currentTask, currentDetail); summaryDetail(currentTask, currentDetail);
// // 检查该exam任务是否可以完结推进了
// advanceExamTask(currentTask.getParentTaskId());
return ResponseEntity.ok("市专管员审核通过,结束" + currentDetail.getCheckUnit() + " 区的自查任务并汇总数据"); return ResponseEntity.ok("市专管员审核通过,结束" + currentDetail.getCheckUnit() + " 区的自查任务并汇总数据");
} else { } else {
log.info("[核查模块] 市专管员审核未通过,回滚该任务到初始状态,任务id = {}", currentTask.getId()); log.info("[核查模块] 市专管员审核未通过,回滚该任务到初始状态,任务id = {}", currentTask.getId());
...@@ -1416,6 +1420,19 @@ public class DeviceCheckController { ...@@ -1416,6 +1420,19 @@ public class DeviceCheckController {
} }
/**
* 尝试自动完结检查任务(市/省的)
* 1. 当且仅当该检查任务的状态等于@link{CHECK_EXAM_STAT_1}时且其下的所有子任务均为完结状态,自动推进
* @param exam的taskId
*/
private void advanceExamTask(Integer examTaskId) {
TaskBto parentTask = taskService.findByTaskId(examTaskId);
if (parentTask.getBillStatus().equals(CHECK_EXAM_STAT_1.id)&&taskService.TaskTreeIsOver(examTaskId)){
log.info("[核查模块] 检测到task id = {}的检查任务已经可以自动推进了,自动推进至下一步", examTaskId);
statConfirm(parentTask.getBillId());
}
}
/** /**
* 省专管员审核自查数据的方法 * 省专管员审核自查数据的方法
* *
...@@ -1493,7 +1510,7 @@ public class DeviceCheckController { ...@@ -1493,7 +1510,7 @@ public class DeviceCheckController {
cDetail.setCheckFiles(""); cDetail.setCheckFiles("");
cDetail.setCheckFileList(Lists.newArrayList()); cDetail.setCheckFileList(Lists.newArrayList());
cDetail = detailRepo.save(cDetail); cDetail = detailRepo.save(cDetail);
// 创建新的任务(被拒绝的自查单位如果是区则是140状态,否则是160状态) // 创建新的任务(被拒绝的自查单位如果是区则是140状态,否则是160状态 )
String unitName = cDetail.getCheckUnit(); String unitName = cDetail.getCheckUnit();
Integer level = unitsRepo.findByName(unitName).getLevel(); Integer level = unitsRepo.findByName(unitName).getLevel();
Integer initStatusId = 0; Integer initStatusId = 0;
......
...@@ -4,11 +4,9 @@ import cn.afterturn.easypoi.excel.ExcelExportUtil; ...@@ -4,11 +4,9 @@ import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.TemplateExportParams; import cn.afterturn.easypoi.excel.entity.TemplateExportParams;
import com.tykj.dev.config.swagger.AutoDocument; import com.tykj.dev.config.swagger.AutoDocument;
import com.tykj.dev.device.finalcheck.entity.domain.FinalDetail; import com.tykj.dev.device.finalcheck.entity.domain.FinalDetail;
import com.tykj.dev.device.finalcheck.entity.domain.FinalReport;
import com.tykj.dev.device.finalcheck.entity.dto.TimeParam; import com.tykj.dev.device.finalcheck.entity.dto.TimeParam;
import com.tykj.dev.device.finalcheck.entity.vo.FinalDetailVo; import com.tykj.dev.device.finalcheck.entity.vo.*;
import com.tykj.dev.device.finalcheck.entity.vo.FinalRemakeVo;
import com.tykj.dev.device.finalcheck.entity.vo.FinalReportSelectVo;
import com.tykj.dev.device.finalcheck.entity.vo.FinalReportVo;
import com.tykj.dev.device.finalcheck.service.FinalCheckService; import com.tykj.dev.device.finalcheck.service.FinalCheckService;
import com.tykj.dev.misc.base.ResultObj; import com.tykj.dev.misc.base.ResultObj;
import com.tykj.dev.misc.utils.ResultUtil; import com.tykj.dev.misc.utils.ResultUtil;
...@@ -66,7 +64,8 @@ public class FinalCheckController { ...@@ -66,7 +64,8 @@ public class FinalCheckController {
@PostMapping("/reports") @PostMapping("/reports")
@ApiOperation(value = "生成决算报告") @ApiOperation(value = "生成决算报告")
public ResponseEntity<ResultObj<FinalReportVo>> generateReport(@RequestBody TimeParam time) { public ResponseEntity<ResultObj<FinalReportVo>> generateReport(@RequestBody TimeParam time) {
FinalReportVo finalReportVo = fcService.generateReport(time.getStartTime(), time.getEndTime()); FinalReportVo finalReportVo = fcService.generateReport(time.getStartTime(),
time.getEndTime(),time.getSendFileList());
return ResultUtil.success(finalReportVo); return ResultUtil.success(finalReportVo);
} }
...@@ -151,4 +150,11 @@ public class FinalCheckController { ...@@ -151,4 +150,11 @@ public class FinalCheckController {
return ResponseEntity.ok(finalDetail); return ResponseEntity.ok(finalDetail);
} }
@PostMapping("/reports/uploadFile")
@ApiOperation(value = "上传单据")
public ResponseEntity uploadFile(@RequestBody FileVo fileVo) {
FinalReport finalReport = fcService.uploadFile(fileVo);
return ResponseEntity.ok(finalReport);
}
} }
package com.tykj.dev.device.finalcheck.entity.domain; package com.tykj.dev.device.finalcheck.entity.domain;
import com.tykj.dev.device.file.service.FilesUtil;
import com.tykj.dev.device.finalcheck.entity.vo.FinalDetailVo; import com.tykj.dev.device.finalcheck.entity.vo.FinalDetailVo;
import com.tykj.dev.device.finalcheck.entity.vo.FinalReportVo; import com.tykj.dev.device.finalcheck.entity.vo.FinalReportVo;
import com.tykj.dev.misc.base.BaseEntity; import com.tykj.dev.misc.base.BaseEntity;
import com.tykj.dev.misc.utils.MapperUtils; import com.tykj.dev.misc.utils.MapperUtils;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import javax.persistence.Column;
import javax.persistence.Entity; import javax.persistence.Entity;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
...@@ -39,8 +42,13 @@ public class FinalReport extends BaseEntity { ...@@ -39,8 +42,13 @@ public class FinalReport extends BaseEntity {
private String operator; private String operator;
@ApiModelProperty(value = "上传单据")
@Column(name = "send_files",columnDefinition = "TEXT")
private String sendFiles;
public FinalReportVo toVo(List<FinalDetail> details) { public FinalReportVo toVo(List<FinalDetail> details) {
FinalReportVo reportVo = MapperUtils.map(this, FinalReportVo.class); FinalReportVo reportVo = MapperUtils.map(this, FinalReportVo.class);
reportVo.setSendFileList(FilesUtil.stringFileToList(this.getSendFiles()));
List<FinalDetailVo> detailVos = MapperUtils.mapAll(details, FinalDetailVo.class); List<FinalDetailVo> detailVos = MapperUtils.mapAll(details, FinalDetailVo.class);
reportVo.setDetails(detailVos); reportVo.setDetails(detailVos);
return reportVo; return reportVo;
......
...@@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonFormat; ...@@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonPropertyOrder; import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer; import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
import com.tykj.dev.device.file.entity.FileRet;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
...@@ -11,6 +12,7 @@ import lombok.Data; ...@@ -11,6 +12,7 @@ import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.List;
/** /**
* TimeParam. * TimeParam.
...@@ -34,4 +36,8 @@ public class TimeParam { ...@@ -34,4 +36,8 @@ public class TimeParam {
@JsonDeserialize(using = LocalDateDeserializer.class) @JsonDeserialize(using = LocalDateDeserializer.class)
@ApiModelProperty(value = "决算结束时间", example = "2020-11-02") @ApiModelProperty(value = "决算结束时间", example = "2020-11-02")
private LocalDate endTime; private LocalDate endTime;
@ApiModelProperty(value = "单据")
private List<FileRet> sendFileList;
} }
package com.tykj.dev.device.finalcheck.entity.vo;
import cn.afterturn.easypoi.excel.annotation.ExcelTarget;
import com.tykj.dev.device.file.entity.FileRet;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* finalDetailVo.
*
* @author Matrix <xhyrzldf@gmail.com>
* @since 2020/9/24 at 5:41 下午
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class FileVo {
@ApiModelProperty("文件")
private List<FileRet> fileRets;
@ApiModelProperty("id")
private Integer id;
}
...@@ -5,6 +5,7 @@ import cn.afterturn.easypoi.excel.annotation.ExcelTarget; ...@@ -5,6 +5,7 @@ import cn.afterturn.easypoi.excel.annotation.ExcelTarget;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer; import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
import com.tykj.dev.device.file.entity.FileRet;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
...@@ -64,4 +65,7 @@ public class FinalReportVo { ...@@ -64,4 +65,7 @@ public class FinalReportVo {
@ApiModelProperty("报告细节列表") @ApiModelProperty("报告细节列表")
private List<FinalDetailVo> details; private List<FinalDetailVo> details;
@ApiModelProperty(value = "单据")
private List<FileRet> sendFileList;
} }
package com.tykj.dev.device.finalcheck.service; package com.tykj.dev.device.finalcheck.service;
import com.tykj.dev.device.file.entity.FileRet;
import com.tykj.dev.device.finalcheck.entity.domain.FinalDetail; import com.tykj.dev.device.finalcheck.entity.domain.FinalDetail;
import com.tykj.dev.device.finalcheck.entity.domain.FinalReport;
import com.tykj.dev.device.finalcheck.entity.vo.FileVo;
import com.tykj.dev.device.finalcheck.entity.vo.FinalRemakeVo; import com.tykj.dev.device.finalcheck.entity.vo.FinalRemakeVo;
import com.tykj.dev.device.finalcheck.entity.vo.FinalReportSelectVo; import com.tykj.dev.device.finalcheck.entity.vo.FinalReportSelectVo;
import com.tykj.dev.device.finalcheck.entity.vo.FinalReportVo; import com.tykj.dev.device.finalcheck.entity.vo.FinalReportVo;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.List;
/** /**
* FinalCheckService. * FinalCheckService.
...@@ -23,7 +27,7 @@ public interface FinalCheckService { ...@@ -23,7 +27,7 @@ public interface FinalCheckService {
* @param endTime 决算结束时间 * @param endTime 决算结束时间
* @return {@link FinalReportVo} * @return {@link FinalReportVo}
*/ */
FinalReportVo generateReport(LocalDate startTime, LocalDate endTime); FinalReportVo generateReport(LocalDate startTime, LocalDate endTime, List<FileRet> sendFileList);
/** /**
* 根据关键字查询报告列表(不附带detail) * 根据关键字查询报告列表(不附带detail)
...@@ -44,4 +48,9 @@ public interface FinalCheckService { ...@@ -44,4 +48,9 @@ public interface FinalCheckService {
*/ */
FinalDetail addRemake(FinalRemakeVo finalRemakeVo); FinalDetail addRemake(FinalRemakeVo finalRemakeVo);
/**
* 上传单据
*/
FinalReport uploadFile(FileVo fileVo);
} }
package com.tykj.dev.device.finalcheck.service.impl; package com.tykj.dev.device.finalcheck.service.impl;
import com.github.wenhao.jpa.Specifications; import com.github.wenhao.jpa.Specifications;
import com.tykj.dev.device.file.entity.FileRet;
import com.tykj.dev.device.file.service.FilesUtil;
import com.tykj.dev.device.finalcheck.entity.domain.FinalDetail; import com.tykj.dev.device.finalcheck.entity.domain.FinalDetail;
import com.tykj.dev.device.finalcheck.entity.domain.FinalReport; import com.tykj.dev.device.finalcheck.entity.domain.FinalReport;
import com.tykj.dev.device.finalcheck.entity.vo.FileVo;
import com.tykj.dev.device.finalcheck.entity.vo.FinalRemakeVo; import com.tykj.dev.device.finalcheck.entity.vo.FinalRemakeVo;
import com.tykj.dev.device.finalcheck.entity.vo.FinalReportSelectVo; import com.tykj.dev.device.finalcheck.entity.vo.FinalReportSelectVo;
import com.tykj.dev.device.finalcheck.entity.vo.FinalReportVo; import com.tykj.dev.device.finalcheck.entity.vo.FinalReportVo;
...@@ -11,11 +14,14 @@ import com.tykj.dev.device.finalcheck.repisotry.FinalReportDao; ...@@ -11,11 +14,14 @@ import com.tykj.dev.device.finalcheck.repisotry.FinalReportDao;
import com.tykj.dev.device.finalcheck.service.FinalCheckService; import com.tykj.dev.device.finalcheck.service.FinalCheckService;
import com.tykj.dev.device.library.repository.DeviceLibraryDao; import com.tykj.dev.device.library.repository.DeviceLibraryDao;
import com.tykj.dev.device.library.subject.domin.DeviceLibrary; import com.tykj.dev.device.library.subject.domin.DeviceLibrary;
import com.tykj.dev.device.task.subject.bto.TaskBto;
import com.tykj.dev.device.user.util.UserUtils; import com.tykj.dev.device.user.util.UserUtils;
import com.tykj.dev.device.usereport.service.DeviceUseReportService; import com.tykj.dev.device.usereport.service.DeviceUseReportService;
import com.tykj.dev.device.usereport.subject.vo.DeviceStatistics; import com.tykj.dev.device.usereport.subject.vo.DeviceStatistics;
import com.tykj.dev.misc.exception.ApiException; import com.tykj.dev.misc.exception.ApiException;
import com.tykj.dev.misc.utils.JacksonUtil;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.jpa.domain.Specification; import org.springframework.data.jpa.domain.Specification;
...@@ -77,18 +83,17 @@ public class FinalCheckServiceImpl implements FinalCheckService { ...@@ -77,18 +83,17 @@ public class FinalCheckServiceImpl implements FinalCheckService {
// private DeviceLibraryService deviceLibraryService; // private DeviceLibraryService deviceLibraryService;
@Override @Override
public FinalReportVo generateReport(LocalDate startTime, LocalDate endTime) { public FinalReportVo generateReport(LocalDate startTime, LocalDate endTime,List<FileRet> sendFileList) {
String name = startTime+"~"+endTime + "决算报告"; String name = startTime+"~"+endTime + "决算报告";
String unitName = userService.getCurrentUserUnitName(); String unitName = userService.getCurrentUserUnitName();
String operatorName = userService.getCurrentName(); String operatorName = userService.getCurrentName();
FinalReport report = new FinalReport(name, unitName, startTime, endTime, LocalDateTime.now(), operatorName); FinalReport report = new FinalReport(name, unitName, startTime, endTime, LocalDateTime.now(), operatorName,FilesUtil.stringFileToList(sendFileList));
FinalReportVo finalReportVo = new FinalReportVo();
finalReportVo.setSendFileList(sendFileList);
report = reportDao.save(report); report = reportDao.save(report);
// 查询这段时间内该单位下的所有装备 并且计数 // 查询这段时间内该单位下的所有装备 并且计数
long l = System.currentTimeMillis();
// List<DeviceLibrary> devices = deviceDao.findAllByUnitBetweenTime(unitName, localDateToDate(startTime), localDateToDate(endTime)); // List<DeviceLibrary> devices = deviceDao.findAllByUnitBetweenTime(unitName, localDateToDate(startTime), localDateToDate(endTime));
List<DeviceLibrary> devices = deviceDao.findAll(); List<DeviceLibrary> devices = deviceDao.findAll();
System.out.println(System.currentTimeMillis()-l);
//
// PredicateBuilder<DeviceLibrary> builder = Specifications.and(); // PredicateBuilder<DeviceLibrary> builder = Specifications.and();
// builder.eq("ownUnit",unitName); // builder.eq("ownUnit",unitName);
// List<DeviceLibrary> devices = deviceDao.findAll(builder.build()); // List<DeviceLibrary> devices = deviceDao.findAll(builder.build());
...@@ -167,7 +172,6 @@ public class FinalCheckServiceImpl implements FinalCheckService { ...@@ -167,7 +172,6 @@ public class FinalCheckServiceImpl implements FinalCheckService {
} }
detailList = detailDao.saveAll(detailList); detailList = detailDao.saveAll(detailList);
return report.toVo(detailList); return report.toVo(detailList);
} }
...@@ -219,7 +223,9 @@ public class FinalCheckServiceImpl implements FinalCheckService { ...@@ -219,7 +223,9 @@ public class FinalCheckServiceImpl implements FinalCheckService {
.orElse(Collections.emptyList()); .orElse(Collections.emptyList());
//按照名称排序 //按照名称排序
List<FinalDetail> finalDetails = detailList.stream().sorted(Comparator.comparing(FinalDetail::getModel)).collect(Collectors.toList()); List<FinalDetail> finalDetails = detailList.stream().sorted(Comparator.comparing(FinalDetail::getModel)).collect(Collectors.toList());
return report.toVo(finalDetails); FinalReportVo finalReportVo = report.toVo(finalDetails);
finalReportVo.setSendFileList(FilesUtil.stringFileToList(report.getSendFiles()));
return finalReportVo;
} }
@Override @Override
...@@ -235,4 +241,17 @@ public class FinalCheckServiceImpl implements FinalCheckService { ...@@ -235,4 +241,17 @@ public class FinalCheckServiceImpl implements FinalCheckService {
FinalDetail save = detailDao.save(finalDetail); FinalDetail save = detailDao.save(finalDetail);
return save; return save;
} }
@Override
public FinalReport uploadFile(FileVo fileVo) {
Optional<FinalReport> byId = reportDao.findById(fileVo.getId());
FinalReport finalReport1 = new FinalReport();
if (byId.isPresent()){
FinalReport finalReport = byId.get();
finalReport.setSendFiles(FilesUtil.stringFileToList(fileVo.getFileRets()));
finalReport1 = reportDao.save(finalReport);
}
BeanUtils.copyProperties(finalReport1,FinalReportVo.class);
return finalReport1;
}
} }
...@@ -246,4 +246,9 @@ public interface DeviceLibraryService { ...@@ -246,4 +246,9 @@ public interface DeviceLibraryService {
* @param * @param
*/ */
void updateLocalAndOwn(String localUnit,List<Integer> deviceIds); void updateLocalAndOwn(String localUnit,List<Integer> deviceIds);
/**
* 根据型号查询序列号 取最大值的Device对象
*/
int getMaxSeqNumber(String model);
} }
...@@ -13,6 +13,7 @@ import com.tykj.dev.device.library.service.DeviceLibraryService; ...@@ -13,6 +13,7 @@ import com.tykj.dev.device.library.service.DeviceLibraryService;
import com.tykj.dev.device.library.subject.domin.DeviceLibrary; import com.tykj.dev.device.library.subject.domin.DeviceLibrary;
import com.tykj.dev.device.library.subject.vo.DeviceLibrarySelectVo; import com.tykj.dev.device.library.subject.vo.DeviceLibrarySelectVo;
import com.tykj.dev.device.library.subject.vo.DeviceStatisticsVo; import com.tykj.dev.device.library.subject.vo.DeviceStatisticsVo;
import com.tykj.dev.device.library.utils.DeviceNumberUtils;
import com.tykj.dev.device.user.subject.entity.Units; import com.tykj.dev.device.user.subject.entity.Units;
import com.tykj.dev.device.user.subject.service.UnitsService; import com.tykj.dev.device.user.subject.service.UnitsService;
import com.tykj.dev.device.user.subject.service.UserPublicService; import com.tykj.dev.device.user.subject.service.UserPublicService;
...@@ -740,6 +741,24 @@ public class DeviceLibraryServiceImpl implements DeviceLibraryService { ...@@ -740,6 +741,24 @@ public class DeviceLibraryServiceImpl implements DeviceLibraryService {
deviceLibraryDao.updateDevicesOwnUnit(localUnit,deviceIds); deviceLibraryDao.updateDevicesOwnUnit(localUnit,deviceIds);
} }
@Override
public int getMaxSeqNumber(String model) {
List<DeviceLibrary> devices = deviceLibraryDao.findAllByModel(model);
return devices.stream()
.max(Comparator.comparing(DeviceNumberUtils::extractSeqNumber))
.map(d->DeviceNumberUtils.parseSeq2Number(d.getSeqNumber()))
.orElse(0);
// return devices.stream()
// .map(deviceLibrary -> deviceLibrary.getSeqNumber().substring(deviceLibrary.getSeqNumber().length()-4))
// .sorted(Comparator.comparing(String::toString).reversed())
// .collect(Collectors.toList());
}
@Override @Override
public DeviceLibrary update(DeviceLibrary deviceLibraryEntity) { public DeviceLibrary update(DeviceLibrary deviceLibraryEntity) {
......
package com.tykj.dev.device.library.utils;
import com.tykj.dev.device.library.subject.domin.DeviceLibrary;
public class DeviceNumberUtils {
public static int extractSeqNumber(DeviceLibrary device){
String seqString = device.getSeqNumber().substring(device.getSeqNumber().length() - 4);
return Integer.parseInt(seqString.replace("0", ""));
}
/**
*
* @param seqString 默认是形如 '0081'这样的字符串
* @return 0081
*/
public static int parseSeq2Number(String seqString){
return Integer.parseInt(seqString.replace("0", ""));
}
/**
*
* @param seqNumber 形如 35这样的数字
* @return '0035'
*/
public static String parseNumber2Seq(int seqNumber){
String seqString = String.valueOf(seqNumber);
if (seqString.length() == 1){
seqString = "000" + seqString;
}
if (seqString.length() == 2){
seqString = "00" + seqString;
}
if (seqString.length() == 3){
seqString = "0" + seqString;
}
return seqString;
}
}
...@@ -16,6 +16,7 @@ import com.tykj.dev.device.library.subject.Dto.DeviceLogDto; ...@@ -16,6 +16,7 @@ import com.tykj.dev.device.library.subject.Dto.DeviceLogDto;
import com.tykj.dev.device.library.subject.domin.DeviceLibrary; import com.tykj.dev.device.library.subject.domin.DeviceLibrary;
import com.tykj.dev.device.library.subject.vo.DeviceLibrarySaveVo; import com.tykj.dev.device.library.subject.vo.DeviceLibrarySaveVo;
import com.tykj.dev.device.library.subject.vo.FileVo; import com.tykj.dev.device.library.subject.vo.FileVo;
import com.tykj.dev.device.library.utils.DeviceNumberUtils;
import com.tykj.dev.device.packing.service.PackingLibraryService; import com.tykj.dev.device.packing.service.PackingLibraryService;
import com.tykj.dev.device.packing.subject.domin.PackingLibrary; import com.tykj.dev.device.packing.subject.domin.PackingLibrary;
import com.tykj.dev.device.storage.repository.StorageBillDao; import com.tykj.dev.device.storage.repository.StorageBillDao;
...@@ -49,6 +50,7 @@ import org.springframework.beans.factory.annotation.Qualifier; ...@@ -49,6 +50,7 @@ import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.CacheEvict;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -56,6 +58,7 @@ import java.util.*; ...@@ -56,6 +58,7 @@ import java.util.*;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.IntStream;
import static java.util.stream.Collectors.toMap; import static java.util.stream.Collectors.toMap;
...@@ -158,7 +161,7 @@ public class StorageBillController { ...@@ -158,7 +161,7 @@ public class StorageBillController {
} }
} }
@ApiOperation(value = "自动生成序列号", notes = "可以通过这个接口自动生成序列号") @ApiOperation(value = "自动生成装备序列号", notes = "可以通过这个接口自动生成序列号")
@PostMapping(value = "/autoCreate/{num}") @PostMapping(value = "/autoCreate/{num}")
public ResponseEntity autoCreate(@PathVariable("num") int num){ public ResponseEntity autoCreate(@PathVariable("num") int num){
Long seq = snowflake.creatNextId(); Long seq = snowflake.creatNextId();
...@@ -171,6 +174,43 @@ public class StorageBillController { ...@@ -171,6 +174,43 @@ public class StorageBillController {
return ResponseEntity.ok(stringBuffer.toString()); return ResponseEntity.ok(stringBuffer.toString());
} }
@ApiOperation(value = "自动生成配件序列号", notes = "可以通过这个接口自动生成序列号")
@PostMapping(value = "/autoCreateForPart")
public ResponseEntity autoCreateForPart(@RequestBody CreateSeqVo createSeqVo){
Integer num = createSeqVo.getNum();
//获取集合中的元素
// List<String> seq = createSeq();
//方法生成满的 0001-9999 list1
//getModel idList list2
//list1 list2 取差集 list3
//list3 next model下的可用
//getcurrentId max = n , 需要生成 m个 ,(n,n+m] n=0,m=5 (0,5]
// (5,11]
//根据型号查询数据库
int maxSeqNumber = deviceLibraryService.getMaxSeqNumber(createSeqVo.getModel());
List<String> seqList = IntStream.rangeClosed(maxSeqNumber + 1, num)
.mapToObj(DeviceNumberUtils::parseNumber2Seq)
.collect(Collectors.toList());
// int start =0;
// if (!CollectionUtils.isEmpty(allSeq)){
// //说明数据库中存有该集合中的数字
// String s = allSeq.get(0);
// start = Integer.parseInt(s);
// }
// List<String> seq2 = createSeq2(start+1, start+1+num);
// StringJoiner stringBuffer = new StringJoiner("-");
// String modelStyle = createSeqVo.getModel()+createSeqVo.getStyle();
// for (String s : seq2) {
// stringBuffer.add(modelStyle+s);
// }
// return ResponseEntity.ok(stringBuffer.toString());
return ResponseEntity.ok(seqList);
}
@ApiOperation(value = "获取序列号区间列表", notes = "可以通过这个接口获取序列号区间列表") @ApiOperation(value = "获取序列号区间列表", notes = "可以通过这个接口获取序列号区间列表")
@GetMapping(value = "/getSeq/{num}/{string}") @GetMapping(value = "/getSeq/{num}/{string}")
public ResponseEntity getSeq(@PathVariable("string") String s,@PathVariable("num") Integer num){ public ResponseEntity getSeq(@PathVariable("string") String s,@PathVariable("num") Integer num){
...@@ -537,7 +577,7 @@ public class StorageBillController { ...@@ -537,7 +577,7 @@ public class StorageBillController {
if (map.get(applyBillDetailVo.getPackingId())!=null){ if (map.get(applyBillDetailVo.getPackingId())!=null){
applyBillDetailVo.setCompleteCount(map.get(applyBillDetailVo.getPackingId()).getCompleteCount()); applyBillDetailVo.setCompleteCount(map.get(applyBillDetailVo.getPackingId()).getCompleteCount());
applyBillDetailVos.set(i,applyBillDetailVo); applyBillDetailVos.set(i,applyBillDetailVo);
if (!applyBillDetailVo.getStorageCount().equals(applyBillDetailVo.getCompleteCount())){ if (!applyBillDetailVo.getWaitNum().equals(applyBillDetailVo.getCompleteCount())){
isEnd = false; isEnd = false;
} }
} }
...@@ -796,4 +836,29 @@ public class StorageBillController { ...@@ -796,4 +836,29 @@ public class StorageBillController {
public ResponseEntity getFiles(Integer taskId){ public ResponseEntity getFiles(Integer taskId){
return ResponseEntity.ok(storageBillService.getFileList(taskId)); return ResponseEntity.ok(storageBillService.getFileList(taskId));
} }
/**
* @return 生成装备附件的序列号
*/
private List<String> createSeq() {
Set<String> set = new HashSet<>();
for (int i = 0; i < 10000; i++) {
String s = String.format("%04d", i);
set.add(s);
}
return set.stream().sorted(Comparator.comparing(String::toString)).skip(1).collect(Collectors.toList());
}
/**
* @return 生成装备附件的序列号
*/
private List<String> createSeq2(int start,int num) {
List<String> list = new ArrayList<>();
for (int i = start; i < num; i++) {
String s = String.format("%04d", i);
list.add(s);
}
return list;
}
} }
package com.tykj.dev.device.storage.subject.vo;
import com.tykj.dev.device.library.subject.domin.DeviceLibrary;
import com.tykj.dev.device.storage.subject.domin.StorageBill;
import com.tykj.dev.device.task.subject.vo.TaskLogUserVo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @author dengdiyi
*/
@Data
@ApiModel("生成附件的装备序列号")
public class CreateSeqVo {
@ApiModelProperty(name = "型号")
private String model;
@ApiModelProperty(name = "形态")
private Integer style;
@ApiModelProperty(name = "数量")
private Integer num;
}
...@@ -10,6 +10,7 @@ import com.tykj.dev.device.apply.service.DeviceApplyBillService; ...@@ -10,6 +10,7 @@ import com.tykj.dev.device.apply.service.DeviceApplyBillService;
import com.tykj.dev.device.apply.subject.domin.DeviceApplyBill; import com.tykj.dev.device.apply.subject.domin.DeviceApplyBill;
import com.tykj.dev.device.apply.subject.vo.ApplyBillDetailVo; import com.tykj.dev.device.apply.subject.vo.ApplyBillDetailVo;
import com.tykj.dev.device.apply.subject.vo.ReplyVo; import com.tykj.dev.device.apply.subject.vo.ReplyVo;
import com.tykj.dev.device.file.entity.FileRet;
import com.tykj.dev.device.file.service.FilesUtil; import com.tykj.dev.device.file.service.FilesUtil;
import com.tykj.dev.device.library.repository.DeviceLibraryDao; import com.tykj.dev.device.library.repository.DeviceLibraryDao;
import com.tykj.dev.device.library.service.DeviceLibraryService; import com.tykj.dev.device.library.service.DeviceLibraryService;
...@@ -358,6 +359,9 @@ public class TaskSelectController { ...@@ -358,6 +359,9 @@ public class TaskSelectController {
deviceApplyBillEntity.setApplyFileList(FilesUtil.stringFileToList(deviceApplyBillEntity.getApplyFiles())); deviceApplyBillEntity.setApplyFileList(FilesUtil.stringFileToList(deviceApplyBillEntity.getApplyFiles()));
deviceApplyBillEntity.setBackFileList(FilesUtil.stringFileToList(deviceApplyBillEntity.getBackFiles())); deviceApplyBillEntity.setBackFileList(FilesUtil.stringFileToList(deviceApplyBillEntity.getBackFiles()));
deviceApplyBillEntity.setApplyNumFileList(FilesUtil.stringFileToList(deviceApplyBillEntity.getApplyNumFiles())); deviceApplyBillEntity.setApplyNumFileList(FilesUtil.stringFileToList(deviceApplyBillEntity.getApplyNumFiles()));
List<ApplyBillDetailVo> applyBillDetailVos = JacksonUtil.readValue(deviceApplyBillEntity.getApplyStat(), new TypeReference<List<ApplyBillDetailVo>>() {
});
Map<Integer, ApplyBillDetailVo> applyBillDetailVoMap = applyBillDetailVos.stream().collect(toMap(ApplyBillDetailVo::getPackingId, Function.identity()));
Map<Integer,ReplyVo> map = new HashMap<>(); Map<Integer,ReplyVo> map = new HashMap<>();
if (deviceApplyBillEntity.getReplyVos()!=null) { if (deviceApplyBillEntity.getReplyVos()!=null) {
map = Objects.requireNonNull(JacksonUtil.readValue(deviceApplyBillEntity.getReplyVos(), new TypeReference<List<ReplyVo>>() { map = Objects.requireNonNull(JacksonUtil.readValue(deviceApplyBillEntity.getReplyVos(), new TypeReference<List<ReplyVo>>() {
...@@ -385,11 +389,18 @@ public class TaskSelectController { ...@@ -385,11 +389,18 @@ public class TaskSelectController {
if (packingIdList.size() == numList.size()) { if (packingIdList.size() == numList.size()) {
for (int i = 0; i < packingIdList.size(); i++) { for (int i = 0; i < packingIdList.size(); i++) {
PackingLibrary p = packingLibraryService.getOne(packingIdList.get(i)); PackingLibrary p = packingLibraryService.getOne(packingIdList.get(i));
ApplyBillDetailVo applyBillDetailVo = applyBillDetailVoMap.get(packingIdList.get(i));
if (deviceApplyBillEntity.getApplyType()==1) { if (deviceApplyBillEntity.getApplyType()==1) {
p.setApplyNum(numList.get(i)); p.setApplyNum(numList.get(i));
if (statMap.size()>0){ if (statMap.size()>0){
p.setCompleteNum(statMap.get(p.getId()).getCompleteCount()); p.setCompleteNum(statMap.get(p.getId()).getCompleteCount());
p.setWaitNum(p.getApplyNum()-p.getCompleteNum()); // p.setWaitNum(p.getApplyNum()-p.getCompleteNum());
if(applyBillDetailVo.getWaitNum() == null){
p.setWaitNum(null);
}else {
p.setWaitNum(applyBillDetailVo.getWaitNum()-p.getCompleteNum());
}
// p.setWaitNum(applyBillDetailVo.getWaitNum()-p.getCompleteNum());
p.setSeq(statMap.get(p.getId()).getSeqInterval()); p.setSeq(statMap.get(p.getId()).getSeqInterval());
} }
} }
...@@ -398,7 +409,14 @@ public class TaskSelectController { ...@@ -398,7 +409,14 @@ public class TaskSelectController {
p.setApplyNum(map.get(p.getId()).getNum()); p.setApplyNum(map.get(p.getId()).getNum());
p.setSeq(map.get(p.getId()).getSeqInterval()); p.setSeq(map.get(p.getId()).getSeqInterval());
p.setCompleteNum(map.get(p.getId()).getCompleteCount()); p.setCompleteNum(map.get(p.getId()).getCompleteCount());
p.setWaitNum(p.getApplyNum()-p.getCompleteNum()); if(applyBillDetailVo.getWaitNum() == null){
p.setWaitNum(null);
}else {
p.setWaitNum(applyBillDetailVo.getWaitNum()-p.getCompleteNum());
}
// p.setWaitNum(p.getApplyNum()-p.getCompleteNum());
// p.setWaitNum(applyBillDetailVo.getWaitNum()-p.getCompleteNum());
// p.setWaitNum(p.getWaitNum()-p.getCompleteNum());
} }
} }
packingLibraryEntityList.add(p); packingLibraryEntityList.add(p);
......
...@@ -25,8 +25,8 @@ public class FinalCheckControllerTest extends BaseTest { ...@@ -25,8 +25,8 @@ public class FinalCheckControllerTest extends BaseTest {
@Test @Test
public void generateReport() { public void generateReport() {
TimeParam timeParam = new TimeParam(LocalDate.of(2020, 1, 1), // TimeParam timeParam = new TimeParam(LocalDate.of(2020, 1, 1),
LocalDate.of(2020, 11, 1)); // LocalDate.of(2020, 11, 1));
System.out.println(fcController.generateReport(timeParam)); // System.out.println(fcController.generateReport(timeParam));
} }
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论