Commit d1c8f35d by 王衍超

修改销售计划;

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