Merge branch 'dev' into dev_user0622
# Conflicts: # mhd_wms/src/main/resources/mapper/pickingOrder/PickingOrderMapper.xml
This commit is contained in:
+124
-1
@@ -7,10 +7,18 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.mhd.bms.application.server.billingRules.CostCalculationApplicationService;
|
||||
import com.mhd.bms.application.server.settlementCustomers.SettlementCustomersApplicationService;
|
||||
import com.mhd.bms.domain.billManage.entity.BillDetail;
|
||||
import com.mhd.bms.domain.billManage.entity.BillManage;
|
||||
import com.mhd.bms.domain.billManage.repository.facade.IBillDetailService;
|
||||
import com.mhd.bms.domain.billManage.repository.facade.IBillManageService;
|
||||
import com.mhd.bms.domain.billingRules.repository.po.BillingParamsPO;
|
||||
import com.mhd.bms.domain.billingRules.repository.po.BillingRulesPO;
|
||||
import com.mhd.bms.domain.billingStatement.entity.BillingStatement;
|
||||
import com.mhd.bms.domain.billingStatement.repository.mapper.BillingStatementMapper;
|
||||
import com.mhd.bms.domain.billingStatement.repository.todo.BillingStatementDO;
|
||||
import com.mhd.bms.domain.billingStatement.service.BillingStatementDomainService;
|
||||
import com.mhd.bms.domain.businessDocument.entity.BusinessDocument;
|
||||
import com.mhd.bms.domain.businessDocument.repository.mapper.BusinessDocumentMapper;
|
||||
import com.mhd.bms.domain.businessDocument.repository.po.BusinessDocumentPO;
|
||||
import com.mhd.bms.domain.businessDocument.repository.todo.BusinessDocumentDO;
|
||||
import com.mhd.bms.domain.businessDocument.service.BusinessDocumentDomainService;
|
||||
@@ -30,6 +38,7 @@ import com.mhd.bms.infrastructure.feign.vo.ContractManagePO;
|
||||
import com.mhd.bms.infrastructure.feign.vo.ExpenseAccountPO;
|
||||
import com.mhd.bms.interfaces.assembler.businessDocument.BusinessDocumentAssembler;
|
||||
import com.mhd.bms.interfaces.dto.billingRules.CostCalculationDTO;
|
||||
import com.mhd.bms.interfaces.dto.billingStatement.BillingStatementDTO;
|
||||
import com.mhd.bms.interfaces.dto.businessDocument.BusinessDocumentDTO;
|
||||
import com.mhd.common.core.domain.dto.BusinessDataPushDTO;
|
||||
import com.mhd.common.core.domain.po.OrganizationPo;
|
||||
@@ -86,6 +95,14 @@ public class BusinessDocumentApplicationService {
|
||||
private CostCalculationApplicationService costCalculationApplicationService;
|
||||
@Autowired
|
||||
private ISettlementCustomersService settlementCustomersService;
|
||||
@Autowired
|
||||
private BusinessDocumentMapper businessDocumentMapper;
|
||||
@Autowired
|
||||
private BillingStatementMapper billingStatementMapper;
|
||||
@Autowired
|
||||
private IBillManageService billManageService;
|
||||
@Autowired
|
||||
private IBillDetailService billDetailService;
|
||||
|
||||
|
||||
/**
|
||||
@@ -202,6 +219,112 @@ public class BusinessDocumentApplicationService {
|
||||
return businessDocumentDomainService.insert(businessDocumentDO);
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean manageAddFee(BusinessDocumentDO businessDocumentDO) {
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
if (ObjectUtil.isNull(loginUser)) {
|
||||
throw new DigitalLogisticsException(UserError.TIMEOUT);
|
||||
}
|
||||
//先设置组织信息,因为handleDate方法中需要使用topOrganizationId
|
||||
businessDocumentDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
||||
businessDocumentDO.setOrganizationId(loginUser.getUserPo().getOrganizationId());
|
||||
businessDocumentDO.setOrganizationName(loginUser.getUserPo().getOrganizationName());
|
||||
UserPo userPo = loginUser.getUserPo();
|
||||
businessDocumentDO.setCreateBy(userPo.getUserId());
|
||||
businessDocumentDO.setCreateByName(userPo.getUserName());
|
||||
//校验使用的表单是否必填校验
|
||||
checkDoucumentType(businessDocumentDO);
|
||||
//处理数据
|
||||
handleDate(businessDocumentDO);
|
||||
businessDocumentDO.setDataSources(2);
|
||||
businessDocumentDO.setBusinessFlow(OrderSequence.getOrderCode("LS"));
|
||||
//调用费用计算,计算费用金额进行保存
|
||||
CostCalculationDTO costCalculationDTO = new CostCalculationDTO();
|
||||
costCalculationDTO.setOriginalBusinessNum(businessDocumentDO.getOriginalBusinessNum());
|
||||
costCalculationDTO.setContractNumber(businessDocumentDO.getContractNumber());
|
||||
costCalculationDTO.setFormJson(businessDocumentDO.getDocumentFormJson());
|
||||
costCalculationDTO.setSubjectCode(StringUtils.isEmpty(businessDocumentDO.getSecondSubjectCode()) ? businessDocumentDO.getFirstSubjectCode():businessDocumentDO.getSecondSubjectCode());
|
||||
costCalculationDTO.setDocumentTypeCode(businessDocumentDO.getDocumentTypeCode());
|
||||
costCalculationDTO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
||||
costCalculationDTO.setOrganizationId(loginUser.getUserPo().getOrganizationId());
|
||||
costCalculationDTO.setOrganizationName(loginUser.getUserPo().getOrganizationName());
|
||||
BillingCostPo billingCostPo = costCalculationApplicationService.costCalculation(costCalculationDTO);
|
||||
businessDocumentDO.setEstimatedCost(billingCostPo.getComputationalCost());
|
||||
BillingRulesPO billingRulesPO = billingCostPo.getBillingRulesPO();
|
||||
List<BillingParamsPO> billingParamsPOList = billingRulesPO.getBillingParamsPOList();
|
||||
if (ObjectUtil.isNotNull(billingParamsPOList)&&billingParamsPOList.size()>0) {
|
||||
BillingParamsPO billingParamsPO = billingParamsPOList.get(0);
|
||||
String billingParamsJson = billingParamsPO.getBillingParamsJson();
|
||||
String preSetRules = billingParamsPO.getPreSetRules();
|
||||
String documentFormJson = businessDocumentDO.getDocumentFormJson();
|
||||
JSONObject paramObj = JSONObject.parseObject(documentFormJson);
|
||||
List<BillingParamsEntity> billingParamsEntityList = JSON.parseArray(billingParamsJson, BillingParamsEntity.class);
|
||||
for (BillingParamsEntity billingParamsEntity : billingParamsEntityList) {
|
||||
String isFee = billingParamsEntity.getIsFee();
|
||||
String fields = billingParamsEntity.getFields();
|
||||
// 安全获取值并转 BigDecimal(不会报错)
|
||||
BigDecimal value = getSafeBigDecimal(paramObj, fields);
|
||||
|
||||
if ("1".equals(isFee)) {
|
||||
businessDocumentDO.setBillingUnitPrice(value.setScale(2, BigDecimal.ROUND_HALF_UP));
|
||||
} else {
|
||||
businessDocumentDO.setBillingNum(value.setScale(2, BigDecimal.ROUND_HALF_UP));
|
||||
}
|
||||
}
|
||||
}
|
||||
BusinessDocument businessDocument = businessDocumentDomainService.insertRetrun(businessDocumentDO);
|
||||
BusinessDocumentDTO businessDocumentDTO = new BusinessDocumentDTO();
|
||||
businessDocumentDTO.setBusinessDocumentIds(businessDocument.getBusinessDocumentId().toString());
|
||||
businessDocumentDTO.setAuditOperation(1);
|
||||
takeEffectByIds(businessDocumentDTO);
|
||||
auditByIds(businessDocumentDTO);
|
||||
List<BillingStatement> billingStatements = billingStatementMapper.selectList(new LambdaQueryWrapper<BillingStatement>()
|
||||
.eq(BillingStatement::getBusinessDocumentId, businessDocument.getBusinessDocumentId())
|
||||
.eq(BillingStatement::getDelFlag, 1));
|
||||
BillingStatement billingStatement = null;
|
||||
if (ObjectUtil.isNotNull(billingStatements)&&billingStatements.size()>0) {
|
||||
billingStatement = billingStatements.get(0);
|
||||
BillingStatementDTO billingStatementDTO = new BillingStatementDTO();
|
||||
billingStatementDTO.setBillingStatementIds(billingStatement.getBillingStatementId().toString());
|
||||
billingStatementDTO.setAuditOperation(1);
|
||||
billingStatementDomainService.reviewBilling(billingStatementDTO);
|
||||
}
|
||||
|
||||
BillManage billManage = billManageService.getById(businessDocumentDO.getBillManageId());
|
||||
BillDetail billDetail = new BillDetail();
|
||||
billDetail.setBillManageId(businessDocumentDO.getBillManageId());
|
||||
billDetail.setBillNumber(billManage.getBillNumber());
|
||||
billDetail.setBillingStatementId(billingStatement.getBillingStatementId());
|
||||
billDetail.setBillingFlow(billingStatement.getBillingFlow());
|
||||
billDetail.setOrganizationId(billManage.getOrganizationId());
|
||||
billDetail.setOrganizationName(billManage.getOrganizationName());
|
||||
billDetail.setTopOrganizationId(billManage.getTopOrganizationId());
|
||||
billDetail.setCreateBy(userPo.getUserId());
|
||||
billDetail.setCreateByName(userPo.getUserName());
|
||||
billDetail.setCreateTime(new Date());
|
||||
billDetail.setDelFlag(1);
|
||||
billDetail.setBillingTotalAmount(billingStatement.getBillingAmount());
|
||||
billDetail.setBillingDiscountAmount(BigDecimal.ZERO);
|
||||
billDetail.setBillingAmount(billingStatement.getBillingAmount());
|
||||
billDetail.setBillType(1);
|
||||
billDetail.setBillingExpectedAmount(BigDecimal.ZERO);
|
||||
billDetail.setFeeType(billingStatement.getServiceItemsName());
|
||||
billDetail.setInvoiceItem(billingStatement.getFirstSubjectCode());
|
||||
billDetail.setInvoiceItemName(billingStatement.getFirstSubjectName());
|
||||
billDetail.setSettlementCurrency(billingStatement.getSettlementCurrency());
|
||||
billDetail.setTaxAmount(billingStatement.getTaxAmount());
|
||||
billDetail.setTaxFreeFee(billingStatement.getTaxFreeFee());
|
||||
billDetail.setTaxRate(billingStatement.getTaxRate());
|
||||
billDetailService.save(billDetail);
|
||||
BigDecimal billAmount = billManage.getBillAmount();
|
||||
BigDecimal amount = billAmount.add(billDetail.getBillingAmount());
|
||||
billManage.setBillAmount(amount);
|
||||
billManage.setBillTotalAmount(amount);
|
||||
billManageService.updateById(billManage);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 从 JSONObject 安全获取 BigDecimal,支持:
|
||||
* 数字、整数字符串、小数字符串、null、空字符串
|
||||
@@ -484,7 +607,7 @@ public class BusinessDocumentApplicationService {
|
||||
if(businessDocumentDO.getBelongModuleCode().equals(BelongModuleCode.WMS.getCode())){
|
||||
contractType = 1;
|
||||
}
|
||||
AjaxResult ajaxResult = systemServiceFeign.getInfoByCustomerAndOrganizationId(businessDocumentDO.getSettlementCustomersCode(),contractType,businessDocumentDO.getTopOrganizationId(),businessDocumentDO.getOrganizationId());
|
||||
AjaxResult ajaxResult = systemServiceFeign.getInfoByCustomerAndSecondSubjectCode(businessDocumentDO.getSettlementCustomersCode(),contractType,businessDocumentDO.getFirstSubjectCode(),businessDocumentDO.getTopOrganizationId(),businessDocumentDO.getOrganizationId());
|
||||
if(!"200".equals(String.valueOf(ajaxResult.get("code")))) {
|
||||
throw new ServiceException("合同信息未找到");
|
||||
}
|
||||
|
||||
+2
-2
@@ -675,8 +675,8 @@ public class BillingStatementDomainService {
|
||||
billingStatementDO.setSettlementCustomersCode(billManagePO.getSettlementCustomersCode());
|
||||
billingStatementDO.setBelongModuleCode(billManagePO.getBelongModuleCode());
|
||||
billingStatementDO.setAccountExpenseType(billManagePO.getBillType());
|
||||
billingStatementDO.setCycleBeginTime(billManagePO.getCycleBeginTime());
|
||||
billingStatementDO.setCycleEndTime(billManagePO.getCycleEndTime());
|
||||
// billingStatementDO.setCycleBeginTime(billManagePO.getCycleBeginTime());
|
||||
// billingStatementDO.setCycleEndTime(billManagePO.getCycleEndTime());
|
||||
billingStatementDO.setBillingState(2);
|
||||
startPage();
|
||||
return billingStatementService.queryList(billingStatementDO);
|
||||
|
||||
+2
@@ -218,4 +218,6 @@ public class BusinessDocumentDO extends BaseVOEntity{
|
||||
private BigDecimal billingUnitPrice;
|
||||
@ApiModelProperty("nc科目编码")
|
||||
private String ncSubjectCode;
|
||||
|
||||
private Long billManageId;
|
||||
}
|
||||
+2
@@ -213,4 +213,6 @@ public class BusinessDocumentDTO extends BaseVOEntity{
|
||||
private String paymentAccountId;
|
||||
@ApiModelProperty("收款帐户名称")
|
||||
private String paymentAccountName;
|
||||
|
||||
private Long billManageId;
|
||||
}
|
||||
@@ -79,6 +79,25 @@ public class BusinessDocumentApi extends BaseController{
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存业务单据
|
||||
*/
|
||||
@ApiOperation("账单添加费用")
|
||||
@PostMapping("/manageAddFee")
|
||||
public AjaxResult manageAddFee(@RequestBody BusinessDocumentDTO businessDocumentDTO)
|
||||
{
|
||||
try {
|
||||
//转换实体
|
||||
BusinessDocumentDO businessDocumentDO = businessDocumentAssembler.toDO(businessDocumentDTO);
|
||||
return toAjax(businessDocumentApplicationService.manageAddFee(businessDocumentDO));
|
||||
} catch (ServiceException e) {
|
||||
return AjaxResult.error(e.getMessage());
|
||||
} catch (Exception e){
|
||||
return AjaxResult.error("保存业务单据失败:" + e.getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 保存业务单据
|
||||
|
||||
Reference in New Issue
Block a user