Commit ec2ccd0e by 王衍超

增加退款接口;

parent d41c9dcc
......@@ -9,5 +9,8 @@ public class PlanningCycleConstant {
public static final String ENTITY = "com.xyst.dinas.biz.datamodel.PlanningCycle";
public static final String startTime = "startTime";
public static final String endTime = "endTime";
}
......@@ -2,6 +2,7 @@ package com.xyst.dinas.biz.internal.service;
import java.util.Date;
import java.util.List;
import java.util.UUID;
import javax.transaction.Transactional;
......@@ -45,6 +46,11 @@ public class PlanningCycleServiceImpl implements PlanningCycleService{
public void initData() {
planningCycleDao.initData();
}
@Override
public KObject load(UUID id) {
return planningCycleDao.load(id);
}
}
......@@ -2,6 +2,7 @@ package com.xyst.dinas.biz.service;
import java.util.Date;
import java.util.List;
import java.util.UUID;
import com.beecode.bcp.type.KObject;
import com.xyst.dinas.biz.enumeration.PlanningCycleEnum;
......@@ -9,6 +10,8 @@ import com.xyst.dinas.biz.enumeration.PlanningCycleEnum;
public interface PlanningCycleService {
public KObject load(UUID id);
/**
* 获取指定日期和计划周期类型的计划周期实体
* @param planningCycleType 计划周期
......
......@@ -6,6 +6,7 @@ import java.util.List;
import java.util.UUID;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.lang.Nullable;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
......@@ -143,6 +144,10 @@ public class WarningServiceImpl implements WarningService{
return warnSettingDao.getWarnSetting(billType, billId, target);
}
public List<KObject> queryWarnSettings(String billType, @Nullable UUID billId,@Nullable String target){
return warnSettingDao.queryWarnSettings(billType, billId, target);
}
@Override
public WarnExeRecord queryWarnExeRecord(UUID warnSettingId) {
return warnSettingDao.queryWarnExeRecord(warnSettingId);
......
......@@ -27,6 +27,16 @@ public interface WarningService {
WarnSetting getWarnSetting(@NonNull UUID warnSettingId);
WarnSetting getWarnSetting(@NonNull String billType, @Nullable UUID billId, @Nullable String target);
/**
* 查询预警设置
* @param billType
* @param billId
* @param target
* @return
*/
List<KObject> queryWarnSettings(String billType, @Nullable UUID billId,@Nullable String target);
/**
* 根据ID查询一条预警设置
* @param id
......
......@@ -4,13 +4,16 @@ import org.springframework.context.annotation.Bean;
import com.xyst.dinas.finance.dao.BankRechargeDetailDao;
import com.xyst.dinas.finance.dao.ExpenseAdjustDao;
import com.xyst.dinas.finance.dao.FinanceRefundDao;
import com.xyst.dinas.finance.internal.dao.BankRechargeDetailDaoImpl;
import com.xyst.dinas.finance.internal.dao.ExpenseAdjustDaoImpl;
import com.xyst.dinas.finance.internal.service.BankRechargeDetailServiceImpl;
import com.xyst.dinas.finance.internal.service.ExpenseAdjustServiceImpl;
import com.xyst.dinas.finance.internal.service.FinanceRefundServiceImpl;
import com.xyst.dinas.finance.processor.FinanceRefundProcessor;
import com.xyst.dinas.finance.service.BankRechargeDetailService;
import com.xyst.dinas.finance.service.ExpenseAdjustService;
import com.xyst.dinas.finance.service.FinanceRefundService;
import com.xyst.dinas.finance.web.BankRechargeDetailController;
import com.xyst.dinas.finance.web.ExpenseAdjustController;
import com.xyst.dinas.finance.web.RefundController;
......@@ -22,6 +25,17 @@ public class FinanceConfiguration {
public RefundController refundController() {
return new RefundController();
}
@Bean
public FinanceRefundDao financeRefundDao() {
return new FinanceRefundDao();
}
@Bean
public FinanceRefundService financeRefundService() {
return new FinanceRefundServiceImpl();
}
@Bean("com.xyst.dinas.finance.processor.FinanceRefundProcessor")
public FinanceRefundProcessor rinanceRefundProcessor() {
return new FinanceRefundProcessor();
......
package com.xyst.dinas.finance.dao;
import java.util.UUID;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate5.HibernateOperations;
import com.beecode.bcp.type.KObject;
import com.xyst.dinas.finance.constant.FinanceRefundConstant;
public class FinanceRefundDao {
@Autowired
private HibernateOperations template;
public KObject load(UUID id) {
return (KObject) template.get(FinanceRefundConstant.ENTITY, id);
}
public void update(KObject kobject) {
template.update(kobject.getType().getName(), kobject);
}
}
......@@ -7,9 +7,10 @@ package com.xyst.dinas.finance.enumeration;
*/
public enum FundTypeEnum {
/**预付款*/
ADVANCE("预付款", 0),
/**保证金*/
DEPOSIT("保证金", 1),
......
package com.xyst.dinas.finance.internal.service;
import java.util.UUID;
import javax.transaction.Transactional;
import org.springframework.beans.factory.annotation.Autowired;
import com.beecode.bcp.type.KObject;
import com.xyst.dinas.finance.dao.FinanceRefundDao;
import com.xyst.dinas.finance.service.FinanceRefundService;
@Transactional
public class FinanceRefundServiceImpl implements FinanceRefundService{
@Autowired
private FinanceRefundDao financeRefundDao;
public KObject queryFinanceRefundById(UUID id) {
return financeRefundDao.load(id);
}
}
package com.xyst.dinas.finance.service;
import java.util.UUID;
import com.beecode.bcp.type.KObject;
public interface FinanceRefundService {
public KObject queryFinanceRefundById(UUID id);
}
package com.xyst.dinas.finance.web;
import java.util.UUID;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import com.beecode.bcp.type.KObject;
import com.beecode.inz.basis.team.pojo.ResponseObj;
import com.xyst.dinas.biz.warn.WarnSetting;
import com.xyst.dinas.biz.warn.service.WarningService;
import com.xyst.dinas.contract.constant.ContractConstant;
import com.xyst.dinas.contract.service.ContractService;
import com.xyst.dinas.contract.warn.ContractWarnConst;
import com.xyst.dinas.finance.constant.FinanceRefundConstant;
import com.xyst.dinas.finance.enumeration.FundTypeEnum;
import com.xyst.dinas.finance.service.FinanceRefundService;
/**
* 退款
*
......@@ -12,8 +27,34 @@ import org.springframework.web.bind.annotation.RestController;
@RestController
public class RefundController {
@PostMapping("/refund")
public void test() {
@Autowired
private FinanceRefundService financeRefundService;
@Autowired
private ContractService contractService;
@Autowired
private WarningService warningService;
//财务退费
@PostMapping("/finance/refund/{refundId}")
public Object refund(@PathVariable UUID refundId) {
//修改合同剩余金额; 去除预付款预警; 调用银行接口;
KObject financeRefund = financeRefundService.queryFinanceRefundById(refundId);
KObject contract = financeRefund.get(FinanceRefundConstant.contract);
int fundType = financeRefund.getInt(FinanceRefundConstant.fundType);
if (fundType == FundTypeEnum.ADVANCE.getValue()) {
contract.set(ContractConstant.ADVANCE_BALANCE, 0);//预付款余额 清零
//去除预付款预警;
UUID contractInfoId = contract.getUuid(ContractConstant.CONTRACT_ID);
WarnSetting warnSetting = warningService.getWarnSetting(ContractWarnConst.billType, contractInfoId, ContractWarnConst.warningTarget3);
warningService.deleteWarnSetting(warnSetting.getSettingId());
}else if (fundType == FundTypeEnum.DEPOSIT.getValue()) {
contract.set(ContractConstant.DEPOSIT_BALANCE, 0);//保证金余额 清零
}
contractService.update(contract);
//TODO 调用银行接口;
return ResponseObj.success();
}
}
......@@ -6,7 +6,11 @@ public class SalesPlanConstant {
public static final String ENTITY = "com.xyst.dinas.sales.datamodel.SalesPlan";
/** 销售计划子表-实体*/
public static final String ENTITY_DETAIL = "com.xyst.dinas.sales.datamodel.SalesPlan$SalesPlanDetail";
/** 销售计划子表-名称*/
public static final String SalesPlanDetails = "SalesPlanDetails";
/** 计划周期*/
public static final String planningCycle = "planningCycle";
/** 审批状态*/
public static final String APPROVE_STATE = "approveState";
/** 审批时间*/
......
......@@ -5,15 +5,12 @@ import java.util.List;
import java.util.UUID;
import org.hibernate.query.Query;
import org.hibernate.transform.Transformers;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.lang.Nullable;
import org.springframework.orm.hibernate5.HibernateTemplate;
import com.beecode.bcp.type.KObject;
import com.xyst.dinas.sales.constant.SalesPlanConstant;
import com.xyst.dinas.sales.entity.SalesPlan;
import com.xyst.dinas.sales.web.request.SaleaPlanDetailQuery;
public class SalesPlanDao {
......@@ -31,7 +28,6 @@ public class SalesPlanDao {
}
public UUID create(KObject kObject) {
// template.setCheckWriteOperations(false);
return (UUID) template.save(kObject.getType().getName(), kObject);
}
......@@ -140,18 +136,24 @@ public class SalesPlanDao {
return kObject;
});
// return template.execute(session ->{
// String hql = "from " + SalesPlanConstant.ENTITY + " where id =:salesPlanId ";
// Query query = session.createQuery(hql);
// query.setParameter("salesPlanId", salesPlanId);
// query.setResultTransformer(Transformers.aliasToBean(SalesPlan.class));
// SalesPlan resultList = (SalesPlan) query.uniqueResult();
//// KObject kObject = null;
//// if (resultList.size() > 0) {
//// kObject = resultList.get(0);
//// }
// return resultList;
//
// });
}
/**
* 查找指定时间范围内的已提交或已审批的临时销售计划
* @param startTime
* @param endTime
* @return
*/
public List<KObject> querySalesTempPlanByTime(Date startTime,Date endTime) {
return template.execute(session ->{
String hql = "from " + SalesPlanConstant.ENTITY_TEMP + " where planningCycle.startTime >=:startTime and planningCycle.endTime <=:endTime"
+ " and (approveState = 1 or approveState =2)";
Query<KObject> query = session.createQuery(hql, KObject.class);
query.setParameter("startTime", startTime);
query.setParameter("endTime", endTime);
List<KObject> resultList = query.getResultList();
return resultList;
});
}
}
......@@ -215,6 +215,11 @@ public class SalesPlanServiceImpl implements SalesPlanService{
}
public KObject querySalesPlanById(UUID id) {
return salesPlanDao.load(id);
}
/***************临时销售计划*****************/
......
......@@ -36,6 +36,8 @@ public interface SalesPlanService {
public void update(KObject salesPlan);
public KObject querySalesPlanById(UUID id);
public KObject queryTempSalesPlan(UUID id) ;
public void approveSalesPlanForDaily(UUID id,int approveState,String approveMemo);
......
package com.xyst.dinas.sales.web;
import java.util.Date;
import java.util.List;
import java.util.UUID;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.Assert;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.beecode.bap.workflow.core.BizProcessState;
import com.beecode.inz.basis.pojo.WarehouseUser;
import com.beecode.bcp.type.KObject;
import com.beecode.inz.basis.team.pojo.ResponseObj;
import com.beecode.inz.basis.util.JsonUtil;
import com.beecode.inz.common.BaseConstants;
import com.beecode.xlib.utils.StringUtil;
import com.xyst.dinas.sales.entity.SalesPlanDetail;
import com.xyst.dinas.biz.constant.PlanningCycleConstant;
import com.xyst.dinas.biz.service.PlanningCycleService;
import com.xyst.dinas.sales.constant.SalesPlanConstant;
import com.xyst.dinas.sales.service.SalesPlanService;
import com.xyst.dinas.sales.web.request.SaleaPlanApprove;
import com.xyst.dinas.sales.web.request.SaleaPlanDetailQuery;
import com.xyst.dinas.sales.web.request.SaleaPlanSubmit;
@RestController
public class SalesPlanController {
......@@ -30,17 +31,41 @@ public class SalesPlanController {
@Autowired
private SalesPlanService salesPlanService;
@Autowired
private PlanningCycleService planningCycleService;
@PostMapping("/salesplan/submit")
public Object submitSalesPlan(@RequestBody SaleaPlanApprove saleaPlanApprove) {
//TODO 校验数据
public Object submitSalesPlan(@Validated @RequestBody SaleaPlanApprove saleaPlanApprove) {
//校验数据
UUID salesplanId = saleaPlanApprove.getId();
KObject salesplan = salesPlanService.querySalesPlanById(salesplanId);
KObject planningCycle = salesplan.get(SalesPlanConstant.planningCycle);
Date startTime = planningCycle.getDate(PlanningCycleConstant.startTime);
Date endTime = planningCycle.getDate(PlanningCycleConstant.endTime);
UUID id = saleaPlanApprove.getId();
Integer approveState = BizProcessState.IN_PROCESS.getValue();
Assert.notNull(id, "The id must not be null");
Assert.notNull(approveState, "The approveState must not be null");
salesPlanService.approveSalesPlanForDaily(id, approveState, null);
return ResponseObj.success();
List<KObject> salesPlanDetails = salesplan.get(SalesPlanConstant.SalesPlanDetails).toList();
for (KObject salesPlanDetail : salesPlanDetails) {
UUID detailId = salesPlanDetail.getUuid(BaseConstants.ID);
KObject contract = salesPlanDetail.get(SalesPlanConstant.contract);
UUID contractId = contract.getUuid(BaseConstants.ID);
KObject dinasType = salesPlanDetail.get(SalesPlanConstant.dinasType);
UUID dinasTypeId = dinasType.getUuid(BaseConstants.ID);
double planAmount = salesPlanDetail.getDouble(SalesPlanConstant.planAmount);
double actualSaleAmount = salesPlanDetail.getDouble(SalesPlanConstant.actualSaleAmount);
double contractAmount = salesPlanDetail.getDouble(SalesPlanConstant.contractAmount);
double value = 0;
if(planAmount > value) {
return ResponseObj.error("提交失败",null);
}
}
return ResponseObj.success("提交成功");
}
......
package com.xyst.dinas.sales.web.request;
import java.io.Serializable;
import java.util.List;
import java.util.UUID;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
public class SaleaPlanSubmit implements Serializable {
private static final long serialVersionUID = 1L;
private UUID id;
@NotNull
private UUID planningCycleId;
@Valid
private List<SaleaPlanSubmitDetail> saleaPlanSubmitDetails;
public UUID getId() {
return id;
}
public void setId(UUID id) {
this.id = id;
}
public UUID getPlanningCycleId() {
return planningCycleId;
}
public void setPlanningCycleId(UUID planningCycleId) {
this.planningCycleId = planningCycleId;
}
public List<SaleaPlanSubmitDetail> getSaleaPlanSubmitDetails() {
return saleaPlanSubmitDetails;
}
public void setSaleaPlanSubmitDetails(List<SaleaPlanSubmitDetail> saleaPlanSubmitDetails) {
this.saleaPlanSubmitDetails = saleaPlanSubmitDetails;
}
class SaleaPlanSubmitDetail {
@NotNull
private UUID detailId;
@NotNull
private UUID contractId;
private UUID dinasTypeId;
private Double contractAmount;
private Double actualSaleAmount;
private Double planAmount;
public UUID getDetailId() {
return detailId;
}
public void setDetailId(UUID detailId) {
this.detailId = detailId;
}
public UUID getContractId() {
return contractId;
}
public void setContractId(UUID contractId) {
this.contractId = contractId;
}
public UUID getDinasTypeId() {
return dinasTypeId;
}
public void setDinasTypeId(UUID dinasTypeId) {
this.dinasTypeId = dinasTypeId;
}
public Double getContractAmount() {
return contractAmount;
}
public void setContractAmount(Double contractAmount) {
this.contractAmount = contractAmount;
}
public Double getActualSaleAmount() {
return actualSaleAmount;
}
public void setActualSaleAmount(Double actualSaleAmount) {
this.actualSaleAmount = actualSaleAmount;
}
public Double getPlanAmount() {
return planAmount;
}
public void setPlanAmount(Double planAmount) {
this.planAmount = planAmount;
}
// private Double stockAmount;
// private Double requiredAmount;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment