Commit 452379a5 by wukaiqiang

wukq-20210506-地磅接口迭代版本一(初版-需测试)

parent d5815f3b
...@@ -288,12 +288,13 @@ public class ContractDao { ...@@ -288,12 +288,13 @@ public class ContractDao {
UUID dinasTypeId2 = detail.get("dinasType").getUuid(BaseConstants.ID); UUID dinasTypeId2 = detail.get("dinasType").getUuid(BaseConstants.ID);
if(dinasTypeId2.equals(dinasTypeId)) { if(dinasTypeId2.equals(dinasTypeId)) {
dinasAmount = new BigDecimal(detail.getDouble(ContractConstant.DINAS_AMOUNT)); dinasAmount = new BigDecimal(detail.getDouble(ContractConstant.DINAS_AMOUNT));
saleDinasAmount = new BigDecimal(detail.getDouble(ContractConstant.SALE_DINAS_AMOUNT)); saleDinasAmount = new BigDecimal(contract.getDouble(ContractConstant.SALE_DINAS_AMOUNT));
advanceBalance = new BigDecimal(detail.getDouble(ContractConstant.ADVANCE_BALANCE)); advanceBalance = new BigDecimal(contract.getDouble(ContractConstant.ADVANCE_BALANCE));
detail.set(ContractConstant.DINAS_AMOUNT, dinasAmount.add(DEALAMOUNT)); detail.set(ContractConstant.DINAS_AMOUNT, dinasAmount.add(DEALAMOUNT));
update(detail); update(detail);
contract.set(ContractConstant.ADVANCE_BALANCE, advanceBalance.add(AMOUNT)); contract.set(ContractConstant.ADVANCE_BALANCE, advanceBalance.add(AMOUNT));
contract.set(ContractConstant.SALE_DINAS_AMOUNT, saleDinasAmount.subtract(DEALAMOUNT)); contract.set(ContractConstant.SALE_DINAS_AMOUNT, saleDinasAmount.subtract(DEALAMOUNT));
update(contract);
flag = true; flag = true;
break; break;
} }
......
package com.xyst.dinas.sales.constant;
public enum PayMentSourceEnum {
/**
* 现金
*/
Cash("Cash", "Cash"),
/**
* 预付款
*/
Advance("Advance", "Advance");
private String value = "";
private String description = "";
PayMentSourceEnum(String value, String description){
this.value = value;
this.description = description;
}
PayMentSourceEnum(){
this("", "");
}
public String getValue(){
return this.value;
}
public String getDescription(){
return this.description;
}
}
package com.xyst.dinas.sales.dao; package com.xyst.dinas.sales.dao;
import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.UUID; import java.util.UUID;
...@@ -8,8 +9,11 @@ import org.hibernate.query.Query; ...@@ -8,8 +9,11 @@ import org.hibernate.query.Query;
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 org.springframework.test.web.reactive.server.KotlinBodySpec;
import com.beecode.bcp.type.KObject; import com.beecode.bcp.type.KObject;
import com.beecode.inz.common.BaseConstants;
import com.xyst.dinas.contract.constant.ContractConstant;
import com.xyst.dinas.sales.constant.SalesPlanConstant; import com.xyst.dinas.sales.constant.SalesPlanConstant;
import com.xyst.dinas.sales.web.request.SaleaPlanDetailQuery; import com.xyst.dinas.sales.web.request.SaleaPlanDetailQuery;
...@@ -156,4 +160,27 @@ public class SalesPlanDao { ...@@ -156,4 +160,27 @@ public class SalesPlanDao {
}); });
} }
public boolean updateSalesPlanAmount(KObject salesPlanDao,UUID dinasTypeId,UUID contract,UUID project,UUID purchaseSandUnit,BigDecimal DEALAMOUNT) {
List<KObject> SalesPlanList = salesPlanDao.get("SalesPlanDetails").toList();
BigDecimal actualSaleAmount;
boolean flag = false;
for (KObject detail : SalesPlanList) {//合同中的砂石明细
UUID contract2 = detail.get("contract").getUuid(BaseConstants.ID);
UUID project2 = detail.get("project").getUuid(BaseConstants.ID);
UUID purchaseSandUnit2 = detail.get("purchaseSandUnit").getUuid(BaseConstants.ID);
UUID dinasType2 = detail.get("dinasType").getUuid(BaseConstants.ID);
//UUID station2 = detail.get("station").getUuid(BaseConstants.ID);
if(dinasType2.equals(dinasTypeId) && contract2.equals(contract) && project2.equals(project)&&purchaseSandUnit2.equals(purchaseSandUnit)) {
actualSaleAmount = new BigDecimal(detail.getDouble(SalesPlanConstant.actualSaleAmount));
detail.set(SalesPlanConstant.actualSaleAmount,actualSaleAmount.subtract(DEALAMOUNT));
update(detail);
flag = true;
break;
}
}
return false;
}
} }
...@@ -11,6 +11,8 @@ import javax.transaction.Transactional; ...@@ -11,6 +11,8 @@ import javax.transaction.Transactional;
import org.json.JSONArray; import org.json.JSONArray;
import org.json.JSONObject; import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
...@@ -19,16 +21,15 @@ import com.beecode.bcp.type.KObject; ...@@ -19,16 +21,15 @@ import com.beecode.bcp.type.KObject;
import com.xyst.dinas.biz.dao.DinasOrganizationDao; import com.xyst.dinas.biz.dao.DinasOrganizationDao;
import com.xyst.dinas.biz.dao.DinasTypeDao; import com.xyst.dinas.biz.dao.DinasTypeDao;
import com.xyst.dinas.biz.dao.StationDao; import com.xyst.dinas.biz.dao.StationDao;
import com.xyst.dinas.biz.enumeration.PlanningCycleEnum;
import com.xyst.dinas.biz.service.PlanningCycleService; import com.xyst.dinas.biz.service.PlanningCycleService;
import com.xyst.dinas.biz.dao.ProductionLineDao; import com.xyst.dinas.biz.dao.ProductionLineDao;
import com.xyst.dinas.biz.dao.RetailInfoDao; import com.xyst.dinas.biz.dao.RetailInfoDao;
import com.xyst.dinas.contract.constant.ContractConstant;
import com.xyst.dinas.contract.internal.dao.ContractDao; import com.xyst.dinas.contract.internal.dao.ContractDao;
import com.xyst.dinas.contract.service.ContractService; import com.xyst.dinas.contract.service.ContractService;
import com.xyst.dinas.project.dao.ProjectFiledDao; import com.xyst.dinas.project.dao.ProjectFiledDao;
import com.xyst.dinas.project.dao.PurchaseSandCompanyDao; import com.xyst.dinas.project.dao.PurchaseSandCompanyDao;
import com.xyst.dinas.sales.constant.CustomerTypeEnum; import com.xyst.dinas.sales.constant.CustomerTypeEnum;
import com.xyst.dinas.sales.constant.PayMentSourceEnum;
import com.xyst.dinas.sales.constant.SalesRecordConstant; import com.xyst.dinas.sales.constant.SalesRecordConstant;
import com.xyst.dinas.sales.dao.SalesPlanDao; import com.xyst.dinas.sales.dao.SalesPlanDao;
import com.xyst.dinas.sales.dao.SalesRecordDao; import com.xyst.dinas.sales.dao.SalesRecordDao;
...@@ -39,7 +40,7 @@ import com.xyst.dinas.sales.web.info.SyncException; ...@@ -39,7 +40,7 @@ import com.xyst.dinas.sales.web.info.SyncException;
@Transactional @Transactional
public class SalesRecordServiceImpl implements SalesRecordService { public class SalesRecordServiceImpl implements SalesRecordService {
final Logger logger = LoggerFactory.getLogger(this.getClass());
@Autowired @Autowired
private SalesRecordDao salesRecordDao; private SalesRecordDao salesRecordDao;
@Autowired @Autowired
...@@ -67,12 +68,15 @@ public class SalesRecordServiceImpl implements SalesRecordService { ...@@ -67,12 +68,15 @@ public class SalesRecordServiceImpl implements SalesRecordService {
@Autowired @Autowired
PlanningCycleService planningCycleService; PlanningCycleService planningCycleService;
@Autowired @Autowired
NeedPlanServiceImpl needPlanServiceImpl;
@Autowired
@Qualifier(SalesRecordConstant.ENTITY) @Qualifier(SalesRecordConstant.ENTITY)
private KClass salesRecordClass; private KClass salesRecordClass;
@Transactional @Transactional
@Override @Override
public String saveSalesRecordService(List<SalesRecordInfo> salesRecordInfoList) { public String saveSalesRecordService(List<SalesRecordInfo> salesRecordInfoList) {
String state = "success"; String state = "success";
try { try {
Date thentime = new Date(); Date thentime = new Date();
...@@ -81,43 +85,41 @@ public class SalesRecordServiceImpl implements SalesRecordService { ...@@ -81,43 +85,41 @@ public class SalesRecordServiceImpl implements SalesRecordService {
// 获取项目KObject // 获取项目KObject
KObject project = null; KObject project = null;
project = entityExistenceCheck("项目", project = entityExistenceCheck("项目",
projectFiledDao.load(UUID.fromString(dataExistenceCheck("项目", salesRecordInfo.getProject())))); projectFiledDao.load(UUID.fromString(dataExistenceCheck("项目", salesRecordInfo.getProject()))),true);
// 获取区域公司KObject // 获取区域公司KObject
KObject regionalCompany = null; KObject regionalCompany = null;
regionalCompany = entityExistenceCheck("区域公司", dinasOrganizationDao regionalCompany = entityExistenceCheck("区域公司", dinasOrganizationDao
.load(UUID.fromString(dataExistenceCheck("区域公司", salesRecordInfo.getRegionalCompany())))); .load(UUID.fromString(dataExistenceCheck("区域公司", salesRecordInfo.getRegionalCompany()))),true);
// 获取合同KObject // 获取合同KObject
KObject contract = null; KObject contract = null;
contract = entityExistenceCheck("合同", contract = entityExistenceCheck("合同",
contractDao.load(UUID.fromString(dataExistenceCheck("合同", salesRecordInfo.getContract())))); contractDao.load(UUID.fromString(dataExistenceCheck("合同", salesRecordInfo.getContract()))),true);
// 获取购砂单位KObject // 获取购砂单位KObject
KObject purchaseSandCompany = null; KObject purchaseSandCompany = null;
// 获取散户KObject // 获取散户KObject
KObject retailInfo = null; KObject retailInfo = null;
if ((CustomerTypeEnum.PurchaseSandCompany.name()).equals(salesRecordInfo.getCustomerType())) { if ((CustomerTypeEnum.PurchaseSandCompany.name()).equals(salesRecordInfo.getCustomerType())) {
purchaseSandCompany = entityExistenceCheck("购砂单位", purchaseSandCompanyDao.load( purchaseSandCompany = entityExistenceCheck("购砂单位", purchaseSandCompanyDao.load(
UUID.fromString(dataExistenceCheck("购砂单位", salesRecordInfo.getPurchaseSandCompany())))); UUID.fromString(dataExistenceCheck("购砂单位", salesRecordInfo.getPurchaseSandCompany()))),true);
} else { } else {
retailInfo = entityExistenceCheck("散户", retailInfoDao retailInfo = entityExistenceCheck("散户", retailInfoDao
.load(UUID.fromString(dataExistenceCheck("散户", salesRecordInfo.getRetailInfo())))); .load(UUID.fromString(dataExistenceCheck("散户", salesRecordInfo.getRetailInfo()))),true);
} }
// 获取场站KObject // 获取场站KObject
KObject station = null; KObject station = null;
station = entityExistenceCheck("场站", station = entityExistenceCheck("场站",
stationDao.load(UUID.fromString(dataExistenceCheck("场站", salesRecordInfo.getStation())))); stationDao.load(UUID.fromString(dataExistenceCheck("场站", salesRecordInfo.getStation()))),true);
// 获取生产线KObject // 获取生产线KObject
KObject productionLine = null; KObject productionLine = null;
productionLine = entityExistenceCheck("生产线", ProductionLineDao productionLine = entityExistenceCheck("生产线", ProductionLineDao
.load(UUID.fromString(dataExistenceCheck("生产线", salesRecordInfo.getProductionLine())))); .load(UUID.fromString(dataExistenceCheck("生产线", salesRecordInfo.getProductionLine()))),true);
// 获取砂石类型 // 获取砂石类型
KObject dinasType = null; KObject dinasType = null;
dinasType = entityExistenceCheck("砂石类型", dinasType = entityExistenceCheck("砂石类型",
dinasTypeDao.load(UUID.fromString(dataExistenceCheck("砂石类型", salesRecordInfo.getDinasType())))); dinasTypeDao.load(UUID.fromString(dataExistenceCheck("砂石类型", salesRecordInfo.getDinasType()))),true);
// 获取销售台账Kobject
Date modifyTime = generateDate("修改时间", "yyyy-MM-dd", salesRecordInfo.getModifyTime()); Date modifyTime = generateDate("修改时间", "yyyy-MM-dd", salesRecordInfo.getModifyTime());
Date dealtime = generateDate("销售时间", "yyyy-MM-dd", salesRecordInfo.getDealTime()); Date dealtime = generateDate("销售时间", "yyyy-MM-dd", salesRecordInfo.getDealTime());
// 获取销售台账Kobject
KObject salesRecord = salesRecordClass.newInstance(); KObject salesRecord = salesRecordClass.newInstance();
salesRecord.set(SalesRecordConstant.ID, UUID.randomUUID()); salesRecord.set(SalesRecordConstant.ID, UUID.randomUUID());
salesRecord.set(SalesRecordConstant.CREATETIME, thentime); salesRecord.set(SalesRecordConstant.CREATETIME, thentime);
...@@ -153,44 +155,61 @@ public class SalesRecordServiceImpl implements SalesRecordService { ...@@ -153,44 +155,61 @@ public class SalesRecordServiceImpl implements SalesRecordService {
salesRecord.set(SalesRecordConstant.DEL, false); salesRecord.set(SalesRecordConstant.DEL, false);
BigDecimal DEALAMOUNT = BigDecimal.ZERO BigDecimal DEALAMOUNT = BigDecimal.ZERO
.subtract(new BigDecimal(salesRecord.getDouble(SalesRecordConstant.DEALAMOUNT))); .subtract(new BigDecimal(salesRecord.getDouble(SalesRecordConstant.DEALAMOUNT)));
//付款来源未定,暂时按使用预付款处理。 // 付款来源未定,暂时按使用预付款处理。
BigDecimal AMOUNT = BigDecimal.ZERO BigDecimal AMOUNT;
if(PayMentSourceEnum.Advance.equals(salesRecordInfo.getPaymentSource())) {
AMOUNT = BigDecimal.ZERO
.subtract(new BigDecimal(salesRecord.getDouble(SalesRecordConstant.AMOUNT))); .subtract(new BigDecimal(salesRecord.getDouble(SalesRecordConstant.AMOUNT)));
}else {
AMOUNT = BigDecimal.ZERO;
}
if (CustomerTypeEnum.PurchaseSandCompany.name().equals(salesRecordInfo.getCustomerType())) { if (CustomerTypeEnum.PurchaseSandCompany.name().equals(salesRecordInfo.getCustomerType())) {
// 更新合同子表合同砂石余量(吨)-更新合同表付款余额、销售总量信息 // 更新合同子表合同砂石余量(吨)-更新合同表付款余额、销售总量信息
/* boolean flag = contractService.modifyInventory(UUID.fromString(salesRecordInfo.getContract()),
* boolean flag = UUID.fromString(salesRecordInfo.getDinasType()), DEALAMOUNT, AMOUNT);
* contractService.modifyInventory(UUID.fromString(salesRecordInfo.getContract() if (!flag) {
* ), UUID.fromString(salesRecordInfo.getDinasType()), DEALAMOUNT, AMOUNT); if throw new SyncException("销售台账信息存储报出错:合同子表中无此砂石类型数据");
* (!flag) { throw new SyncException("销售台账信息存储报出错:合同子表中无此砂石类型数据"); } }
*/ // 更新销售计划
UUID planningCycleId = planningCycleService.getPlanningCycleObjBySum(regionalCompany.getString("planningCycle"),dealtime); UUID planningCycleId = planningCycleService
KObject salesPlan = salesPlanDao.querySalesPlanByPlan(UUID.fromString(salesRecordInfo.getRegionalCompany()),planningCycleId); .getPlanningCycleObjBySum(regionalCompany.getString("planningCycle"), dealtime);
KObject salesPlan = entityExistenceCheck("销售计划", salesPlanDao.querySalesPlanByPlan(
UUID.fromString(salesRecordInfo.getRegionalCompany()), planningCycleId),false);
BigDecimal actualSaleTotalAmount = salesPlan.get("actualSaleTotalAmount") == null ? BigDecimal.ZERO BigDecimal actualSaleTotalAmount = salesPlan.get("actualSaleTotalAmount") == null ? BigDecimal.ZERO
: new BigDecimal(salesPlan.getInt("actualSaleTotalAmount")); : new BigDecimal(salesPlan.getInt("actualSaleTotalAmount"));
salesPlan.set("actualSaleTotalAmount",actualSaleTotalAmount.subtract(DEALAMOUNT)); salesPlan.set("actualSaleTotalAmount", actualSaleTotalAmount.subtract(DEALAMOUNT));
salesPlanDao.update(salesPlan); salesPlanDao.update(salesPlan);
boolean flag1=salesPlanDao.updateSalesPlanAmount(salesPlan, dinasType.getUuid("id"), contract.getUuid("id"),
project.getUuid("id"), purchaseSandCompany.getUuid("id"), DEALAMOUNT);
if (!flag1) {
throw new SyncException("销售台账信息存储报出错:销售计划子表更新数据报错");
}
KObject needPlanAmount = entityExistenceCheck("需用计划",
needPlanServiceImpl.queryNeedPlanAmountByDinasType(planningCycleId, contract.getUuid("id"),
dinasType.getUuid("id")),false);
BigDecimal effectiveSale = needPlanAmount.get("effectiveSale") == null ? BigDecimal.ZERO
: new BigDecimal(needPlanAmount.getInt("needPlanAmount"));
needPlanAmount.set("effectiveSale", effectiveSale.subtract(DEALAMOUNT));
} }
// 此处为Jason格式,多重嵌套 // 此处为Jason格式,多重嵌套
// 更新库存量 // 更新库存量
{ {
JSONObject params = new JSONObject(); JSONObject params = new JSONObject();
JSONArray datas = new JSONArray(); JSONArray datas = new JSONArray();
JSONObject param = new JSONObject(); JSONObject param = new JSONObject();
JSONArray data = new JSONArray(); JSONArray data = new JSONArray();
JSONObject item = new JSONObject(); JSONObject item = new JSONObject();
item.put("stationId", station.get("id")); item.put("stationId", station.get("id"));
item.put("dinasTypeId", dinasType.get("id")); item.put("dinasTypeId", dinasType.get("id"));
item.put("stationName", ""); item.put("stationName", "");
item.put("dinasTypeName", ""); item.put("dinasTypeName", "");
item.put("amount", BigDecimal.ZERO.subtract(DEALAMOUNT)); item.put("amount", BigDecimal.ZERO.subtract(DEALAMOUNT));
data.put(item); data.put(item);
param.put("regionalCompany", regionalCompany.getUuid("id")); param.put("regionalCompany", regionalCompany.getUuid("id"));
param.put("data", data); param.put("data", data);
datas.put(param); datas.put(param);
params.put("datas", datas); params.put("datas", datas);
inventoryService.modifyInventory(params.toString(), false, true); inventoryService.modifyInventory(params.toString(), false, true);
} }
UUID salesRecordId = salesRecordDao.insert(salesRecord); UUID salesRecordId = salesRecordDao.insert(salesRecord);
salesRecordIdList.add(salesRecordId); salesRecordIdList.add(salesRecordId);
...@@ -212,12 +231,17 @@ public class SalesRecordServiceImpl implements SalesRecordService { ...@@ -212,12 +231,17 @@ public class SalesRecordServiceImpl implements SalesRecordService {
return result; return result;
} }
private KObject entityExistenceCheck(String name, KObject daoValue) { private KObject entityExistenceCheck(String name, KObject daoValue, boolean flag) {
KObject result = null; KObject result = null;
if (null != daoValue) { if (null != daoValue) {
result = daoValue; result = daoValue;
} else { } else {
if(flag) {
throw new SyncException("[" + name + "]信息为空!请确认"); throw new SyncException("[" + name + "]信息为空!请确认");
}else {
logger.info("[" + name + "]信息为空!请确认");
result = null;
}
} }
return result; return result;
} }
......
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