package com.deloitte.system.service;
|
|
|
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
import com.alibaba.fastjson.JSONArray;
|
import com.common.core.constant.GlobalConst;
|
import com.common.core.enums.ResultCodeEnum;
|
import com.common.core.exception.BizException;
|
import com.common.core.service.CryptoService;
|
import com.common.core.utils.BeanHelper;
|
import com.common.core.utils.DesensitiveUtils;
|
import com.common.core.utils.IdUtils;
|
import com.common.redis.util.RedisUtil;
|
import com.deloitte.system.model.CacheList;
|
import com.deloitte.system.model.Opportunity;
|
import com.deloitte.system.model.Order;
|
import com.deloitte.system.request.OpportunityDto;
|
import com.deloitte.system.request.OrderDto;
|
import com.jfinal.plugin.activerecord.Db;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
import static com.common.core.constant.GlobalConst.PIPL_UNCONFIRM_INSERT;
|
import static com.common.core.constant.GlobalConst.PIPL_UNCONFIRM_UPDATE;
|
|
@Service
|
public class OrderService {
|
private String tableName = "order";
|
|
@Autowired
|
private CryptoService cryptoService;
|
|
@Autowired
|
private IdUtils idWorker;
|
|
@Autowired
|
private RedisUtil redisUtil;
|
|
public OrderDto queryForOne(String dataId) {
|
Order order = Order.dao.findById(dataId);
|
if (!ObjectUtil.isEmpty(order)) {
|
return BeanHelper.copyAs(order,OrderDto.class);
|
}
|
return null;
|
}
|
|
public List<OrderDto> insertList(List<OrderDto> orderList, String txId) {
|
List<OrderDto> respList = new ArrayList<>();
|
CacheList<OrderDto> dtoCacheList = new CacheList<>();
|
dtoCacheList.setTableName(tableName);
|
List<OrderDto> dtoItemList = new ArrayList<>();
|
orderList.forEach(e -> {
|
String dataId = idWorker.nextId();
|
OrderDto cacheItem = BeanHelper.copyAs(e, OrderDto.class);
|
cacheItem.setDataId(dataId);
|
dtoItemList.add(cacheItem);
|
|
OrderDto target = BeanHelper.copyAs(e, OrderDto.class);
|
target.setDataId(dataId);
|
OrderDto dto = cryptoService.encryptModelColumns(e);
|
dto.setDataId(dataId);
|
cryptoService.convertor(dto,target);
|
DesensitiveUtils.format(target);
|
respList.add(target);
|
});
|
dtoCacheList.setData(dtoItemList);
|
String insertJsonString = JSONArray.toJSONString(dtoCacheList);
|
String insertKey = PIPL_UNCONFIRM_INSERT + txId;
|
boolean redisFlag = redisUtil.set(insertKey, insertJsonString, GlobalConst.DATA_EXPIRE);
|
if (!redisFlag) {
|
throw new BizException("缓存写入失败");
|
}
|
return respList;
|
}
|
|
public List<OrderDto> updateList(List<OrderDto> orderList, String txId) {
|
List<OrderDto> respList = new ArrayList<>();
|
CacheList<OrderDto> dtoCacheList = new CacheList<>();
|
dtoCacheList.setTableName(tableName);
|
List<OrderDto> dtoItemList = new ArrayList<>();
|
orderList.forEach(e -> {
|
Order order = Order.dao.findById(e.getDataId());
|
OrderDto cacheItem = BeanHelper.copyAs(e, OrderDto.class);
|
dtoItemList.add(cacheItem);
|
OrderDto dto = BeanHelper.copyAs(BeanHelper.copy(cacheItem,order),OrderDto.class);
|
OrderDto target = BeanHelper.copyAs(dto, OrderDto.class);
|
dto = cryptoService.encryptModelColumns(dto);
|
target.setSpecialDeliveryPhoneEncrypt(dto.getSpecialDeliveryPhone());
|
target.setSpecialDeliveryPhoneDEncrypt(dto.getSpecialDeliveryPhoneD());
|
target.setShippingRecieverEmailAdrEncrypt(dto.getShippingRecieverEmailAdr());
|
target.setShipToContactIdEncrypt(dto.getShipToContactId());
|
target.setCustomerAuthorizedByIdEncrypt(dto.getCustomerAuthorizedById());
|
target.setBillToContactIdEncrypt(dto.getBillToContactId());
|
target.setSpecialDeliveryContact2Encrypt(dto.getSpecialDeliveryContact2());
|
target.setSpecialDeliveryContactTextEncrypt(dto.getSpecialDeliveryContact());
|
target.setShippingAddressTextEncrypt(dto.getShippingAddressText());
|
target.setSpecialDeliveryContact2DEncrypt(dto.getSpecialDeliveryContact2D());
|
target.setEndUserEncrypt(dto.getEndUser());
|
target.setEndUserDEncrypt(dto.getEndUserD());
|
target.setSpecialDeliveryContactEncrypt(dto.getSpecialDeliveryContact());
|
target.setSpecialDeliveryContactDEncrypt(dto.getSpecialDeliveryContactD());
|
target.setPdfNNotifyPartyEncrypt(dto.getPdfNNotifyParty());
|
target.setPdfNFaxEncrypt(dto.getPdfNFax());
|
target.setPdfNContactEncrypt(dto.getPdfNContact());
|
target.setPdfSTelEncrypt(dto.getPdfSTel());
|
target.setPdfSPhoneEncrypt(dto.getPdfSPhone());
|
target.setPdfSNameEncrypt(dto.getPdfSName());
|
target.setPdfSFaxEncrypt(dto.getPdfSFax());
|
target.setPdfFTelEncrypt(dto.getPdfFTel());
|
target.setPdfFFaxEncrypt(dto.getPdfFFax());
|
target.setPdfFContactPersonEncrypt(dto.getPdfFContactPerson());
|
target.setPdfSAddsEncrypt(dto.getPdfSAdds());
|
target.setPdfSAddressEncrypt(dto.getPdfSAddress());
|
target.setPdfSellerEncrypt(dto.getPdfSeller());
|
target.setPdfCTheconsigneEncrypt(dto.getPdfCTheconsigne());
|
target.setPdfCTelEncrypt(dto.getPdfCTel());
|
target.setPdfCFaxEncrypt(dto.getPdfCFax());
|
target.setPdfCConsigneeEncrypt(dto.getPdfCConsignee());
|
target.setPdfCContactEncrypt(dto.getPdfCContact());
|
target.setPdfCAddrEncrypt(dto.getPdfCAddr());
|
target.setSpecialDeliveryAddressEncrypt(dto.getSpecialDeliveryAddress());
|
target.setSpecialDeliveryAddressDEncrypt(dto.getSpecialDeliveryAddressD());
|
target.setDealerSalesStaffNameAEncrypt(dto.getDealerSalesStaffNameA());
|
target.setPdfSignTitleEncrypt(dto.getPdfSignTitle());
|
target.setPdfSignNameEncrypt(dto.getPdfSignName());
|
target.setPdfSignaturePlacesEncrypt(dto.getPdfSignaturePlaces());
|
target.setPdfByTelEncrypt(dto.getPdfByTel());
|
target.setPdfByAddEncrypt(dto.getPdfByAdd());
|
DesensitiveUtils.format(target);
|
respList.add(target);
|
});
|
dtoCacheList.setData(dtoItemList);
|
String updateJsonString = JSONArray.toJSONString(dtoCacheList);
|
String updateKey = PIPL_UNCONFIRM_UPDATE + txId;
|
boolean redisFlag = redisUtil.set(updateKey, updateJsonString,GlobalConst.DATA_EXPIRE);
|
if (!redisFlag) {
|
throw new BizException("缓存写入失败");
|
}
|
return respList;
|
}
|
|
public Boolean deleteOne(String dataId) {
|
Order order = Order.dao.findById(dataId);
|
order.setIsDelete(1);
|
return order.saveOrUpdate();
|
}
|
|
public Boolean undeleteOne(String dataId) {
|
Order order = Order.dao.findById(dataId);
|
order.setIsDelete(0);
|
return order.saveOrUpdate();
|
}
|
|
public List<OrderDto> search(List<String> idList){
|
if (CollUtil.isEmpty(idList)) {
|
return null;
|
}
|
StringBuilder queryParam = new StringBuilder();
|
queryParam.append("and id in ").append(idList.stream().collect(Collectors.joining(", ", "(", ")")));
|
List<Order> quotesList = Order.dao.findList(queryParam.toString());
|
return quotesList.stream()
|
.map(quotes -> BeanHelper.copyAs(quotes, OrderDto.class)).collect(Collectors.toList());
|
|
}
|
|
public List<OrderDto> decryptUpdate(List<OrderDto> orderList) {
|
List<OrderDto> respList =new ArrayList<>();
|
String[] decryptColumn =new String[]{"expected_delivery_date","sales_account_code","special_delivery_address","dealer_service_d","dealer_service","dealer_sales_staff_name_d","dealer_sales_staff_name"};
|
Db.tx(() -> {
|
for (OrderDto e : orderList) {
|
Order order =Order.dao.findById(e.getDataId());
|
if (order == null) {
|
throw new BizException("无效的DataId");
|
}
|
Order item=new Order();
|
BeanHelper.copyEncrypt(e, item);
|
cryptoService.decryptoColumnModel(item,decryptColumn);
|
BeanHelper.copyEncrypt(item, order);
|
order.setSfRecordId(e.getSfRecordId());
|
if (!order.saveOrUpdate()) {
|
throw new BizException(ResultCodeEnum.RT_ERROR);
|
}
|
|
respList.add(e);
|
}
|
return true;
|
});
|
return respList;
|
}
|
|
|
public List<OrderDto> decryptInsert(List<OrderDto> orderList) {
|
List<OrderDto> respList =new ArrayList<>();
|
Db.tx(() -> {
|
for (OrderDto e : orderList) {
|
Order order = new Order();
|
String dataId =idWorker.nextId();
|
BeanHelper.copyEncrypt(e, order);
|
cryptoService.decryptoModel(order);
|
order.setSfRecordId(e.getSfRecordId());
|
order.setDataId(Long.valueOf(dataId));
|
if(!order.save()) {
|
throw new BizException(ResultCodeEnum.RT_ERROR);
|
}
|
e.setDataId(dataId);
|
respList.add(e);
|
}
|
return true;
|
});
|
return respList;
|
}
|
|
}
|