123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415 |
- package com.iamberry.rst.service.cm;
- import com.doudian.open.api.order_logisticsAdd.OrderLogisticsAddRequest;
- import com.doudian.open.api.order_logisticsAdd.OrderLogisticsAddResponse;
- import com.doudian.open.api.order_logisticsAdd.param.OrderLogisticsAddParam;
- import com.doudian.open.core.AccessTokenBuilder;
- import com.github.pagehelper.PageHelper;
- import com.iamberry.app.tool.util.AES;
- import com.iamberry.redis.RedisUtils;
- import com.iamberry.rst.core.cm.SalesOrder;
- import com.iamberry.rst.core.cm.SalesOrderItem;
- import com.iamberry.rst.core.cm.StoreInfo;
- import com.iamberry.rst.core.dm.SupplierProduct;
- import com.iamberry.rst.core.fm.ComplaintDetectInfo;
- import com.iamberry.rst.core.fm.InventoryInfo;
- import com.iamberry.rst.core.fm.InventoryLog;
- import com.iamberry.rst.core.order.*;
- import com.iamberry.rst.core.page.PagedResult;
- import com.iamberry.rst.core.sys.Admin;
- import com.iamberry.rst.core.sys.SysConfig;
- import com.iamberry.rst.core.tools.LogisticsInfo;
- import com.iamberry.rst.faces.address.AddressService;
- import com.iamberry.rst.faces.cm.InventoryService;
- import com.iamberry.rst.faces.cm.SalesOrderService;
- import com.iamberry.rst.faces.cm.StoreInfoService;
- import com.iamberry.rst.faces.order.*;
- import com.iamberry.rst.faces.product.ProductService;
- import com.iamberry.rst.faces.sys.SysConfigService;
- import com.iamberry.rst.service.cm.mapper.SalesOrderMapper;
- import com.iamberry.rst.service.dm.mapper.SupplierProductMapper;
- import com.iamberry.rst.service.fm.mapper.ComplaintDetectInfoMapper;
- import com.iamberry.rst.service.fm.mapper.InventoryLogMapper;
- import com.iamberry.rst.service.fm.mapper.InventoryMapper;
- import com.iamberry.rst.service.order.mapper.DeliveryStrategyMapper;
- import com.iamberry.rst.service.order.mapper.ProvincesLogisticsMapper;
- import com.iamberry.rst.service.product.mapper.ProductMapper;
- import com.iamberry.rst.service.sys.mapper.SysConfigMapper;
- import com.iamberry.rst.util.DouyinConfig;
- import com.iamberry.rst.util.PageUtil;
- import com.iamberry.rst.util.TaobaoConfig;
- import com.iamberry.wechat.tools.DateTimeUtil;
- import com.iamberry.wechat.tools.HttpClient431Util;
- import com.iamberry.wechat.tools.payUtil.StringUtil;
- import com.jd.open.api.sdk.JdException;
- import com.jd.open.api.sdk.domain.order.OrderShipmentService.response.shipment.OperatorResult;
- import com.taobao.api.ApiException;
- import com.taobao.api.DefaultTaobaoClient;
- import com.taobao.api.TaobaoClient;
- import com.taobao.api.request.AlibabaAscpLogisticsOfflineSendRequest;
- import com.taobao.api.response.AlibabaAscpLogisticsOfflineSendResponse;
- import net.sf.json.JSONArray;
- import net.sf.json.JSONObject;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.BeanUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.dao.DuplicateKeyException;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Isolation;
- import org.springframework.transaction.annotation.Transactional;
- import java.sql.SQLException;
- import java.text.SimpleDateFormat;
- import java.util.*;
- /**
- * Created by liuzhiwei on 2017/10/31.
- */
- @Service
- public class SalesOrderServiceImpl implements SalesOrderService {
- private static Logger logger = LoggerFactory.getLogger(SalesOrderServiceImpl.class);
- @Autowired
- private SalesOrderMapper salesOrderMapper;
- @Autowired
- private ProductService productService;
- @Autowired
- private StoreInfoService storeInfoService;
- @Autowired
- private EfastOrderService efastOrderService;
- @Autowired
- private SalesOrderService salesOrderService;
- @Autowired
- private SysConfigMapper sysConfigMapper;
- @Autowired
- private AddressService addressService;
- @Autowired
- private ProvincesLogisticsMapper provincesLogisticsMapper;
- @Autowired
- private ProductMapper productMapper;
- @Autowired
- private InventoryMapper inventoryMapper;
- @Autowired
- private InventoryLogMapper inventoryLogMapper;
- @Autowired
- private ComplaintDetectInfoMapper complaintDetectInfoMapper;
- @Autowired
- private OrderWarehouseService orderWarehouseService;
- @Autowired
- private InventoryService inventoryService;
- @Autowired
- private SupplierProductMapper supplierProductMapper;
- @Autowired
- private OrderBatchService orderBatchService;
- @Autowired
- private DeliveryStrategyMapper deliveryStrategyMapper;
- @Autowired
- private OrderSyncLogService orderSyncLogService;
- @Autowired
- private SysConfigService sysConfigService;
- @Autowired
- private LogisticsInfoService logisticsInfoService;
- private static String jdOrderDomain = "http://jd-order.iamberry.com:8088/watero";
- /**
- * 缓存订单项的前缀
- */
- public static String CACHE_ORDER_ITEM_NAME = null;
- static {
- Map<String,String> map = System.getenv();
- if ("iZ94klno8qrZ".equalsIgnoreCase(map.get("COMPUTERNAME"))) {
- CACHE_ORDER_ITEM_NAME = "RST_ORDER_ITEM_";
- } else {
- CACHE_ORDER_ITEM_NAME = "adv_ORDER_ITEM_";
- }
- }
- @Override
- public Integer addSalesOrder(SalesOrder salesOrder) {
- return salesOrderMapper.addSalesOrder(salesOrder);
- }
- @Override
- @Transactional(rollbackFor = {Exception.class}, isolation = Isolation.REPEATABLE_READ)
- public int addOrder(SalesOrder salesOrder, String desr) {
- // 2019年12月27日15:49:16新增快递策略 分配物流方式
- List<SalesOrder> listS = new ArrayList<>();
- listS.add(salesOrder);
- setStrategyLogistics(listS);
- try {
- salesOrderMapper.addSalesOrder(salesOrder);
- for (SalesOrderItem item : salesOrder.getSalesOrderItemList()) {
- item.setItemOrderId(salesOrder.getSalesId());
- }
- salesOrderMapper.addOrderItemList(salesOrder.getSalesOrderItemList());
- //添加操作跟踪记录
- OrderTracking orderTracking = new OrderTracking();
- //默认用户爱贝源自动拉取订单
- orderTracking.setAdminId(10135);
- orderTracking.setSalesDealCode(salesOrder.getSalesDealCode());
- orderTracking.setTrackingDesc(desr);
- salesOrderService.addTracking(orderTracking);
- } catch (DuplicateKeyException e) {
- // 修改
- logger.error("【淘宝订单】订单存在,无法添加");
- return 1;
- }
- return 1;
- }
- @Override
- @Transactional
- public Integer addSalesOrderManual(SalesOrder salesOrder) {
- salesOrderMapper.addSalesOrder(salesOrder);
- return null;
- }
- @Override
- public SalesOrder getSalesOrderById(Integer salesId) {
- return salesOrderMapper.getSalesOrderById(salesId);
- }
- @Override
- public SalesOrder getSalesOrderByIdConcise(Integer salesId) {
- return salesOrderMapper.getSalesOrderByIdConcise(salesId);
- }
- @Override
- public List<SalesOrder> getSalesOrderListConcise(SalesOrder salesOrder){
- return salesOrderMapper.getSalesOrderListConcise(salesOrder);
- }
- @Override
- public List<SalesOrderItem> getOrderItemListBySalesId(Integer itemOrderId) {
- return salesOrderMapper.getOrderItemListBySalesId(itemOrderId);
- }
- @Override
- public List<SalesOrder> getSalesOrderByIds(Integer[] salesIds){
- return salesOrderMapper.getSalesOrderByIds(salesIds);
- }
- @Override
- public List<SalesOrder> getSonSalesOrderBySaleId(Integer salesId) {
- return salesOrderMapper.getSonSalesOrderBySaleId(salesId);
- }
- @Override
- @Transactional(rollbackFor = {Exception.class}, isolation = Isolation.REPEATABLE_READ)
- public Integer updateSalesOrder(SalesOrder salesOrder) {
- Integer res = salesOrderMapper.updateSalesOrder(salesOrder);
- if (res == null || res <= 0) {
- return 0;
- }
- // 确认订单需要填入产品成本价格
- if(salesOrder.getSalesStatus() != null && salesOrder.getSalesStatus() == 1){
- SalesOrderItem salesOrderItem = new SalesOrderItem();
- salesOrderItem.setItemOrderId(salesOrder.getSalesId());
- List<SalesOrderItem> salesOrderItemList = salesOrderMapper.listSalesOrderItem(salesOrderItem);
- List<SalesOrderItem> newSalesOrderItem = new ArrayList<>();
- for (SalesOrderItem soi:salesOrderItemList) {
- SupplierProduct supplierProduct = supplierProductMapper.getSupplierProductByColorId(soi.getItemColorId());
- if(supplierProduct != null){
- SalesOrderItem newSalesOrder = new SalesOrderItem();
- newSalesOrder.setItemCost(supplierProduct.getSpCost());
- newSalesOrder.setItemCostTotal(supplierProduct.getSpCost() * soi.getItemNum());
- newSalesOrder.setItemId(soi.getItemId());
- newSalesOrderItem.add(newSalesOrder);
- }else{
- throw new RuntimeException("确认订单失败-未查询到该产品("+ soi.getItemProductName() +"-"+ soi.getItemProductColor() +")的成本价格");
- }
- }
- for (SalesOrderItem soi : newSalesOrderItem) {
- Integer flag = salesOrderMapper.updateOrderItemObj(soi);
- if(flag < 1){
- throw new RuntimeException("确认订单失败-修改产品项的成本价格失败");
- }
- }
- }
- // 作废订单时需要返还库存
- if(salesOrder.getSalesStatus() != null && salesOrder.getSalesStatus() == 3){
- // 如果已出库则返还库存
- SalesOrder so = salesOrderMapper.getSalesOrderById(salesOrder.getSalesId());
- if(so.getSalesDeliver() == 2){
- SalesOrderItem salesOrderItem = new SalesOrderItem();
- salesOrderItem.setItemOrderId(so.getSalesId());
- List<SalesOrderItem> listOrderitem = salesOrderService.listSalesOrderItem(salesOrderItem);
- for (SalesOrderItem soi:listOrderitem) {
- InventoryInfo inventoryInfo2 = new InventoryInfo();
- //良品数量
- inventoryInfo2.setInventoryGoodProductNum(soi.getItemNum());
- inventoryInfo2.setInventoryProductBar(soi.getItemColorBar());
- inventoryInfo2.setWarehouseId(so.getSalesWarehouseId());
- //类型1.采购 2.发货 3.次品
- inventoryInfo2.setLogType(1);
- inventoryInfo2.setInventoryRecentRecord("作废订单返还库存-作废订单号:"+ so.getSalesDealCode());
- inventoryService.addInventory(inventoryInfo2);
- }
- }
- }
- return 1;
- }
- @Override
- public Integer update(SalesOrder salesOrder) {
- return salesOrderMapper.updateSalesOrder(salesOrder);
- }
- @Override
- @Transactional(rollbackFor = {Exception.class}, isolation = Isolation.REPEATABLE_READ)
- public Integer updateOrderInfo(SalesOrder salesOrder) {
- int flag = 0;
- if(salesOrder.getSalesId()==null){
- throw new RuntimeException("订单ID不存在!");
- }
- // 处理订单项
- Date nowTime = new Date();
- for (SalesOrderItem addItem:salesOrder.getSalesOrderItemList()) {
- if(addItem.getItemNum() > 0 && addItem.getItemColorId() > 0){
- ProductColor productColor = productService.getProduceColor(addItem.getItemColorId());
- if(productColor == null){
- throw new RuntimeException("删除订单项失败-查询商品失败");
- }
- ////产品id
- addItem.setItemProductId(productColor.getColorProductId());
- addItem.setItemColorId(productColor.getColorId());
- addItem.setItemProductType(productColor.getProductType());
- addItem.setItemProductName(productColor.getProductName());
- addItem.setItemProductPic(productColor.getColorPicture());
- addItem.setItemProductColor(productColor.getColorName());
- addItem.setItemColorBar(productColor.getColorBar());
- addItem.setItemCreateTime(nowTime);
- addItem.setItemIsSource(1);
- addItem.setItemOrderId(salesOrder.getSalesId());
- //成本价
- SupplierProduct supplierProduct = supplierProductMapper.getSupplierProductByColorId(addItem.getItemColorId());
- if(supplierProduct != null){
- addItem.setItemCost(supplierProduct.getSpCost());
- addItem.setItemCostTotal(supplierProduct.getSpCost() * addItem.getItemNum());
- }else{
- throw new RuntimeException("确认订单失败-未查询到该产品("+ addItem.getItemProductName() +"-"+ addItem.getItemProductColor() +")的成本价格");
- }
- } else {
- throw new RuntimeException("添加订单项失败(订单产品不能为空)!");
- }
- }
- // 处理订单项,如果是新增的就新增,如果是原有的,则修改,否则删除
- SalesOrderItem soi = new SalesOrderItem();
- soi.setItemOrderId(salesOrder.getSalesId());
- List<SalesOrderItem> salesOrderItemList = salesOrderMapper.listSalesOrderItem(soi);
- List<SalesOrderItem> updateSalesOrderItemList = new ArrayList<>();
- List<SalesOrderItem> deleteSalesOrderItemList = new ArrayList<>();
- for (SalesOrderItem oldSoi:salesOrderItemList) {
- boolean isHave = false;
- int deleteId = 0;
- SalesOrderItem updateItem = null;
- for (int i = 0; i < salesOrder.getSalesOrderItemList().size(); i++) {
- SalesOrderItem temp = salesOrder.getSalesOrderItemList().get(i);
- if(Objects.equals(temp.getItemId(), oldSoi.getItemId())){
- isHave = true;
- deleteId = i;
- updateItem = temp;
- break;
- }
- }
- if(isHave){
- updateSalesOrderItemList.add(updateItem);
- salesOrder.getSalesOrderItemList().remove(deleteId);
- }else{
- deleteSalesOrderItemList.add(oldSoi);
- }
- }
- // 删除订单项
- for (SalesOrderItem deleteId:deleteSalesOrderItemList) {
- if (salesOrderMapper.delOrderItemByItemId(deleteId.getItemId()) <= 0) {
- throw new RuntimeException("修改订单失败!");
- }
- }
- // 批量修改订单项
- if(updateSalesOrderItemList.size() > 0) {
- for (SalesOrderItem salesOrderItem : updateSalesOrderItemList) {
- flag = salesOrderMapper.updateOrderItemObj(salesOrderItem);
- }
- }
- // 批量添加订单项数据
- if(salesOrder.getSalesOrderItemList() != null && salesOrder.getSalesOrderItemList().size() > 0){
- if (salesOrderMapper.addOrderItemList(salesOrder.getSalesOrderItemList()) <= 0) {
- throw new RuntimeException("增加订单项失败!");
- }
- }
- //计算价格
- List<SalesOrderItem> nowSalesOrderItemList = salesOrderMapper.listSalesOrderItem(soi);
- calculationTotal(salesOrder,nowSalesOrderItemList);
- //修改订单
- if (salesOrderMapper.updateSalesOrder(salesOrder) <= 0) {
- throw new RuntimeException("修改订单失败!");
- }
- // 更新Redis缓存
- cacheOrderItem(salesOrder.getSalesId());
- return flag;
- }
- @Override
- public Integer addSalesOrderList(List<SalesOrder> list) {
- return salesOrderMapper.addSalesOrderList(list);
- }
- @Override
- public List<SalesOrder> listSalesOrder(SalesOrder salesOrder) {
- return salesOrderMapper.listSalesOrder(salesOrder);
- }
- @Override
- public Integer listSalesOrderNum(SalesOrder salesOrder) {
- return salesOrderMapper.listSalesOrderNum(salesOrder);
- }
- /**
- * 获取订单的订单项,首先从REDIS中获取,如果没有获取到,尝试从数据库获取
- * @param salesId
- * @return
- */
- private List<SalesOrderItem> listOrderItem(Integer salesId) {
- String key = CACHE_ORDER_ITEM_NAME + salesId;
- List<SalesOrderItem> list = RedisUtils.list(key, SalesOrderItem.class);
- if (list == null) {
- cacheOrderItem(salesId);
- list = RedisUtils.list(key, SalesOrderItem.class);
- }
- return list;
- }
- /**
- * 更新缓存订单项(从数据库获取一次)
- * @param salesId
- */
- private void cacheOrderItem(Integer salesId) {
- // 查询数据库的数据
- SalesOrderItem salesOrderItem = new SalesOrderItem();
- salesOrderItem.setItemOrderId(salesId);
- List<SalesOrderItem> list = salesOrderMapper.listSalesOrderItem(salesOrderItem);
- // 缓存
- String key = CACHE_ORDER_ITEM_NAME + salesId;
- RedisUtils.put(key, list);
- RedisUtils.expire(key,DateTimeUtil.addDay(1));
- }
- @Override
- public PagedResult<SalesOrder> listSalesOrderPage(int pageNO, int pageSize, SalesOrder salesOrder, boolean isTotalNum) {
- // 初始化页面分页的数据
- salesOrder.setStartOrderNO((pageNO-1) * pageSize);
- salesOrder.setEndOrderNO(pageSize);
- //查询订单列表信息
- List<SalesOrder> orderList = salesOrderMapper.listSalesOrderNew(salesOrder);
- orderList.forEach((so) -> {
- List<SalesOrderItem> salesOrderItemList = listOrderItem(so.getSalesId());
- salesOrderItemList.forEach((item) -> {
- //判断是否包含净水机 1是 2否
- if(item.getColorIsMachine() != null){
- if(item.getColorIsMachine() == 1){
- so.setIsDevelop(1);
- }else{
- so.setIsDevelop(2);
- }
- }else{
- so.setIsDevelop(1);
- }
- });
- so.setSalesOrderItemList(salesOrderItemList);
- });
- PagedResult<SalesOrder> result = PageUtil.getPage(orderList);
- // 查询分页的数据
- int count = salesOrderMapper.listSalesOrderNum(salesOrder);
- result.setTotal(count);
- if(count%pageSize==0){
- count=count/pageSize;
- } else{
- count=count/pageSize+1;
- }
- result.setPages(count);
- result.setPageNo(pageNO);
- result.setPageSize(pageSize);
- return result;
- }
- @Override
- public List<PostInfo> listWaitPrintOrderNum(Integer salesWarehouseId) {
- return salesOrderMapper.listWaitPrintOrderNum(salesWarehouseId);
- }
- @Override
- public PagedResult<SalesOrder> listAwaitSendSalesOrderPage(int pageNO, int pageSize, SalesOrder salesOrder, boolean isTotalNum) {
- PageHelper.startPage(pageNO, pageSize, isTotalNum);
- //查询订单列表信息
- List<SalesOrder> orderList = salesOrderMapper.listAwaitSendSalesOrderPage(salesOrder);
- return PageUtil.getPage(orderList);
- }
- @Override
- @Transactional
- public boolean addOrderAndItem(SalesOrder salesOrder, List<SalesOrderItem> list) throws Exception {
- if (list == null || list.size() == 0) {
- throw new RuntimeException("获取订单信息出错!");
- }
- SalesOrder verifyOrder = new SalesOrder();
- verifyOrder.setSalesOrderId(salesOrder.getSalesOrderId());
- //查询该订单是否存在,如果存在,不需要再次添加到订单中
- int count = salesOrderMapper.getOrderInfoCount(verifyOrder);
- if (count > 0) {
- return true;
- }
- //添加订单数据
- calculationTotal(salesOrder,list);
- try {
- int orderNum = salesOrderMapper.addSalesOrder(salesOrder);
- if (orderNum <= 0) {
- throw new RuntimeException("获取订单信息出错!");
- }
- } catch (Exception e) {
- return true;
- }
- for (SalesOrderItem item : list) {
- item.setItemOrderId(salesOrder.getSalesId());
- }
- //批量添加订单项数据
- int itemNum = salesOrderMapper.addOrderItemList(list);
- if (itemNum <= 0) {
- throw new RuntimeException("获取订单信息出错!");
- }
- return true;
- }
- @Override
- @Transactional
- public SalesOrder addOrderAndIteminfo(SalesOrder salesOrder, List<SalesOrderItem> list) {
- calculationTotal(salesOrder,list);
- if (salesOrder.getSalesMainOrderId() != null) {
- salesOrder.setSalesPayMoney(0);
- }
- //添加订单数据
- int orderNum = salesOrderMapper.addSalesOrder(salesOrder);
- if (orderNum <= 0) {
- return salesOrder;
- }
- for (SalesOrderItem item : list) {
- item.setItemOrderId(salesOrder.getSalesId());
- }
- //批量添加订单项数据
- int itemNum = salesOrderMapper.addOrderItemList(list);
- if (itemNum <= 0) {
- return salesOrder;
- }
- this.cacheOrderItem(salesOrder.getSalesId());
- return salesOrder;
- }
- @Override
- public void parseOrder(SalesOrder oginerOrder, List<SalesOrder> listOrder) {
- // 订单项拆分完成,直接返回
- if (oginerOrder.getSalesOrderItemList().size() <= 0) {
- return;
- }
- List<DownsingleRuleInfo> listDownsingleRuleInfo = salesOrderService.listDownsingleRule();
- if(listDownsingleRuleInfo.size() < 1){
- listOrder.add(oginerOrder);
- return;
- }
- // 拆单,比较的是数量和产品
- Map<String, SalesOrderItem> itemMap = new HashMap<>(oginerOrder.getSalesOrderItemList().size());
- for (SalesOrderItem item : oginerOrder.getSalesOrderItemList()) {
- SalesOrderItem itemTwo = new SalesOrderItem();
- BeanUtils.copyProperties(item,itemTwo);
- itemMap.put(item.getItemColorBar(), itemTwo);
- }
- // 遍历拆单规则
- int ruleCount = 0;
- for (DownsingleRuleInfo rule : listDownsingleRuleInfo) {
- // 一个拆单规则
- int count = 0;
- for (DownsingleRuleItemInfo item : rule.getDownsingleRuleItemList()) {
- if (itemMap.get(item.getDownsingleItemBar()) != null) {
- if (item.getDownsingleItemNum() <= itemMap.get(item.getDownsingleItemBar()).getItemNum()) {
- count ++;
- }
- }
- }
- if (count == rule.getDownsingleRuleItemList().size()) {
- // 满足拆单条件
- SalesOrder newOrder = new SalesOrder();
- BeanUtils.copyProperties(oginerOrder,newOrder);
- newOrder.setSalesOrderItemList(new ArrayList<SalesOrderItem>(count));
- for (DownsingleRuleItemInfo item : rule.getDownsingleRuleItemList()) {
- SalesOrderItem temp = new SalesOrderItem();
- BeanUtils.copyProperties(itemMap.get(item.getDownsingleItemBar()),temp);
- temp.setItemNum(item.getDownsingleItemNum());
- newOrder.getSalesOrderItemList().add(temp);
- }
- listOrder.add(newOrder);
- // 继续递归
- for (DownsingleRuleItemInfo item : rule.getDownsingleRuleItemList()) {
- if (item.getDownsingleItemNum().equals(itemMap.get(item.getDownsingleItemBar()).getItemNum())) {
- // 数量和拆单规则相同,则删除原订单的订单项
- /*oginerOrder.getSalesOrderItemList().remove(itemMap.get(item.getDownsingleItemBar()));*/
- for(int i = 0;i<oginerOrder.getSalesOrderItemList().size();i++){
- if(oginerOrder.getSalesOrderItemList().get(i).getItemColorBar() .equals(item.getDownsingleItemBar())){
- oginerOrder.getSalesOrderItemList().remove(i);
- }
- }
- } else {
- // SalesOrderItem orderItem = itemMap.get(item.getDownsingleItemBar());
- SalesOrderItem orderItem = new SalesOrderItem();
- BeanUtils.copyProperties(itemMap.get(item.getDownsingleItemBar()),orderItem);
- int oldCount = orderItem.getItemNum();
- /*orderItem.setItemNum(oldCount - item.getDownsingleItemNum());*/
- for(int i = 0;i<oginerOrder.getSalesOrderItemList().size();i++){
- if(oginerOrder.getSalesOrderItemList().get(i).getItemColorBar() .equals(item.getDownsingleItemBar())){
- oginerOrder.getSalesOrderItemList().get(i).setItemNum(oldCount - item.getDownsingleItemNum());
- }
- }
- }
- }
- salesOrderService.parseOrder(oginerOrder, listOrder);
- break;
- } else {
- // 不满足, 继续下一个规则
- // 如果是最后一个拆单规则,则不拆单
- if ((ruleCount + 1) == listDownsingleRuleInfo.size()) {
- if (oginerOrder.getSalesOrderItemList().size() > 0) {
- listOrder.add(oginerOrder);
- }
- }
- }
- ruleCount++;
- }
- }
- @Override
- @Transactional(rollbackFor = {Exception.class, SQLException.class}, isolation = Isolation.REPEATABLE_READ)
- public boolean addRstOrderAndIteminfo(SalesOrder salesOrder){
- //总支付金额
- Integer salesPayMoney = 0;
- for (SalesOrderItem soi : salesOrder.getSalesOrderItemList()) {
- if(soi.getItemProductDiscount() != null){
- Integer differenceNumber = soi.getItemNum()*soi.getItemProductDiscount() - soi.getItemTotal();
- differenceNumber = Math.abs(differenceNumber); //绝对值
- if(soi.getItemProductDiscount() == 0 || soi.getItemProductDiscount() == 1 || differenceNumber > 1){
- Double dis = Double.valueOf(soi.getItemTotal())/soi.getItemNum();
- soi.setItemProductDiscount(dis.intValue());
- }
- }else{
- Double dis = Double.valueOf(soi.getItemTotal())/soi.getItemNum();
- soi.setItemProductDiscount(dis.intValue());
- }
- salesPayMoney += soi.getItemTotal();
- }
- //合并订单项-------------statr
- List<SalesOrderItem> listItem = salesOrder.getSalesOrderItemList();
- salesOrder.setSalesOrderItemList(null);
- List<SalesOrderItem> list = new ArrayList<>();
- for (int i = 0;i<listItem.size();i++){
- if(i < listItem.size() - 1 ){
- for(int j = 0;j<listItem.size();j++){
- if (i != j){
- if(listItem.get(i).getItemColorBar().equals(listItem.get(j).getItemColorBar())){
- listItem.get(i).setItemNum(listItem.get(i).getItemNum()+listItem.get(j).getItemNum());
- }
- }
- }
- }
- boolean bl = true;
- for (SalesOrderItem salesOrderItem : list){
- if(salesOrderItem.getItemColorBar().equals(listItem.get(i).getItemColorBar())){
- bl = false;
- }
- }
- if(bl){
- list.add(listItem.get(i));
- }
- }
- //合并订单项----------------------end
- //匹配拆单规则 分割订单-------------state
- List<SalesOrder> listSalesOrder = new ArrayList<>();
- salesOrder.setSalesOrderItemList(list);
- salesOrderService.parseOrder(salesOrder, listSalesOrder);
- //匹配拆单规则 分割订单-------------end
- boolean msg = false;
- /*根据省份来分配物流公司*/
- /*salesOrderService.setProvincesLogistics(listSalesOrder);*/
- /*根据快递策略来分配物流公司*/
- setStrategyLogistics(listSalesOrder);
- /*查询成本*/
- for (SalesOrder so:listSalesOrder) {
- for (SalesOrderItem soi:so.getSalesOrderItemList()) {
- SupplierProduct supplierProduct = supplierProductMapper.getSupplierProductByColorId(soi.getItemColorId());
- if(supplierProduct != null){
- soi.setItemCost(supplierProduct.getSpCost());
- soi.setItemCostTotal(supplierProduct.getSpCost() * soi.getItemNum());
- }else{
- throw new RuntimeException("确认订单失败-未查询到该产品("+ soi.getItemProductName() +"-"+ soi.getItemProductColor() +")的成本价格");
- }
- }
- }
- for (int i = 0; i < listSalesOrder.size() ; i++) {
- boolean isLastItem = false;
- if((i+1) >= listSalesOrder.size()){
- isLastItem = true;
- }
- SalesOrder so = listSalesOrder.get(i);
- for (int j = 0; j < so.getSalesOrderItemList().size(); j++) {
- SalesOrderItem soi = so.getSalesOrderItemList().get(j);
- if((j+1) >= so.getSalesOrderItemList().size() && isLastItem){
- soi.setItemTotal(salesPayMoney);
- if(salesPayMoney > 0){
- soi.setItemProductDiscount(salesPayMoney/soi.getItemNum());
- }
- }else{
- Integer total = soi.getItemNum()*soi.getItemProductDiscount();
- soi.setItemTotal(total);
- salesPayMoney -= total;
- }
- }
- }
- //判断主从订单--------------------state
- if (listSalesOrder.size() > 0){
- SalesOrder mainOrder = null;
- for (int s = 0;s < listSalesOrder.size();s++){
- if(mainOrder == null){
- for(int i = 0;i<listSalesOrder.get(s).getSalesOrderItemList().size();i++){
- int isMachine = salesOrderService.getIsMachine(listSalesOrder.get(s).getSalesOrderItemList().get(i).getItemColorBar());
- if( isMachine == 1){//1:水机 2:其它产品 0:未查到
- mainOrder = listSalesOrder.get(s);
- listSalesOrder.remove(s);
- break;
- }
- }
- }
- }
- if(mainOrder == null){//如果不存有水机的订单则默认第一个订单为主订单
- mainOrder = listSalesOrder.get(0);
- listSalesOrder.remove(0);
- }
- //判断主从订单--------------------end
- msg = salesOrderService.addRstOrderinfo(mainOrder,listSalesOrder,null);
- }
- return msg;
- }
- @Override
- @Transactional(rollbackFor = {Exception.class}, isolation = Isolation.REPEATABLE_READ)
- public boolean addRstOrderinfo(SalesOrder mainOrder,List<SalesOrder> listSalesOrder,String[] detectIds) {
- // 查询交易号的数量
- Integer flag = salesOrderMapper.getOrderBySalesDealCodeNum(mainOrder.getSalesDealCode());
- if(flag > 0){
- throw new RuntimeException("交易号("+ mainOrder.getSalesDealCode() +")重复,请重新生成交易号!");
- }
- if(mainOrder.getSalesAddressPostcode() == null){
- throw new RuntimeException("未获取到邮政编码信息,请检查地址信息!");
- }
- if(mainOrder.getSalesCreateTime() == null){
- /*保证时间与以前一样*/
- mainOrder.setSalesCreateTime(mainOrder.getSalesOrderItemList().get(0).getItemCreateTime());
- }
- // 计算金额
- calculationTotal(mainOrder,mainOrder.getSalesOrderItemList());
- // 2019年12月27日15:49:16新增快递策略 分配物流方式
- List<SalesOrder> listS = new ArrayList<>();
- listS.add(mainOrder);
- setStrategyLogistics(listS);
- // 子订单根据快递策略分配物流方式
- setStrategyLogistics(listSalesOrder);
- if(mainOrder.getSalesDeliver() == null){
- mainOrder.setSalesDeliver(1);
- }
- // 保存订单信息
- int res = salesOrderMapper.addSalesOrder(mainOrder);
- if (res <= 0) {
- throw new RuntimeException("添加订单出错,请核查内容");
- }
- for (SalesOrderItem item : mainOrder.getSalesOrderItemList()) {
- item.setItemOrderId(mainOrder.getSalesId());
- }
- // 批量添加订单项数据
- res = salesOrderMapper.addOrderItemList(mainOrder.getSalesOrderItemList());
- if (res <= 0) {
- throw new RuntimeException("添加订单出错,保存订单项失败");
- }
- // 保存子订单的内容
- if(listSalesOrder.size() > 0){
- for (int i = 0;i<listSalesOrder.size();i++){
- // 生产交易号
- listSalesOrder.get(i).setSalesDealCode(listSalesOrder.get(i).getSalesDealCode()+"-"+(i+1));
- if(listSalesOrder.get(i).getSalesOrderId() != null && !"".equals(listSalesOrder.get(i).getSalesOrderId())){
- listSalesOrder.get(i).setSalesOrderId(listSalesOrder.get(i).getSalesOrderId()+"-"+(i+1));
- }
- // 主订单id
- if(listSalesOrder.get(i).getSalesDeliver() == null){
- listSalesOrder.get(i).setSalesDeliver(1);
- }
- listSalesOrder.get(i).setSalesMainOrderId(mainOrder.getSalesId());
- listSalesOrder.get(i).setSalesId(null);
- calculationTotal(listSalesOrder.get(i),listSalesOrder.get(i).getSalesOrderItemList());
- listSalesOrder.get(i).setSalesPayMoney(0);
- res = salesOrderMapper.addSalesOrder(listSalesOrder.get(i));
- if (res <= 0) {
- throw new RuntimeException("添加子订单出错");
- }
- for (SalesOrderItem item : listSalesOrder.get(i).getSalesOrderItemList()) {
- item.setItemOrderId(listSalesOrder.get(i).getSalesId());
- }
- // 批量添加订单项数据
- res = salesOrderMapper.addOrderItemList(listSalesOrder.get(i).getSalesOrderItemList());
- if (res <= 0) {
- throw new RuntimeException("添加子订单出错,保存订单项失败");
- }
- }
- }
- // 修为维修记录为已下单
- if(detectIds != null && detectIds.length > 0){
- for(String detectId : detectIds){
- ComplaintDetectInfo detectInfo = new ComplaintDetectInfo();
- detectInfo.setDetectId(Integer.valueOf(detectId));
- detectInfo.setDetectPlaceorder(2);
- detectInfo.setSalesOrderId(mainOrder.getSalesOrderId());
- complaintDetectInfoMapper.updateDetectById(detectInfo);
- }
- }
- // 缓存订单项
- cacheOrderItem(mainOrder.getSalesId());
- return true;
- }
- /**
- * 根据省份来分配物流公司
- * @param listSalesOrder
- * @return
- */
- @Override
- public void setProvincesLogistics(List<SalesOrder> listSalesOrder){
- for (SalesOrder salesOrder:listSalesOrder) {
- boolean flag = false;
- for (SalesOrderItem salesOrderItem:salesOrder.getSalesOrderItemList()) {
- ProductColor productColor = productService.getColorByBar(salesOrderItem.getItemColorBar());
- if(productColor.getColorIsMachine() == 1){
- flag = true;
- }
- }
- if(flag){
- String addresses[] = salesOrder.getSalesAddressInfo().split("-");
- if(addresses == null || addresses.length < 3){
- addresses = salesOrder.getSalesAddressInfo().split(" ");
- }
- if(addresses == null || addresses.length < 3){
- addresses = salesOrder.getSalesAddressInfo().split("_");
- }
- if(addresses == null || addresses.length < 3){
- break;
- }
- String provincesStr = addresses[0];
- provincesStr = provincesStr.substring(0,2);
- ProvincesLogistics provincesLogistics = new ProvincesLogistics();
- provincesLogistics.setProvince(provincesStr);
- List<ProvincesLogistics> provincesLogisticsList = provincesLogisticsMapper.getProvincesLogisticsList(provincesLogistics);
- if(provincesLogisticsList == null || provincesLogisticsList.size() < 1){
- /*未查到地址*/
- break;
- }
- //设置快递公司
- provincesLogistics = provincesLogisticsList.get(0);
- if(provincesLogistics.getLogisticsRstCode() != null){
- salesOrder.setSalesPostFirm(provincesLogistics.getLogisticsRstCode());
- }
- }
- }
- }
- /**
- * 根据快递策略来分配物流公司
- * @param listSalesOrder
- * @return
- */
- public void setStrategyLogistics(List<SalesOrder> listSalesOrder){
- if(listSalesOrder.size() > 0){
- //查询所有快递策略
- DeliveryStrategy deliveryStrategy = new DeliveryStrategy();
- deliveryStrategy.setStrategyStatus(1);
- List<DeliveryStrategy> trategyList = deliveryStrategyMapper.getPriorityList(deliveryStrategy);
- for (SalesOrder salesOrder:listSalesOrder) {
- for(DeliveryStrategy strategy : trategyList){
- if(salesOrder.getSalesCompanyId().equals(strategy.getStrategyCompanyId())){
- //判断店铺
- boolean isMeet1 = false;
- if(strategy.getStrategyStoreId() == 0){
- isMeet1 = true;
- }else{
- for(StrategyStore strategyStore : strategy.getListStrategyStore()){
- if (salesOrder.getSalesStoreId() == null) {
- LoggerFactory.getLogger(SalesOrderServiceImpl.class).info("订单店铺为空");
- }
- if (strategyStore.getStoreId() == null) {
- LoggerFactory.getLogger(SalesOrderServiceImpl.class).info("策略店铺为空");
- }
- if(salesOrder.getSalesStoreId().equals(strategyStore.getStoreId())){
- isMeet1 = true;
- }
- }
- }
- //判断产品、颜色
- boolean isMeet3 = false;
- for(SalesOrderItem salesOrderItem : salesOrder.getSalesOrderItemList()){
- boolean isProduct = false;
- for(StrategyColor strategyColor : strategy.getListStrategyColor()){
- if(strategyColor.getProductId() == 0 || strategyColor.getProductId().equals(salesOrderItem.getItemProductId())){
- if(strategyColor.getColorId() == 0 ||salesOrderItem.getItemColorId().equals(strategyColor.getColorId())){
- isProduct = true;
- break;
- }
- }
- }
- if(!isProduct){
- isMeet3 = false;
- break;
- }else{
- isMeet3 = true;
- }
- }
- if(isMeet1 && isMeet3){
- salesOrder.setSalesPostFirm(strategy.getStrategyPostFirm());
- return;
- }
- }
- }
- }
- }
- }
- @Override
- public List<SalesOrderItem> listSalesOrderItem(SalesOrderItem salesOrderItem) {
- return salesOrderMapper.listSalesOrderItem(salesOrderItem);
- }
- @Override
- public Integer updateOrderList(JSONArray orderList, List<SalesOrder> list) {
- List<SalesOrder> salesOrders = new ArrayList<SalesOrder>();
- //订单号相同时,判断状态,发货状态,物流公司,物流单号等是否相同,如果有一个不同,则需添加到salesOrders中进行同步
- for (int i = 0;i < orderList.size();i++) {
- JSONObject orderInfo = orderList.getJSONObject(i);
- for (SalesOrder salesOrder : list) {
- if (orderInfo.get("order_sn").equals(salesOrder.getSalesOrderId())
- && !(orderInfo.getInt("order_status") == salesOrder.getSalesStatus()
- && orderInfo.getInt("shipping_status") == salesOrder.getSalesShippingStatus()
- && orderInfo.getInt("pay_status") == salesOrder.getSalesPayStatus()
- && orderInfo.getInt("process_status") == salesOrder.getSalesProcessStatus()
- && orderInfo.getInt("is_send") == salesOrder.getSalesIsSend()
- && orderInfo.getInt("is_locked") == salesOrder.getSalesIsLocked()
- && orderInfo.getInt("is_separate") == salesOrder.getSalesIsSeparate()
- && orderInfo.getString("shipping_name").equals(salesOrder.getSalesPostFirm())
- && orderInfo.getString("invoice_no").equals(salesOrder.getSalesPostNum())
- )) {
- SalesOrder order = new SalesOrder();
- order.setSalesId(salesOrder.getSalesId());
- order.setSalesStatus(orderInfo.getInt("order_status"));
- order.setSalesShippingStatus(orderInfo.getInt("shipping_status"));
- order.setSalesPayStatus(orderInfo.getInt("pay_status"));
- order.setSalesProcessStatus(orderInfo.getInt("process_status"));
- order.setSalesIsSend(orderInfo.getInt("is_send"));
- order.setSalesIsLocked(orderInfo.getInt("is_locked"));
- order.setSalesIsSeparate(orderInfo.getInt("is_separate"));
- order.setSalesPostFirm(orderInfo.getString("shipping_name"));
- order.setSalesPostNum(orderInfo.getString("invoice_no"));
- salesOrders.add(order);
- }
- }
- }
- if (salesOrders != null && salesOrders.size() > 0) {
- //批量修改订单状态等信息
- return salesOrderMapper.updateOrderList(salesOrders);
- } else {
- return 1;
- }
- }
- @Override
- public Integer updateReturnOrderList(JSONArray orderList, List<SalesOrder> list) {
- List<SalesOrder> salesOrders = new ArrayList<SalesOrder>();
- //订单号相同时,判断状态,发货状态,物流公司,物流单号等是否相同,如果有一个不同,则需添加到salesOrders中进行同步
- for (int i = 0;i < orderList.size();i++) {
- JSONObject orderInfo = orderList.getJSONObject(i);
- for (SalesOrder salesOrder : list) {
- if (orderInfo.get("relating_order_sn").equals(salesOrder.getSalesOrderId())) {
- SalesOrder order = new SalesOrder();
- switch (orderInfo.getInt("process_type")) {
- case 1://退货
- order.setSalesOrderStatus(3);
- break;
- case 4://换货
- order.setSalesOrderStatus(2);
- break;
- default:
- order.setSalesOrderStatus(3);
- break;
- }
- order.setSalesId(salesOrder.getSalesId());
- salesOrders.add(order);
- }
- }
- }
- //批量修改订单状态等信息
- return salesOrderMapper.updateOrderList(list);
- }
- @Override
- public void addSalesOrderList(JSONObject obj) throws Exception{
- if (obj == null) {
- return;
- }
- JSONArray orderList = obj.getJSONArray("list");
- if (orderList == null || orderList.size() == 0) {
- return;
- }
- String endTime = sysConfigMapper.getSysConfig(1);
- for (int i = 0;i < orderList.size();i++) {
- JSONObject order = orderList.getJSONObject(i);
- //获取订单详情
- JSONObject orderInfo = null;
- try{
- orderInfo = efastOrderService.getOrderFormEfast(order.getString("deal_code"));
- }catch (Exception e){
- logger.info("获取订单失败;异常编号:505;失败原因:"+ e.getMessage() +"--获取失败订单号:" + orderList.getJSONObject(i).getString("deal_code"));
- }
- if (orderInfo == null) {
- continue;
- }
- if (!orderInfo.has("orders")) {
- continue;
- }
- //获取订单项集合
- JSONArray itemArray = orderInfo.getJSONArray("orders");
- if (itemArray == null || itemArray.size() == 0) {
- continue;
- }
- SalesOrder salesOrder = new SalesOrder();
- salesOrder.setSalesOrderId(order.getString("order_sn"));//订单编号
- salesOrder.setSalesDealCode(order.getString("deal_code"));//交易号
- salesOrder.setSalesOrderStatus(1);//订单状态
- salesOrder.setSalesShippingStatus(order.getInt("shipping_status"));//发货状态 0:未发货,1:已发货,3:备货中
- salesOrder.setSalesPayStatus(order.getInt("pay_status"));//是否付款 0:未付款,2:已付款
- salesOrder.setSalesProcessStatus(order.getInt("process_status"));//单据状态
- salesOrder.setSalesIsSend(order.getInt("is_send"));//是否通知配货
- salesOrder.setSalesIsLocked(order.getInt("is_locked"));//是否锁定
- salesOrder.setSalesIsSeparate(order.getInt("is_separate"));//是否缺货
- salesOrder.setSalesStatus(order.getInt("order_status"));//订单状态 0:未确认,1:已确认,2:挂起,3:作废
- salesOrder.setSalesPostFirm(order.getString("shipping_name").trim());//快递方式代码
- salesOrder.setSalesPostNum(order.getString("invoice_no").trim());//快递单号
- salesOrder.setSalesOpenId(order.getString("mobile").trim());//唯一标识
- salesOrder.setSalesPayType(efastOrderService.getPayType(order.getString("pay_name").trim()));//支付方式
- salesOrder.setSalesPayTime(new Date(order.getLong("pay_time")*1000));//支付时间
- salesOrder.setSalesUserRemark(order.getString("postscript"));//买家留言
- salesOrder.setSalesAdminRemark(order.getString("to_buyer"));//商家留言
- salesOrder.setSalesAmount((int)(order.getDouble("order_amount")*100));//应付款
- salesOrder.setSalesPayMoney((int)(order.getDouble("money_paid")*100));//已付款
- salesOrder.setSalesAddressName(order.getString("consignee").trim());//收货人
- String mobile = order.getString("mobile").replaceAll("[\\u00A0]+", "").trim();
- salesOrder.setSalesAddressTel(mobile);//收货人电话
- salesOrder.setSalesAddressInfo(order.getString("address").replaceAll(" ","-"));//收货地址
- salesOrder.setSalesShippingFee((int)(order.getDouble("shipping_fee")*100));//邮费
- salesOrder.setSalesCreateTime(DateTimeUtil.parse(order.getString("create_time"),"yyyy-MM-dd HH:mm:ss"));//创建时间
- if (order.getInt("shipping_status") == 1) {
- if(order.has("delivery_time")){
- salesOrder.setSalesSendTime(DateTimeUtil.parse(order.getString("delivery_time"),"yyyy-MM-dd HH:mm:ss"));//发货时间
- }else{
- salesOrder.setSalesSendTime(new Date());//发货时间
- }
- }
- salesOrder.setSalesDiscountMoney(salesOrder.getSalesAmount() - salesOrder.getSalesPayMoney());//优惠金额
- salesOrder.setSalesPledgeMoney(0);//押金金额
- salesOrder.setSalesRemainDeposit(0);//待提取金额
- salesOrder.setSalesSendType(2);//发货方式,默认为物流发货
- salesOrder.setSalesSalesTime(salesOrder.getSalesCreateTime());//订购时间
- salesOrder.setSalesWaitMoney(0);//待付金额
- salesOrder.setSalesLastMoney(salesOrder.getSalesPayMoney());//本次支付金额
- salesOrder.setSalesPayNumber("0000");//支付尾号
- salesOrder.setSalesType(1);//订单类型
- endTime = order.getString("create_time"); //获取
- //查询店铺信息
- StoreInfo storeInfo = new StoreInfo();
- storeInfo.setStoreEfast(order.getString("sd_id"));
- List<StoreInfo> storeList = storeInfoService.listStore(storeInfo);
- int storeId = 0;
- int companyId = 0;
- if (storeList != null && storeList.size() > 0) {
- storeInfo = storeList.get(0);
- storeId = storeInfo.getStoreId();
- companyId = storeInfo.getCompanyId();
- }
- salesOrder.setSalesStoreId(storeId);//店铺id
- salesOrder.setSalesCompanyId(companyId);//销售公司id
- List<SalesOrderItem> itemList = new ArrayList<SalesOrderItem>();
- for (int j = 0;j < itemArray.size();j++) {
- ProductColor color = new ProductColor();
- JSONObject itemJson = itemArray.getJSONObject(j);
- SalesOrderItem item = new SalesOrderItem();
- color.setColorBar(itemJson.getString("goods_sn"));
- List<ProductColor> colorList = productService.listproductAndColor(color);
- if (colorList != null && colorList.size() > 0) {
- color = colorList.get(0);
- item.setItemColorBar(itemJson.getString("goods_sn"));//商品69码
- item.setItemNum(itemJson.getInt("goods_number"));//商品数量
- item.setItemCreateTime(salesOrder.getSalesCreateTime());
- item.setItemColorId(color.getColorId());
- item.setItemProductColor(color.getColorName());
- item.setItemProductDiscount(color.getColorDiscount());
- item.setItemProductId(color.getColorProductId());
- item.setItemProductName(color.getProductName());
- item.setItemProductPic(color.getColorPicture());
- item.setItemProductType(color.getProductType());
- item.setItemProductPrice(color.getColorPrice());
- item.setItemIsSource(1);
- itemList.add(item);
- }
- // else {
- // //获取配件信息
- // FittingsInfo fittingsInfo = new FittingsInfo();
- // fittingsInfo.setFittingsBar(itemJson.getString("goods_sn"));
- // List<FittingsInfo> Fittings = fittingsInfoMapper.listFittings(fittingsInfo);
- // if (Fittings == null || Fittings.size() == 0) {
- // continue;
- // }
- // fittingsInfo = Fittings.get(0);
- // item.setItemColorBar(itemJson.getString("goods_sn"));//商品69码
- // item.setItemNum(itemJson.getInt("goods_number"));//商品数量
- // item.setItemCreateTime(salesOrder.getSalesCreateTime());
- // item.setItemColorId(fittingsInfo.getFittingsId());
- // item.setItemProductColor(fittingsInfo.getFittingsName());
- // item.setItemProductDiscount(fittingsInfo.getFittingsDiscount());
- // item.setItemProductId(fittingsInfo.getProductId());
- // item.setItemProductName(fittingsInfo.getFittingsName());
- // item.setItemProductPic("");
- // item.setItemProductType(0);
- // item.setItemProductPrice(fittingsInfo.getFittingsPrice());
- // item.setItemIsSource(2);
- // itemList.add(item);
- // }
- }
- //添加订单和订单项
- try{
- salesOrderService.addOrderAndItem(salesOrder,itemList);
- }catch (Exception e){
- logger.info("添加订单失败,异常编号:505;失败原因:+"+ e.getMessage() +"Efast编号:"+ salesOrder.getSalesOrderId());
- }
- }
- SysConfig sysConfig = new SysConfig(1,endTime);
- sysConfigMapper.updateSysConfig(sysConfig);
- }
- @Override
- @Transactional
- public boolean syncEfastOrder(JSONObject orderInfo) throws Exception {
- if (orderInfo == null) {
- throw new RuntimeException("获取Efast订单信息出错!");
- }
- if (!orderInfo.has("orders")) {
- throw new RuntimeException("获取Efast订单信息出错!");
- }
- //获取订单项集合
- JSONArray itemArray = orderInfo.getJSONArray("orders");
- if (itemArray == null || itemArray.size() == 0) {
- throw new RuntimeException("获取Efast订单信息出错!");
- }
- SalesOrder salesOrder = new SalesOrder();
- salesOrder.setSalesOrderId(orderInfo.getString("order_sn"));//订单编号
- salesOrder.setSalesDealCode(orderInfo.getString("deal_code"));//交易号
- salesOrder.setSalesOrderStatus(1);//订单状态
- salesOrder.setSalesShippingStatus(orderInfo.getInt("shipping_status"));//发货状态 0:未发货,1:已发货,3:备货中
- salesOrder.setSalesPayStatus(orderInfo.getInt("pay_status"));//是否付款 0:未付款,2:已付款
- salesOrder.setSalesProcessStatus(orderInfo.getInt("process_status"));//单据状态
- salesOrder.setSalesIsSend(orderInfo.getInt("is_send"));//是否通知配货
- salesOrder.setSalesIsLocked(orderInfo.getInt("is_locked"));//是否锁定
- salesOrder.setSalesIsSeparate(orderInfo.getInt("is_separate"));//是否缺货
- salesOrder.setSalesStatus(orderInfo.getInt("order_status"));//订单状态 0:未确认,1:已确认,2:挂起,3:作废
- salesOrder.setSalesPostFirm(new String(orderInfo.getString("shipping_name")).trim());//快递方式代码
- salesOrder.setSalesPostNum(new String(orderInfo.getString("invoice_no")).trim());//快递单号
- salesOrder.setSalesOpenId(orderInfo.getString("mobile").trim());//唯一标识
- salesOrder.setSalesPayType(efastOrderService.getPayType(orderInfo.getString("pay_name").trim()));//支付方式
- salesOrder.setSalesPayTime(new Date(orderInfo.getLong("pay_time")*1000));//支付时间
- salesOrder.setSalesUserRemark(orderInfo.getString("postscript"));//买家留言
- salesOrder.setSalesAdminRemark(orderInfo.getString("to_buyer"));//商家留言
- salesOrder.setSalesAmount((int)(orderInfo.getDouble("order_amount")*100));//应付款
- salesOrder.setSalesPayMoney((int)(orderInfo.getDouble("money_paid")*100));//已付款
- salesOrder.setSalesAddressName(orderInfo.getString("consignee"));//收货人
- String mobile = orderInfo.getString("mobile").replaceAll("[\\u00A0]+", "");
- salesOrder.setSalesAddressTel(mobile.trim());//收货人电话
- salesOrder.setSalesAddressInfo(orderInfo.getString("address").replaceAll(" ","-"));//收货地址
- salesOrder.setSalesShippingFee((int)(orderInfo.getDouble("shipping_fee")*100));//邮费
- salesOrder.setSalesCreateTime(new Date(orderInfo.getLong("pay_time")*1000));//创建时间
- if (orderInfo.getInt("shipping_status") == 1) {
- if(orderInfo.has("delivery_time")){
- salesOrder.setSalesSendTime(DateTimeUtil.parse(orderInfo.getString("delivery_time"),"yyyy-MM-dd HH:mm:ss"));//发货时间
- }else{
- salesOrder.setSalesSendTime(new Date());//发货时间
- }
- }
- salesOrder.setSalesDiscountMoney(salesOrder.getSalesAmount() - salesOrder.getSalesPayMoney());//优惠金额
- salesOrder.setSalesPledgeMoney(0);//押金金额
- salesOrder.setSalesRemainDeposit(0);//待提取金额
- salesOrder.setSalesSendType(2);//发货方式,默认为物流发货
- salesOrder.setSalesSalesTime(salesOrder.getSalesCreateTime());//订购时间
- salesOrder.setSalesWaitMoney(0);//待付金额
- salesOrder.setSalesLastMoney(salesOrder.getSalesPayMoney());//本次支付金额
- salesOrder.setSalesPayNumber("0000");//支付尾号
- salesOrder.setSalesType(1);//订单类型
- //查询店铺信息
- StoreInfo storeInfo = new StoreInfo();
- if (orderInfo.has("sd_id")) {
- storeInfo.setStoreEfast(orderInfo.getString("sd_id"));
- } else {
- storeInfo.setStoreEfast("1");
- }
- List<StoreInfo> storeList = storeInfoService.listStore(storeInfo);
- int storeId = 0;
- int companyId = 0;
- if (storeList != null && storeList.size() > 0) {
- storeInfo = storeList.get(0);
- storeId = storeInfo.getStoreId();
- companyId = storeInfo.getCompanyId();
- }
- salesOrder.setSalesStoreId(storeId);//店铺id
- salesOrder.setSalesCompanyId(companyId);//销售公司id
- List<SalesOrderItem> itemList = new ArrayList<SalesOrderItem>();
- for (int j = 0;j < itemArray.size();j++) {
- ProductColor color = new ProductColor();
- JSONObject itemJson = itemArray.getJSONObject(j);
- SalesOrderItem item = new SalesOrderItem();
- color.setColorBar(itemJson.getString("goods_barcode"));
- List<ProductColor> colorList = productService.listproductAndColor(color);
- if (colorList != null && colorList.size() > 0) {
- color = colorList.get(0);
- item.setItemColorBar(itemJson.getString("goods_barcode"));//商品69码
- item.setItemNum(itemJson.getInt("goods_number"));//商品数量
- item.setItemCreateTime(salesOrder.getSalesCreateTime());
- item.setItemColorId(color.getColorId());
- item.setItemProductColor(color.getColorName());
- item.setItemProductDiscount(color.getColorDiscount());
- item.setItemProductId(color.getColorProductId());
- item.setItemProductName(color.getProductName());
- item.setItemProductPic(color.getColorPicture());
- item.setItemProductType(color.getProductType());
- item.setItemProductPrice(color.getColorPrice());
- item.setItemIsSource(1);
- itemList.add(item);
- }
- // else {
- // //获取配件信息
- // FittingsInfo fittingsInfo = new FittingsInfo();
- // fittingsInfo.setFittingsBar(itemJson.getString("goods_barcode"));
- // List<FittingsInfo> Fittings = fittingsInfoMapper.listFittings(fittingsInfo);
- // if (Fittings == null || Fittings.size() == 0) {
- // continue;
- // }
- // fittingsInfo = Fittings.get(0);
- // item.setItemColorBar(itemJson.getString("goods_barcode"));//商品69码
- // item.setItemNum(itemJson.getInt("goods_number"));//商品数量
- // item.setItemCreateTime(salesOrder.getSalesCreateTime());
- // item.setItemColorId(fittingsInfo.getFittingsId());
- // item.setItemProductColor(fittingsInfo.getFittingsName());
- // item.setItemProductDiscount(fittingsInfo.getFittingsDiscount());
- // item.setItemProductId(fittingsInfo.getProductId());
- // item.setItemProductName(fittingsInfo.getFittingsName());
- // item.setItemProductPic("");
- // item.setItemProductType(0);
- // item.setItemProductPrice(fittingsInfo.getFittingsPrice());
- // item.setItemIsSource(2);
- // itemList.add(item);
- // }
- }
- boolean flag = salesOrderService.addOrderAndItem(salesOrder,itemList);
- if (flag) {
- return true;
- } else {
- throw new RuntimeException("添加订单项出错!");
- }
- }
- @Override
- public Integer getOrderInfoCount(SalesOrder salesOrder) {
- return salesOrderMapper.getOrderInfoCount(salesOrder);
- }
- @Override
- public List<SalesOrder> listOrderExcel(SalesOrder salesOrder) {
- return salesOrderMapper.listOrderExcel(salesOrder);
- }
- @Override
- public Integer listOrderExcelNum(SalesOrder salesOrder) {
- return salesOrderMapper.listOrderExcelNum(salesOrder);
- }
- @Override
- public Integer delOrder(String orderId) {
- return salesOrderMapper.delOrder(orderId);
- }
- @Override
- @Transactional
- public Integer delSalesOrder(Integer id) {
- //查询出库状态判断是否需要返还库存
- SalesOrder so = salesOrderMapper.getSalesOrderById(id);
- if(so.getSalesDeliver() == 2){
- SalesOrderItem salesOrderItem = new SalesOrderItem();
- salesOrderItem.setItemOrderId(so.getSalesId());
- List<SalesOrderItem> listOrderitem = salesOrderService.listSalesOrderItem(salesOrderItem);
- for (SalesOrderItem soi:listOrderitem) {
- InventoryInfo inventoryInfo2 = new InventoryInfo();
- inventoryInfo2.setInventoryGoodProductNum(soi.getItemNum()); //良品数量
- inventoryInfo2.setInventoryProductBar(soi.getItemColorBar());
- inventoryInfo2.setWarehouseId(so.getSalesWarehouseId());
- inventoryInfo2.setLogType(1); //类型1.采购 2.发货 3.次品
- inventoryInfo2.setQualityType(1); //产品质量类型 1良品 2 不良品
- inventoryInfo2.setInventoryRecentRecord("删除订单返还库存-删除订单号:"+ so.getSalesDealCode());
- inventoryService.addInventory(inventoryInfo2);
- }
- }
- //判断是否绑定维修信息,并解除绑定
- if(so != null){
- //查询封装售后维修编号
- List<ComplaintDetectInfo> listDetect = complaintDetectInfoMapper.listComplaintDetectBySalesId(so.getSalesOrderId());
- if(listDetect != null && listDetect.size() > 0){
- for (ComplaintDetectInfo info: listDetect){
- ComplaintDetectInfo detectInfo = new ComplaintDetectInfo();
- detectInfo.setDetectId(info.getDetectId());
- detectInfo.setDetectPlaceorder(1);
- detectInfo.setSalesOrderId("");
- complaintDetectInfoMapper.updateDetectById(detectInfo);
- }
- }
- }
- // 检查客诉是否使用订单,如果有使用订单,无法删除
- salesOrderMapper.delOrderItem(id);
- salesOrderMapper.delSalesOrder(id);
- return 1;
- }
- @Override
- public Integer updateOrderItem(SalesOrderItem salesOrderItem) {
- return salesOrderMapper.updateOrderItem(salesOrderItem);
- }
- @Override
- public SalesOrder getSalesOrderByLogistics(SalesOrder salesOrder) {
- return salesOrderMapper.getSalesOrderByLogistics(salesOrder);
- }
- @Override
- public Integer updateOrderListIsDownload(List<SalesOrder> list) {
- return salesOrderMapper.updateOrderListIsDownload(list);
- }
- @Override
- public Integer updateSalesOrderByDealCode(SalesOrder salesOrder) {
- return salesOrderMapper.updateSalesOrderByDealCode(salesOrder);
- }
- @Override
- public List<LogisticsInfo> getLogisticsInfo(LogisticsInfo logisticsInfo) {
- return salesOrderMapper.getLogisticsInfo(logisticsInfo);
- }
- @Override
- public List<DownsingleRuleInfo> listDownsingleRule() {
- return salesOrderMapper.listDownsingleRule();
- }
- @Override
- public Integer getIsMachine(String colorBar) {
- return salesOrderMapper.getIsMachine(colorBar);
- }
- @Override
- public Integer getOrderBySalesDealCodeNum(String code) {
- return salesOrderMapper.getOrderBySalesDealCodeNum(code);
- }
- @Override
- public Integer listSalesOrderAndItemNum(SalesOrder salesOrder) {
- return salesOrderMapper.listSalesOrderAndItemNum(salesOrder);
- }
- @Override
- public List<SalesOrder> listSalesOrderAndItem(SalesOrder salesOrder) {
- return salesOrderMapper.listSalesOrderAndItem(salesOrder);
- }
- @Override
- public Integer getSalesOrderNum(SalesOrder salesOrder) {
- return salesOrderMapper.getSalesOrderNum(salesOrder);
- }
- @Transactional
- @Override
- public Integer listConfirmSalesOrderByBatch(String salesBatchId) {
- Integer flag = 0;
- SalesOrder salesOrder = new SalesOrder();
- salesOrder.setSalesBatchId(salesBatchId);
- List<SalesOrder> salesOrderList = salesOrderMapper.listSalesOrder(salesOrder);
- if(salesOrderList == null || salesOrderList.size() < 1){
- throw new RuntimeException("查询订单失败!");
- }
- for (SalesOrder so:salesOrderList){
- flag = salesOrderService.confirmSalesOrder(so.getSalesId());
- }
- return flag;
- }
- @Override
- public Integer noticeDistribution(SalesOrder salesOrder,Integer adminId) {
- // 检查订单是否已经有了配送方式,如果没有不允许通知配货 -- 移到controller中自己添加
- // SalesOrder temp = salesOrderMapper.getSalesOrderById(salesOrder.getSalesId());
- // if (temp == null || temp.getSalesPostFirm() == null || temp.getSalesPostFirm().isEmpty()) {
- // return 0;
- // }
- int msg = salesOrderMapper.noticeDistribution(salesOrder);
- if(msg > 0){
- //添加操作跟踪信息
- OrderTracking orderTracking = new OrderTracking();
- orderTracking.setAdminId(adminId);
- orderTracking.setSalesDealCode(salesOrder.getSalesDealCode());
- orderTracking.setTrackingDesc("通知配货");
- salesOrderService.addTracking(orderTracking);
- }
- return msg;
- }
- @Transactional
- @Override
- public Integer confirmSalesOrder(Integer saleId) {
- /*
- * 查询订单
- * 查询订单项
- * 删除订单
- * 修改查询的订单状态
- * 添加订单
- */
- if(saleId == null ){
- throw new RuntimeException("确认订单失败-订单id异常!");
- }
- SalesOrder salesOrder = salesOrderMapper.getSalesOrderById(saleId);
- if(salesOrder == null){
- throw new RuntimeException("确认订单失败-订单异常!");
- }
- Integer flag = 0;
- SalesOrderItem salesOrderItem = new SalesOrderItem();
- salesOrderItem.setItemOrderId(salesOrder.getSalesId());
- List<SalesOrderItem> salesOrderItemList = salesOrderMapper.listSalesOrderItem(salesOrderItem);
- if(salesOrderItemList == null || salesOrderItemList.size()<1){
- throw new RuntimeException("确认订单失败-查询订单项失败!");
- }
- salesOrder.setSalesOrderItemList(salesOrderItemList);
- flag = salesOrderMapper.delOrderById(salesOrder.getSalesId());
- if(flag < 1){
- throw new RuntimeException("确认订单失败-删除订单失败!");
- }
- flag = salesOrderMapper.delOrderItem(salesOrder.getSalesId());
- if(flag < 1){
- throw new RuntimeException("确认订单失败-删除订单项失败!");
- }
- //1:确认 状态
- salesOrder.setSalesStatus(1);
- boolean fl = salesOrderService.addRstOrderAndIteminfo(salesOrder);
- if(!fl){
- throw new RuntimeException("确认订单失败-添加订单失败!");
- }
- return flag;
- }
- @Override
- public Integer distributionExpress(SalesOrder salesOrder) {
- return salesOrderMapper.distributionExpress(salesOrder);
- }
- @Override
- public Integer listSalesPostFirm(SalesOrder salesOrder,Integer adminId) {
- int msg = salesOrderMapper.listSalesPostFirm(salesOrder);
- if(msg > 0){
- List<SalesOrder> listOrder = salesOrderMapper.listSalesOrderByBatchId(salesOrder.getSalesBatchId());
- for(SalesOrder prder : listOrder){
- //添加操作跟踪信息
- OrderTracking orderTracking = new OrderTracking();
- orderTracking.setAdminId(adminId);
- orderTracking.setSalesDealCode(prder.getSalesDealCode());
- orderTracking.setTrackingDesc("分配快递方式(批次-"+ salesOrder.getSalesPostFirm() +")");
- salesOrderService.addTracking(orderTracking);
- }
- }
- return msg;
- }
- @Override
- public Integer listSalesPostFirmByIds(SalesOrder salesOrder,Integer adminId) {
- int msg = salesOrderMapper.listSalesPostFirmByIds(salesOrder);
- if(msg > 0){
- List<SalesOrder> listOrder = salesOrderMapper.listSalesOrderBySalesIds(salesOrder);
- for(SalesOrder prder : listOrder) {
- //添加操作跟踪信息
- OrderTracking orderTracking = new OrderTracking();
- orderTracking.setAdminId(adminId);
- orderTracking.setSalesDealCode(prder.getSalesDealCode());
- orderTracking.setTrackingDesc("分配物流方式(单个-"+prder.getSalesPostFirm()+")");
- salesOrderService.addTracking(orderTracking);
- }
- }
- return msg;
- }
- @Override
- @Transactional
- public SalesOrder getSalesOrderByPostNum(String postNum) {
- return salesOrderMapper.getSalesOrderByPostNum(postNum);
- }
- @Override
- @Transactional(rollbackFor = {Exception.class}, isolation = Isolation.REPEATABLE_READ)
- public synchronized Integer updateDeliver(SalesOrder salesOrder) {
- //修改出库状态
- int flag = salesOrderMapper.updateDeliver(salesOrder);
- if(flag < 1){
- throw new RuntimeException("操作失败,订单出/入库失败,请联系技术人员核查。");
- }
- SalesOrder temp = salesOrderMapper.getSalesOrderById(salesOrder.getSalesId());
- if (temp.getSalesQuality() == 2) {
- // 指定发良品
- } else if (temp.getSalesQuality() == 3) {
- // 指定发不良品
- } else {
- // 系统自动判断
- }
- // 是否原机退回
- boolean isMachineRetuen = false;
- if (temp.getSalesQuality() == 1) {
- ComplaintDetectInfo complaintDetectInfo = new ComplaintDetectInfo();
- complaintDetectInfo.setSalesOrderId(salesOrder.getSalesOrderId());
- List<ComplaintDetectInfo> complaintDetectInfoList = complaintDetectInfoMapper.listComplaintDetectByOrderId(complaintDetectInfo);
- if(complaintDetectInfoList != null && complaintDetectInfoList.size() > 0) {
- ComplaintDetectInfo cdinfo = complaintDetectInfoList.get(0);
- int state = cdinfo.getDetectState();
- if (state == 33 || state == 39) {
- isMachineRetuen = true;
- }
- }
- if (isMachineRetuen) {
- // 减去售后仓库不良品
- ComplaintDetectInfo cdinfo = complaintDetectInfoList.get(0);
- InventoryInfo inventoryInfo1 = new InventoryInfo();
- inventoryInfo1.setInventoryDefectiveProductNum(1);
- inventoryInfo1.setInventoryProductColorId(cdinfo.getProductColorId());
- inventoryInfo1.setWarehouseId(salesOrder.getSalesWarehouseId());
- // 产品质量类型 1良品 2 不良品
- inventoryInfo1.setQualityType(2);
- inventoryInfo1.setInventoryRecentRecord("维修机器-原机返回(维修ID:" + cdinfo.getDetectNumber() + ")");
- flag = inventoryService.minusInventory(inventoryInfo1);
- if (flag < 1) {
- throw new RuntimeException("出库失败。维修库存调整失败");
- }
- return flag;
- }
- }
- // 正常库存出库(包含正常销售与售后)
- SalesOrder so = salesOrderMapper.getSalesOrderById(salesOrder.getSalesId());
- SalesOrderItem salesOrderItem = new SalesOrderItem();
- salesOrderItem.setItemOrderId(so.getSalesId());
- List<SalesOrderItem> listOrderitem = salesOrderService.listSalesOrderItem(salesOrderItem);
- // 查询维修编号,并根据维修编号对应的处理结果判断是否从不良品中出库
- boolean isDefectiveProduct = false;
- if (temp.getSalesQuality() == 1) {
- // 凡是(付费维修-维修完成)、(免费维修-维修完成)、(机器无故障,原机退回)都走不良品
- List<ComplaintDetectInfo> listDetect = complaintDetectInfoMapper.listComplaintDetectBySalesId(so.getSalesOrderId());
- if (listDetect != null && !listDetect.isEmpty()) {
- int result = listDetect.get(0).getDetectState();
- if (result == 32 ||result == 33 || result == 36 || result == 37 || result == 39) {
- isDefectiveProduct = true;
- }
- }
- } else if (temp.getSalesQuality() == 2) {
- // 良品
- isDefectiveProduct = false;
- } else if (temp.getSalesQuality() == 3) {
- // 不良品
- isDefectiveProduct = true;
- }
- if(salesOrder.getSalesDeliver() == 2){
- // 标记出库,修改库存
- // 如果已出库则返还库存
- for (SalesOrderItem soi:listOrderitem) {
- InventoryInfo inventoryInfo2 = new InventoryInfo();
- inventoryInfo2.setInventoryProductBar(soi.getItemColorBar());
- inventoryInfo2.setWarehouseId(so.getSalesWarehouseId());
- //类型1.采购 2.发货 3.次品
- inventoryInfo2.setLogType(2);
- //产品质量类型 1良品 2 不良品
- if (isDefectiveProduct) {
- inventoryInfo2.setInventoryDefectiveProductNum(soi.getItemNum());
- inventoryInfo2.setQualityType(2);
- } else {
- inventoryInfo2.setInventoryGoodProductNum(soi.getItemNum());
- inventoryInfo2.setQualityType(1);
- }
- inventoryInfo2.setInventoryRecentRecord("出库-订单号:"+ so.getSalesDealCode());
- inventoryService.minusInventory(inventoryInfo2);
- }
- }
- return flag;
- }
- //减少库存
- // @Transactional
- // @Override
- // public boolean updateInventory(Integer salesId,Integer salesWarehouseId){
- // OrderWarehouse orderWarehouse = orderWarehouseService.getOrderWarehouseById(salesWarehouseId);
- // if(orderWarehouse == null){
- // throw new RuntimeException("【出库】更新库存失败,查询仓库信息失败。");
- // }
- // String warehouseName = orderWarehouse.getWarehouseName();
- //
- // SalesOrderItem salesOrderItem = new SalesOrderItem();
- // salesOrderItem.setItemOrderId(salesId);
- // List<SalesOrderItem> listOrderitem = salesOrderService.listSalesOrderItem(salesOrderItem);
- //
- // for(SalesOrderItem item : listOrderitem){
- // List<ProductCombinatInfo> listproduct = productMapper.combinatList(item.getItemProductId());
- // if(listproduct.size() > 0){
- // for(ProductCombinatInfo combinatInfo : listproduct){
- // invIne(item,orderWarehouse,combinatInfo);
- // }
- // }else{
- // invIne(item,orderWarehouse,null);
- // }
- //
- // }
- // return true;
- // }
- // public void invIne(SalesOrderItem item,OrderWarehouse orderWarehouse,ProductCombinatInfo combinatInfo){
- // SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- // Integer combinatItemNum;
- // if(combinatInfo == null ){
- // combinatItemNum = 1;
- // }else{
- // combinatItemNum = combinatInfo.getCombinatItemNum();
- // item.setItemColorBar(productService.getProduceColor(combinatInfo.getCombinatItemColorId()).getColorBar());
- // }
- // InventoryInfo infos = inventoryMapper.getByInventoryByBar(item.getItemColorBar(),orderWarehouse.getWarehouseId());
- // if(infos != null){
- // if(infos.getInventoryGoodProductNum() >= (item.getItemNum() * combinatItemNum)){
- // infos.setInventoryGoodProductNum(infos.getInventoryGoodProductNum() - (item.getItemNum() * combinatItemNum));
- // infos.setInventoryRecentRecord(sdf.format(new Date())+"出库"+item.getItemNum()+"件,订单号:"+item.getSalesOrderId());
- // Integer flag = inventoryMapper.updateById(infos);
- // if(flag < 1){
- // throw new RuntimeException("【出库】更新库存失败,库存修改失败。");
- // }
- // //添加日志
- // InventoryLog inventoryLog = new InventoryLog();
- // inventoryLog.setLogProductName(infos.getInventoryProductName());
- // inventoryLog.setLogProductBar(infos.getInventoryProductBar());
- // inventoryLog.setLogRemainingNum(item.getItemNum() * combinatItemNum);
- // inventoryLog.setLogType(2);
- // inventoryLog.setLogOperationType(2);
- // inventoryLog.setLogDesc(sdf.format(new Date())+"待发货标记出库"+item.getItemNum()+"件,订单号:"+item.getSalesOrderId());
- // inventoryLog.setLogQualityType(1);
- // inventoryLog.setLogWarehouseId(orderWarehouse.getWarehouseId());
- // flag = inventoryLogMapper.insert(inventoryLog);
- // if(flag < 1){
- // throw new RuntimeException("【出库】更新库存失败,增加库存记录失败。");
- // }
- // }else{
- // throw new RuntimeException("【出库】更新库存失败,"+ orderWarehouse.getWarehouseName() +"["+ item.getItemProductName()+ "("+ item.getItemProductColor() +")" +"]库存不足。");
- // }
- // }else{
- // throw new RuntimeException("【出库】更新库存失败,未查询到库存信息,请确认“"+ orderWarehouse.getWarehouseName() +"”是否有该产品["+ item.getItemProductName()+ "("+ item.getItemProductColor() +")" +"]库存信息。");
- // }
- // }
- //标记未出库时返还库存
- // @Transactional
- // @Override
- // public boolean returnInventory(Integer salesId,Integer salesWarehouseId){
- // OrderWarehouse orderWarehouse = orderWarehouseService.getOrderWarehouseById(salesWarehouseId);
- // if(orderWarehouse == null){
- // throw new RuntimeException("【返还库存】更新库存失败,查询仓库信息失败。");
- // }
- // String warehouseName = orderWarehouse.getWarehouseName();
- //
- // SalesOrderItem salesOrderItem = new SalesOrderItem();
- // salesOrderItem.setItemOrderId(salesId);
- // List<SalesOrderItem> listOrderitem = salesOrderService.listSalesOrderItem(salesOrderItem);
- // for(SalesOrderItem item : listOrderitem){
- // List<ProductCombinatInfo> listproduct = productMapper.combinatList(item.getItemProductId());
- // if(listOrderitem.size() > 0){
- // for(ProductCombinatInfo combinatInfo : listproduct){
- // invTwo(item,orderWarehouse,combinatInfo);
- // }
- // }else{
- // invTwo(item,orderWarehouse,null);
- // }
- // }
- // return true;
- // }
- // private void invTwo(SalesOrderItem item,OrderWarehouse orderWarehouse,ProductCombinatInfo combinatInfo){
- // SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- // Integer combinatItemNum;
- // if(combinatInfo == null ){
- // combinatItemNum = 1;
- // }else{
- // combinatItemNum = combinatInfo.getCombinatItemNum();
- // item.setItemColorBar(productService.getProduceColor(combinatInfo.getCombinatItemColorId()).getColorBar());
- // }
- // InventoryInfo info = inventoryMapper.getByInventoryByBar(item.getItemColorBar(),orderWarehouse.getWarehouseId());
- // if(info != null){
- // info.setInventoryGoodProductNum(info.getInventoryGoodProductNum() + (item.getItemNum() * combinatItemNum));
- // info.setInventoryRecentRecord(sdf.format(new Date())+"删除/作废/标记未出库时订单返还库存"+(item.getItemNum() * combinatItemNum)+"件,订单号:"+item.getSalesOrderId());
- // Integer flag = inventoryMapper.updateById(info);
- // if(flag < 1){
- // throw new RuntimeException("【返还库存】更新库存失败,库存修改失败。");
- // }
- // //添加日志
- // InventoryLog inventoryLog = new InventoryLog();
- // inventoryLog.setLogProductName(info.getInventoryProductName());
- // inventoryLog.setLogProductBar(info.getInventoryProductBar());
- // inventoryLog.setLogRemainingNum((item.getItemNum() * combinatItemNum));
- // inventoryLog.setLogType(1);
- // inventoryLog.setLogOperationType(1);
- // inventoryLog.setLogDesc(sdf.format(new Date())+"删除/作废/标记未出库时订单返还库存"+(item.getItemNum() * combinatItemNum)+"件,订单号:"+item.getSalesOrderId());
- // inventoryLog.setLogQualityType(1);
- // inventoryLog.setLogWarehouseId(orderWarehouse.getWarehouseId());
- // flag = inventoryLogMapper.insert(inventoryLog);
- // if(flag < 1){
- // throw new RuntimeException("【返还库存】更新库存失败,增加库存记录失败。");
- // }
- // }else{
- // throw new RuntimeException("【返还库存】更新库存失败,未查询到库存信息,请确认“"+ orderWarehouse.getWarehouseName() +"”是否有该产品["+ item.getItemProductName()+ "("+ item.getItemProductColor() +")" +"]库存信息。");
- // }
- // }
- @Override
- public List<SalesOrderItem> getDeliverNum(SalesOrder salesOrder) {
- return salesOrderMapper.getDeliverNum(salesOrder);
- }
- @Override
- public List<Date> getNotSendDate() {
- return salesOrderMapper.getNotSendDate();
- }
- @Override
- public List<SalesOrder> salesOrderListAndItem(SalesOrder salesOrder) {
- return salesOrderMapper.salesOrderListAndItem(salesOrder);
- }
- @Override
- public PagedResult<SalesOrder> salesOrderListAndItemPage(int pageNO, int pageSize, SalesOrder salesOrder, boolean isTotalNum) {
- PageHelper.startPage(pageNO, pageSize, isTotalNum);
- List<SalesOrder> list = salesOrderMapper.salesOrderListAndItem(salesOrder);
- return PageUtil.getPage(list);
- }
- @Override
- public List<SalesOrderItem> selectSalesOrderItemList(Integer salesId) {
- return salesOrderMapper.selectSalesOrderItemList(salesId);
- }
- @Transactional
- @Override
- public Boolean addCorrectInfo(OrderCorrectInfo orderCorrectInfo, String arrayItem, Admin admin) {
- //添加更新信息
- orderCorrectInfo.setAdminId(admin.getAdminId());
- if(salesOrderMapper.addCorrectInfo(orderCorrectInfo) < 1){
- throw new RuntimeException("更正订单-订单异常!");
- }
- //封装订单项数据
- JSONArray jsonArray = JSONArray.fromObject(arrayItem);
- List salesOrderItemList = ((List)JSONArray.toCollection(jsonArray, SalesOrderItem.class));
- for(Object temp : salesOrderItemList){
- SalesOrderItem salesOrderItem = (SalesOrderItem) temp;
- //查询订单项原数量
- SalesOrderItem orderItem = salesOrderMapper.getSalesOrderItem(salesOrderItem.getItemId());
- OrderCorrectItem orderCorrectItem = new OrderCorrectItem();
- orderCorrectItem.setCorrectId(orderCorrectInfo.getCorrectId());
- orderCorrectItem.setOrderItemId(salesOrderItem.getItemId());
- orderCorrectItem.setItemProductColor(salesOrderItem.getItemProductColor());
- orderCorrectItem.setItemProductName(salesOrderItem.getItemProductName());
- orderCorrectItem.setCorrectNum(salesOrderItem.getItemNum());
- orderCorrectItem.setOldNum(orderItem.getItemNum());
- if(orderItem.getItemNum().intValue() != salesOrderItem.getItemNum().intValue()){
- //查询订单判断是否已出库
- SalesOrder so = salesOrderMapper.getSalesOrderById(orderCorrectInfo.getItemOrderId());
- if(so.getSalesDeliver() == 2){
- //查询是否是组合产品
- List<ProductCombinatInfo> listproduct = productMapper.combinatList(salesOrderItem.getItemProductId());
- if(listproduct.size() > 0){
- for(ProductCombinatInfo combinatInfo : listproduct){
- correctInv(orderItem,salesOrderItem,so.getSalesWarehouseId(),combinatInfo);
- }
- }else{
- correctInv(orderItem,salesOrderItem,so.getSalesWarehouseId(),null);
- }
- }
- //修改订单项数量
- orderItem.setItemNum(salesOrderItem.getItemNum());
- if(salesOrderMapper.updateOrderItemById(orderItem) < 1){
- throw new RuntimeException("更正订单-修改订单项数量失败!");
- }
- if(salesOrderMapper.addCorrectItem(orderCorrectItem) < 1){
- throw new RuntimeException("更正订单-添加记录失败!");
- }
- }
- }
- return true;
- }
- private void correctInv(SalesOrderItem orderItem,SalesOrderItem salesOrderItem,Integer warehouseId,ProductCombinatInfo combinatInfo){
- //返还库存
- SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- Integer combinatItemNum;
- if(combinatInfo == null ){
- combinatItemNum = 0;
- }else{
- combinatItemNum = combinatInfo.getCombinatItemNum();
- orderItem.setItemColorBar(productService.getProduceColor(combinatInfo.getCombinatItemColorId()).getColorBar());
- }
- InventoryInfo info = inventoryMapper.getByInventoryByBar(orderItem.getItemColorBar(),warehouseId);
- //添加日志
- InventoryLog inventoryLog = new InventoryLog();
- inventoryLog.setLogProductName(info.getInventoryProductName());
- inventoryLog.setLogProductBar(info.getInventoryProductBar());
- inventoryLog.setLogOperationType(1);
- inventoryLog.setLogQualityType(1);
- inventoryLog.setLogWarehouseId(warehouseId);
- if(orderItem.getItemNum() > salesOrderItem.getItemNum()){//原数量大于更正后数量
- info.setInventoryGoodProductNum(info.getInventoryGoodProductNum() + ((orderItem.getItemNum() * combinatItemNum) - (salesOrderItem.getItemNum() * combinatItemNum)));
- info.setInventoryRecentRecord(sdf.format(new Date())+"更正订单返还库存:"+(orderItem.getItemNum() - salesOrderItem.getItemNum())+"件");
- inventoryLog.setLogRemainingNum((orderItem.getItemNum() * combinatItemNum) - (salesOrderItem.getItemNum() * combinatItemNum));
- inventoryLog.setLogType(2);
- inventoryLog.setLogDesc(sdf.format(new Date())+"更正订单返还库存:"+(orderItem.getItemNum() - salesOrderItem.getItemNum())+"件");
- }else if(orderItem.getItemNum() < salesOrderItem.getItemNum()){
- if(info.getInventoryGoodProductNum() > ((salesOrderItem.getItemNum() * combinatItemNum) - (orderItem.getItemNum() * combinatItemNum))){
- info.setInventoryGoodProductNum(info.getInventoryGoodProductNum() - ((salesOrderItem.getItemNum() * combinatItemNum) - (orderItem.getItemNum() * combinatItemNum)));
- info.setInventoryRecentRecord(sdf.format(new Date())+"更正订单减少库存:"+((salesOrderItem.getItemNum() * combinatItemNum) - (orderItem.getItemNum() * combinatItemNum))+"件");
- inventoryLog.setLogRemainingNum(((salesOrderItem.getItemNum() * combinatItemNum) - (orderItem.getItemNum() * combinatItemNum)));
- inventoryLog.setLogType(1);
- inventoryLog.setLogDesc(sdf.format(new Date())+"更正订单减少库存:"+((salesOrderItem.getItemNum() * combinatItemNum) - (orderItem.getItemNum() * combinatItemNum))+"件");
- }else{
- throw new RuntimeException("更正订单-减少库存修改订单项数量失败!");
- }
- }
- inventoryMapper.updateById(info);
- inventoryLogMapper.insert(inventoryLog);
- }
- //更正订单时返还库存
- public boolean returnInventoryByItemId(Integer itemId){
- SalesOrderItem salesOrderItem = new SalesOrderItem();
- salesOrderItem.setItemId(itemId);
- List<SalesOrderItem> listOrderitem = salesOrderService.listSalesOrderItem(salesOrderItem);
- SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- for(SalesOrderItem item : listOrderitem){
- SalesOrder so = salesOrderMapper.getSalesOrderById(item.getItemOrderId());
- InventoryInfo info = inventoryMapper.getByInventoryByBar(item.getItemColorBar(),so.getSalesWarehouseId());
- if(info != null){
- info.setInventoryGoodProductNum(info.getInventoryGoodProductNum() + item.getItemNum());
- info.setInventoryRecentRecord(sdf.format(new Date())+"删除/作废订单返还库存:"+item.getItemNum()+"件");
- inventoryMapper.updateById(info);
- //添加日志
- InventoryLog inventoryLog = new InventoryLog();
- inventoryLog.setLogProductName(info.getInventoryProductName());
- inventoryLog.setLogProductBar(info.getInventoryProductBar());
- inventoryLog.setLogRemainingNum(item.getItemNum());
- inventoryLog.setLogType(1);
- inventoryLog.setLogOperationType(1);
- inventoryLog.setLogDesc(sdf.format(new Date())+"删除/作废订单返还库存:"+item.getItemNum()+"件");
- inventoryLog.setLogQualityType(1);
- inventoryLog.setLogWarehouseId(1);
- inventoryLogMapper.insert(inventoryLog);
- }
- }
- return true;
- }
- @Override
- public Integer addCorrectItem(OrderCorrectItem orderCorrectItem) {
- return salesOrderMapper.addCorrectItem(orderCorrectItem);
- }
- @Override
- public OrderCorrectInfo getOrderCorrectInfo(Integer correctId) {
- return salesOrderMapper.getOrderCorrectInfo(correctId);
- }
- @Override
- public List<OrderCorrectItem> listOrderCorrectItem(Integer correctId) {
- return salesOrderMapper.listOrderCorrectItem(correctId);
- }
- @Override
- public SalesOrderItem getSalesOrderItem(Integer itemId) {
- return salesOrderMapper.getSalesOrderItem(itemId);
- }
- @Override
- public Integer updateOrderItemById(SalesOrderItem salesOrderItem) {
- return salesOrderMapper.updateOrderItemById(salesOrderItem);
- }
- @Override
- public List<OrderCorrectInfo> listOrderCorrectInfo(Integer orderId) {
- return salesOrderMapper.listOrderCorrectInfo(orderId);
- }
- @Override
- public OrderWarehouse selectAdminWarehouse(Integer adminId) {
- return salesOrderMapper.selectAdminWarehouse(adminId);
- }
- @Override
- public List<OrderWarehouse> listOrderWarehouse() {
- return salesOrderMapper.listOrderWarehouse();
- }
- @Transactional
- @Override
- public List<SalesOrder> salesOrderAndItemStat(SalesOrder salesOrder) {
- return salesOrderMapper.salesOrderAndItemStat(salesOrder);
- }
- @Transactional
- @Override
- public Integer splitOrder(String mainOrderId, List<SalesOrder> salesOrderList,Integer adminId) {
- /**
- * 1.查询以前的所有订单
- * 2.通过比对,余下删除的订单集合orderList
- * 3.给订单项赋值,并且删除该订单的订单项,新增订单项
- * 4.删除orderList
- */
- Integer flag = 0;
- String salesCode = "";
- SalesOrder mainOrder = new SalesOrder();
- mainOrder.setSalesDealCode(mainOrderId);
- List<SalesOrder> orderList = salesOrderService.salesOrderListAndItem(mainOrder);
- salesCode = orderList.get(0).getSalesDealCode();
- SalesOrder or = new SalesOrder();
- or.setSalesMainOrderId(orderList.get(0).getSalesId());
- //该订单为主订单
- List<SalesOrder> sonSalesOrderList = salesOrderService.salesOrderListAndItem(or);
- orderList.addAll(sonSalesOrderList);
- for (SalesOrder salesOrder:salesOrderList) {
- //orderList还有的订单,最后做删除
- for (int j=0;j<orderList.size();j++){
- if(salesOrder.getSalesDealCode().equals(orderList.get(j).getSalesDealCode())){
- orderList.remove(j);
- }
- }
- //以前的订单并且已发货之后无法做任何操作
- if(salesOrder.getSalesId() != null && salesOrder.getSalesShippingStatus() > 0){
- continue;
- }
- //订单项赋值
- for (SalesOrderItem itemSaleItem:salesOrder.getSalesOrderItemList()) {
- ProductColor productColor = productMapper.getProductBySku(itemSaleItem.getItemColorBar());
- itemSaleItem.setItemProductId(productColor.getColorProductId());
- itemSaleItem.setItemProductColor(productColor.getColorName());
- itemSaleItem.setColorAbbreviation(productColor.getColorAbbreviation());
- itemSaleItem.setProductAbbreviation(productColor.getColorAbbreviation());
- itemSaleItem.setItemIsSource(1);
- //itemSaleItem.setItemProductDiscount(productColor.getColorDiscount());
- itemSaleItem.setItemProductPrice(itemSaleItem.getItemProductDiscount());
- itemSaleItem.setItemProductPic(productColor.getColorPicture());
- itemSaleItem.setItemProductName(productColor.getProductName());
- itemSaleItem.setItemProductType(productColor.getProductType());
- itemSaleItem.setItemColorId(productColor.getColorId());
- /*查询成本*/
- SupplierProduct supplierProduct = supplierProductMapper.getSupplierProductByColorId(itemSaleItem.getItemColorId());
- if(supplierProduct != null){
- itemSaleItem.setItemCost(supplierProduct.getSpCost());
- itemSaleItem.setItemCostTotal(supplierProduct.getSpCost() * itemSaleItem.getItemNum());
- }else{
- throw new RuntimeException("确认订单失败-未查询到该产品("+ itemSaleItem.getItemProductName() +"-"+ itemSaleItem.getItemProductColor() +")的成本价格");
- }
- if(salesOrder.getSalesId() != null){
- itemSaleItem.setItemOrderId(salesOrder.getSalesId());
- }
- }
- Integer salesId = salesOrder.getSalesId();
- if(salesId == null){
- //添加订单和订单项
- salesOrderService.addOrderAndIteminfo(salesOrder,salesOrder.getSalesOrderItemList());
- //添加操作跟踪信息
- OrderTracking orderTracking = new OrderTracking();
- orderTracking.setAdminId(adminId);
- orderTracking.setSalesDealCode(salesOrder.getSalesDealCode());
- orderTracking.setTrackingDesc("拆分订单(由:"+salesCode+"拆分出来)");
- salesOrderService.addTracking(orderTracking);
- }else{
- //其余全部做修改,删除订单项,添加新的订单项
- flag = salesOrderMapper.delOrderItem(salesOrder.getSalesId());
- if(flag < 1){
- throw new RuntimeException("删除订单项失败,订单交易号:"+salesOrder.getSalesDealCode());
- }
- //calculationTotal(null,salesOrder.getSalesOrderItemList());
- flag = salesOrderMapper.addOrderItemList(salesOrder.getSalesOrderItemList());
- if(flag < 1){
- throw new RuntimeException("添加订单项失败,订单交易号:"+salesOrder.getSalesDealCode());
- }
- this.cacheOrderItem(salesOrder.getSalesId());
- //添加操作跟踪信息
- OrderTracking orderTracking = new OrderTracking();
- orderTracking.setAdminId(adminId);
- orderTracking.setSalesDealCode(salesOrder.getSalesDealCode());
- orderTracking.setTrackingDesc("拆分订单");
- salesOrderService.addTracking(orderTracking);
- }
- }
- for (SalesOrder soDelete:orderList) {
- flag = salesOrderService.delSalesOrder(soDelete.getSalesId());
- if(flag < 1){
- throw new RuntimeException("删除订单失败,删除订单交易号:"+soDelete.getSalesDealCode());
- }
- //添加操作跟踪信息 - 删除操作
- OrderTracking orderTracking = new OrderTracking();
- orderTracking.setAdminId(adminId);
- orderTracking.setSalesDealCode(orderTracking.getSalesDealCode());
- orderTracking.setTrackingDesc("拆分订单(删除处理");
- salesOrderService.addTracking(orderTracking);
- }
- return flag;
- }
- @Override
- public AfterrulesInfo getAfterrulesInfo(Integer storeId) {
- return salesOrderMapper.getAfterrulesInfo(storeId);
- }
- @Override
- public Integer updateOrderItemReturnNum(SalesOrderItem salesOrderItem) {
- return salesOrderMapper.updateOrderItemReturnNum(salesOrderItem);
- }
- @Override
- public List<SmsSignatureInfo> listSmsSignatureInfo(SmsSignatureInfo smsSignatureInfo) {
- return salesOrderMapper.listSmsSignatureInfo(smsSignatureInfo);
- }
- @Override
- public List<SmsTemplateInfo> listSmsTemplateInfo(SmsTemplateInfo smsTemplateInfo) {
- return salesOrderMapper.listSmsTemplateInfo(smsTemplateInfo);
- }
- @Override
- public SalesOrder getStatusNum(SalesOrder salesOrder) {
- return salesOrderMapper.getStatusNum(salesOrder);
- }
- @Override
- public SalesOrder getSalesOrderByOrderId(String salesOrderId) {
- return salesOrderMapper.getSalesOrderByOrderId(salesOrderId);
- }
- @Override
- public Integer updateOrderItemObj(SalesOrderItem salesOrderItem) {
- return salesOrderMapper.updateOrderItemObj(salesOrderItem);
- }
- @Override
- public Integer updateSalesOrderBySalesPostNum(SalesOrder salesOrder) {
- return salesOrderMapper.updateSalesOrderBySalesPostNum(salesOrder);
- }
- @Override
- public List<SalesOrder> listSalesOrderByAddr(SalesOrder salesOrder) {
- return salesOrderMapper.listSalesOrderByAddr(salesOrder);
- }
- @Override
- public List<SalesOrder> listSublistCount(Integer salesId) {
- return salesOrderMapper.listSublistCount(salesId);
- }
- @Override
- public List<LogisticsInfo> dayDeliveryNum(LogisticsInfo logisticsInfo) {
- return salesOrderMapper.dayDeliveryNum(logisticsInfo);
- }
- @Override
- public Integer addCargoInfo(CargoInfo cargoInfo) {
- return salesOrderMapper.addCargoInfo(cargoInfo);
- }
- @Override
- public CargoInfo getCargoInfo(CargoInfo cargoInfo) {
- return salesOrderMapper.getCargoInfo(cargoInfo);
- }
- @Override
- public Integer updateCargoInfo(CargoInfo cargoInfo) {
- return salesOrderMapper.updateCargoInfo(cargoInfo);
- }
- @Override
- public List<OrderStatisticsInfo> listDistributionNum(OrderStatisticsInfo orderStatisticsInfo) {
- return salesOrderMapper.listDistributionNum(orderStatisticsInfo);
- }
- @Override
- public List<OrderStatisticsInfo> listSendNum(OrderStatisticsInfo orderStatisticsInfo) {
- return salesOrderMapper.listSendNum(orderStatisticsInfo);
- }
- @Override
- public List<CargoInfo> listCargoInfo(CargoInfo cargoInfo) {
- return salesOrderMapper.listCargoInfo(cargoInfo);
- }
- @Override
- public List<OrderStatisticsInfo> listPlaySingleNum(OrderStatisticsInfo orderStatisticsInfo) {
- return salesOrderMapper.listPlaySingleNum(orderStatisticsInfo);
- }
- @Override
- public List<OrderStatisticsInfo> listOutboundNum(OrderStatisticsInfo orderStatisticsInfo) {
- return salesOrderMapper.listOutboundNum(orderStatisticsInfo);
- }
- @Override
- public List<OrderStatisticsInfo> listDistributionInvalidNum(OrderStatisticsInfo orderStatisticsInfo) {
- return salesOrderMapper.listDistributionInvalidNum(orderStatisticsInfo);
- }
- @Override
- public List<OrderStatisticsInfo> listSendInvalidNum(OrderStatisticsInfo orderStatisticsInfo) {
- return salesOrderMapper.listSendInvalidNum(orderStatisticsInfo);
- }
- @Override
- public List<OrderStatisticsInfo> listDeliveryLogisticsNum(OrderStatisticsInfo orderStatisticsInfo) {
- return salesOrderMapper.listDeliveryLogisticsNum(orderStatisticsInfo);
- }
- @Override
- public List<SalesOrder> orderAfterCaseDate() {
- return salesOrderMapper.orderAfterCaseDate();
- }
- @Override
- public List<OrderStatisticsInfo> getPickingOrders(OrderStatisticsInfo orderStatisticsInfo) {
- return salesOrderMapper.getPickingOrders(orderStatisticsInfo);
- }
- @Override
- public List<OrderStatisticsInfo> getCheckOrders(OrderStatisticsInfo orderStatisticsInfo) {
- return salesOrderMapper.getCheckOrders(orderStatisticsInfo);
- }
- @Override
- public Integer addTracking(OrderTracking orderTracking) {
- return salesOrderMapper.addTracking(orderTracking);
- }
- @Override
- public List<OrderTracking> listTracking(String salesDealCode) {
- return salesOrderMapper.listTracking(salesDealCode);
- }
- @Override
- public List<SalesOrder> listUpdateOrderShippingStatus() {
- return salesOrderMapper.listUpdateOrderShippingStatus();
- }
- @Override
- public Integer updateSalesOrderShippingStatus(SalesOrder salesOrder) {
- return salesOrderMapper.updateSalesOrderShippingStatus(salesOrder);
- }
- @Override
- public Integer addStrategyProduct(StrategyProduct strategyProduct) {
- return salesOrderMapper.addStrategyProduct(strategyProduct);
- }
- @Override
- public Integer addStrategyColor(StrategyColor strategyColor) {
- return salesOrderMapper.addStrategyColor(strategyColor);
- }
- @Override
- public Integer addStrategyStore(StrategyStore strategyStore) {
- return salesOrderMapper.addStrategyStore(strategyStore);
- }
- @Override
- public List<StrategyProduct> selectStrategyProduct(Integer strategyId) {
- return salesOrderMapper.selectStrategyProduct(strategyId);
- }
- @Override
- public List<StrategyColor> selectStrategyColor(Integer strategyId) {
- return salesOrderMapper.selectStrategyColor(strategyId);
- }
- @Override
- public List<StrategyStore> selectStrategyStore(Integer strategyId) {
- return salesOrderMapper.selectStrategyStore(strategyId);
- }
- @Override
- @Transactional(rollbackFor = {Exception.class}, isolation = Isolation.REPEATABLE_READ)
- public int printOrder(List<SalesOrder> list, Integer currAdmin) {
- // 修改订单状态
- list.forEach(o -> {
- o.setSalesShippingStatus(1);
- o.setSalesSendTime(new Date());
- o.setSalesOldOrderStatus(11);
- // 修改订单状态
- if (salesOrderMapper.updateSalesOrder(o) <= 0) {
- throw new RuntimeException("订单" + o.getSalesId() + "发货失败,请查询订单状态");
- }
- // 小亚通订单,调用接口发货
- if (!orderSyncLogService.syncXYTOrderShip(new Integer[]{o.getSalesId()})) {
- throw new RuntimeException("订单" + o.getSalesId() + "向小亚通发货失败,请查询订单状态");
- }
- SalesOrder salesOrder = salesOrderService.getSalesOrderByIdConcise(o.getSalesId());
- if (salesOrder.getSalesBatchId().startsWith("ST")) {
- // 淘宝订单发货
- List<SalesOrderItem> salesOrderItemList = salesOrderService.getOrderItemListBySalesId(o.getSalesId());
- String oid = "";
- int size = salesOrderItemList.size() - 1;
- for (int i = 0; i < salesOrderItemList.size(); i++) {
- oid += salesOrderItemList.get(i).getItemOtherId();
- if (i != (size)) {
- oid += ",";
- }
- }
- TaobaoClient client = new DefaultTaobaoClient(TaobaoConfig.TAOBAO_URL, TaobaoConfig.appkey, TaobaoConfig.secret);
- AlibabaAscpLogisticsOfflineSendRequest req = new AlibabaAscpLogisticsOfflineSendRequest();
- req.setTid(salesOrder.getSalesExOrderId());
- req.setSubTid(oid);
- List<AlibabaAscpLogisticsOfflineSendRequest.TopConsignPkgRequest> list2 = new ArrayList<AlibabaAscpLogisticsOfflineSendRequest.TopConsignPkgRequest>();
- AlibabaAscpLogisticsOfflineSendRequest.TopConsignPkgRequest obj3 = new AlibabaAscpLogisticsOfflineSendRequest.TopConsignPkgRequest();
- list2.add(obj3);
- obj3.setOutSid(o.getSalesPostNum());
- // 兼容
- LogisticsInfo info = logisticsInfoService.getLogisticsNameByRSTCode(salesOrder.getSalesPostFirm());
- obj3.setCompanyCode(info.getLogisticsEfastCode());
- req.setConsignPkgs(list2);
- try {
- Integer salesStoreId = salesOrder.getSalesStoreId();
- String token = null;
- if (salesStoreId == TaobaoConfig.STORE_ID_IAMBERRY) {
- token = (String) TaobaoConfig.getToken().get("token");
- } else if (salesStoreId == TaobaoConfig.STORE_ID_METAPURE) {
- token = (String) TaobaoConfig.getMetaureToken().get("token");
- } else {
- throw new RuntimeException("淘宝店铺未授权");
- }
- AlibabaAscpLogisticsOfflineSendResponse rsp = client.execute(req, token);
- logger.info("淘宝订单发货,外部订单id:{},接口response:{}", salesOrder.getSalesExOrderId(), rsp.getBody());
- } catch (ApiException e) {
- logger.error("淘宝订单发货异常,外部订单id:{} 异常信息:",salesOrder.getSalesExOrderId(), e);
- throw new RuntimeException(e);
- }
- }
- //京东订单发货
- if (salesOrder.getSalesBatchId().startsWith("JT")) {
- try {
- // 后台拆分的订单不处理(mainOrderId为null,说明是主单)
- if (salesOrder.getSalesMainOrderId() == null) {
- Map<String, String> params = new HashMap<>();
- params.put("orderId", salesOrder.getSalesExOrderId());
- params.put("logiCoprId", logisticsInfoService.getLogisticsNameByRSTCode(salesOrder.getSalesPostFirm()).getLogisticsXytCode());
- params.put("logiNo", o.getSalesPostNum());
- params.put("code", AES.encrypt(salesOrder.getSalesOrderId()));
- params.put("storeId", String.valueOf(salesOrder.getSalesStoreId()));
- String result = HttpClient431Util.doPost(params, jdOrderDomain + "/jingdong/orderShipment");
- if (StringUtil.isNotEmpty(result)) {
- OperatorResult operatorResult = com.alibaba.fastjson.JSONObject.parseObject(result, OperatorResult.class);
- if (operatorResult.getSuccess()) {
- logger.info("京东发货回传请求成功:result=SUCCESS:{}, MSG:{}", operatorResult.getSuccess(), operatorResult.getChineseErrCode());
- } else {
- logger.info("京东发货回传请求失败:订单号:{}, code:{}, error:{}, MSG:{}", salesOrder.getSalesOrderId(), operatorResult.getErrorCode(), operatorResult.getEnglishErrCode(), operatorResult.getChineseErrCode());
- throw new RuntimeException("京东发货回传请求失败:" + operatorResult.getErrorCode());
- }
- } else {
- logger.info("京东发货回传请求错误:{}", result);
- throw new RuntimeException("京东发货回传请求失败");
- }
- }
- } catch (JdException e) {
- throw new RuntimeException(e);
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- }
- // 抖音订单发货
- if (salesOrder.getSalesBatchId().startsWith("DY")) {
- try {
- Integer salesStoreId = salesOrder.getSalesStoreId();
- Long shopId;
- // 映射到抖音的shopId,保存的地方在DouyinTask中
- if (salesStoreId == 148) {
- shopId = DouyinConfig.DOUYIN_IAMBERRY_SHOP_ID;
- } else if (salesStoreId == 172) {
- shopId = DouyinConfig.DOUYIN_METAPURE_SHOP_ID;
- } else if(salesStoreId == 202) {
- shopId = 187079746L;
- } else {
- throw new RuntimeException("未映射到抖音店铺,系统出小差啦~");
- }
- // 判断是否是赠品,后台拆分的订单不处理(mainOrderId为null,说明是主单)
- if (salesOrder.getSalesMainOrderId() == null) {
- // 查询系统快递公司信息
- LogisticsInfo logisticsInfo = logisticsInfoService.getLogisticsNameByRSTCode(salesOrder.getSalesPostFirm());
- OrderLogisticsAddParam param = new OrderLogisticsAddParam();
- param.setOrderId(salesOrder.getSalesExOrderId());
- param.setLogisticsCode(salesOrder.getSalesPostNum());
- param.setCompany(logisticsInfo.getLogisticsName());
- // 这里抖音的快递公司编码和系统快递100的一样,就先不调用抖音的了
- param.setCompanyCode(logisticsInfo.getLogisticsOnehundredCode());
- OrderLogisticsAddRequest request = new OrderLogisticsAddRequest();
- request.setParam(param);
- OrderLogisticsAddResponse response = request.execute(AccessTokenBuilder.build(shopId));
- if (response.isSuccess()) {
- logger.info("抖音发货回传请求成功");
- } else if ("50002".equals(response.getCode())) {
- logger.info("抖音发货回传请求失败:订单已发货,不允许再次执行发货。");
- } else {
- logger.info("抖音发货回传请求错误:{}", response.getMsg());
- throw new RuntimeException("抖音发货回传请求失败");
- }
- }
- } catch (Exception e) {
- logger.error("抖音订单发货失败,外部订单id:" + salesOrder.getSalesExOrderId() + " 异常信息:", e);
- throw new RuntimeException(e);
- }
- }
- // 添加订单追踪信息
- OrderTracking orderTracking = new OrderTracking();
- orderTracking.setAdminId(currAdmin);
- orderTracking.setSalesDealCode(o.getSalesDealCode());
- orderTracking.setTrackingDesc("打印订单");
- salesOrderService.addTracking(orderTracking);
- });
- return list.size();
- }
- @Override
- public List<SalesOrder> testListSalesOrder() {
- List<SalesOrder> orders = salesOrderMapper.testListSalesOrder();
- /*for (SalesOrder order : orders) {
- SalesOrderItem item = new SalesOrderItem();
- item.setItemOrderId(order.getSalesId());
- order.setSalesOrderItemList(salesOrderMapper.listSalesOrderItem(item));
- }*/
- return orders;
- }
- @Override
- public List<SalesOrder> testListOther(SalesOrder data) {
- List<SalesOrder> orders = salesOrderMapper.testListOther(data);
- for (SalesOrder order : orders) {
- SalesOrderItem item = new SalesOrderItem();
- item.setItemOrderId(order.getSalesId());
- order.setSalesOrderItemList(salesOrderMapper.listSalesOrderItem(item));
- }
- return orders;
- }
- /***
- * 计算金额
- * @param salesOrder
- * @param salesOrderItemList
- */
- public void calculationTotal(SalesOrder salesOrder,List<SalesOrderItem> salesOrderItemList){
- Integer salesAmount=0,salesPayMoney=0;
- for (SalesOrderItem soi:salesOrderItemList) {
- if(soi.getItemTotal() == null || soi.getItemTotal() == 0){
- soi.setItemTotal(soi.getItemNum() * soi.getItemProductDiscount());
- }
- salesAmount += (soi.getItemNum() * soi.getItemProductPrice());
- salesPayMoney += soi.getItemTotal();
- }
- if(salesOrder != null && salesOrder.getSalesStoreId() != 40){
- salesOrder.setSalesAmount(salesAmount);
- salesOrder.setSalesPayMoney(salesPayMoney);
- }
- }
- }
|