AmsContractTruckPriceServiceImpl.java 47 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012
  1. package com.steerinfo.dil.service.impl;
  2. import com.steerinfo.dil.mapper.AmsContaactPriceMaterialMapper;
  3. import com.steerinfo.dil.mapper.AmsContractTruckPriceMapper;
  4. import com.steerinfo.dil.mapper.RmsLineNodePointMapper;
  5. import com.steerinfo.dil.mapper.RmsReceivePlaceMapper;
  6. import com.steerinfo.dil.model.AmsContaactPriceMaterial;
  7. import com.steerinfo.dil.model.AmsContractTransportPrice;
  8. import com.steerinfo.dil.model.RmsLineNodePoint;
  9. import com.steerinfo.dil.model.RmsReceivePlace;
  10. import com.steerinfo.dil.service.IAmsContractTruckPriceService;
  11. import com.steerinfo.dil.util.DataChange;
  12. import org.apache.commons.lang.math.NumberUtils;
  13. import org.springframework.beans.factory.annotation.Autowired;
  14. import org.springframework.stereotype.Service;
  15. import org.springframework.transaction.annotation.Transactional;
  16. import java.lang.reflect.Array;
  17. import java.math.BigDecimal;
  18. import java.text.ParseException;
  19. import java.text.SimpleDateFormat;
  20. import java.util.*;
  21. import java.util.regex.Matcher;
  22. import java.util.regex.Pattern;
  23. /**
  24. * AmsContractTransportPrice服务实现:
  25. * @author generator
  26. * @version 1.0-SNAPSHORT 2021-09-06 07:10
  27. * 类描述
  28. * 修订历史:
  29. * 日期:2021-09-06
  30. * 作者:generator
  31. * 参考:
  32. * 描述:AmsContractTransportPrice服务实现
  33. * @see null
  34. * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved.
  35. */
  36. @Service(value = "amsContractTruckPriceService")
  37. public class AmsContractTruckPriceServiceImpl implements IAmsContractTruckPriceService {
  38. @Autowired
  39. private AmsContractTruckPriceMapper amsContractTruckPriceMapper;
  40. @Autowired
  41. RmsReceivePlaceMapper rmsReceivePlaceMapper;
  42. @Autowired
  43. AmsContaactPriceMaterialMapper amsContaactPriceMaterialMapper;
  44. //@Autowired
  45. //private RmsLineNodePoint rmsLineNodePoint;
  46. @Autowired
  47. private RmsLineNodePointMapper rmsLineNodePointMapper;
  48. @Autowired
  49. AmsContractTruckPriceServiceImpl amsContractTruckPriceService;
  50. /**
  51. * 新增汽运单价
  52. * @Author zzd
  53. * @Date 2022/1/20 11:33
  54. * @param mapValue
  55. * @return
  56. **/
  57. @Transactional
  58. @Override
  59. public int addAmsContractTransportPrice(Map<String,Object> mapValue) {
  60. BigDecimal shipperId = DataChange.dataToBigDecimal(mapValue.get("shipperId"));
  61. BigDecimal carrierId = DataChange.dataToBigDecimal(mapValue.get("carrierId"));
  62. BigDecimal addressId = DataChange.dataToBigDecimal(mapValue.get("addressId"));
  63. BigDecimal lineId = DataChange.dataToBigDecimal(mapValue.get("lineId"));
  64. BigDecimal capacityTypeId = DataChange.dataToBigDecimal(mapValue.get("capacityTypeId"));
  65. BigDecimal formulaId = DataChange.dataToBigDecimal(mapValue.get("formulaId"));
  66. BigDecimal priceValue = DataChange.dataToBigDecimal(mapValue.get("priceValue"));
  67. Date priceDate = new Date((Long)mapValue.get("priceDate"));
  68. BigDecimal type = DataChange.dataToBigDecimal(mapValue.get("type"));
  69. BigDecimal oilpriceBase = DataChange.dataToBigDecimal(mapValue.get("oilpriceBase"));
  70. BigDecimal oilTypeId = DataChange.dataToBigDecimal(mapValue.get("oilTypeId"));
  71. BigDecimal oilpriceChangeThreshold = DataChange.dataToBigDecimal(mapValue.get("oilpriceChangeThreshold"));
  72. AmsContractTransportPrice amsContractTransportPrice = new AmsContractTransportPrice();
  73. String place = (String) mapValue.get("place");
  74. if (place != null && place.length() != 0) {
  75. BigDecimal placeId = rmsReceivePlaceMapper.getPlaceId(mapValue);
  76. if (placeId != null) {
  77. amsContractTransportPrice.setPlaceId(placeId);
  78. }
  79. else {
  80. RmsReceivePlace rmsReceivePlace = new RmsReceivePlace();
  81. rmsReceivePlace.setAddressId(addressId);
  82. rmsReceivePlace.setAddressDeliveryAddress(place);
  83. rmsReceivePlace.setPlaceId(rmsReceivePlaceMapper.selectMaxId());
  84. }
  85. }
  86. amsContractTransportPrice.setType(type);
  87. amsContractTransportPrice.setOilpriceBase(oilpriceBase);
  88. amsContractTransportPrice.setShipperId(shipperId);
  89. amsContractTransportPrice.setOilpriceChangeThreshold(oilpriceChangeThreshold);
  90. amsContractTransportPrice.setOilTypeId(oilTypeId);
  91. amsContractTransportPrice.setPriceValue(priceValue);
  92. amsContractTransportPrice.setPriceDate(priceDate);
  93. amsContractTransportPrice.setCapacityTypeId(capacityTypeId);
  94. amsContractTransportPrice.setCargonameId(formulaId);
  95. amsContractTransportPrice.setCarrierId(carrierId);
  96. //生成主键id
  97. amsContractTransportPrice.setPriceId(amsContractTruckPriceMapper.selectMaxId());
  98. if(lineId == null){
  99. //计算并插入吨公里
  100. BigDecimal priceTonKilometer = calculationPriceTonKilometer(lineId, priceValue);
  101. amsContractTransportPrice.setPriceTonKilometer(priceTonKilometer);
  102. }
  103. amsContractTransportPrice.setType(new BigDecimal(1));
  104. amsContractTransportPrice.setInsertUsername("admin");
  105. amsContractTransportPrice.setInsertTime(new Date());
  106. amsContractTransportPrice.setUpdateUsername("admin");
  107. amsContractTransportPrice.setUpdateTime(new Date());
  108. amsContractTransportPrice.setInsertUpdateRemark("无");
  109. amsContractTransportPrice.setDeleted(new BigDecimal(0));
  110. return amsContractTruckPriceMapper.insertSelective(amsContractTransportPrice);
  111. }
  112. //计算吨公里值
  113. public BigDecimal calculationPriceTonKilometer(BigDecimal lineId,BigDecimal priceValue){
  114. //查询参考运距
  115. BigDecimal linePathLength = amsContractTruckPriceMapper.getLinePathLength(lineId);
  116. //计算吨公里 吨公里(元/吨.km) = 运价(元/吨)/ 参考运距(公里),保留4位小数
  117. BigDecimal priceTonKilometer = priceValue.divide(linePathLength, 4, BigDecimal.ROUND_HALF_UP);
  118. return priceTonKilometer;
  119. }
  120. //计算吨公里值(销售钢材运价专用)
  121. public BigDecimal calculationPriceTonKilometerNew(BigDecimal haulDistance,BigDecimal priceValue){
  122. //查询参考运距
  123. //BigDecimal linePathLength = amsContractTruckPriceMapper.getLinePathLength(lineId);
  124. //计算吨公里 吨公里(元/吨.km) = 运价(元/吨)/ 参考运距(公里),保留4位小数
  125. BigDecimal priceTonKilometer = priceValue.divide(haulDistance, 4, BigDecimal.ROUND_HALF_UP);
  126. return priceTonKilometer;
  127. }
  128. @Override
  129. public List<Map<String, Object>> getAmsContractTransportPrice(Map<String, Object> map) {
  130. return amsContractTruckPriceMapper.getAmsContractTransportPrice(map);
  131. }
  132. @Override
  133. public int deleteSalePrice(Map<String, Object> map) {
  134. return amsContractTruckPriceMapper.deleteSalePrice(map);
  135. }
  136. @Override
  137. public List<Map<String, Object>> getCarrierListByPrice(Map<String,Object> map) {
  138. return amsContractTruckPriceMapper.getCarrierListByPrice(map);
  139. }
  140. @Override
  141. public List<Map<String, Object>> getCarrierListByAddress(Map<String,Object> map) {
  142. return amsContractTruckPriceMapper.getCarrierListByAddress(map);
  143. }
  144. @Override
  145. public int updateCarrierName(Map<String, Object> map) throws ParseException {
  146. String carrierIdArray = map.get("carrierIdArray").toString().replace("[","").replace("]","").replace(" ","");
  147. String[] split = carrierIdArray.split(",");
  148. //修改地址
  149. amsContractTruckPriceMapper.updateaddressDeliveryAddress(map);
  150. //修改运价
  151. amsContractTruckPriceService.updatePriceValue(map);
  152. //修改运输距离
  153. //amsContractTruckPriceMapper.updateHaulDistance(map);
  154. //根据地址查询出单价表大部分值
  155. AmsContractTransportPrice amsContractTransportPrice = amsContractTruckPriceMapper.getOnePriceMap(map);
  156. //修改的时间
  157. Date date=new Date();
  158. int result=0;
  159. //根据地址查询出承运商ID
  160. List<Map<String, Object>> carrierListByAddress = amsContractTruckPriceMapper.getCarrierListByAddress(map);
  161. //判断传过来的承运商是否有值
  162. if(carrierIdArray.equals("")){
  163. //删除所有的单价
  164. amsContractTruckPriceMapper.deleteSalePrice(map);
  165. //获取主键
  166. amsContractTransportPrice.setPriceId(amsContractTruckPriceMapper.selectMaxId());
  167. amsContractTransportPrice.setInsertTime(date);
  168. if (map.get("priceDate")!=null){
  169. amsContractTransportPrice.setPriceDate(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse((String) map.get("priceDate")));
  170. }else {
  171. amsContractTransportPrice.setPriceDate(date);
  172. }
  173. result+=amsContractTruckPriceMapper.insertSelective(amsContractTransportPrice);
  174. }else if (!(carrierIdArray.equals(""))){
  175. amsContractTruckPriceMapper.deleteSalePrice(map);
  176. //判断查询出来的承运商ID是否存在于更改的承运商ID中
  177. /*for (Map<String, Object> listByAddress : carrierListByAddress) {
  178. BigDecimal carrierId = (BigDecimal) listByAddress.get("carrierId");
  179. int flag=0;
  180. for(int j=0;j<split.length;j++){
  181. if (carrierId.compareTo(DataChange.dataToBigDecimal(split[j]))==0){
  182. flag+=1;
  183. //修改时间
  184. Map<String,Object> map2=map;
  185. if (map.get("priceDate")!=null){
  186. map2.put("priceDate",map.get("priceDate"));
  187. }
  188. SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
  189. map2.put("insertTime",simpleDateFormat.format(date));
  190. map2.put("carrierId",split[j]);
  191. amsContractTruckPriceMapper.updateSomeOneSalePrice(map2);
  192. //删除数据
  193. carrierIdArray.split(split[j]);
  194. break;
  195. }
  196. }
  197. if (flag==0){
  198. //就把单价表中该单价删掉
  199. Map<String,Object> map1=map;
  200. map1.put("carrierId",carrierId);
  201. amsContractTruckPriceMapper.deleteSomeOneSalePrice(map1);
  202. }
  203. }*/
  204. for (int i = 0; i < split.length; i++) {
  205. //获取主键
  206. amsContractTransportPrice.setPriceId(amsContractTruckPriceMapper.selectMaxId());
  207. amsContractTransportPrice.setCarrierId(DataChange.dataToBigDecimal(split[i]));
  208. amsContractTransportPrice.setInsertTime(date);
  209. // SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");
  210. // SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  211. // Date datenew = sdf1.parse((String) map.get("priceDate"));
  212. // String format = sdf2.format(datenew);
  213. amsContractTransportPrice.setPriceDate(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").parse((String) map.get("priceDate")));
  214. result+=amsContractTruckPriceMapper.insertSelective(amsContractTransportPrice);
  215. }
  216. }
  217. return result;
  218. }
  219. @Override
  220. public int updateaddressDeliveryAddress(Map<String,Object> map) {
  221. return amsContractTruckPriceMapper.updateaddressDeliveryAddress(map);
  222. }
  223. @Override
  224. public int updatePriceValue(Map<String,Object> map) {
  225. BigDecimal haulDistance = DataChange.dataToBigDecimal(map.get("haulDistance"));
  226. BigDecimal priceValue = DataChange.dataToBigDecimal(map.get("priceValue"));
  227. if (haulDistance!=null&&haulDistance.compareTo(BigDecimal.ZERO)!=0){
  228. BigDecimal priceTonKilometer = amsContractTruckPriceService.calculationPriceTonKilometerNew(haulDistance, priceValue);
  229. map.put("priceTonKilometer",priceTonKilometer);
  230. }else {
  231. return amsContractTruckPriceMapper.updatePriceValueNew(map);
  232. }
  233. return amsContractTruckPriceMapper.updatePriceValue(map);
  234. }
  235. @Override
  236. public List<Map<String, Object>> getAmsContractTransportPriceForDetail(Map<String, Object> map) {
  237. //amsContractTruckPriceMapper.getAmsContractTransportPriceForDetail(map);
  238. return amsContractTruckPriceMapper.getAddressDeliveryAddressForDetails(map);
  239. }
  240. @Override
  241. public String getCarrierNameForDetail(String userId){
  242. return amsContractTruckPriceMapper.getCarrierNameForDetail(userId);
  243. }
  244. @Override
  245. public int deleteAmsContractTransportPrice(BigDecimal priceId) {
  246. AmsContractTransportPrice amsContractTransportPrice = new AmsContractTransportPrice();
  247. amsContractTransportPrice.setId(priceId);
  248. amsContractTransportPrice.setDeleted(new BigDecimal(1));
  249. return amsContractTruckPriceMapper.updateByPrimaryKeySelective(amsContractTransportPrice);
  250. }
  251. @Override
  252. public List<Map<String, Object>> getCarrierName() {
  253. return amsContractTruckPriceMapper.getCarrierName();
  254. }
  255. @Override
  256. public List<Map<String, Object>> getLineNo() {
  257. return amsContractTruckPriceMapper.getLineNo();
  258. }
  259. @Override
  260. public List<Map<String, Object>> getCapacityNumber() {
  261. return amsContractTruckPriceMapper.getCapacityNumber();
  262. }
  263. @Override
  264. public List<Map<String, Object>> getAddressDeliveryAddress(Map<String,Object> map) {
  265. return amsContractTruckPriceMapper.getAddressDeliveryAddress(map);
  266. }
  267. @Override
  268. public List<Map<String, Object>> selectByPriceId(BigDecimal priceId) {
  269. return amsContractTruckPriceMapper.selectByPriceId(priceId);
  270. }
  271. @Override
  272. public int updateAmsContractTransportPrice(AmsContractTransportPrice amsContractTransportPrice) {
  273. //获取路线Id和运价
  274. BigDecimal lineId = amsContractTransportPrice.getLineId();
  275. BigDecimal priceValue = amsContractTransportPrice.getPriceValue();
  276. //如果传入路线则修改运价
  277. if(lineId != null){
  278. BigDecimal priceId = amsContractTransportPrice.getPriceId();
  279. //获取未修改前的汽运单价信息
  280. AmsContractTransportPrice amsContractTransportPrice1 = amsContractTruckPriceMapper.selectByPrimaryKey(priceId);
  281. //若运价修改了
  282. if(!amsContractTransportPrice.getPriceValue().equals(amsContractTransportPrice1.getPriceValue())){
  283. //计算并插入吨公里
  284. BigDecimal priceTonKilometer = calculationPriceTonKilometer(lineId, priceValue);
  285. amsContractTransportPrice.setPriceTonKilometer(priceTonKilometer);
  286. }
  287. }
  288. amsContractTransportPrice.setUpdateTime(new Date());
  289. return amsContractTruckPriceMapper.updateByPrimaryKeySelective(amsContractTransportPrice);
  290. }
  291. @Override
  292. public List<Map<String, Object>> getOriginAndNowOilPrice() {
  293. return amsContractTruckPriceMapper.getOriginAndNowOilPrice();
  294. }
  295. @Override
  296. public List<Map<String, Object>> getCargoName() {
  297. return amsContractTruckPriceMapper.getCargoName();
  298. }
  299. @Override
  300. public List<Map<String, Object>> getOilTypeName() {
  301. return amsContractTruckPriceMapper.getOilTypeName();
  302. }
  303. /**
  304. * 批量修改运输单价
  305. * @return
  306. */
  307. @Override
  308. @Transactional
  309. public int batchUpdateTransportPriceByOilPrice(Map<String,Object> map){
  310. //正数的判断条件
  311. String flag= (String) map.get("flag");
  312. //运输单价变化的条数
  313. int i = 0;
  314. //获取油品名称ID
  315. BigDecimal oilTypeId = DataChange.dataToBigDecimal(map.get("oilTypeId"));
  316. //获取预执行油价
  317. BigDecimal newOilPrice = DataChange.dataToBigDecimal(map.get("newOilPrice"));
  318. BigDecimal type = new BigDecimal(1);
  319. //根据油品名称ID和非历史油价筛选出符合条件的运价合集
  320. List<Map<String, Object>> PriceValueList = amsContractTruckPriceMapper.getPriceValueList(oilTypeId);
  321. for (Map<String, Object> stringObjectMap : PriceValueList) {
  322. //有距离则是销售钢材
  323. if (stringObjectMap.get("haulDistance")!=null) {
  324. //中标价格或者收货地址(库存)则重新计算价格
  325. if (stringObjectMap.get("referenceHt")!=null || stringObjectMap.get("inventory")!=null){
  326. //跳过;
  327. continue;
  328. }else{
  329. //判断省市区(镇),拿到关联的中标数据
  330. Map<String, Object> zb = amsContractTruckPriceMapper.selectByPlaceId(DataChange.dataToBigDecimal(stringObjectMap.get("placeId")));
  331. BigDecimal zbDistance = DataChange.dataToBigDecimal(zb.get("haulDistance"));
  332. BigDecimal distance = DataChange.dataToBigDecimal(stringObjectMap.get("haulDistance"));
  333. if (zbDistance.intValue()!=0 && distance.intValue()!=0){
  334. BigDecimal subtract = zbDistance.subtract(distance);
  335. if (subtract.intValue()>10 || subtract.intValue()<-10){
  336. //大于正负10km重新计算价格
  337. //跳过
  338. continue;
  339. }else{
  340. //小于10km取中标价格
  341. Map<String,Object> updatePrice=new HashMap<>();
  342. updatePrice.put("priceId",DataChange.dataToBigDecimal(stringObjectMap.get("priceId")));
  343. updatePrice.put("priceValue",DataChange.dataToBigDecimal(zb.get("priceValue")));
  344. return amsContractTruckPriceMapper.updateByPriceId(updatePrice);
  345. }
  346. }
  347. }
  348. }
  349. stringObjectMap.put("priceDate",map.get("priceDate"));
  350. //获取该条单价的原油价基准
  351. BigDecimal oilpriceBase = DataChange.dataToBigDecimal(stringObjectMap.get("oilpriceBase"));
  352. //获取该条单价的油价变化率阈值
  353. BigDecimal oilpriceChangeThreshold = DataChange.dataToBigDecimal(stringObjectMap.get("oilpriceChangeThreshold"));
  354. //计算油价变化率,公式:n=(当前油价-基数)÷基数×100% (9.06-8.26)/8.26
  355. BigDecimal n = (oilpriceBase.subtract(newOilPrice)).divide(newOilPrice,4,4);
  356. //若油价变化率超过该条单价的油价变化率阈值,修改原单价为历史数据,新增一条单价
  357. if(n.abs().doubleValue()>oilpriceChangeThreshold.doubleValue()){
  358. //加一个判断(如果数据为正数则需要二次判断,如果数据为负数则直接生效)
  359. try{
  360. if(newOilPrice.compareTo(oilpriceBase)==-1){
  361. //直接降低油价
  362. i+=addANewAmsContractTransportPrice(stringObjectMap,n,newOilPrice);
  363. }else if (newOilPrice.compareTo(oilpriceBase)==1 && "1".equals(flag)){
  364. //加上两个判断之后
  365. i+=addANewAmsContractTransportPrice(stringObjectMap,n,newOilPrice);
  366. }
  367. }catch (Exception e){
  368. e.printStackTrace();
  369. }
  370. }
  371. }
  372. return i;
  373. // if(updateOilPrice>0.05||updateOilPrice<-0.05) {
  374. // //逐条修改吨公里数
  375. // for (Map<String, Object> stringObjectMap : priceValueAndPriceTonKilometer) {
  376. // //主键Id
  377. // BigDecimal priceId = (BigDecimal) stringObjectMap.get("priceId");
  378. // //原运价
  379. // BigDecimal priceValue = (BigDecimal) stringObjectMap.get("priceValue");
  380. // //吨公里数
  381. // BigDecimal priceTonKilometer = (BigDecimal) stringObjectMap.get("priceTonKilometer");
  382. // //参考距离,四舍五入,保留两位小数
  383. // BigDecimal distance;
  384. // if (priceTonKilometer.doubleValue() != 0) {
  385. // distance = priceValue.divide(priceTonKilometer, 2, BigDecimal.ROUND_HALF_UP);
  386. // //现运价
  387. // Double nowPriceValue = priceValue.doubleValue() * 0.65 + priceValue.doubleValue() * 0.35 * (1 + updateOilPrice);
  388. // BigDecimal nowPriceValue1 = new BigDecimal(nowPriceValue);
  389. // //新吨公里数
  390. // BigDecimal newPriceTonKilometer = nowPriceValue1.divide(distance, 4, BigDecimal.ROUND_HALF_UP);
  391. // //通过主键修改一条吨公里数
  392. // amsContractTruckPriceMapper.updatePriceTonKilometer(priceId, newPriceTonKilometer);
  393. // }
  394. // return amsContractTruckPriceMapper.batchUpdateTransportPriceByOilPrice(updateOilPrice);
  395. // }
  396. // }
  397. }
  398. /**
  399. * 油价变化率超过该条单价的油价变化率阈值,修改原单价为历史数据,新增一条执行单价
  400. * @param stringObjectMap
  401. * @param n
  402. * @param newOilPrice
  403. * @return
  404. * @throws Exception
  405. */
  406. @Transactional
  407. public int addANewAmsContractTransportPrice(Map<String, Object> stringObjectMap,BigDecimal n,BigDecimal newOilPrice) throws ParseException {
  408. //定义将要改变的执行价
  409. BigDecimal nowPriceValue;
  410. //存储原运输单价实绩对象
  411. AmsContractTransportPrice oldAmsContractTransportPrice = new AmsContractTransportPrice();
  412. //查询货物名称
  413. // String cargonameValue = amsContractTruckPriceMapper.getCargonameValue(new BigDecimal(stringObjectMap.get("cargonameId").toString()));
  414. //获取原主键Id
  415. BigDecimal priceId = (BigDecimal) stringObjectMap.get("priceId");
  416. //修改原单价为历史数据
  417. oldAmsContractTransportPrice.setPriceId(priceId);
  418. oldAmsContractTransportPrice.setDeleted(new BigDecimal(1));
  419. amsContractTruckPriceMapper.updateByPrimaryKeySelective(oldAmsContractTransportPrice);
  420. //获取原单价的所有数据
  421. AmsContractTransportPrice amsContractTransportPrice = amsContractTruckPriceMapper.selectByPrimaryKey(priceId);
  422. //生成主键
  423. BigDecimal i = amsContractTruckPriceMapper.selectMaxId();
  424. amsContractTransportPrice.setPriceId(i);
  425. //生成执行日期
  426. amsContractTransportPrice.setPriceDate(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse((String) stringObjectMap.get("priceDate")));
  427. //常规字段
  428. amsContractTransportPrice.setInsertUsername("admin");
  429. amsContractTransportPrice.setInsertTime(new Date());
  430. amsContractTransportPrice.setUpdateUsername("admin");
  431. amsContractTransportPrice.setUpdateTime(new Date());
  432. amsContractTransportPrice.setInsertUpdateRemark("无");
  433. //修改现单价为执行数据
  434. amsContractTransportPrice.setDeleted(new BigDecimal(0));
  435. // //若货物名称为焦炭
  436. // if(cargonameValue.equals("焦炭")){
  437. // //现执行价=((63.00+63.00*0.13*n)+(66.50+66.50*0.3*n)+40.00)
  438. // //调用焦炭运价计算公式计算现执行价
  439. // try {
  440. // nowPriceValue = UpdateCokePriceValueByOilPrice(n.toString());
  441. // //保留两位小数
  442. // nowPriceValue = nowPriceValue.divide(new BigDecimal(1),2,4);
  443. // //调整焦炭运价
  444. // amsContractTransportPrice.setPriceValue(nowPriceValue);
  445. // //修改基准油价
  446. // amsContractTransportPrice.setOilpriceBase(newOilPrice);
  447. // } catch (Exception e) {
  448. // e.printStackTrace();
  449. // }
  450. // }
  451. // if(cargonameValue.equals("纯苯")){
  452. // //现执行价=(中标价*0.7)+(中标价*0.3)*(1+n)
  453. // //调用纯苯运价计算公式计算现执行价
  454. // try {
  455. // nowPriceValue = UpdatePureBenzenePriceValueByOilPrice(n.toString(),amsContractTransportPrice.getPriceValue());
  456. // //保留两位小数
  457. // nowPriceValue = nowPriceValue.divide(new BigDecimal(1),2,4);
  458. // //调整纯苯运价
  459. // amsContractTransportPrice.setPriceValue(nowPriceValue);
  460. // //修改基准油价
  461. // amsContractTransportPrice.setOilpriceBase(newOilPrice);
  462. // } catch (Exception e) {
  463. // e.printStackTrace();
  464. // }
  465. // }
  466. // 得到油价联动公式id
  467. //BigDecimal formulaId = DataChange.dataToBigDecimal(stringObjectMap.get("cargonameId"));
  468. //BigDecimal formulaId= (BigDecimal) stringObjectMap.get("cargonameId");
  469. String s= (String) stringObjectMap.get("cargonameId");
  470. BigDecimal formulaId = NumberUtils.createBigDecimal(s.trim());
  471. amsContractTransportPrice.setCargonameId(formulaId);
  472. try {
  473. nowPriceValue = UpdatePureBenzenePriceValueByOilPrice(n.toString(),amsContractTransportPrice.getPriceValue(),formulaId);
  474. //保留两位小数
  475. nowPriceValue = nowPriceValue.divide(new BigDecimal(1),3,0);
  476. //调整纯苯运价
  477. amsContractTransportPrice.setPriceValue(nowPriceValue);
  478. //修改基准油价
  479. amsContractTransportPrice.setOilpriceBase(newOilPrice);
  480. } catch (Exception e) {
  481. e.printStackTrace();
  482. return 0;
  483. }
  484. //新增数据
  485. int insert = amsContractTruckPriceMapper.insert(amsContractTransportPrice);
  486. return insert;
  487. }
  488. /**
  489. * 替换焦炭运价公式并进行计算
  490. * @param n
  491. * @return
  492. * @throws Exception
  493. */
  494. public BigDecimal UpdateCokePriceValueByOilPrice(String n) throws Exception {
  495. // 得到运算公式
  496. String formula_string = null;
  497. // 得到焦炭运价计算公式
  498. formula_string = amsContractTruckPriceMapper.getTruckFormula(new BigDecimal(12));
  499. // 替换焦炭运价计算公式
  500. formula_string = formula_string.replace("油价变动率",n);
  501. String s = toSufExpr(formula_string);
  502. return calSufExpr(s);
  503. }
  504. /**
  505. * 替换运价公式并进行计算
  506. * @param n
  507. * @return
  508. * @throws Exception
  509. */
  510. public BigDecimal UpdatePureBenzenePriceValueByOilPrice(String n,BigDecimal priceValue,BigDecimal formulaId) throws Exception {
  511. // 得到运算公式
  512. String formula_string;
  513. // 得到运价计算公式
  514. formula_string = amsContractTruckPriceMapper.getTruckFormula(formulaId);
  515. if (formula_string.contains("中标价") && formula_string.contains("油价变动率")) {
  516. // 替换纯苯运价计算公式
  517. formula_string = formula_string.replace("中标价", priceValue.toString())
  518. .replace("油价变动率", n);
  519. }
  520. else {
  521. // 替换焦炭
  522. formula_string = formula_string.replace("油价变动率",n);
  523. }
  524. String s = toSufExpr(formula_string);
  525. return calSufExpr(s);
  526. }
  527. /**
  528. * 中缀转换后缀表达式
  529. */
  530. public String toSufExpr(String s) {
  531. StringBuffer sufExpr = new StringBuffer();
  532. Stack<String> stack = new Stack<>();
  533. //压入空方便判断
  534. stack.push(null);
  535. Pattern pattern = Pattern.compile("\\(int\\)|(?<!\\d|[)])-?\\d+(\\.\\d+)?|!=|>=|<=|==|[+\\-*/%()><=|]");
  536. Matcher matcher = pattern.matcher(s);
  537. while (matcher.find()) {
  538. String group = matcher.group();
  539. if (group.matches("!=|>=|<=|==|[+\\-*/%()><=|]|\\(int\\)")) {//是运算符
  540. if (group.equals("(")) {//之间压栈
  541. stack.push(group);
  542. } else if (group.equals(")")) {//等于右括号,一直弹栈,直到遇到左括号
  543. String pop = null;
  544. while (!(pop = stack.pop()).equals("(")) {//遍历循环至左括号
  545. sufExpr.append(pop + " ");
  546. }
  547. } else {//是运算符:加减乘除强转,根据优先级压栈
  548. while (getPriority(group) <= getPriority(stack.peek())) {
  549. String pop = stack.pop();
  550. System.out.println(pop);
  551. System.out.println(sufExpr);
  552. if(pop!=null&&!pop.equals("|")){
  553. sufExpr.append(pop + " ");
  554. }
  555. }
  556. stack.push(group);
  557. }
  558. } else {//是数字
  559. sufExpr.append(group + " ");
  560. }
  561. }
  562. String pop = null;
  563. while (null != (pop = stack.pop())) {
  564. sufExpr.append(pop + " ");
  565. }
  566. return sufExpr.toString();
  567. }
  568. /**
  569. * 设置出栈优先级,(:优先级最低,表示只有遇到)才能出栈
  570. * 当栈顶遇到优先级比自己小或等于的弹栈
  571. */
  572. public Integer getPriority(String c) {
  573. if (c == null) {
  574. return 0;
  575. }
  576. switch (c) {
  577. case "(":
  578. return 1;
  579. case "+":
  580. case "-":
  581. return 2;
  582. case "*":
  583. case "/":
  584. case "%":
  585. return 3;
  586. case ">":
  587. case "<":
  588. case ">=":
  589. case "<=":
  590. case "!=":
  591. case "==":
  592. return 4;
  593. case "|":
  594. return 5;
  595. case "=":
  596. return 6;
  597. case "(int)":
  598. return 7;
  599. }
  600. return 0;
  601. }
  602. /**
  603. * 计算值
  604. */
  605. public BigDecimal cal(BigDecimal a1, BigDecimal a2, String operator) throws Exception {
  606. switch (operator){
  607. case "+":return a1.add(a2);
  608. case "-":return a1.subtract(a2);
  609. case "*":return a1.multiply(a2);
  610. case "/":return a1.divide(a2,3,BigDecimal.ROUND_CEILING);
  611. case "%":return a1.divideAndRemainder(a2)[1];
  612. default:
  613. break;
  614. }
  615. throw new Exception("非法运算符");
  616. }
  617. public Boolean calBoolean(BigDecimal a1, BigDecimal a2, String operator) throws Exception {
  618. switch (operator){
  619. case ">":return a1.compareTo(a2) == 1;
  620. case "<":return a1.compareTo(a2) == -1;
  621. case ">=":return a1.compareTo(a2) > -1;
  622. case "<=":return a1.compareTo(a2) < 1;
  623. case "!=":return a1.compareTo(a2) != 0;
  624. case "==":return a1.compareTo(a2) == 0;
  625. default:
  626. break;
  627. }
  628. throw new Exception("非法运算符");
  629. }
  630. /**
  631. * 计算后缀表达式
  632. */
  633. public BigDecimal calSufExpr(String sufExpr) throws Exception {
  634. Stack<BigDecimal> stack = new Stack<>();
  635. Pattern pattern=Pattern.compile("\\(int\\)|-?\\d+(\\.\\d+)?|!=|>=|<=|==|[+\\-*/%><=]");//提取运算符和数字
  636. Matcher matcher = pattern.matcher(sufExpr);
  637. BigDecimal result=new BigDecimal("0.0");
  638. while (matcher.find()){
  639. String group = matcher.group();
  640. if(group.matches("[+\\-*/%]")){
  641. BigDecimal a1 =stack.pop();
  642. BigDecimal a2 =stack.pop();
  643. result = cal(a2, a1, group);
  644. stack.push(result);
  645. }
  646. else if(group.equals("(int)")){
  647. BigDecimal pop = stack.pop();
  648. BigDecimal bigDecimal = pop.setScale(0, BigDecimal.ROUND_DOWN);
  649. stack.push(bigDecimal);
  650. }
  651. else if(group.matches("!=|>=|<=|==|[><]")){
  652. BigDecimal a1 =stack.pop();
  653. BigDecimal a2 =stack.pop();
  654. stack.push(calBoolean(a2,a1,group)?new BigDecimal(1):new BigDecimal(0));
  655. }
  656. else if(group.equals("=")){
  657. BigDecimal a1 =stack.pop();
  658. BigDecimal a2 =stack.pop();
  659. if (a2.compareTo(new BigDecimal(1))==0) {
  660. stack.push(a1);
  661. }
  662. }
  663. else {//为数字直接压栈
  664. stack.push(new BigDecimal(group));
  665. }
  666. }
  667. return result;
  668. }
  669. /**
  670. * 边输边查具体地址
  671. * @param map
  672. * @return
  673. */
  674. @Override
  675. public List<Map<String, Object>> getRealAddressByLike(Map<String, Object> map) {
  676. return amsContractTruckPriceMapper.getRealAddressByLike(map);
  677. }
  678. @Override
  679. public int insertInwardPrice(Map<String, Object> mapValue) {
  680. int i = 0;
  681. BigDecimal capacityTypeId = DataChange.dataToBigDecimal(mapValue.get("capacityTypeId"));
  682. BigDecimal lineId = DataChange.dataToBigDecimal(mapValue.get("rangeId"));
  683. BigDecimal formulaId = DataChange.dataToBigDecimal(mapValue.get("formulaId"));
  684. BigDecimal priceValue = DataChange.dataToBigDecimal(mapValue.get("priceValue"));
  685. Date priceDate = new Date((Long)mapValue.get("priceDate"));
  686. BigDecimal type = DataChange.dataToBigDecimal(mapValue.get("type"));
  687. BigDecimal oilpriceBase = DataChange.dataToBigDecimal(mapValue.get("oilpriceBase"));
  688. BigDecimal oilTypeId = DataChange.dataToBigDecimal(mapValue.get("oilTypeId"));
  689. BigDecimal oilpriceChangeThreshold = DataChange.dataToBigDecimal(mapValue.get("oilpriceChangeThreshold"));
  690. List<Map<String,Object>>mapList = (List<Map<String, Object>>) mapValue.get("mapList");
  691. AmsContractTransportPrice amsContractTransportPrice = new AmsContractTransportPrice();
  692. amsContractTransportPrice.setType(type);
  693. amsContractTransportPrice.setOilpriceBase(oilpriceBase);
  694. //承运起止点ID
  695. amsContractTransportPrice.setLineId(lineId);
  696. amsContractTransportPrice.setOilpriceChangeThreshold(oilpriceChangeThreshold);
  697. amsContractTransportPrice.setOilTypeId(oilTypeId);
  698. amsContractTransportPrice.setPriceValue(priceValue);
  699. amsContractTransportPrice.setPriceDate(priceDate);
  700. amsContractTransportPrice.setCapacityTypeId(capacityTypeId);
  701. amsContractTransportPrice.setCargonameId(formulaId);
  702. //生成主键id
  703. amsContractTransportPrice.setPriceId(amsContractTruckPriceMapper.selectMaxId());
  704. amsContractTransportPrice.setInsertUsername("admin");
  705. amsContractTransportPrice.setInsertTime(new Date());
  706. amsContractTransportPrice.setUpdateUsername("admin");
  707. amsContractTransportPrice.setUpdateTime(new Date());
  708. amsContractTransportPrice.setInsertUpdateRemark("无");
  709. amsContractTransportPrice.setDeleted(new BigDecimal(0));
  710. i = amsContractTruckPriceMapper.insertSelective(amsContractTransportPrice);
  711. for (Map<String,Object>map:mapList
  712. ) {
  713. map.get("materialId");
  714. AmsContaactPriceMaterial amsContaactPriceMaterial = new AmsContaactPriceMaterial();
  715. //设置最大主键ID
  716. amsContaactPriceMaterial.setId(amsContractTruckPriceMapper.selectPriceMaterialMaxId());
  717. amsContaactPriceMaterial.setMaterialId(DataChange.dataToBigDecimal(map.get("materialId")));
  718. amsContaactPriceMaterial.setPriceId(amsContractTransportPrice.getPriceId());
  719. amsContaactPriceMaterial.setDeleted(new BigDecimal(0));
  720. i = amsContaactPriceMaterialMapper.insertSelective(amsContaactPriceMaterial);
  721. }
  722. return i;
  723. }
  724. @Override
  725. public List<Map<String, Object>> getInwardContractPrice(Map<String, Object> mapValue) {
  726. String material="";
  727. // if (mapValue.get("materialNames")!=null && mapValue.get("materialNames").toString().contains("、")) {
  728. // material= mapValue.get("materialNames").toString();
  729. // mapValue.put("materialNames",null);
  730. // }
  731. List<Map<String,Object>>mapList = amsContractTruckPriceMapper.getInwardContractPrice(mapValue);
  732. for (Map<String,Object>map:mapList
  733. ) {
  734. List<Map<String,Object>> materialList = amsContaactPriceMaterialMapper.getMaterialName(map);
  735. String materialNames = "";
  736. int i = 1;
  737. for (Map<String,Object>materialMap:materialList
  738. ) {
  739. if(i==materialList.size()){
  740. materialNames = materialNames + materialMap.get("materialName") ;
  741. }
  742. else{
  743. materialNames = materialNames + materialMap.get("materialName") + "、";
  744. }
  745. i++;
  746. }
  747. map.put("materialNames",materialNames);
  748. if(((BigDecimal)map.get("type")).intValue() == 2){
  749. map.put("type","元/吨");
  750. }else if(((BigDecimal)map.get("type")).intValue() == 5){
  751. map.put("type","元/小时");
  752. }else if(((BigDecimal)map.get("type")).intValue() == 6){
  753. map.put("type","元/趟");
  754. }
  755. // if (material!=null &&
  756. // material.contains("、") &&
  757. // material.equals(materialNames)) {
  758. // List<Map<String, Object>> newMapList=new ArrayList<>();
  759. // newMapList.add(map);
  760. // return newMapList;
  761. // }
  762. }
  763. return mapList;
  764. }
  765. @Override
  766. public List<Map<String, Object>> selectInwardPrice(Map<String, Object> mapvalue) {
  767. return amsContractTruckPriceMapper.selectInwardPrice(mapvalue);
  768. }
  769. @Override
  770. public List<Map<String, Object>> getRangePoint(Map<String, Object> mapValue) {
  771. return amsContractTruckPriceMapper.getRangePoint(mapValue);
  772. }
  773. @Override
  774. public int insertLineNodePoint(Map<String, Object> map) {
  775. RmsLineNodePoint rmsLineNodePoint = new RmsLineNodePoint();
  776. BigDecimal rangeId = DataChange.dataToBigDecimal(map.get("rangeId"));
  777. String loadName = (String)map.get("loadPointName");
  778. String unloadName = (String)map.get("unloadPointName");
  779. rmsLineNodePoint.setId(rmsLineNodePointMapper.lineMaxId());
  780. rmsLineNodePoint.setTransRangeId(rangeId);
  781. rmsLineNodePoint.setLoadPointName(loadName);
  782. rmsLineNodePoint.setUnloadPointName(unloadName);
  783. rmsLineNodePoint.setDeleted(new BigDecimal(0));
  784. int i = rmsLineNodePointMapper.insertSelective(rmsLineNodePoint);
  785. return i;
  786. }
  787. @Override
  788. public int updatePriceById(Map<String, Object> map) {
  789. int count = 0;
  790. //获取单价ID
  791. BigDecimal priceId = DataChange.dataToBigDecimal(map.get("priceId"));
  792. //获取物资详ID
  793. List<Map<String, Object>> materialTypeList = (List<Map<String,Object>>)map.get("materialTypeList");
  794. for (Map<String,Object> materialTypeMap:materialTypeList){
  795. }
  796. return count;
  797. }
  798. @Override
  799. public int updatePriceByPriceId(Map<String, Object> mapValue){
  800. int i = 0;
  801. BigDecimal capacityTypeId = DataChange.dataToBigDecimal(mapValue.get("capacityTypeId"));
  802. BigDecimal lineId = DataChange.dataToBigDecimal(mapValue.get("rangeId"));
  803. BigDecimal formulaId = DataChange.dataToBigDecimal(mapValue.get("cargonameId"));
  804. BigDecimal priceValue = DataChange.dataToBigDecimal(mapValue.get("priceValue"));
  805. Date priceDate = new Date((Long)mapValue.get("priceDate"));
  806. BigDecimal type = DataChange.dataToBigDecimal(mapValue.get("type"));
  807. BigDecimal oilpriceBase = DataChange.dataToBigDecimal(mapValue.get("oilpriceBase"));
  808. // BigDecimal oilTypeId = DataChange.dataToBigDecimal(mapValue.get("oilTypeId"));
  809. BigDecimal oilpriceChangeThreshold = DataChange.dataToBigDecimal(mapValue.get("oilpriceChangeThreshold"));
  810. List<Map<String,Object>>mapList = (List<Map<String, Object>>) mapValue.get("mapList");
  811. BigDecimal priceId=DataChange.dataToBigDecimal(mapValue.get("priceId"));
  812. AmsContractTransportPrice amsContractTransportPrice = new AmsContractTransportPrice();
  813. amsContractTransportPrice.setOilpriceBase(oilpriceBase);
  814. // amsContractTransportPrice.setOilTypeId(oilTypeId); 油品名称
  815. amsContractTransportPrice.setPriceValue(priceValue);
  816. amsContractTransportPrice.setPriceDate(priceDate);
  817. amsContractTransportPrice.setCargonameId(formulaId);
  818. amsContractTransportPrice.setPriceId(priceId);
  819. amsContractTransportPrice.setUpdateTime(new Date());
  820. i = amsContractTruckPriceMapper.updateByPrimaryKeySelective(amsContractTransportPrice);
  821. // 根据priceId先查询之前是否有物资
  822. // 如果有,但是接受的没有就删除
  823. List<Map<String, Object>> selectwz = amsContractTruckPriceMapper.selectwz(mapValue);
  824. if (!selectwz.isEmpty() && mapList.isEmpty()){
  825. i = amsContaactPriceMaterialMapper.deletePriceByPriceId(mapValue.get("priceId").toString());
  826. }
  827. //把之前的全删了,然后新增
  828. if (mapList!=null && mapList.size()>0) {
  829. i = amsContaactPriceMaterialMapper.deletePriceByPriceId(mapValue.get("priceId").toString());
  830. }
  831. for (Map<String,Object>map:mapList
  832. ) {
  833. //新增
  834. AmsContaactPriceMaterial amsContaactPriceMaterial = new AmsContaactPriceMaterial();
  835. //设置最大主键ID
  836. amsContaactPriceMaterial.setId(amsContractTruckPriceMapper.selectPriceMaterialMaxId());
  837. amsContaactPriceMaterial.setMaterialId(DataChange.dataToBigDecimal(map.get("materialId")));
  838. amsContaactPriceMaterial.setPriceId(amsContractTransportPrice.getPriceId());
  839. amsContaactPriceMaterial.setDeleted(new BigDecimal(0));
  840. i = amsContaactPriceMaterialMapper.insertSelective(amsContaactPriceMaterial);
  841. }
  842. return i;
  843. }
  844. @Override
  845. public List<Map<String, Object>> getwz(Map<String, Object> map){
  846. List<Map<String, Object>> selectwz = amsContractTruckPriceMapper.selectwz(map);
  847. return selectwz;
  848. }
  849. @Override
  850. public Map<String, Object> getcargonameId(Map<String, Object> map) {
  851. Map<String, Object> value = amsContractTruckPriceMapper.getcargonameId(map);
  852. return value;
  853. }
  854. @Override
  855. public int updateDCodd() {
  856. return amsContractTruckPriceMapper.updateDCodd();
  857. }
  858. @Override
  859. public int updateDCnew() {
  860. return amsContractTruckPriceMapper.updateDCnew();
  861. }
  862. //@Transactional
  863. //@Override
  864. //public int insertInwardPriceExcel(Map<String,Object> mapValue){
  865. // int i=0;
  866. // try{
  867. // Object rowsList = mapValue.get("rowsList");
  868. // ArrayList arrayList = (ArrayList) rowsList;
  869. // //先查询在单价表之前是否有记录,有则禁用
  870. // for (Object map : arrayList) {
  871. // //查询收货地址
  872. // Map entity = (Map)map;
  873. // if (entity.get("addressDistrict")!=null){
  874. // if (entity.get("addressDistrict").toString().contains("区") || entity.get("addressDistrict").toString().contains("县")){
  875. // entity.put("addressDistrict","重庆");
  876. // }
  877. // }
  878. // //查询收货地址
  879. // List<String> selectshdz = amsContractTruckPriceMapper.selectshdz(entity);
  880. // //录入收货地址
  881. // if (selectshdz==null) {
  882. // entity.put("addressId",amsContractTruckPriceMapper.selectMaxIdrra()+1);
  883. // amsContractTruckPriceMapper.insertshdz(entity);
  884. // }
  885. // Map<String, Object> selectxxdz=new HashMap<>();
  886. // //查询详细地址
  887. // if (selectshdz!=null && selectshdz.size()>0) {
  888. // entity.put("addressId",selectshdz);
  889. // selectxxdz = amsContractTruckPriceMapper.selectxxdz(entity);
  890. // }
  891. // if (selectxxdz!=null && selectxxdz.get("placeId")!=null) {
  892. // i = amsContractTruckPriceMapper.updateDelectByPlaceId(selectxxdz);
  893. // }
  894. // //录入详细地址
  895. // if (selectxxdz==null){
  896. // entity.put("placeId",amsContractTruckPriceMapper.selectMaxIdrrp()+1);
  897. // entity.put("addressId",DataChange.dataToBigDecimal(entity.get("addressId").toString().replace("[","").replace("]","")));
  898. // amsContractTruckPriceMapper.insertxxdz(entity);
  899. // }
  900. // //生成主键id
  901. // AmsContractTransportPrice amsContractTransportPrice = new AmsContractTransportPrice();
  902. // amsContractTransportPrice.setPriceId(amsContractTruckPriceMapper.selectMaxId());
  903. // amsContractTransportPrice.setInsertUsername("admin");
  904. // amsContractTransportPrice.setInsertTime(new Date());
  905. // amsContractTransportPrice.setUpdateUsername("admin");
  906. // amsContractTransportPrice.setUpdateTime(new Date());
  907. // amsContractTransportPrice.setInsertUpdateRemark("无");
  908. // amsContractTransportPrice.setDeleted(new BigDecimal(0));
  909. // SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd");
  910. // Date priceDate = dateformat.parse("2022-9-26");
  911. // amsContractTransportPrice.setPriceDate(priceDate);
  912. // if(selectxxdz!=null && selectxxdz.get("placeId")!=null){
  913. // amsContractTransportPrice.setPlaceId(DataChange.dataToBigDecimal(selectxxdz.get("placeId")));
  914. // }else if(entity!=null && entity.get("placeId")!=null){
  915. // amsContractTransportPrice.setPlaceId(DataChange.dataToBigDecimal(entity.get("placeId")));
  916. // }
  917. // amsContractTransportPrice.setHaulDistance(DataChange.dataToBigDecimal(entity.get("haulDistance")));
  918. // amsContractTransportPrice.setPriceValue(DataChange.dataToBigDecimal(entity.get("priceValue")));
  919. // amsContractTransportPrice.setPriceTonKilometer(DataChange.dataToBigDecimal(entity.get("priceTonKilometer")));
  920. // if (entity!=null && entity.get("carrierAbbreviation")!=null){
  921. // String cys= entity.get("carrierAbbreviation").toString();
  922. // if (cys!=null) {
  923. // Map<String, Object> selectcys=new HashMap<>();
  924. // if(cys.contains("/")){
  925. // String[] cyss = cys.split("/");
  926. // for (int j = 0; j < cyss.length; j++) {
  927. // selectcys = amsContractTruckPriceMapper.selectcys(cyss[j]);
  928. // if (selectcys!=null && selectcys.get("carrierId")!=null) {
  929. // amsContractTransportPrice.setCarrierId(DataChange.dataToBigDecimal(selectcys.get("carrierId")));//承运商id
  930. // }
  931. // }
  932. // }else{
  933. // selectcys = amsContractTruckPriceMapper.selectcys(cys);
  934. // amsContractTransportPrice.setCarrierId(DataChange.dataToBigDecimal(selectcys.get("carrierId")));//承运商id
  935. // }
  936. // }
  937. // }
  938. // if (entity!=null && entity.get("yes")!=null) {
  939. // if (entity.get("yes").toString().equals("1")){
  940. // //中标合同
  941. // amsContractTransportPrice.setReferenceHt(DataChange.dataToBigDecimal(1));
  942. // }else{
  943. // //库存
  944. // amsContractTransportPrice.setInventory(DataChange.dataToBigDecimal(1));
  945. // }
  946. // }
  947. // i = amsContractTruckPriceMapper.insertSelective(amsContractTransportPrice);
  948. // }
  949. // }catch (Exception e){
  950. // e.printStackTrace();
  951. // }
  952. // return i;
  953. //}
  954. }