Commit ae96d3d3 by 杨清松

临时销售计划校验

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