Commit d5815f3b by wukaiqiang

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

parent e5ac0b22
...@@ -53,4 +53,19 @@ public class PlanningCycleServiceImpl implements PlanningCycleService{ ...@@ -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 { ...@@ -32,5 +32,6 @@ public interface PlanningCycleService {
public void initData() ; public void initData() ;
public UUID getPlanningCycleObjBySum(String planningCycleType,Date date);
} }
package com.xyst.dinas.contract.internal.dao; package com.xyst.dinas.contract.internal.dao;
import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -271,5 +272,33 @@ public class ContractDao { ...@@ -271,5 +272,33 @@ public class ContractDao {
return dinasAmount; 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; package com.xyst.dinas.contract.internal.service;
import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
...@@ -383,4 +384,12 @@ public class ContractServiceImpl implements ContractService { ...@@ -383,4 +384,12 @@ public class ContractServiceImpl implements ContractService {
} }
return true; 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; package com.xyst.dinas.contract.service;
import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -9,6 +10,7 @@ import org.json.JSONArray; ...@@ -9,6 +10,7 @@ import org.json.JSONArray;
import org.springframework.lang.Nullable; import org.springframework.lang.Nullable;
import com.beecode.bcp.type.KObject; import com.beecode.bcp.type.KObject;
import com.beecode.inz.basis.team.pojo.ResponseObj;
public interface ContractService { public interface ContractService {
...@@ -104,5 +106,6 @@ public interface ContractService { ...@@ -104,5 +106,6 @@ public interface ContractService {
public List<KObject> queryExeContractListInLife(UUID regionalCompanyId,@Nullable Date startDate,@Nullable Date endDate); 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; ...@@ -9,6 +9,8 @@ import java.util.UUID;
import javax.transaction.Transactional; 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.Autowired;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
...@@ -17,13 +19,20 @@ import com.beecode.bcp.type.KObject; ...@@ -17,13 +19,20 @@ 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.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.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.SalesRecordConstant; 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.dao.SalesRecordDao;
import com.xyst.dinas.sales.service.InventoryService;
import com.xyst.dinas.sales.service.SalesRecordService; import com.xyst.dinas.sales.service.SalesRecordService;
import com.xyst.dinas.sales.web.info.SalesRecordInfo; import com.xyst.dinas.sales.web.info.SalesRecordInfo;
import com.xyst.dinas.sales.web.info.SyncException; import com.xyst.dinas.sales.web.info.SyncException;
...@@ -50,6 +59,14 @@ public class SalesRecordServiceImpl implements SalesRecordService { ...@@ -50,6 +59,14 @@ public class SalesRecordServiceImpl implements SalesRecordService {
@Autowired @Autowired
DinasTypeDao dinasTypeDao; DinasTypeDao dinasTypeDao;
@Autowired @Autowired
InventoryService inventoryService;
@Autowired
ContractService contractService;
@Autowired
SalesPlanDao salesPlanDao;
@Autowired
PlanningCycleService planningCycleService;
@Autowired
@Qualifier(SalesRecordConstant.ENTITY) @Qualifier(SalesRecordConstant.ENTITY)
private KClass salesRecordClass; private KClass salesRecordClass;
...@@ -77,7 +94,7 @@ public class SalesRecordServiceImpl implements SalesRecordService { ...@@ -77,7 +94,7 @@ public class SalesRecordServiceImpl implements SalesRecordService {
KObject purchaseSandCompany = null; KObject purchaseSandCompany = null;
// 获取散户KObject // 获取散户KObject
KObject retailInfo = null; KObject retailInfo = null;
if ("company".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()))));
} else { } else {
...@@ -97,6 +114,7 @@ public class SalesRecordServiceImpl implements SalesRecordService { ...@@ -97,6 +114,7 @@ public class SalesRecordServiceImpl implements SalesRecordService {
dinasType = entityExistenceCheck("砂石类型", dinasType = entityExistenceCheck("砂石类型",
dinasTypeDao.load(UUID.fromString(dataExistenceCheck("砂石类型", salesRecordInfo.getDinasType())))); dinasTypeDao.load(UUID.fromString(dataExistenceCheck("砂石类型", salesRecordInfo.getDinasType()))));
// 获取销售台账Kobject // 获取销售台账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());
...@@ -107,12 +125,10 @@ public class SalesRecordServiceImpl implements SalesRecordService { ...@@ -107,12 +125,10 @@ public class SalesRecordServiceImpl implements SalesRecordService {
salesRecord.set(SalesRecordConstant.PROJECT, project); salesRecord.set(SalesRecordConstant.PROJECT, project);
salesRecord.set(SalesRecordConstant.REGIONALCOMPANY, regionalCompany); salesRecord.set(SalesRecordConstant.REGIONALCOMPANY, regionalCompany);
salesRecord.set(SalesRecordConstant.CONTRACT, contract); 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.PURCHASESANDCOMPANY, purchaseSandCompany);
// salesRecord.set(SalesRecordConstant.RETAILINFO,null);
} else if (null != salesRecordInfo.getRetailInfo()) { } else if (null != salesRecordInfo.getRetailInfo()) {
salesRecord.set(SalesRecordConstant.RETAILINFO, retailInfo); salesRecord.set(SalesRecordConstant.RETAILINFO, retailInfo);
// salesRecord.set(SalesRecordConstant.PURCHASESANDCOMPANY,null);
} }
salesRecord.set(SalesRecordConstant.STATION, station); salesRecord.set(SalesRecordConstant.STATION, station);
salesRecord.set(SalesRecordConstant.PRODUCTIONLINE, productionLine); salesRecord.set(SalesRecordConstant.PRODUCTIONLINE, productionLine);
...@@ -133,12 +149,50 @@ public class SalesRecordServiceImpl implements SalesRecordService { ...@@ -133,12 +149,50 @@ public class SalesRecordServiceImpl implements SalesRecordService {
dataExistenceCheck("付款来源", salesRecordInfo.getPaymentSource())); dataExistenceCheck("付款来源", salesRecordInfo.getPaymentSource()));
salesRecord.set(SalesRecordConstant.DEALBILLCODE, salesRecord.set(SalesRecordConstant.DEALBILLCODE,
dataExistenceCheck("销售单号", salesRecordInfo.getDealBillCode())); dataExistenceCheck("销售单号", salesRecordInfo.getDealBillCode()));
// salesRecord.set(SalesRecordConstant.APPROVE_STATE,modifyTime);
salesRecord.set(SalesRecordConstant.DISCARD, false); salesRecord.set(SalesRecordConstant.DISCARD, false);
salesRecord.set(SalesRecordConstant.DEL, 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); UUID salesRecordId = salesRecordDao.insert(salesRecord);
//KObject newSalesRecord = salesRecordDao.load(salesRecordId);
salesRecordIdList.add(salesRecordId); salesRecordIdList.add(salesRecordId);
} }
} catch (SyncException e) { } 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