Просмотр исходного кода

1.结算中心-新流程接口调试及修改
2.财务提取数据去掉金额为0的
3.发票提取数据增加代开单位检索
4.客户订舱-备注修改
5.增加edi接口
6.配箱信息导出增加包装单位

纪新园 4 месяцев назад
Родитель
Сommit
40b635aa6f

+ 18 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/invoices/entity/FinInvoicesItems.java

@@ -624,6 +624,24 @@ public class FinInvoicesItems implements Serializable {
 	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String quantityCntrDescr;
 
+	/**
+	 * 代收、付客户 id
+	 */
+	@ApiModelProperty(value = "代收、付客户 id")
+	private Long generationCorpId;
+
+	/**
+	 * 代收、付客户中文名称
+	 */
+	@ApiModelProperty(value = "代收、付客户中文名称")
+	private String generationCorpCnName;
+
+	/**
+	 * 代收、付客户英文名称
+	 */
+	@ApiModelProperty(value = "代收、付客户英文名称")
+	private String generationCorpEnName;
+
 
 
 }

+ 18 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/stl/entity/FinStlBillsItems.java

@@ -709,6 +709,24 @@ public class FinStlBillsItems implements Serializable {
 	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String quantityCntrDescr;
 
+	/**
+	 * 代收、付客户 id
+	 */
+	@ApiModelProperty(value = "代收、付客户 id")
+	private Long generationCorpId;
+
+	/**
+	 * 代收、付客户中文名称
+	 */
+	@ApiModelProperty(value = "代收、付客户中文名称")
+	private String generationCorpCnName;
+
+	/**
+	 * 代收、付客户英文名称
+	 */
+	@ApiModelProperty(value = "代收、付客户英文名称")
+	private String generationCorpEnName;
+
 
 	/**
 	 * 已申请金额

+ 14 - 7
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/mapper/BillsMapper.xml

@@ -363,8 +363,15 @@
         <if test="acc.auditStatus != null and acc.auditStatus !=''">
             and fee.audit_status = #{acc.auditStatus}
         </if>
-        <if test="acc.corpCnName != null and acc.corpCnName != ''">
-            and fee.corp_id = #{acc.corpCnName}
+        <if test='acc.isDk != null and acc.isDk == "1"'>
+            <if test="acc.invCorpCnName != null and acc.invCorpCnName != ''">
+                and fee.generation_corp_id = #{acc.invCorpCnName}
+            </if>
+        </if>
+        <if test='acc.isDk == null or acc.isDk == "0"'>
+            <if test="acc.corpCnName != null and acc.corpCnName != ''">
+                and fee.corp_id = #{acc.corpCnName}
+            </if>
         </if>
         <if test="acc.isSignfor != null">
             and fee.is_signfor = #{acc.isSignfor}
@@ -392,7 +399,7 @@
         </if>
         <if test="acc.mblno != null and acc.mblno != ''">
             <if test="acc.vagueM == null or acc.vagueM == ''">
-                AND find_in_set(fee.mblno,#{acc.mblno})
+                and fee.mblno like concat('%', #{acc.mblno}, '%')
             </if>
             <if test="acc.vagueM != null and acc.vagueM != ''">
                 and find_in_set(fee.mblno,#{acc.mblno})
@@ -400,7 +407,7 @@
         </if>
         <if test="acc.hblno != null and acc.hblno != ''">
             <if test="acc.vagueH == null or acc.vagueH == ''">
-                and find_in_set(fee.hblno,#{acc.hblno})
+                and fee.hblno like concat('%', #{acc.hblno}, '%')
             </if>
             <if test="acc.vagueH != null and acc.vagueH != ''">
                 and find_in_set(fee.hblno,#{acc.hblno})
@@ -990,7 +997,7 @@
         </if>
         <if test='acc.isDk != null and acc.isDk == "1"'>
             <if test="acc.invCorpCnName != null and acc.invCorpCnName != ''">
-                and fee.corp_id = #{acc.invCorpCnName}
+                and fee.generation_corp_id = #{acc.invCorpCnName}
             </if>
         </if>
         <if test='acc.isDk == null or acc.isDk == "0"'>
@@ -1024,7 +1031,7 @@
         </if>
         <if test="acc.mblno != null and acc.mblno != ''">
             <if test="acc.vagueM == null or acc.vagueM == ''">
-                AND find_in_set(fee.mblno,#{acc.mblno})
+                and fee.mblno like concat('%', #{acc.mblno}, '%')
             </if>
             <if test="acc.vagueM != null and acc.vagueM != ''">
                 and find_in_set(fee.mblno,#{acc.mblno})
@@ -1032,7 +1039,7 @@
         </if>
         <if test="acc.hblno != null and acc.hblno != ''">
             <if test="acc.vagueH == null or acc.vagueH == ''">
-                and find_in_set(fee.hblno,#{acc.hblno})
+                and fee.hblno like concat('%', #{acc.hblno}, '%')
             </if>
             <if test="acc.vagueH != null and acc.vagueH != ''">
                 and find_in_set(fee.hblno,#{acc.hblno})

+ 37 - 6
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/BillsServiceImpl.java

@@ -342,6 +342,8 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 							bills1.setVoyageNo(bills.getVoyageNo());
 							bills1.setCyReturnTime(bills.getCyReturnTime());
 							bills1.setCyTrailerTime(bills.getCyTrailerTime());
+							bills1.setSiRemarks(bills.getSiRemarks());
+							bills1.setCyRemarks(bills.getCyRemarks());
 							this.updateById(bills1);
 						}
 					}
@@ -619,6 +621,8 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 				}
 				if ("MH,DD".contains(bills.getBillType())) {
 					item.setCommodityDescr(bills.getCommodityDescr());
+					item.setPackingUnit(bills.getPackingUnit());
+					item.setPackingUnitId(bills.getPackingUnitId());
 				}
 				if (item.getId() == null) {
 					item.setCreateTime(new Date());
@@ -1395,9 +1399,9 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 					}
 				}
 			}
-			if (status && ObjectUtils.isNotNull(hblno.toString())) {
+			/*if (status && ObjectUtils.isNotNull(hblno.toString())) {
 				throw new RuntimeException("分单号:" + hblno + "未分配件重尺,同步失败");
-			}
+			}*/
 			for (Containers item : containersList) {
 				item.setMblno(bills.getMblno());
 			}
@@ -1468,12 +1472,12 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 				}
 				containersBillsService.saveBatch(containersBillsListNew);
 			}
-		} else {
+		} /*else {
 			if (status) {
 				throw new RuntimeException("分单号:" + billsList.stream().map(Bills::getHblno).collect(Collectors.joining(","))
 					+ "未分配件重尺,同步失败");
 			}
-		}
+		}*/
 		List<FeeCenter> feeCenterList = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
 			.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
 			.eq(FeeCenter::getIsDeleted, 0)
@@ -4546,7 +4550,6 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 			TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
 			throw new RuntimeException("生成订单编号失败");
 		}
-		copyBills.setSiRemarks(detail.getCyRemarks());
 		copyBills.setCyRemarks("");
 		copyBills.setBusinessType("SE");
 		copyBills.setBusinessTypes("海运");
@@ -5218,6 +5221,34 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 		bills.setUpdateTime(new Date());
 		bills.setIssueStatus("2");
 		baseMapper.updateById(bills);
+		LocalDateTime now = LocalDateTime.now();
+		DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+		String formatted = now.format(formatter);
+		//发送消息
+		if (ObjectUtils.isNotNull(bills.getCustomerServiceId())) {
+			R<User> userR = userClient.userInfoById(bills.getCustomerServiceId());
+			if (userR.isSuccess() && ObjectUtils.isNotNull(userR.getData())) {
+				User datum = userR.getData();
+				Message sendMessage = new Message();
+				sendMessage.setParameter(bills.getId() + "");
+				sendMessage.setUserName(AuthUtil.getUserName());
+				sendMessage.setUserId(null);
+				sendMessage.setToUserId(datum.getId());
+				sendMessage.setToUserName(datum.getName());
+				sendMessage.setMessageType(1);
+				sendMessage.setTenantId(AuthUtil.getTenantId());
+				sendMessage.setCreateUser(null);
+				sendMessage.setCreateTime(new Date());
+				sendMessage.setUrl("/iosBasicData/businessCenter/customerLetter/index");
+				sendMessage.setPageLabel("海运出口");
+				sendMessage.setPageStatus("this.$store.getters.domSaleStatus");
+				sendMessage.setMessageBody("您有客户订舱已提交,请及时待处理!客户订舱单号:" + bills.getBillNo() + "时间:" + formatted);
+				R save = messageClient.save(sendMessage);
+				if (!save.isSuccess()) {
+					throw new SecurityException("发送消息失败");
+				}
+			}
+		}
 		return R.data(bills);
 	}
 
@@ -5935,7 +5966,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public R refundCabin(Bills bills) {
-		if (new Date().compareTo(bills.getEtd()) < 0) {
+		if (new Date().compareTo(bills.getEtd()) > 0) {
 			throw new RuntimeException("该订单已开船,退舱失败");
 		}
 		bills.setUpdateUserName(AuthUtil.getUserName());

+ 11 - 37
blade-service/blade-los/src/main/java/org/springblade/los/edi/service/impl/EdiTypesServiceImpl.java

@@ -27,6 +27,7 @@ import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.los.Util.RegularUtils;
 import org.springblade.los.Util.Regular_ONE;
+import org.springblade.los.Util.Regular_PIL;
 import org.springblade.los.basic.cntr.entity.BCntrTypes;
 import org.springblade.los.basic.cntr.service.IBCntrTypesService;
 import org.springblade.los.basic.corps.entity.BCorps;
@@ -975,61 +976,34 @@ public class EdiTypesServiceImpl extends ServiceImpl<EdiTypesMapper, EdiTypes> i
 						return R.fail(e.getMessage());
 					}
 				}
-			} /*else if (inttraSoDto.ediTypeIsHYCK_ZIM_SI()) {
-				status = Regular_ONE.notNullOneSIDto(inttraSoDto);
-				if ("200".equals(status.get("code").toString())) {
-					try {
-						filesCenter = iediSenderService.sendingZimSI(inttraSoDto, ediParamCarrier);
-					} catch (Exception e) {
-						return R.fail(e.getMessage());
-					}
-				}
-			} else if (inttraSoDto.ediTypeIsHYCK_HMM_BOOKING()) {
-				status = Regular_HMM.notNullEDIData_Booking(inttraSoDto, "SO");
-				if ("200".equals(status.get("code").toString())) {
-					try {
-						filesCenter = iediSenderService.sendingHmmBooking(inttraSoDto, ediParamCarrier);
-					} catch (Exception e) {
-						return R.fail(e.getMessage());
-					}
-				}
-			} else if (inttraSoDto.ediTypeIsHYCK_HMM_SI()) {
-				status = Regular_HMM.notNullEDIData_SI(inttraSoDto);
-				if ("200".equals(status.get("code").toString())) {
-					try {
-						filesCenter = iediSenderService.sendingHmmSI(inttraSoDto, ediParamCarrier);
-					} catch (Exception e) {
-						return R.fail(e.getMessage());
-					}
-				}
-			} else if (inttraSoDto.ediTypeIsHYCK_SML_BOOKING()) {
-				status = Regular_SML.notNullEDIData_Booking(inttraSoDto, "SO");
+			} else if (inttraSoDto.ediTypeIsHYCK_PIL_Booking()) {
+				status = Regular_PIL.notNullPilBookingDto(inttraSoDto, "SO");
 				if ("200".equals(status.get("code").toString())) {
 					try {
-						filesCenter = iediSenderService.sendingSmlBooking(inttraSoDto, ediParamCarrier);
+						filesCenter = iediSenderService.sendingPilBooking(inttraSoDto, ediParamCarrier);
 					} catch (Exception e) {
 						return R.fail(e.getMessage());
 					}
 				}
-			} else if (inttraSoDto.ediTypeIsHYCK_ESL_BOOKING()) {
-				status = Regular_ESL.notNullEDIData_Booking(inttraSoDto, "SO");
+			} else if (inttraSoDto.ediTypeIsHYCK_PIL_BL()) {
+				status = Regular_PIL.notNullPilBookingDto(inttraSoDto, "BL");
 				if ("200".equals(status.get("code").toString())) {
 					try {
-						filesCenter = iediSenderService.sendingEslBooking(inttraSoDto, ediParamCarrier);
+						filesCenter = iediSenderService.sendingPilBooking(inttraSoDto, ediParamCarrier);
 					} catch (Exception e) {
 						return R.fail(e.getMessage());
 					}
 				}
-			} else if (inttraSoDto.ediTypeIsHYCK_YML_BOOKING()) {
-				status = Regular_YML.notNullEDIData_Booking(inttraSoDto, "SO");
+			} else if (inttraSoDto.ediTypeIsHYCK_PIL_SI()) {
+				status = Regular_PIL.notNullPilSIDto(inttraSoDto);
 				if ("200".equals(status.get("code").toString())) {
 					try {
-						filesCenter = iediSenderService.sendingYmlBooking(inttraSoDto, ediParamCarrier);
+						filesCenter = iediSenderService.sendingPilSI(inttraSoDto, ediParamCarrier);
 					} catch (Exception e) {
 						return R.fail(e.getMessage());
 					}
 				}
-			}*/ else {
+			}  else {
 				return R.fail("EDI 未实现!");
 			}
 

+ 5 - 4
blade-service/blade-los/src/main/java/org/springblade/los/excel/BoxAndLeadSealNoExcel.java

@@ -20,9 +20,6 @@ import com.alibaba.excel.annotation.ExcelProperty;
 import com.alibaba.excel.annotation.write.style.ColumnWidth;
 import com.alibaba.excel.annotation.write.style.ContentRowHeight;
 import com.alibaba.excel.annotation.write.style.HeadRowHeight;
-import com.baomidou.mybatisplus.annotation.FieldStrategy;
-import com.baomidou.mybatisplus.annotation.TableField;
-import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.io.Serializable;
@@ -93,7 +90,11 @@ public class BoxAndLeadSealNoExcel implements Serializable {
 	 */
 	@ExcelProperty(value = "货物")
 	private String commodityDescr;
-
+	/**
+	 * 包装单位
+	 */
+	@ExcelProperty(value = "包装单位")
+	private String packingUnit;
 
 
 }

+ 20 - 6
blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/controller/FinAccBillsController.java

@@ -575,31 +575,45 @@ public class FinAccBillsController extends BladeController {
 		List<BCorps> bCorpsList = new ArrayList<>();
 		List<FinAccBillsVO> list = finAccBillsService.listAccBill(listAccBillVO);
 		for (FinAccBillsVO item : list) {
+			item.setQuantityCntrTypesDescr(item.getQuantityCntrDescr());
 			BigDecimal amount = item.getAppliedAmount().subtract(item.getAppliedAmountStl());
 			item.setAppliedCurrentStlAmount(item.getAmount().subtract(amount).subtract(item.getStlTtlAmount()));
+			item.setAppliedCurrentStlAmountOriginal(item.getAmount().subtract(amount).subtract(item.getStlTtlAmount()));
 			item.setAppliedInvoiceCurrentStlAmount(item.getAmount().subtract(item.getStlTtlAmount()));
+			item.setAppliedInvoiceCurrentStlAmountOriginal(item.getAmount().subtract(item.getStlTtlAmount()));
+			item.setReconciliationCurrentAmount(item.getAmount().subtract(item.getReconciliationAmount()));
+			item.setReconciliationCurrentAmountOriginal(item.getAmount().subtract(item.getReconciliationAmount()));
 			BigDecimal invoice = item.getAppliedInvoiceAmount().subtract(item.getAppliedInvoiceAmountStl());
 			item.setAppliedInvoiceCurrentAmount(item.getAmount().subtract(invoice).subtract(item.getUninvoicedAmount()));
-			item.setReconciliationCurrentAmount(item.getAmount().subtract(item.getReconciliationAmount()));
+			item.setAppliedInvoiceCurrentAmountOriginal(item.getAmount().subtract(invoice).subtract(item.getUninvoicedAmount()));
 			if ("2".equals(type)) {
 				//收
 				if ("D".equals(listAccBillVO.getDc())) {
-					if (new BigDecimal("0.00").compareTo(item.getAmount().subtract(item.getStlTtlAmount())) != 0) {
+					if (new BigDecimal("0.00").compareTo(item.getAppliedInvoiceCurrentStlAmount()) != 0) {
 						finAccBillsVOList.add(item);
 					}
 				} else if ("C".equals(listAccBillVO.getDc())) {
-					if (new BigDecimal("0.00").compareTo(item.getAmount().subtract(amount).subtract(item.getStlTtlAmount())) != 0) {
+					if (new BigDecimal("0.00").compareTo(item.getAppliedCurrentStlAmount()) != 0) {
 						finAccBillsVOList.add(item);
 					}
 				} else {
-					finAccBillsVOList.add(item);
+					if (new BigDecimal("0.00").compareTo(item.getAppliedInvoiceCurrentStlAmount()) != 0) {
+						finAccBillsVOList.add(item);
+						continue;
+					}
+					if (new BigDecimal("0.00").compareTo(item.getAppliedCurrentStlAmount()) != 0) {
+						finAccBillsVOList.add(item);
+						continue;
+					}
 				}
 			} else if ("3".equals(type)) {
-				if (new BigDecimal("0.00").compareTo(item.getAmount().subtract(item.getUninvoicedAmount())) != 0) {
+				if (new BigDecimal("0.00").compareTo(item.getAppliedInvoiceCurrentAmount()) != 0) {
 					finAccBillsVOList.add(item);
 				}
 			} else if ("1".equals(type)) {
-				finAccBillsVOList.add(item);
+				if (new BigDecimal("0.00").compareTo(item.getReconciliationCurrentAmount()) != 0) {
+					finAccBillsVOList.add(item);
+				}
 			} else if ("5".equals(type)) {
 				finAccBillsVOList.add(item);
 			}

+ 20 - 3
blade-service/blade-los/src/main/java/org/springblade/los/finance/invoices/service/impl/FinInvoicesServiceImpl.java

@@ -2234,11 +2234,13 @@ public class FinInvoicesServiceImpl extends ServiceImpl<FinInvoicesMapper, FinIn
 		}
 		FinInvoices finInvoices = finInvoicesList.get(0);
 		FinStlBills finStlBills = new FinStlBills();
-		if (1 == finInvoices.getIsDk()){
+		finStlBills.setBranchId(finInvoices.getBranchId());
+		finStlBills.setBranchName(finInvoices.getBranchName());
+		if (1 == finInvoices.getIsDk()) {
 			finStlBills.setCorpId(finInvoices.getInvCorpId());
 			finStlBills.setCorpCnName(finInvoices.getInvCorpCnName());
 			finStlBills.setCorpEnName(finInvoices.getInvCorpEnName());
-		}else{
+		} else {
 			finStlBills.setCorpId(finInvoices.getCorpId());
 			finStlBills.setCorpCnName(finInvoices.getCorpCnName());
 			finStlBills.setCorpEnName(finInvoices.getCorpEnName());
@@ -2297,6 +2299,11 @@ public class FinInvoicesServiceImpl extends ServiceImpl<FinInvoicesMapper, FinIn
 				finStlBillsItems.setUpdateUser(null);
 				finStlBillsItems.setUpdateTime(null);
 				finStlBillsItems.setUpdateUserName(null);
+				finStlBillsItems.setCurrentStlAmountNet(item.getCurrentAmountNet());
+				finStlBillsItems.setCurrentStlAmount(item.getCurrentAmount());
+				finStlBillsItems.setCurrentStlAmountLoc(item.getCurrentAmount().multiply(item.getExrate()).setScale(2, RoundingMode.HALF_UP));
+				finStlBillsItems.setItemType("STL");
+				finStlBillsItems.setCurrentStlExrate(item.getCurrentExrate());
 				finStlBillsItemsMapper.insert(finStlBillsItems);
 				finStlBillsItemsList.add(finStlBillsItems);
 				item.setUpdateUser(AuthUtil.getUserId());
@@ -2338,7 +2345,8 @@ public class FinInvoicesServiceImpl extends ServiceImpl<FinInvoicesMapper, FinIn
 					FeeCenter::getSignforDate, FeeCenter::getInvoiceDate, FeeCenter::getVoucherDate,
 					FeeCenter::getStlDate, FeeCenter::getCheckDate, FeeCenter::getAccDate,
 					FeeCenter::getId, FeeCenter::getAccBillId, FeeCenter::getVersion, FeeCenter::getAmount,
-					FeeCenter::getUnsettledAmount, FeeCenter::getStlTtlAmount, FeeCenter::getAppliedAmount)
+					FeeCenter::getUnsettledAmount, FeeCenter::getStlTtlAmount, FeeCenter::getAppliedAmount,
+					FeeCenter::getAppliedAmountStl)
 				.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
 				.eq(FeeCenter::getAccStatus, 1)
 				.in(FeeCenter::getAccBillId, finAccBillsListAll.stream().map(FinAccBills::getId).collect(Collectors.toList()))
@@ -2469,6 +2477,12 @@ public class FinInvoicesServiceImpl extends ServiceImpl<FinInvoicesMapper, FinIn
 			}
 			feeCenterService.saveOrUpdateBatch(feeCenterList);
 			finAccBillsService.saveOrUpdateBatch(finAccBillsList);
+			finStlBills.setAmountDr(finStlBills.getAmountDr() == null ? new BigDecimal("0.00") : finStlBills.getAmountDr());
+			finStlBills.setAmountCr(finStlBills.getAmountCr() == null ? new BigDecimal("0.00") : finStlBills.getAmountCr());
+			finStlBills.setAmountDrUsd(finStlBills.getAmountDrUsd() == null ? new BigDecimal("0.00") : finStlBills.getAmountDrUsd());
+			finStlBills.setAmountCrUsd(finStlBills.getAmountCrUsd() == null ? new BigDecimal("0.00") : finStlBills.getAmountCrUsd());
+			finStlBills.setAmountDrLoc(finStlBills.getAmountDrLoc() == null ? new BigDecimal("0.00") : finStlBills.getAmountDrLoc());
+			finStlBills.setAmountCrLoc(finStlBills.getAmountCrLoc() == null ? new BigDecimal("0.00") : finStlBills.getAmountCrLoc());
 			this.countFeeItemsStl(finStlBills, finStlBillsItemsList, exrateType);
 			finStlBillsMapper.updateById(finStlBills);
 		}
@@ -2941,6 +2955,9 @@ public class FinInvoicesServiceImpl extends ServiceImpl<FinInvoicesMapper, FinIn
 		invoicesItems.setCurrentSurRate(item.getSurchargeRate());
 		invoicesItems.setCurrentAmountTax(item.getAmountTax());
 		invoicesItems.setCurrentAmountEx(item.getExrate());
+		invoicesItems.setGenerationCorpId(item.getGenerationCorpId());
+		invoicesItems.setGenerationCorpCnName(item.getGenerationCorpCnName());
+		invoicesItems.setGenerationCorpEnName(item.getGenerationCorpEnName());
 		return invoicesItems;
 	}
 

+ 21 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/controller/FinStlBillsController.java

@@ -278,6 +278,27 @@ public class FinStlBillsController extends BladeController {
 		return finStlBillsService.revokeSettlement(finStlBills);
 	}
 
+	/**
+	 * 财务结算 确认  1.0
+	 */
+	@PostMapping("/confirmSettlementV1")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "确认", notes = "传入finStlBills")
+	@RepeatSubmit
+	public R confirmSettlementV1(@Valid @RequestBody FinStlBills finStlBills) {
+		return finStlBillsService.confirmSettlementV1(finStlBills);
+	}
+	/**
+	 * 财务结算 撤销  1.0
+	 */
+	@PostMapping("/revokeSettlementV1")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "撤销", notes = "传入finStlBills")
+	@RepeatSubmit
+	public R revokeSettlementV1(@Valid @RequestBody FinStlBills finStlBills) {
+		return finStlBillsService.revokeSettlementV1(finStlBills);
+	}
+
 
 	/**
 	 * 删除 业务-财务对账单和结算

+ 4 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/service/IFinStlBillsService.java

@@ -126,4 +126,8 @@ public interface IFinStlBillsService extends IService<FinStlBills> {
 	R generateFinStlBillsV1(String billId, Date date);
 
 	R revokeGenerateFinStlBillsV1(String billId);
+
+	R confirmSettlementV1(FinStlBills finStlBills);
+
+	R revokeSettlementV1(FinStlBills finStlBills);
 }

+ 161 - 9
blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/service/impl/FinStlBillsServiceImpl.java

@@ -2483,15 +2483,9 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 			for (FinAccBillsVO item : finStlBills.getFinAccBillsVOList()) {
 				FinStlBillsItems stlBillsItems = this.assignmentProcess(item, stlBills);
 				stlBillsItems.setPType("STL");
-				if ("D".equals(item.getAccountDc())) {
-					stlBillsItems.setCurrentStlAmountNet(item.getAppliedInvoiceCurrentStlAmount());
-					stlBillsItems.setCurrentStlAmount(item.getAppliedInvoiceCurrentStlAmount());
-					stlBillsItems.setCurrentStlAmountLoc(item.getAppliedInvoiceCurrentStlAmount().multiply(item.getExrate()).setScale(2, RoundingMode.HALF_UP));
-				} else {
-					stlBillsItems.setCurrentStlAmountNet(item.getAppliedCurrentStlAmount());
-					stlBillsItems.setCurrentStlAmount(item.getAppliedCurrentStlAmount());
-					stlBillsItems.setCurrentStlAmountLoc(item.getAppliedCurrentStlAmount().multiply(item.getExrate()).setScale(2, RoundingMode.HALF_UP));
-				}
+				stlBillsItems.setCurrentStlAmountNet(item.getReconciliationCurrentAmount());
+				stlBillsItems.setCurrentStlAmount(item.getReconciliationCurrentAmount());
+				stlBillsItems.setCurrentStlAmountLoc(item.getReconciliationCurrentAmount().multiply(item.getExrate()).setScale(2, RoundingMode.HALF_UP));
 				stlBillsItems.setItemType("STL");
 				stlBillsItems.setStlTtlAmount(stlBillsItems.getStlTtlAmount().add(stlBillsItems.getCurrentStlAmount().add(stlBillsItems.getCurrentStlDiscount())));
 				stlBillsItems.setUnsettledAmount(stlBillsItems.getAmount().subtract(stlBillsItems.getStlTtlAmount()));
@@ -2827,6 +2821,9 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 		stlBillsItems.setBookingAgentEnName(item.getBookingAgentEnName());
 		stlBillsItems.setTeu(item.getTeu());
 		stlBillsItems.setQuantityCntrDescr(item.getQuantityCntrDescr());
+		stlBillsItems.setGenerationCorpId(item.getGenerationCorpId());
+		stlBillsItems.setGenerationCorpCnName(item.getGenerationCorpCnName());
+		stlBillsItems.setGenerationCorpEnName(item.getGenerationCorpEnName());
 		return stlBillsItems;
 	}
 
@@ -3563,6 +3560,7 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 						e.setAmount(ObjectUtils.isNotNull(e.getAmount()) ? e.getAmount() : new BigDecimal("0.00"));
 						e.setUnsettledAmount(ObjectUtils.isNotNull(e.getUnsettledAmount()) ? e.getUnsettledAmount() : new BigDecimal("0.00"));
 						e.setStlTtlAmount(ObjectUtils.isNotNull(e.getStlTtlAmount()) ? e.getStlTtlAmount() : new BigDecimal("0.00"));
+						e.setAppliedAmountStl(ObjectUtils.isNotNull(e.getAppliedAmountStl()) ? e.getAppliedAmountStl() : new BigDecimal("0.00"));
 						e.setStlBillId(finStlBills.getId());
 						e.setStlBillNo(finStlBills.getBillNo());
 						e.setStlDate(finStlBills.getBillDate());
@@ -3797,4 +3795,158 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 		return R.data(finStlBills);
 	}
 
+	@Override
+	public R confirmSettlementV1(FinStlBills finStlBills) {
+		if (finStlBills.getId() == null) {
+			throw new RuntimeException("缺少必要参数");
+		}
+		FinStlBills detail = baseMapper.selectById(finStlBills.getId());
+		if (ObjectUtils.isNotNull(finStlBills.getFinStlBillsItemsList())) {
+			detail.setBusinessNo(finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getBillNo).distinct().collect(Collectors.joining(",")));
+			detail.setAccountNo(finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getAccBillNo).distinct().collect(Collectors.joining(",")));
+			detail.setMblno(finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getMblno).distinct().collect(Collectors.joining(",")));
+			detail.setHblno(finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getHblno).distinct().collect(Collectors.joining(",")));
+			detail.setInvoiceNo(finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getInvoiceNo).distinct().collect(Collectors.joining(",")));
+			detail.setFeeCnName(finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getFeeCnName).distinct().collect(Collectors.joining(",")));
+			detail.setFeeEnName(finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getFeeEnName).distinct().collect(Collectors.joining(",")));
+			detail.setFeeCode(finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getFeeCode).distinct().collect(Collectors.joining(",")));
+			for (FinStlBillsItems item : finStlBills.getFinStlBillsItemsList()) {
+				item.setIsCleared(1);
+				item.setBillDate(finStlBills.getBillDate());
+				item.setUpdateUser(AuthUtil.getUserId());
+				item.setUpdateTime(new Date());
+				item.setUpdateUserName(AuthUtil.getUserName());
+				FinAccBills finAccBills = finAccBillsService.getById(item.getAccBillId());
+				if (finAccBills == null) {
+					throw new RuntimeException("未找到账单明细,操作失败");
+				}
+				//计算字段null值处理
+				item.setStlTtlAmount(ObjectUtils.isNotNull(item.getStlTtlAmount()) ? item.getStlTtlAmount() : new BigDecimal("0.00"));
+				item.setUnsettledAmount(ObjectUtils.isNotNull(item.getUnsettledAmount()) ? item.getUnsettledAmount() : new BigDecimal("0.00"));
+				item.setCurrentStlAmount(ObjectUtils.isNotNull(item.getCurrentStlAmount()) ? item.getCurrentStlAmount() : new BigDecimal("0.00"));
+				item.setCurrentStlDiscount(ObjectUtils.isNotNull(item.getCurrentStlDiscount()) ? item.getCurrentStlDiscount() : new BigDecimal("0.00"));
+				item.setStlTtlAmount(item.getStlTtlAmount().add(item.getCurrentStlAmount().add(item.getCurrentStlDiscount())));
+				item.setUnsettledAmount(item.getAmount().subtract(item.getStlTtlAmount()));
+			}
+			finStlBillsItemsService.saveOrUpdateBatch(finStlBills.getFinStlBillsItemsList());
+			detail.setStatus(3);
+			detail.setIsCleared(1);
+			List<Long> accBillId = finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getAccBillId).distinct().collect(Collectors.toList());
+			if (!accBillId.isEmpty()) {
+				List<FeeCenter> feeCenters = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
+					.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
+					.eq(FeeCenter::getIsDeleted, 0)
+					.in(FeeCenter::getAccBillId, accBillId));
+				updateBillsStatus(finStlBills.getFinStlBillsItemsList(), 2, feeCenters);
+			}
+		} else {
+			throw new RuntimeException("请选择明细");
+		}
+		baseMapper.updateById(detail);
+		String status = sysClient.getParamService("retreat.pledge");
+		if (ObjectUtils.isNotNull(status) && "1".equals(status) && "D".equals(finStlBills.getDc())) {
+			List<Long> accIds = finStlBills.getFinStlBillsItemsList().stream()
+				.filter(e -> "D".equals(e.getDc()) && "YXF".equals(e.getFeeCode())).map(FinStlBillsItems::getAccBillId)
+				.distinct().collect(Collectors.toList());
+			if (!accIds.isEmpty()) {
+				List<FinAccBills> accBills = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
+					.eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
+					.eq(FinAccBills::getIsDeleted, 0)
+					.in(FinAccBills::getId, accIds));
+				List<Long> agentIds = accBills.stream().map(FinAccBills::getBusinessBillId).collect(Collectors.toList());
+				if (!agentIds.isEmpty()) {
+					List<Bills> agentList = billsMapper.selectList(new LambdaQueryWrapper<Bills>()
+						.in(Bills::getId, agentIds)
+						.eq(Bills::getTenantId, AuthUtil.getTenantId())
+						.eq(Bills::getIsDeleted, 0));
+					for (Bills item : agentList) {
+						item.setBillingStatus(1);
+						item.setUpdateUser(AuthUtil.getUserId());
+						item.setUpdateUserName(AuthUtil.getUserName());
+						item.setUpdateTime(new Date());
+						billsMapper.updateById(item);
+					}
+				}
+			}
+		}
+		return R.data(detail);
+	}
+
+	@Override
+	public R revokeSettlementV1(FinStlBills finStlBills) {
+		if (finStlBills.getId() == null) {
+			throw new RuntimeException("缺少必要参数");
+		}
+		FinStlBills detail = baseMapper.selectById(finStlBills.getId());
+		if (ObjectUtils.isNotNull(detail.getBillDate())) {
+			LocalDate date = detail.getBillDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+			int year = date.getYear();
+			int month = date.getMonthValue();
+			FinPeriod finPeriod = finPeriodMapper.selectOne(new LambdaQueryWrapper<FinPeriod>()
+				.eq(FinPeriod::getTenantId, AuthUtil.getTenantId())
+				.eq(FinPeriod::getBranchId, detail.getBillDate())
+				.eq(FinPeriod::getIsDeleted, 0)
+				.eq(FinPeriod::getPeriodYear, year)
+				.eq(FinPeriod::getPeriodMonth, month));
+			if (finPeriod != null) {
+				if (1 == finPeriod.getIsClosed()) {
+					throw new RuntimeException(year + "年" + month + "月账期已结转,撤销失败");
+				}
+				if (1 == finPeriod.getLockingStatus()) {
+					throw new RuntimeException(year + "年" + month + "月账期已锁定,撤销失败");
+				}
+			}
+		}
+		if (ObjectUtils.isNotNull(finStlBills.getFinStlBillsItemsList())) {
+			for (FinStlBillsItems item : finStlBills.getFinStlBillsItemsList()) {
+				item.setIsCleared(0);
+				item.setBillDate(null);
+				item.setUpdateUser(AuthUtil.getUserId());
+				item.setUpdateTime(new Date());
+				item.setUpdateUserName(AuthUtil.getUserName());
+			}
+			finStlBillsItemsService.saveOrUpdateBatch(finStlBills.getFinStlBillsItemsList());
+			detail.setStatus(0);
+			detail.setIsCleared(0);
+			List<Long> accBillId = finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getAccBillId).distinct().collect(Collectors.toList());
+			if (!accBillId.isEmpty()) {
+				List<FeeCenter> feeCenters = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
+					.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
+					.eq(FeeCenter::getIsDeleted, 0)
+					.in(FeeCenter::getAccBillId, accBillId));
+				updateBillsStatus(finStlBills.getFinStlBillsItemsList(), 3, feeCenters);
+			}
+		} else {
+			throw new RuntimeException("请选择明细");
+		}
+		baseMapper.updateById(detail);
+		String status = sysClient.getParamService("retreat.pledge");
+		if (ObjectUtils.isNotNull(status) && "1".equals(status) && "D".equals(finStlBills.getDc())) {
+			List<Long> accIds = finStlBills.getFinStlBillsItemsList().stream()
+				.filter(e -> "D".equals(e.getDc()) && "YXF".equals(e.getFeeCode())).map(FinStlBillsItems::getAccBillId)
+				.distinct().collect(Collectors.toList());
+			if (!accIds.isEmpty()) {
+				List<FinAccBills> accBills = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
+					.eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
+					.eq(FinAccBills::getIsDeleted, 0)
+					.in(FinAccBills::getId, accIds));
+				List<Long> agentIds = accBills.stream().map(FinAccBills::getBusinessBillId).collect(Collectors.toList());
+				if (!agentIds.isEmpty()) {
+					List<Bills> agentList = billsMapper.selectList(new LambdaQueryWrapper<Bills>()
+						.in(Bills::getId, agentIds)
+						.eq(Bills::getTenantId, AuthUtil.getTenantId())
+						.eq(Bills::getIsDeleted, 0));
+					for (Bills item : agentList) {
+						item.setBillingStatus(0);
+						item.setUpdateUser(AuthUtil.getUserId());
+						item.setUpdateUserName(AuthUtil.getUserName());
+						item.setUpdateTime(new Date());
+						billsMapper.updateById(item);
+					}
+				}
+			}
+		}
+		return R.data(detail);
+	}
+
 }