|
@@ -17,26 +17,28 @@ import com.winhc.repal.cloud.dto.GetFinanceDynamicNumDTO;
|
|
import com.winhc.repal.cloud.vo.CompanyRiskNumVO;
|
|
import com.winhc.repal.cloud.vo.CompanyRiskNumVO;
|
|
import com.winhc.repal.cloud.vo.DiagnosisRecordVO;
|
|
import com.winhc.repal.cloud.vo.DiagnosisRecordVO;
|
|
import com.winhc.repal.cloud.vo.FinanceDynamicNumVO;
|
|
import com.winhc.repal.cloud.vo.FinanceDynamicNumVO;
|
|
-import com.winhc.repal.entity.RepalBill;
|
|
|
|
-import com.winhc.repal.entity.RepalBillDiagnosis;
|
|
|
|
-import com.winhc.repal.entity.RepalChangeRecord;
|
|
|
|
-import com.winhc.repal.entity.RepalCustomer;
|
|
|
|
|
|
+import com.winhc.repal.entity.*;
|
|
|
|
+import com.winhc.repal.enums.CustPropertyEnum;
|
|
import com.winhc.repal.enums.DeletedStatusEnum;
|
|
import com.winhc.repal.enums.DeletedStatusEnum;
|
|
import com.winhc.repal.enums.RepalBillStatusEnum;
|
|
import com.winhc.repal.enums.RepalBillStatusEnum;
|
|
-import com.winhc.repal.enums.RepalBillTypeEnum;
|
|
|
|
-import com.winhc.repal.model.dto.GetRepalBillPageDTO;
|
|
|
|
|
|
+import com.winhc.repal.model.dto.*;
|
|
import com.winhc.repal.model.vo.RepalBillDetailVO;
|
|
import com.winhc.repal.model.vo.RepalBillDetailVO;
|
|
import com.winhc.repal.model.vo.RepalBillPageVO;
|
|
import com.winhc.repal.model.vo.RepalBillPageVO;
|
|
import com.winhc.repal.repository.RepalBillMapper;
|
|
import com.winhc.repal.repository.RepalBillMapper;
|
|
import com.winhc.repal.service.*;
|
|
import com.winhc.repal.service.*;
|
|
import com.winhc.repal.util.DiagnosisUtil;
|
|
import com.winhc.repal.util.DiagnosisUtil;
|
|
|
|
+import com.winhc.repal.util.RepalBillStatusUtil;
|
|
|
|
+import com.winhc.repal.util.UserContextUtil;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.springframework.beans.BeanUtils;
|
|
import org.springframework.beans.BeanUtils;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
import java.time.LocalDate;
|
|
import java.time.LocalDate;
|
|
|
|
+import java.time.LocalDateTime;
|
|
import java.util.*;
|
|
import java.util.*;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
@@ -75,6 +77,10 @@ public class RepalBillServiceImpl extends ServiceImpl<RepalBillMapper, RepalBill
|
|
@Autowired
|
|
@Autowired
|
|
private RepalChangeRecordService repalChangeRecordService;
|
|
private RepalChangeRecordService repalChangeRecordService;
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ private RepalBookService repalBookService;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public VOPage<RepalBillPageVO> getRepalBillPage(GetRepalBillPageDTO dto) {
|
|
public VOPage<RepalBillPageVO> getRepalBillPage(GetRepalBillPageDTO dto) {
|
|
@@ -184,4 +190,106 @@ public class RepalBillServiceImpl extends ServiceImpl<RepalBillMapper, RepalBill
|
|
return vo;
|
|
return vo;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
+ public Boolean deleteRepalBillById(DeleteRepalBillDTO dto) {
|
|
|
|
+ // 权限判断 todo 日志
|
|
|
|
+ this.update(Wrappers.lambdaUpdate(RepalBill.class).eq(RepalBill::getId, dto.getRepalBillId())
|
|
|
|
+ .set(RepalBill::getDeleted, DeletedStatusEnum.DELETE.getCode()));
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
+ public Boolean settleRepalBillById(SettleRepalBillDTO dto) {
|
|
|
|
+ // todo 权限,日志
|
|
|
|
+ RepalBill repalBill = this.getById(dto.getRepalBillId());
|
|
|
|
+ // 结清tag
|
|
|
|
+ boolean success = false;
|
|
|
|
+ // 金额溢出
|
|
|
|
+ if (dto.getMoney().compareTo(repalBill.getReceivable()) >= 0) {
|
|
|
|
+ dto.setMoney(repalBill.getReceivable());
|
|
|
|
+ success = true;
|
|
|
|
+ }
|
|
|
|
+ // 重新计算金额
|
|
|
|
+ repalBill.setReceivable(success ? BigDecimal.ZERO : repalBill.getReceivable().subtract(dto.getMoney()));
|
|
|
|
+ repalBill.setReceipt(success ? repalBill.getTotalMoney() : repalBill.getReceipt().add(dto.getMoney()));
|
|
|
|
+ RepalChangeRecord changeRecord = new RepalChangeRecord();
|
|
|
|
+ changeRecord.setRepalBookId(repalBill.getRepalBookId());
|
|
|
|
+ changeRecord.setRepalBillId(repalBill.getId());
|
|
|
|
+ changeRecord.setAfterMoney(BigDecimal.ZERO);
|
|
|
|
+ changeRecord.setPreMoney(repalBill.getReceivable());
|
|
|
|
+ changeRecord.setTransMoney(repalBill.getReceivable());
|
|
|
|
+ changeRecord.setOperUserId(UserContextUtil.getUser().getUserId());
|
|
|
|
+ // changeRecord.setOperUserName(); 组织用户名称?用户名称?
|
|
|
|
+ repalChangeRecordService.save(changeRecord);
|
|
|
|
+ this.update(Wrappers.lambdaUpdate(RepalBill.class)
|
|
|
|
+ .eq(RepalBill::getId, repalBill.getId())
|
|
|
|
+ .set(success, RepalBill::getRepalBillStatus, RepalBillStatusEnum.SUCCESS.getCode())
|
|
|
|
+ .set(RepalBill::getReceivable, repalBill.getReceivable())
|
|
|
|
+ .set(RepalBill::getReceipt, repalBill.getReceipt())
|
|
|
|
+ .set(success, RepalBill::getSettleTime, LocalDateTime.now()));
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
+ public Boolean addRepalBill(AddRepalBillDTO dto) {
|
|
|
|
+ RepalCustomer customer = repalCustomerService.getById(dto.getCustomerId());
|
|
|
|
+ if (Objects.isNull(customer)) {
|
|
|
|
+ throw new CommonException(CodeMsg.FAILED, "客户信息错误");
|
|
|
|
+ }
|
|
|
|
+ boolean companyIdFlag = CustPropertyEnum.COMPANY.getCode().equals(customer.getCustProperty()) || CustPropertyEnum.GOV.getCode().equals(customer.getCustProperty());
|
|
|
|
+ if (companyIdFlag && StrUtil.isBlank(customer.getCompanyId())) {
|
|
|
|
+ throw new CommonException(CodeMsg.FAILED, "公司信息错误");
|
|
|
|
+ }
|
|
|
|
+ // 权限判断 todo 日志
|
|
|
|
+ if (Objects.isNull(dto.getRepalBookId())) {
|
|
|
|
+ // 新建账本
|
|
|
|
+ RepalBook repalBook = new RepalBook();
|
|
|
|
+ repalBook.setRepalGroupId(dto.getRepalGroupId());
|
|
|
|
+ repalBook.setCustomerId(customer.getCustId());
|
|
|
|
+ repalBook.setCustomerName(customer.getCustName());
|
|
|
|
+ repalBook.setCompanyId(customer.getCompanyId());
|
|
|
|
+ repalBook.setUserId(UserContextUtil.getUser().getUserId());
|
|
|
|
+ repalBookService.save(repalBook);
|
|
|
|
+ dto.setRepalBookId(repalBook.getId());
|
|
|
|
+ }
|
|
|
|
+ RepalBill repalBill = new RepalBill();
|
|
|
|
+ BeanUtils.copyProperties(dto, repalBill);
|
|
|
|
+ repalBill.setCustomerName(customer.getCustName());
|
|
|
|
+ repalBill.setUserId(UserContextUtil.getUser().getUserId());
|
|
|
|
+ repalBill.setRepalBillStatus(RepalBillStatusUtil.getRepalBillStatus(dto.getEndDate()));
|
|
|
|
+ if (CollUtil.isNotEmpty(dto.getContractUrlList())) {
|
|
|
|
+ repalBill.setContractUrl(String.join(";", dto.getContractUrlList()));
|
|
|
|
+ }
|
|
|
|
+ if (companyIdFlag) {
|
|
|
|
+ // 评分 todo
|
|
|
|
+ }
|
|
|
|
+ this.save(repalBill);
|
|
|
|
+ // 负责人
|
|
|
|
+ repalResponsiblePersonService.saveBatch(dto.getResponsiblePersonIdList().stream().map(t -> {
|
|
|
|
+ RepalResponsiblePerson person = new RepalResponsiblePerson();
|
|
|
|
+ person.setRepalGroupId(dto.getRepalGroupId());
|
|
|
|
+ person.setRepalBookId(dto.getRepalBookId());
|
|
|
|
+ person.setRepalBillId(repalBill.getId());
|
|
|
|
+ person.setUserId(t);
|
|
|
|
+ return person;
|
|
|
|
+ }).collect(Collectors.toList()));
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public Boolean breakRepalBill(Long repalBillId) {
|
|
|
|
+ // 权限 todo 日志
|
|
|
|
+ this.update(Wrappers.lambdaUpdate(RepalBill.class)
|
|
|
|
+ .eq(RepalBill::getId, repalBillId)
|
|
|
|
+ .set(RepalBill::getRepalBillStatus, RepalBillStatusEnum.END.getCode()));
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
+ public Boolean updateRepalBill(UpdateRepalBillDTO dto) {
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
}
|
|
}
|