Commit ec2ccd0e by 王衍超

增加退款接口;

parent d41c9dcc
...@@ -9,5 +9,8 @@ public class PlanningCycleConstant { ...@@ -9,5 +9,8 @@ public class PlanningCycleConstant {
public static final String ENTITY = "com.xyst.dinas.biz.datamodel.PlanningCycle"; 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; ...@@ -2,6 +2,7 @@ package com.xyst.dinas.biz.internal.service;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.UUID;
import javax.transaction.Transactional; import javax.transaction.Transactional;
...@@ -46,5 +47,10 @@ public class PlanningCycleServiceImpl implements PlanningCycleService{ ...@@ -46,5 +47,10 @@ public class PlanningCycleServiceImpl implements PlanningCycleService{
planningCycleDao.initData(); planningCycleDao.initData();
} }
@Override
public KObject load(UUID id) {
return planningCycleDao.load(id);
}
} }
...@@ -2,6 +2,7 @@ package com.xyst.dinas.biz.service; ...@@ -2,6 +2,7 @@ package com.xyst.dinas.biz.service;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.UUID;
import com.beecode.bcp.type.KObject; import com.beecode.bcp.type.KObject;
import com.xyst.dinas.biz.enumeration.PlanningCycleEnum; import com.xyst.dinas.biz.enumeration.PlanningCycleEnum;
...@@ -9,6 +10,8 @@ import com.xyst.dinas.biz.enumeration.PlanningCycleEnum; ...@@ -9,6 +10,8 @@ import com.xyst.dinas.biz.enumeration.PlanningCycleEnum;
public interface PlanningCycleService { public interface PlanningCycleService {
public KObject load(UUID id);
/** /**
* 获取指定日期和计划周期类型的计划周期实体 * 获取指定日期和计划周期类型的计划周期实体
* @param planningCycleType 计划周期 * @param planningCycleType 计划周期
......
...@@ -6,6 +6,7 @@ import java.util.List; ...@@ -6,6 +6,7 @@ import java.util.List;
import java.util.UUID; import java.util.UUID;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.lang.Nullable;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert; import org.springframework.util.Assert;
...@@ -143,6 +144,10 @@ public class WarningServiceImpl implements WarningService{ ...@@ -143,6 +144,10 @@ public class WarningServiceImpl implements WarningService{
return warnSettingDao.getWarnSetting(billType, billId, target); 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 @Override
public WarnExeRecord queryWarnExeRecord(UUID warnSettingId) { public WarnExeRecord queryWarnExeRecord(UUID warnSettingId) {
return warnSettingDao.queryWarnExeRecord(warnSettingId); return warnSettingDao.queryWarnExeRecord(warnSettingId);
......
...@@ -27,6 +27,16 @@ public interface WarningService { ...@@ -27,6 +27,16 @@ public interface WarningService {
WarnSetting getWarnSetting(@NonNull UUID warnSettingId); WarnSetting getWarnSetting(@NonNull UUID warnSettingId);
WarnSetting getWarnSetting(@NonNull String billType, @Nullable UUID billId, @Nullable String target); 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查询一条预警设置 * 根据ID查询一条预警设置
* @param id * @param id
......
...@@ -4,13 +4,16 @@ import org.springframework.context.annotation.Bean; ...@@ -4,13 +4,16 @@ import org.springframework.context.annotation.Bean;
import com.xyst.dinas.finance.dao.BankRechargeDetailDao; import com.xyst.dinas.finance.dao.BankRechargeDetailDao;
import com.xyst.dinas.finance.dao.ExpenseAdjustDao; 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.BankRechargeDetailDaoImpl;
import com.xyst.dinas.finance.internal.dao.ExpenseAdjustDaoImpl; import com.xyst.dinas.finance.internal.dao.ExpenseAdjustDaoImpl;
import com.xyst.dinas.finance.internal.service.BankRechargeDetailServiceImpl; import com.xyst.dinas.finance.internal.service.BankRechargeDetailServiceImpl;
import com.xyst.dinas.finance.internal.service.ExpenseAdjustServiceImpl; 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.processor.FinanceRefundProcessor;
import com.xyst.dinas.finance.service.BankRechargeDetailService; import com.xyst.dinas.finance.service.BankRechargeDetailService;
import com.xyst.dinas.finance.service.ExpenseAdjustService; 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.BankRechargeDetailController;
import com.xyst.dinas.finance.web.ExpenseAdjustController; import com.xyst.dinas.finance.web.ExpenseAdjustController;
import com.xyst.dinas.finance.web.RefundController; import com.xyst.dinas.finance.web.RefundController;
...@@ -22,6 +25,17 @@ public class FinanceConfiguration { ...@@ -22,6 +25,17 @@ public class FinanceConfiguration {
public RefundController refundController() { public RefundController refundController() {
return new 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") @Bean("com.xyst.dinas.finance.processor.FinanceRefundProcessor")
public FinanceRefundProcessor rinanceRefundProcessor() { public FinanceRefundProcessor rinanceRefundProcessor() {
return new FinanceRefundProcessor(); 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; ...@@ -7,9 +7,10 @@ package com.xyst.dinas.finance.enumeration;
*/ */
public enum FundTypeEnum { public enum FundTypeEnum {
/**预付款*/
ADVANCE("预付款", 0), ADVANCE("预付款", 0),
/**保证金*/
DEPOSIT("保证金", 1), 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; 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.PostMapping;
import org.springframework.web.bind.annotation.RestController; 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; ...@@ -12,8 +27,34 @@ import org.springframework.web.bind.annotation.RestController;
@RestController @RestController
public class RefundController { 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 { ...@@ -6,7 +6,11 @@ public class SalesPlanConstant {
public static final String ENTITY = "com.xyst.dinas.sales.datamodel.SalesPlan"; 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 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"; public static final String APPROVE_STATE = "approveState";
/** 审批时间*/ /** 审批时间*/
......
...@@ -5,15 +5,12 @@ import java.util.List; ...@@ -5,15 +5,12 @@ import java.util.List;
import java.util.UUID; import java.util.UUID;
import org.hibernate.query.Query; import org.hibernate.query.Query;
import org.hibernate.transform.Transformers;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.lang.Nullable; import org.springframework.lang.Nullable;
import org.springframework.orm.hibernate5.HibernateTemplate; import org.springframework.orm.hibernate5.HibernateTemplate;
import com.beecode.bcp.type.KObject; import com.beecode.bcp.type.KObject;
import com.xyst.dinas.sales.constant.SalesPlanConstant; import com.xyst.dinas.sales.constant.SalesPlanConstant;
import com.xyst.dinas.sales.entity.SalesPlan;
import com.xyst.dinas.sales.web.request.SaleaPlanDetailQuery; import com.xyst.dinas.sales.web.request.SaleaPlanDetailQuery;
public class SalesPlanDao { public class SalesPlanDao {
...@@ -31,7 +28,6 @@ public class SalesPlanDao { ...@@ -31,7 +28,6 @@ public class SalesPlanDao {
} }
public UUID create(KObject kObject) { public UUID create(KObject kObject) {
// template.setCheckWriteOperations(false);
return (UUID) template.save(kObject.getType().getName(), kObject); return (UUID) template.save(kObject.getType().getName(), kObject);
} }
...@@ -140,18 +136,24 @@ public class SalesPlanDao { ...@@ -140,18 +136,24 @@ public class SalesPlanDao {
return kObject; 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)); * @param startTime
// SalesPlan resultList = (SalesPlan) query.uniqueResult(); * @param endTime
//// KObject kObject = null; * @return
//// if (resultList.size() > 0) { */
//// kObject = resultList.get(0); public List<KObject> querySalesTempPlanByTime(Date startTime,Date endTime) {
//// } return template.execute(session ->{
// return resultList; 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{ ...@@ -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 { ...@@ -36,6 +36,8 @@ public interface SalesPlanService {
public void update(KObject salesPlan); public void update(KObject salesPlan);
public KObject querySalesPlanById(UUID id);
public KObject queryTempSalesPlan(UUID id) ; public KObject queryTempSalesPlan(UUID id) ;
public void approveSalesPlanForDaily(UUID id,int approveState,String approveMemo); public void approveSalesPlanForDaily(UUID id,int approveState,String approveMemo);
......
package com.xyst.dinas.sales.web; package com.xyst.dinas.sales.web;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.UUID; import java.util.UUID;
import org.json.JSONObject; import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.Assert; import org.springframework.util.Assert;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; 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 org.springframework.web.bind.annotation.RestController;
import com.beecode.bap.workflow.core.BizProcessState; 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.team.pojo.ResponseObj;
import com.beecode.inz.basis.util.JsonUtil; import com.beecode.inz.common.BaseConstants;
import com.beecode.xlib.utils.StringUtil; 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.service.SalesPlanService;
import com.xyst.dinas.sales.web.request.SaleaPlanApprove; import com.xyst.dinas.sales.web.request.SaleaPlanApprove;
import com.xyst.dinas.sales.web.request.SaleaPlanDetailQuery; import com.xyst.dinas.sales.web.request.SaleaPlanDetailQuery;
import com.xyst.dinas.sales.web.request.SaleaPlanSubmit;
@RestController @RestController
public class SalesPlanController { public class SalesPlanController {
...@@ -30,17 +31,41 @@ public class SalesPlanController { ...@@ -30,17 +31,41 @@ public class SalesPlanController {
@Autowired @Autowired
private SalesPlanService salesPlanService; private SalesPlanService salesPlanService;
@Autowired
private PlanningCycleService planningCycleService;
@PostMapping("/salesplan/submit") @PostMapping("/salesplan/submit")
public Object submitSalesPlan(@RequestBody SaleaPlanApprove saleaPlanApprove) { public Object submitSalesPlan(@Validated @RequestBody SaleaPlanApprove saleaPlanApprove) {
//TODO 校验数据 //校验数据
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(); List<KObject> salesPlanDetails = salesplan.get(SalesPlanConstant.SalesPlanDetails).toList();
Integer approveState = BizProcessState.IN_PROCESS.getValue(); for (KObject salesPlanDetail : salesPlanDetails) {
Assert.notNull(id, "The id must not be null");
Assert.notNull(approveState, "The approveState must not be null"); UUID detailId = salesPlanDetail.getUuid(BaseConstants.ID);
salesPlanService.approveSalesPlanForDaily(id, approveState, null); KObject contract = salesPlanDetail.get(SalesPlanConstant.contract);
return ResponseObj.success(); 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