Commit d1c8f35d by 王衍超

修改销售计划;

parent 1573a8a7
...@@ -6,4 +6,8 @@ public interface NeedPlanConstant { ...@@ -6,4 +6,8 @@ public interface NeedPlanConstant {
* 实体名 * 实体名
*/ */
String NEED_PLAN_NTITY = "com.xyst.dinas.sales.datamodel.NeedPlan"; String NEED_PLAN_NTITY = "com.xyst.dinas.sales.datamodel.NeedPlan";
/**
* 需用计划量
*/
String needPlanAmount = "needPlanAmount";
} }
...@@ -29,7 +29,9 @@ public class NeedPlanDaoImpl implements NeedPlanDao, NeedPlanConstant { ...@@ -29,7 +29,9 @@ public class NeedPlanDaoImpl implements NeedPlanDao, NeedPlanConstant {
query.setParameter("planningCycleId", planningCycleId); query.setParameter("planningCycleId", planningCycleId);
query.setParameter("contractId", contractId); query.setParameter("contractId", contractId);
query.setParameter("submitState", "SUBMITTED"); query.setParameter("submitState", "SUBMITTED");
return query.getResultList().get(0); List<KObject> resultList = query.getResultList();
if(resultList.isEmpty()) return null;
return resultList.get(0);
} }
}); });
} }
......
...@@ -20,9 +20,10 @@ public class NeedPlanServiceImpl implements NeedPlanService { ...@@ -20,9 +20,10 @@ public class NeedPlanServiceImpl implements NeedPlanService {
@Override @Override
public KObject queryNeedPlanAmountByDinasType(UUID planningCycleId,UUID contractId, UUID dinasTypeId) { public KObject queryNeedPlanAmountByDinasType(UUID planningCycleId,UUID contractId, UUID dinasTypeId) {
KObject kObject = null;
KObject needPlan = needPlanDao.queryNeedPlanByContractIdAndCycleId(planningCycleId, contractId); KObject needPlan = needPlanDao.queryNeedPlanByContractIdAndCycleId(planningCycleId, contractId);
if(needPlan==null) return null;
List<KObject> needPlanDetailsList = needPlan.get("NeedPlanDetails").toList(); List<KObject> needPlanDetailsList = needPlan.get("NeedPlanDetails").toList();
KObject kObject = null;
if (needPlanDetailsList.size() > 0) { if (needPlanDetailsList.size() > 0) {
kObject = needPlanDetailsList.stream().filter(detail -> detail.get("dinasType").getUuid("id").equals(dinasTypeId)).findAny().orElse(null); kObject = needPlanDetailsList.stream().filter(detail -> detail.get("dinasType").getUuid("id").equals(dinasTypeId)).findAny().orElse(null);
} }
......
...@@ -7,20 +7,31 @@ import java.util.UUID; ...@@ -7,20 +7,31 @@ import java.util.UUID;
import javax.transaction.Transactional; import javax.transaction.Transactional;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.lang.Nullable;
import com.beecode.amino.core.Amino; import com.beecode.amino.core.Amino;
import com.beecode.bap.workflow.core.BizProcessState; import com.beecode.bap.workflow.core.BizProcessState;
import com.beecode.bcp.type.KClass; import com.beecode.bcp.type.KClass;
import com.beecode.bcp.type.KObject; import com.beecode.bcp.type.KObject;
import com.beecode.inz.common.BaseConstants; import com.beecode.inz.common.BaseConstants;
import com.xyst.dinas.sales.constant.NeedPlanConstant;
import com.xyst.dinas.sales.constant.SalesPlanConstant; import com.xyst.dinas.sales.constant.SalesPlanConstant;
import com.xyst.dinas.sales.dao.SalesPlanDao; import com.xyst.dinas.sales.dao.SalesPlanDao;
import com.xyst.dinas.sales.service.NeedPlanService;
import com.xyst.dinas.sales.service.SalesPlanService; import com.xyst.dinas.sales.service.SalesPlanService;
/**
* 销售计划
*
* @author Jackpot
* @date 2021年4月13日
*/
@Transactional
public class SalesPlanServiceImpl implements SalesPlanService{ public class SalesPlanServiceImpl implements SalesPlanService{
@Autowired @Autowired
private SalesPlanDao salesPlanDao; private SalesPlanDao salesPlanDao;
@Autowired
private NeedPlanService needPlanService;
@Transactional @Transactional
public int createSalesPlanDetail(KObject salesPlan, KObject contract) { public int createSalesPlanDetail(KObject salesPlan, KObject contract) {
...@@ -29,16 +40,16 @@ public class SalesPlanServiceImpl implements SalesPlanService{ ...@@ -29,16 +40,16 @@ public class SalesPlanServiceImpl implements SalesPlanService{
UUID contractId = contract.getUuid(BaseConstants.ID); UUID contractId = contract.getUuid(BaseConstants.ID);
String contractName = contract.getString("contractName"); String contractName = contract.getString("contractName");
KObject project = contract.get("project"); KObject project = contract.get("project");
UUID projectId = project.getUuid(BaseConstants.ID);
KObject purchaseSandUnit = contract.get("purchaseSandUnit"); KObject purchaseSandUnit = contract.get("purchaseSandUnit");
UUID purchaseSandUnitId = purchaseSandUnit.getUuid(BaseConstants.ID);
KClass detailClass = Amino.getApplicationMetadataContext().getBean(SalesPlanConstant.ENTITY_DETAIL, KClass.class); KClass detailClass = Amino.getApplicationMetadataContext().getBean(SalesPlanConstant.ENTITY_DETAIL, KClass.class);
List<KObject> contractDetail = contract.get("contractDetails").toList(); List<KObject> contractDetail = contract.get("contractDetails").toList();
for (KObject detail : contractDetail) {//合同中的砂石明细 for (KObject detail : contractDetail) {//合同中的砂石明细
KObject dinasType = detail.get("dinasType");
double contractAmount = detail.getDouble("dinasAmount"); //合同上的砂石余量 double contractAmount = detail.getDouble("dinasAmount"); //合同上的砂石余量
double requiredAmount= 0D;//需用量 KObject dinasType = detail.get("dinasType");
UUID dinasTypeId = dinasType.getUuid(BaseConstants.ID);
UUID planningCycleId = salesPlan.get("planningCycle").getUuid(BaseConstants.ID);
KObject needPlanDetail = needPlanService.queryNeedPlanAmountByDinasType(planningCycleId, contractId, dinasTypeId);
double requiredAmount= needPlanDetail!=null?needPlanDetail.getDouble(NeedPlanConstant.needPlanAmount):0D;//需用量
Double planAmount = null;//本期分配量 Double planAmount = null;//本期分配量
//新增销售计划明细 //新增销售计划明细
KObject planDetailObj = detailClass.newInstance(); KObject planDetailObj = detailClass.newInstance();
...@@ -72,4 +83,11 @@ public class SalesPlanServiceImpl implements SalesPlanService{ ...@@ -72,4 +83,11 @@ public class SalesPlanServiceImpl implements SalesPlanService{
return kObject; return kObject;
} }
public void deleteSalesPlan(KObject salesPlan) {
salesPlanDao.delete(salesPlan);
}
public int deleteSalesPlanDetails(UUID masterId, @Nullable UUID contractId) {
return salesPlanDao.deleteDetails(masterId, contractId);
}
} }
package com.xyst.dinas.sales.service; package com.xyst.dinas.sales.service;
import java.util.Map;
import java.util.UUID; import java.util.UUID;
import com.beecode.bcp.type.KObject; import com.beecode.bcp.type.KObject;
......
package com.xyst.dinas.sales.service; package com.xyst.dinas.sales.service;
import java.util.UUID;
import org.springframework.lang.Nullable;
import com.beecode.bcp.type.KObject; import com.beecode.bcp.type.KObject;
public interface SalesPlanService { public interface SalesPlanService {
...@@ -21,5 +25,8 @@ public interface SalesPlanService { ...@@ -21,5 +25,8 @@ public interface SalesPlanService {
public int createSalesPlanDetail(KObject salesPlan, KObject contract); public int createSalesPlanDetail(KObject salesPlan, KObject contract);
public void deleteSalesPlan(KObject salesPlan) ;
public int deleteSalesPlanDetails(UUID masterId, @Nullable UUID contractId) ;
} }
package com.xyst.dinas.sales.task; package com.xyst.dinas.sales.task;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
...@@ -66,16 +67,15 @@ public class SalesPlanAutoCreateTask implements Task{ ...@@ -66,16 +67,15 @@ public class SalesPlanAutoCreateTask implements Task{
KObject salesPlan = salesPlanDao.querySalesPlanByPlan(regionCompanyId, planningCycleId); KObject salesPlan = salesPlanDao.querySalesPlanByPlan(regionCompanyId, planningCycleId);
//1. 新增销售计划 //1. 新增销售计划
if (salesPlan==null) { if (salesPlan==null) {
KObject salesPlanMaster = salesPlanService.createSalesPlanMaster(regionCompany, planningCycleObj);
// UUID masterId = salesPlanMaster.getUuid(BaseConstants.ID);
int detailCount = 0;
List<KObject> executingContracts = contractDao.getExecutingContractByRegionCompany(regionCompanyId); List<KObject> executingContracts = contractDao.getExecutingContractByRegionCompany(regionCompanyId);
if (executingContracts.isEmpty()) continue; if (executingContracts.isEmpty()) continue;
KObject salesPlanMaster = salesPlanService.createSalesPlanMaster(regionCompany, planningCycleObj);
int detailCount = 0;
for (KObject contract : executingContracts) {//执行中的合同 for (KObject contract : executingContracts) {//执行中的合同
detailCount += salesPlanService.createSalesPlanDetail(salesPlanMaster, contract); detailCount += salesPlanService.createSalesPlanDetail(salesPlanMaster, contract);
} }
if(detailCount==0) { if(detailCount==0) {
salesPlanDao.delete(salesPlanMaster); salesPlanService.deleteSalesPlan(salesPlanMaster);
logger.info("区域公司["+regionCompanyName+"]:本次没有生成销售计划;"); logger.info("区域公司["+regionCompanyName+"]:本次没有生成销售计划;");
}else { }else {
int contractSize = executingContracts.size(); int contractSize = executingContracts.size();
...@@ -90,9 +90,12 @@ public class SalesPlanAutoCreateTask implements Task{ ...@@ -90,9 +90,12 @@ public class SalesPlanAutoCreateTask implements Task{
continue; continue;
} }
//3.更新销售计划 //3.更新销售计划
HashSet<KObject> contractForAddInPlan = new HashSet<>(); // HashSet<KObject> contractForAddInPlan = new HashSet<>();
HashSet<UUID> contractForDelInPlan = new HashSet<>(); HashSet<UUID> contractForDelInPlan = new HashSet<>();
List<KObject> contractForAddInPlan = new ArrayList<>();
// List<UUID> contractForDelInPlan = new ArrayList<>();
List<KObject> executingContracts = contractDao.getExecutingContractByRegionCompany(regionCompanyId); List<KObject> executingContracts = contractDao.getExecutingContractByRegionCompany(regionCompanyId);
List<KObject> salesPlanDetails = salesPlan.get("SalesPlanDetails").toList(); List<KObject> salesPlanDetails = salesPlan.get("SalesPlanDetails").toList();
...@@ -123,7 +126,7 @@ public class SalesPlanAutoCreateTask implements Task{ ...@@ -123,7 +126,7 @@ public class SalesPlanAutoCreateTask implements Task{
UUID salesPlanId = salesPlan.getUuid(BaseConstants.ID); UUID salesPlanId = salesPlan.getUuid(BaseConstants.ID);
//3.1 删除部分销售明细 //3.1 删除部分销售明细
for (UUID contractId : contractForDelInPlan) { for (UUID contractId : contractForDelInPlan) {
salesPlanDao.deleteDetails(salesPlanId, contractId); salesPlanService.deleteSalesPlanDetails(salesPlanId, contractId);
} }
//3.2 更新销售明细中的合同砂石余量 //3.2 更新销售明细中的合同砂石余量
if(contractForDelInPlan.size()>0) { if(contractForDelInPlan.size()>0) {
......
...@@ -37,9 +37,9 @@ public class SalesPlanAutoCreateTaskRegister implements ServiceInitializer{ ...@@ -37,9 +37,9 @@ public class SalesPlanAutoCreateTaskRegister implements ServiceInitializer{
} }
TaskDetail TaskDetail = new TaskDetail(TASK_NAME, SalesPlanAutoCreateTask.class.getName()); TaskDetail TaskDetail = new TaskDetail(TASK_NAME, SalesPlanAutoCreateTask.class.getName());
// 每天凌晨12点执行调度,如测试可修改为每十五秒:*/15 * * * * ?(表达式由至少6个由空格分隔的时间元素,从左至右可分为秒,分,时,日,月,星期) // 每天凌晨12点执行调度,如测试可修改为每十五秒:*/15 * * * * ?(表达式由至少6个由空格分隔的时间元素,从左至右可分为秒,分,时,日,月,星期)
scheduleService.scheduleTask(TaskDetail, "0 0 0 * * ?"); // scheduleService.scheduleTask(TaskDetail, "0 0 0 * * ?");
// 测试调度时进行调用 // 测试调度时进行调用
// scheduleService.scheduleTask(TaskDetail, "*/30 * * * * ?"); scheduleService.scheduleTask(TaskDetail, "*/60 * * * * ?");
logger.info("销售计划自动创建任务初始化成功!"); logger.info("销售计划自动创建任务初始化成功!");
} }
......
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