|
@@ -8,26 +8,36 @@ import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.fjhx.account.entity.account.dto.AccountRunningWaterDto;
|
|
|
+import com.fjhx.account.entity.account.dto.AccountRunningWaterSelectDto;
|
|
|
import com.fjhx.account.entity.account.po.AccountRunningWater;
|
|
|
+import com.fjhx.account.entity.account.vo.AccountRunningWaterVo;
|
|
|
import com.fjhx.account.service.account.AccountRunningWaterService;
|
|
|
+import com.fjhx.common.entity.claim.ClaimContract;
|
|
|
+import com.fjhx.common.entity.claim.dto.ClaimDto;
|
|
|
+import com.fjhx.common.entity.claim.dto.ClaimSelectDto;
|
|
|
+import com.fjhx.common.entity.claim.po.Claim;
|
|
|
+import com.fjhx.common.entity.claim.vo.ClaimContractVo;
|
|
|
+import com.fjhx.common.entity.claim.vo.ClaimVo;
|
|
|
import com.fjhx.file.utils.ObsFileUtil;
|
|
|
-import com.fjhx.sale.entity.claim.dto.ClaimDto;
|
|
|
-import com.fjhx.sale.entity.claim.dto.ClaimSelectDto;
|
|
|
-import com.fjhx.sale.entity.claim.po.Claim;
|
|
|
-import com.fjhx.sale.entity.claim.po.ClaimContract;
|
|
|
-import com.fjhx.sale.entity.claim.vo.ClaimContractVo;
|
|
|
-import com.fjhx.sale.entity.claim.vo.ClaimVo;
|
|
|
import com.fjhx.sale.mapper.claim.ClaimMapper;
|
|
|
import com.fjhx.sale.service.claim.ClaimContractService;
|
|
|
import com.fjhx.sale.service.claim.ClaimService;
|
|
|
+import com.ruoyi.common.core.domain.BasePo;
|
|
|
+import com.ruoyi.common.core.domain.entity.SysDept;
|
|
|
+import com.ruoyi.common.core.domain.entity.SysUser;
|
|
|
import com.ruoyi.common.exception.ServiceException;
|
|
|
import com.ruoyi.common.utils.SecurityUtils;
|
|
|
import com.ruoyi.common.utils.wrapper.IWrapper;
|
|
|
+import com.ruoyi.common.utils.wrapper.SqlField;
|
|
|
+import com.ruoyi.system.service.ISysDeptService;
|
|
|
+import com.ruoyi.system.service.ISysUserService;
|
|
|
import com.ruoyi.system.utils.UserUtil;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
+import java.util.Date;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
@@ -47,10 +57,12 @@ public class ClaimServiceImpl extends ServiceImpl<ClaimMapper, Claim> implements
|
|
|
|
|
|
@Autowired
|
|
|
private ClaimContractService claimContractService;
|
|
|
-
|
|
|
-
|
|
|
@Autowired
|
|
|
private AccountRunningWaterService accountRunningWaterService;
|
|
|
+ @Autowired
|
|
|
+ private ISysDeptService deptService;
|
|
|
+ @Autowired
|
|
|
+ private ISysUserService userService;
|
|
|
|
|
|
@Override
|
|
|
public Page<ClaimVo> getPage(ClaimSelectDto dto) {
|
|
@@ -69,28 +81,29 @@ public class ClaimServiceImpl extends ServiceImpl<ClaimMapper, Claim> implements
|
|
|
|
|
|
|
|
|
* 添加
|
|
|
+ *
|
|
|
* @param claim
|
|
|
*/
|
|
|
@Override
|
|
|
@DSTransactional
|
|
|
public synchronized void add(Claim claim) {
|
|
|
|
|
|
- if(ObjectUtils.isEmpty(claim.getBusinessId())){
|
|
|
+ if (ObjectUtils.isEmpty(claim.getBusinessId())) {
|
|
|
throw new ServiceException("请选择认领数据");
|
|
|
}
|
|
|
- if(ObjectUtils.isEmpty(claim.getAmount())){
|
|
|
+ if (ObjectUtils.isEmpty(claim.getAmount())) {
|
|
|
throw new ServiceException("认领金额不能为空");
|
|
|
}
|
|
|
AccountRunningWater water = accountRunningWaterService.getById(claim.getBusinessId());
|
|
|
- if(water.getClaimAmount().add(claim.getAmount()).compareTo(water.getAmount())>0){
|
|
|
+ if (water.getClaimAmount().add(claim.getAmount()).compareTo(water.getAmount()) > 0) {
|
|
|
throw new ServiceException("认领金额不能大于流水金额");
|
|
|
}
|
|
|
claim.setClaimUserId(SecurityUtils.getUserId());
|
|
|
claim.setClaimUserName(SecurityUtils.getUsername());
|
|
|
this.save(claim);
|
|
|
List<ClaimContract> claimContractList = claim.getClaimContractList();
|
|
|
- if(CollectionUtils.isNotEmpty(claim.getClaimContractList())){
|
|
|
- for(ClaimContract c:claimContractList){
|
|
|
+ if (CollectionUtils.isNotEmpty(claim.getClaimContractList())) {
|
|
|
+ for (ClaimContract c : claimContractList) {
|
|
|
c.setClaimId(claim.getId());
|
|
|
|
|
|
if (ObjectUtils.isNotEmpty(water.getAmountCny())) {
|
|
@@ -109,7 +122,7 @@ public class ClaimServiceImpl extends ServiceImpl<ClaimMapper, Claim> implements
|
|
|
}
|
|
|
water.setClaimAmount(water.getClaimAmount().add(claim.getAmount()));
|
|
|
accountRunningWaterService.updateById(water);
|
|
|
- ObsFileUtil.saveFile(claim.getFileList(),claim.getId());
|
|
|
+ ObsFileUtil.saveFile(claim.getFileList(), claim.getId());
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -119,6 +132,7 @@ public class ClaimServiceImpl extends ServiceImpl<ClaimMapper, Claim> implements
|
|
|
|
|
|
|
|
|
* 删除
|
|
|
+ *
|
|
|
* @param id 流水ID
|
|
|
*/
|
|
|
@Override
|
|
@@ -144,46 +158,171 @@ public class ClaimServiceImpl extends ServiceImpl<ClaimMapper, Claim> implements
|
|
|
|
|
|
|
|
|
* 查询已认领金额
|
|
|
+ *
|
|
|
* @param businessId
|
|
|
*/
|
|
|
@Override
|
|
|
public BigDecimal sumClaimMoney(Long businessId) {
|
|
|
QueryWrapper queryWrapper = new QueryWrapper();
|
|
|
queryWrapper.select("IFNULL(SUM(amount),0) AS sumAmount");
|
|
|
- queryWrapper.eq("business_id",businessId);
|
|
|
+ queryWrapper.eq("business_id", businessId);
|
|
|
Claim claim = this.getOne(queryWrapper);
|
|
|
- return claim==null?BigDecimal.ZERO:claim.getSumAmount();
|
|
|
+ return claim == null ? BigDecimal.ZERO : claim.getSumAmount();
|
|
|
}
|
|
|
|
|
|
|
|
|
* 查询认领记录 businessId 流水表ID
|
|
|
*/
|
|
|
@Override
|
|
|
- public List<ClaimContractVo> claimRecord(Long businessId) {
|
|
|
+ public List<ClaimContractVo> claimRecord(Long businessId) {
|
|
|
|
|
|
List<ClaimContractVo> claimContractVoList = baseMapper.claimRecord(Wrappers.<Claim>lambdaQuery().eq(Claim::getBusinessId, businessId));
|
|
|
|
|
|
|
|
|
- UserUtil.assignmentNickName(claimContractVoList,ClaimContractVo::getClaimUserId, ClaimContractVo::setClaimUserName);
|
|
|
+ UserUtil.assignmentNickName(claimContractVoList, ClaimContractVo::getClaimUserId, ClaimContractVo::setClaimUserName);
|
|
|
|
|
|
return claimContractVoList;
|
|
|
}
|
|
|
|
|
|
|
|
|
* 认领明细
|
|
|
+ *
|
|
|
* @param id 流水ID
|
|
|
* @return
|
|
|
*/
|
|
|
@Override
|
|
|
- public Map<String,Object> claimDetail(Long id) {
|
|
|
+ public Map<String, Object> claimDetail(Long id) {
|
|
|
AccountRunningWater accountRunningWater = accountRunningWaterService.detail(id);
|
|
|
- if(ObjectUtils.isEmpty(accountRunningWater)){
|
|
|
+ if (ObjectUtils.isEmpty(accountRunningWater)) {
|
|
|
throw new ServiceException("数据异常");
|
|
|
}
|
|
|
- Map<String,Object> map = new HashMap<>();
|
|
|
- map.put("water",accountRunningWater);
|
|
|
- map.put("claimRecord",this.claimRecord(id));
|
|
|
+ Map<String, Object> map = new HashMap<>();
|
|
|
+ map.put("water", accountRunningWater);
|
|
|
+ map.put("claimRecord", this.claimRecord(id));
|
|
|
return map;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ * 回款登记
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public synchronized void addClaimInfo(AccountRunningWaterDto accountRunningWaterDto) {
|
|
|
+ accountRunningWaterDto.setType("30");
|
|
|
+ accountRunningWaterDto.setStatus("10");
|
|
|
+ accountRunningWaterDto.setReceived("10");
|
|
|
+ accountRunningWaterService.save(accountRunningWaterDto);
|
|
|
+
|
|
|
+ ObsFileUtil.saveFile(accountRunningWaterDto.getFileList(), accountRunningWaterDto.getBusinessId());
|
|
|
+
|
|
|
+
|
|
|
+ Claim claim = new Claim();
|
|
|
+ claim.setBusinessId(accountRunningWaterDto.getId());
|
|
|
+ claim.setAmount(accountRunningWaterDto.getAmount());
|
|
|
+ claim.setAccountManagementId(accountRunningWaterDto.getAccountManagementId());
|
|
|
+ claim.setRemark(accountRunningWaterDto.getRemarks());
|
|
|
+ this.save(claim);
|
|
|
+
|
|
|
+ List<ClaimContract> claimContractList = accountRunningWaterDto.getClaimContractList();
|
|
|
+ for (ClaimContract claimContract : claimContractList) {
|
|
|
+ claimContract.setClaimId(claim.getId());
|
|
|
+ }
|
|
|
+ claimContractService.saveBatch(claimContractList);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Page<AccountRunningWaterVo> claimInfoPage(AccountRunningWaterSelectDto dto) {
|
|
|
+ IWrapper<AccountRunningWater> wrapper = accountRunningWaterService.getWrapper();
|
|
|
+
|
|
|
+ wrapper.eq("arw", AccountRunningWater::getCreateUser, SecurityUtils.getUserId());
|
|
|
+
|
|
|
+ return connClaimInfoPage(dto, wrapper);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Page<AccountRunningWaterVo> claimInfoConfirmPage(AccountRunningWaterSelectDto dto) {
|
|
|
+ IWrapper<AccountRunningWater> wrapper = accountRunningWaterService.getWrapper();
|
|
|
+ return connClaimInfoPage(dto, wrapper);
|
|
|
+ }
|
|
|
+
|
|
|
+ @DSTransactional
|
|
|
+ @Override
|
|
|
+ public void claimConfirm(AccountRunningWaterDto dto) {
|
|
|
+ accountRunningWaterService.update(q -> q
|
|
|
+ .eq(AccountRunningWater::getId, dto.getId())
|
|
|
+ .set(AccountRunningWater::getIsClaim, 1)
|
|
|
+ .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
|
|
|
+ .set(BasePo::getUpdateTime, new Date())
|
|
|
+ );
|
|
|
+ ObsFileUtil.saveFile(dto.getFileList(), dto.getId(), 1);
|
|
|
+ }
|
|
|
+
|
|
|
+ private Page<AccountRunningWaterVo> connClaimInfoPage(AccountRunningWaterSelectDto dto, IWrapper<AccountRunningWater> wrapper) {
|
|
|
+ wrapper.eq("arw", AccountRunningWater::getType, 30);
|
|
|
+ wrapper.eq("arw", AccountRunningWater::getStatus, 10);
|
|
|
+
|
|
|
+ wrapper.eq("arw", AccountRunningWater::getIsClaim, dto.getIsClaim());
|
|
|
+
|
|
|
+
|
|
|
+ wrapper.ge("arw", AccountRunningWater::getTransactionTime, dto.getBeginTime());
|
|
|
+ wrapper.le("arw", AccountRunningWater::getTransactionTime, dto.getEndTime());
|
|
|
+
|
|
|
+ if (ObjectUtils.isNotEmpty(dto.getKeyword())) {
|
|
|
+ List<SysDept> deptList = deptService.list(IWrapper.<SysDept>getWrapper().keyword(dto.getKeyword(), new SqlField(SysDept::getDeptName)));
|
|
|
+ List<Long> deptIds = deptList.stream().map(SysDept::getDeptId).collect(Collectors.toList());
|
|
|
+ List<SysUser> userList = userService.list(IWrapper.<SysUser>getWrapper().keyword(dto.getKeyword(), new SqlField(SysUser::getNickName)));
|
|
|
+ List<Long> userIds = userList.stream().map(SysUser::getUserId).collect(Collectors.toList());
|
|
|
+ wrapper.and(q -> q
|
|
|
+ .like("arw", AccountRunningWater::getAmount, dto.getKeyword())
|
|
|
+ .or().like("arw", AccountRunningWater::getTransactionTime, dto.getKeyword())
|
|
|
+ .or().like("arw", AccountRunningWater::getSerialNumber, dto.getKeyword())
|
|
|
+ .or().like("arw", AccountRunningWater::getRemarks, dto.getKeyword())
|
|
|
+ .or().like("arw", AccountRunningWater::getName, dto.getKeyword())
|
|
|
+ .or().like("arw", AccountRunningWater::getAccountOpening, dto.getKeyword())
|
|
|
+ .or().like("arw", AccountRunningWater::getOpeningBank, dto.getKeyword())
|
|
|
+ .or().like("arw", AccountRunningWater::getMyAccountName, dto.getKeyword())
|
|
|
+ .or().like("arw", AccountRunningWater::getMyAccountOpening, dto.getKeyword())
|
|
|
+ .or().like("arw", AccountRunningWater::getMyOpeningBank, dto.getKeyword())
|
|
|
+ .or(ObjectUtils.isNotEmpty(deptIds)).in(ObjectUtils.isNotEmpty(deptIds), "arw.company_id", deptIds)
|
|
|
+ .or(ObjectUtils.isNotEmpty(deptIds)).in(ObjectUtils.isNotEmpty(deptIds), "arw.dept_id", deptIds)
|
|
|
+ .or(ObjectUtils.isNotEmpty(userIds)).in(ObjectUtils.isNotEmpty(userIds), "arw.create_user", userIds)
|
|
|
+ .or(ObjectUtils.isNotEmpty(userIds)).in(ObjectUtils.isNotEmpty(userIds), "arw.register_user_id", userIds)
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ Page<AccountRunningWaterVo> page = baseMapper.claimInfoPage(dto.getPage(), wrapper);
|
|
|
+ List<AccountRunningWaterVo> records = page.getRecords();
|
|
|
+ if (ObjectUtils.isEmpty(records)) {
|
|
|
+ return page;
|
|
|
+ }
|
|
|
+ List<Long> arwIds = records.stream().map(AccountRunningWater::getId).collect(Collectors.toList());
|
|
|
+
|
|
|
+ Map<Long, List<ClaimContractVo>> collect = new HashMap<>();
|
|
|
+ List<ClaimContractVo> claimContractVoList = claimContractService.getList(IWrapper.<ClaimContract>getWrapper().in("cl", ClaimContract::getBusinessId, arwIds));
|
|
|
+ if (ObjectUtils.isNotEmpty(claimContractVoList)) {
|
|
|
+ collect = claimContractVoList.stream().collect(Collectors.groupingBy(ClaimContract::getBusinessId));
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ UserUtil.assignmentNickName(records, AccountRunningWaterVo::getRegisterUserId, AccountRunningWaterVo::setRegisterUserName);
|
|
|
+ UserUtil.assignmentNickName(records, AccountRunningWaterVo::getCreateUser, AccountRunningWaterVo::setCreateUserName);
|
|
|
+
|
|
|
+ List<SysDept> deptList = deptService.list();
|
|
|
+ Map<Long, String> deptMap = deptList.stream().collect(Collectors.toMap(SysDept::getDeptId, SysDept::getDeptName));
|
|
|
+
|
|
|
+ for (AccountRunningWaterVo record : records) {
|
|
|
+
|
|
|
+ record.setCompanyName(deptMap.get(record.getCompanyId()));
|
|
|
+
|
|
|
+ record.setDeptName(deptMap.get(record.getDeptId()));
|
|
|
+ }
|
|
|
+
|
|
|
+ for (AccountRunningWaterVo record : records) {
|
|
|
+ record.setClaimContractList(collect.get(record.getId()));
|
|
|
+ }
|
|
|
+ return page;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
}
|