Commit d5815f3b by wukaiqiang

wukq-2021-04-30增加更新合同子表,库存量,销售计划主表,合同主表因销售台账而影响的数据更新

parent e5ac0b22
......@@ -53,4 +53,19 @@ public class PlanningCycleServiceImpl implements PlanningCycleService{
}
public UUID getPlanningCycleObjBySum(String planningCycle,Date date) {
PlanningCycleEnum planningCycleType = null;
if (PlanningCycleEnum.DAY.name().equalsIgnoreCase(planningCycle)) {
planningCycleType = PlanningCycleEnum.DAY;
}else if (PlanningCycleEnum.WEEK.name().equalsIgnoreCase(planningCycle)) {
planningCycleType = PlanningCycleEnum.WEEK;
}else {
return null;
}
UUID ID = planningCycleDao.getPlanningCycleObj(planningCycleType, date).getUuid("id");
return ID;
}
}
......@@ -32,5 +32,6 @@ public interface PlanningCycleService {
public void initData() ;
public UUID getPlanningCycleObjBySum(String planningCycleType,Date date);
}
package com.xyst.dinas.contract.internal.dao;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Map;
......@@ -271,5 +272,33 @@ public class ContractDao {
return dinasAmount;
}
/**
* 获取合同上的某种砂石余量
* @param contract
* @param dinasTypeId 砂石类型
* @return
*/
public boolean updateContractDinasAmount(KObject contract,UUID dinasTypeId,BigDecimal DEALAMOUNT,BigDecimal AMOUNT ) {
BigDecimal dinasAmount;
BigDecimal saleDinasAmount;
BigDecimal advanceBalance;
boolean flag = false;
List<KObject> contractDetail = contract.get("contractDetails").toList();
for (KObject detail : contractDetail) {//合同中的砂石明细
UUID dinasTypeId2 = detail.get("dinasType").getUuid(BaseConstants.ID);
if(dinasTypeId2.equals(dinasTypeId)) {
dinasAmount = new BigDecimal(detail.getDouble(ContractConstant.DINAS_AMOUNT));
saleDinasAmount = new BigDecimal(detail.getDouble(ContractConstant.SALE_DINAS_AMOUNT));
advanceBalance = new BigDecimal(detail.getDouble(ContractConstant.ADVANCE_BALANCE));
detail.set(ContractConstant.DINAS_AMOUNT, dinasAmount.add(DEALAMOUNT));
update(detail);
contract.set(ContractConstant.ADVANCE_BALANCE, advanceBalance.add(AMOUNT));
contract.set(ContractConstant.SALE_DINAS_AMOUNT, saleDinasAmount.subtract(DEALAMOUNT));
flag = true;
break;
}
}
return flag;
}
}
package com.xyst.dinas.contract.internal.service;
import java.math.BigDecimal;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
......@@ -383,4 +384,12 @@ public class ContractServiceImpl implements ContractService {
}
return true;
}
@Override
public Boolean modifyInventory(UUID id,UUID dinasTypeId,BigDecimal DEALAMOUNT,BigDecimal AMOUNT ) {
// TODO Auto-generated method stub
KObject obj = contractDao.load(id);
return contractDao.updateContractDinasAmount(obj,dinasTypeId,DEALAMOUNT,AMOUNT);
}
}
package com.xyst.dinas.contract.service;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Map;
......@@ -9,6 +10,7 @@ import org.json.JSONArray;
import org.springframework.lang.Nullable;
import com.beecode.bcp.type.KObject;
import com.beecode.inz.basis.team.pojo.ResponseObj;
public interface ContractService {
......@@ -104,5 +106,6 @@ public interface ContractService {
public List<KObject> queryExeContractListInLife(UUID regionalCompanyId,@Nullable Date startDate,@Nullable Date endDate);
public Boolean modifyInventory(UUID id,UUID dinasTypeId,BigDecimal DEALAMOUNT,BigDecimal AMOUNT );
}
package com.xyst.dinas.sales.constant;
public enum CustomerTypeEnum {
/**
* 区域公司
*/
PurchaseSandCompany("PurchaseSandCompany", "PurchaseSandCompany"),
/**
* 散户
*/
RetailInfo("RetailInfo", "RetailInfo");
private String value = "";
private String description = "";
CustomerTypeEnum(String value, String description){
this.value = value;
this.description = description;
}
CustomerTypeEnum(){
this("", "");
}
public String getValue(){
return this.value;
}
public String getDescription(){
return this.description;
}
}
......@@ -9,6 +9,8 @@ import java.util.UUID;
import javax.transaction.Transactional;
import org.json.JSONArray;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
......@@ -17,13 +19,20 @@ import com.beecode.bcp.type.KObject;
import com.xyst.dinas.biz.dao.DinasOrganizationDao;
import com.xyst.dinas.biz.dao.DinasTypeDao;
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.dao.ProductionLineDao;
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.service.ContractService;
import com.xyst.dinas.project.dao.ProjectFiledDao;
import com.xyst.dinas.project.dao.PurchaseSandCompanyDao;
import com.xyst.dinas.sales.constant.CustomerTypeEnum;
import com.xyst.dinas.sales.constant.SalesRecordConstant;
import com.xyst.dinas.sales.dao.SalesPlanDao;
import com.xyst.dinas.sales.dao.SalesRecordDao;
import com.xyst.dinas.sales.service.InventoryService;
import com.xyst.dinas.sales.service.SalesRecordService;
import com.xyst.dinas.sales.web.info.SalesRecordInfo;
import com.xyst.dinas.sales.web.info.SyncException;
......@@ -50,6 +59,14 @@ public class SalesRecordServiceImpl implements SalesRecordService {
@Autowired
DinasTypeDao dinasTypeDao;
@Autowired
InventoryService inventoryService;
@Autowired
ContractService contractService;
@Autowired
SalesPlanDao salesPlanDao;
@Autowired
PlanningCycleService planningCycleService;
@Autowired
@Qualifier(SalesRecordConstant.ENTITY)
private KClass salesRecordClass;
......@@ -77,7 +94,7 @@ public class SalesRecordServiceImpl implements SalesRecordService {
KObject purchaseSandCompany = null;
// 获取散户KObject
KObject retailInfo = null;
if ("company".equals(salesRecordInfo.getCustomerType())) {
if ((CustomerTypeEnum.PurchaseSandCompany.name()).equals(salesRecordInfo.getCustomerType())) {
purchaseSandCompany = entityExistenceCheck("购砂单位", purchaseSandCompanyDao.load(
UUID.fromString(dataExistenceCheck("购砂单位", salesRecordInfo.getPurchaseSandCompany()))));
} else {
......@@ -97,6 +114,7 @@ public class SalesRecordServiceImpl implements SalesRecordService {
dinasType = entityExistenceCheck("砂石类型",
dinasTypeDao.load(UUID.fromString(dataExistenceCheck("砂石类型", salesRecordInfo.getDinasType()))));
// 获取销售台账Kobject
Date modifyTime = generateDate("修改时间", "yyyy-MM-dd", salesRecordInfo.getModifyTime());
Date dealtime = generateDate("销售时间", "yyyy-MM-dd", salesRecordInfo.getDealTime());
......@@ -107,12 +125,10 @@ public class SalesRecordServiceImpl implements SalesRecordService {
salesRecord.set(SalesRecordConstant.PROJECT, project);
salesRecord.set(SalesRecordConstant.REGIONALCOMPANY, regionalCompany);
salesRecord.set(SalesRecordConstant.CONTRACT, contract);
if ("company".equals(salesRecordInfo.getCustomerType())) {
if (CustomerTypeEnum.PurchaseSandCompany.name().equals(salesRecordInfo.getCustomerType())) {
salesRecord.set(SalesRecordConstant.PURCHASESANDCOMPANY, purchaseSandCompany);
// salesRecord.set(SalesRecordConstant.RETAILINFO,null);
} else if (null != salesRecordInfo.getRetailInfo()) {
salesRecord.set(SalesRecordConstant.RETAILINFO, retailInfo);
// salesRecord.set(SalesRecordConstant.PURCHASESANDCOMPANY,null);
}
salesRecord.set(SalesRecordConstant.STATION, station);
salesRecord.set(SalesRecordConstant.PRODUCTIONLINE, productionLine);
......@@ -133,12 +149,50 @@ public class SalesRecordServiceImpl implements SalesRecordService {
dataExistenceCheck("付款来源", salesRecordInfo.getPaymentSource()));
salesRecord.set(SalesRecordConstant.DEALBILLCODE,
dataExistenceCheck("销售单号", salesRecordInfo.getDealBillCode()));
// salesRecord.set(SalesRecordConstant.APPROVE_STATE,modifyTime);
salesRecord.set(SalesRecordConstant.DISCARD, false);
salesRecord.set(SalesRecordConstant.DEL, false);
// salesRecord.set(SalesRecordConstant.PIC,modifyTime);
BigDecimal DEALAMOUNT = BigDecimal.ZERO
.subtract(new BigDecimal(salesRecord.getDouble(SalesRecordConstant.DEALAMOUNT)));
//付款来源未定,暂时按使用预付款处理。
BigDecimal AMOUNT = BigDecimal.ZERO
.subtract(new BigDecimal(salesRecord.getDouble(SalesRecordConstant.AMOUNT)));
if (CustomerTypeEnum.PurchaseSandCompany.name().equals(salesRecordInfo.getCustomerType())) {
// 更新合同子表合同砂石余量(吨)-更新合同表付款余额、销售总量信息
/*
* boolean flag =
* contractService.modifyInventory(UUID.fromString(salesRecordInfo.getContract()
* ), UUID.fromString(salesRecordInfo.getDinasType()), DEALAMOUNT, AMOUNT); if
* (!flag) { throw new SyncException("销售台账信息存储报出错:合同子表中无此砂石类型数据"); }
*/
UUID planningCycleId = planningCycleService.getPlanningCycleObjBySum(regionalCompany.getString("planningCycle"),dealtime);
KObject salesPlan = salesPlanDao.querySalesPlanByPlan(UUID.fromString(salesRecordInfo.getRegionalCompany()),planningCycleId);
BigDecimal actualSaleTotalAmount = salesPlan.get("actualSaleTotalAmount") == null ? BigDecimal.ZERO
: new BigDecimal(salesPlan.getInt("actualSaleTotalAmount"));
salesPlan.set("actualSaleTotalAmount",actualSaleTotalAmount.subtract(DEALAMOUNT));
salesPlanDao.update(salesPlan);
}
// 此处为Jason格式,多重嵌套
// 更新库存量
{
JSONObject params = new JSONObject();
JSONArray datas = new JSONArray();
JSONObject param = new JSONObject();
JSONArray data = new JSONArray();
JSONObject item = new JSONObject();
item.put("stationId", station.get("id"));
item.put("dinasTypeId", dinasType.get("id"));
item.put("stationName", "");
item.put("dinasTypeName", "");
item.put("amount", BigDecimal.ZERO.subtract(DEALAMOUNT));
data.put(item);
param.put("regionalCompany", regionalCompany.getUuid("id"));
param.put("data", data);
datas.put(param);
params.put("datas", datas);
inventoryService.modifyInventory(params.toString(), false, true);
}
UUID salesRecordId = salesRecordDao.insert(salesRecord);
//KObject newSalesRecord = salesRecordDao.load(salesRecordId);
salesRecordIdList.add(salesRecordId);
}
} catch (SyncException e) {
......
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