Commit ae96d3d3 by 杨清松

临时销售计划校验

parent 3eedc834
...@@ -164,7 +164,7 @@ public class SalesPlanDao { ...@@ -164,7 +164,7 @@ public class SalesPlanDao {
* @param endTime * @param endTime
* @return * @return
*/ */
public List<KObject> querySalesPlanByTime(Date startTime,Date endTime) { public KObject querySalesPlanByTime(Date startTime,Date endTime) {
return template.execute(session ->{ return template.execute(session ->{
String hql = "from " + SalesPlanConstant.ENTITY + " where planningCycle.startTime >=:startTime and planningCycle.endTime <=:endTime" String hql = "from " + SalesPlanConstant.ENTITY + " where planningCycle.startTime >=:startTime and planningCycle.endTime <=:endTime"
+ " and (approveState = 1 or approveState =2)"; + " and (approveState = 1 or approveState =2)";
...@@ -172,8 +172,11 @@ public class SalesPlanDao { ...@@ -172,8 +172,11 @@ public class SalesPlanDao {
query.setParameter("startTime", startTime); query.setParameter("startTime", startTime);
query.setParameter("endTime", endTime); query.setParameter("endTime", endTime);
List<KObject> resultList = query.getResultList(); List<KObject> resultList = query.getResultList();
return resultList; if(resultList.size() > 0) {
return resultList.get(0);
}else {
return null;
}
}); });
} }
} }
...@@ -420,7 +420,7 @@ public class SalesPlanServiceImpl implements SalesPlanService{ ...@@ -420,7 +420,7 @@ public class SalesPlanServiceImpl implements SalesPlanService{
//根据开始时间和结束时间查询临时销售计划 //根据开始时间和结束时间查询临时销售计划
List<KObject> salesTempPlanByTimeList = salesPlanDao.querySalesTempPlanByTime(startTime, endTime, contractId); List<KObject> salesTempPlanByTimeList = salesPlanDao.querySalesTempPlanByTime(startTime, endTime, contractId);
//根据开始时间和结束时间查询销售计划 //根据开始时间和结束时间查询销售计划
List<KObject> salesPlanByTimeList = salesPlanDao.querySalesPlanByTime(startTime, endTime); KObject salesPlanByTimeKObject = salesPlanDao.querySalesPlanByTime(startTime, endTime);
//获取临时销售计划明细 //获取临时销售计划明细
JSONArray salesPlanTempDetails = jsonObject.getJSONArray("SalesPlanTempDetails"); JSONArray salesPlanTempDetails = jsonObject.getJSONArray("SalesPlanTempDetails");
List<Map<String, Object>> verifyList = new ArrayList<Map<String, Object>>(); List<Map<String, Object>> verifyList = new ArrayList<Map<String, Object>>();
...@@ -430,7 +430,8 @@ public class SalesPlanServiceImpl implements SalesPlanService{ ...@@ -430,7 +430,8 @@ public class SalesPlanServiceImpl implements SalesPlanService{
//获取砂石类型 //获取砂石类型
UUID dinasTypeId = UUID.fromString(salesPlanTempDetail.getJSONObject("dinasType").getString("id")); UUID dinasTypeId = UUID.fromString(salesPlanTempDetail.getJSONObject("dinasType").getString("id"));
BigDecimal contractAvailableAmount = salesPlanTempDetail.getBigDecimal("contractAvailableAmount"); //合同可用余量 BigDecimal contractAvailableAmount = salesPlanTempDetail.getBigDecimal("contractAvailableAmount"); //合同可用余量
BigDecimal actualSaleAmount = salesPlanTempDetail.getBigDecimal("actualSaleAmount"); //实际销售量 //实际销售量从销售计划查
//BigDecimal actualSaleAmount = salesPlanTempDetail.getBigDecimal("actualSaleAmount"); //实际销售量
BigDecimal salesPlanAmount = salesPlanTempDetail.getBigDecimal("salesPlanAmount"); //本期分配量 BigDecimal salesPlanAmount = salesPlanTempDetail.getBigDecimal("salesPlanAmount"); //本期分配量
//查询同一计划周期内,同一个合同和砂石类型下的临时销售计划分配量之和 //查询同一计划周期内,同一个合同和砂石类型下的临时销售计划分配量之和
//筛选同一个砂石类型下的明细 //筛选同一个砂石类型下的明细
...@@ -448,18 +449,21 @@ public class SalesPlanServiceImpl implements SalesPlanService{ ...@@ -448,18 +449,21 @@ public class SalesPlanServiceImpl implements SalesPlanService{
} }
//查询同一计划周期内,同一个合同和砂石类型下的销售计划分配量之和 //查询同一计划周期内,同一个合同和砂石类型下的销售计划分配量之和
BigDecimal totalSalesPlanAmount = new BigDecimal("0"); BigDecimal totalSalesPlanAmount = new BigDecimal("0");
if(salesPlanByTimeList.size() > 0) { //销售计划内的实际销售量
for (int k = 0; k < salesPlanByTimeList.size(); k++) { BigDecimal actualSaleTotalAmount = new BigDecimal("0");
KObject salesPlan = salesPlanByTimeList.get(k); if(salesPlanByTimeKObject != null) {
List<KObject> oldSalesPlanDetails = salesPlan.get("SalesPlanDetails").toList(); //for (int k = 0; k < salesPlanByTimeList.size(); k++) {
//KObject salesPlan = salesPlanByTimeList.get(k);
List<KObject> oldSalesPlanDetails = salesPlanByTimeKObject.get("SalesPlanDetails").toList();
KObject oldSalesPlanDetail = oldSalesPlanDetails.stream().filter(detail -> detail.get("dinasType").getUuid("id").equals(dinasTypeId) && detail.get("contract").getUuid("id").equals(contractId)).findAny().orElse(null); KObject oldSalesPlanDetail = oldSalesPlanDetails.stream().filter(detail -> detail.get("dinasType").getUuid("id").equals(dinasTypeId) && detail.get("contract").getUuid("id").equals(contractId)).findAny().orElse(null);
if (oldSalesPlanDetail != null) { //合同与砂石类型共同筛选 if (oldSalesPlanDetail != null) { //合同与砂石类型共同筛选
totalSalesPlanAmount = totalSalesPlanAmount.add(oldSalesPlanDetail.getBigDecimal("planAmount")); totalSalesPlanAmount = totalSalesPlanAmount.add(oldSalesPlanDetail.getBigDecimal("planAmount"));
actualSaleTotalAmount = actualSaleTotalAmount.add(oldSalesPlanDetail.getBigDecimal("actualSaleAmount"));
} }
} //}
} }
//可分配量 <=合同可用余量+实际销售量 - 临时销售计划分配量之和 - 日常销售计划分配量 //可分配量 <=合同可用余量+实际销售量 - 临时销售计划分配量之和 - 日常销售计划分配量
BigDecimal distributedVolum = contractAvailableAmount.add(actualSaleAmount).subtract(totalTempSalesPlanAmount).subtract(totalSalesPlanAmount); BigDecimal distributedVolum = contractAvailableAmount.add(actualSaleTotalAmount).subtract(totalTempSalesPlanAmount).subtract(totalSalesPlanAmount);
if(salesPlanAmount.compareTo(BigDecimal.ZERO) != 0 && (salesPlanAmount.compareTo(distributedVolum) > -1 || salesPlanAmount.compareTo(contractAvailableAmount) > -1)) { //大于等于 if(salesPlanAmount.compareTo(BigDecimal.ZERO) != 0 && (salesPlanAmount.compareTo(distributedVolum) > -1 || salesPlanAmount.compareTo(contractAvailableAmount) > -1)) { //大于等于
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("dinasTypeName", salesPlanTempDetail.getString("dinasTypeName")); map.put("dinasTypeName", salesPlanTempDetail.getString("dinasTypeName"));
......
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