| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- package com.dderp.business.service.flycat;
- import com.dderp.common.api.flycat.OrderSearchService;
- import com.dderp.common.api.flycat.OrderStepService;
- import com.dderp.common.entity.order.BusinessOrder;
- import com.dySweetFishPlugin.elasticsearch.ESClient;
- import com.dderp.common.api.SupplierInitService;
- import com.dderp.common.base.BaseService;
- import com.dderp.common.datas.ESKeys;
- import com.dderp.common.entity.order.OrderStep;
- import com.dderp.common.entity.site.ERPTokenUser;
- import com.sweetfish.convert.json.JsonConvert;
- import com.sweetfish.service.Local;
- import com.sweetfish.service.RetResult;
- import com.sweetfish.util.AnyValue;
- import com.sweetfish.util.AutoLoad;
- import com.sweetfish.util.ResourceType;
- import org.apache.commons.lang3.StringUtils;
- import org.elasticsearch.index.query.QueryBuilders;
- import org.elasticsearch.search.sort.SortBuilders;
- import org.elasticsearch.search.sort.SortOrder;
- import org.rex.RMap;
- import javax.annotation.Resource;
- import java.time.Instant;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.Date;
- import java.util.List;
- import java.util.stream.Collectors;
- /**
- * Created by jlutt on 2022-08-23
- * 订单脚印服务
- *
- * @author jlutt
- */
- @AutoLoad(false)
- @Local
- @ResourceType(OrderStepService.class)
- public class OrderStepServiceImpl extends BaseService implements OrderStepService {
- @Resource
- private OrderSearchService orderSearchService;
- @Resource
- ESClient esClient;
- @Resource
- JsonConvert jsonConvert;
- @Resource
- SupplierInitService supplierService;
- @Override
- public void init(AnyValue config) {
- super.init(config);
- }
- /**
- * 订单结构转订单脚印结构
- *
- * @param idOrder 订单
- * @param workMemo 备注
- * @param workExplain 描述
- * @param currentUser 当前用户
- * @return 脚印
- */
- @Override
- public OrderStep parseOrderStep(long idOrder, String workMemo, String workExplain, ERPTokenUser currentUser) {
- Date now = Date.from(Instant.now());
- return OrderStep.newBuilder()
- .idOrder(idOrder)
- .idWorkMan(currentUser.getId())
- .workMan(currentUser.getUserName())
- .workMemo(workMemo)
- .workExplain(workExplain)
- .workTime(now)
- .workTimeLong(now.getTime())
- .build();
- }
- /**
- * 用于版工序反馈等需要批量写入订单脚印的场景
- *
- * @param printOrders 订单信息列表
- * @param workMemo 备注
- * @param workExplain 描述
- * @param currentUser 当前用户
- * @return List<OrderStep>
- */
- @Override
- public List<OrderStep> parseOrderSteps(List<BusinessOrder> printOrders, String workMemo, String workExplain, ERPTokenUser currentUser) {
- Date now = Date.from(Instant.now());
- return printOrders.stream().map((x) -> OrderStep.newBuilder()
- .idOrder(x.getId())
- .idWorkMan(currentUser.getId())
- .workMan(currentUser.getUserName())
- .workMemo(workMemo)
- .workExplain(workExplain)
- .workTime(now)
- .workTimeLong(now.getTime())
- .build()).collect(Collectors.toList());
- }
- @Override
- public List<OrderStep> parseOrderSteps(String idOrderStr, String workMemo, String workExplain, ERPTokenUser currentUser) {
- Date now = Date.from(Instant.now());
- List<OrderStep> orderSteps = new ArrayList<>();
- if (StringUtils.isBlank(idOrderStr)) return orderSteps;
- return Arrays.stream(idOrderStr.split(",")).map((idOrder) -> OrderStep.newBuilder()
- .idOrder(Long.parseLong(idOrder))
- .idWorkMan(currentUser.getId())
- .workMan(currentUser.getUserName())
- .workMemo(workMemo)
- .workExplain(workExplain)
- .workTime(now)
- .workTimeLong(now.getTime())
- .build()).collect(Collectors.toList());
- }
- /**
- * 获取订单脚印
- *
- * @param idOrder 订单id
- * @param currentUser 当前用户
- * @return 脚印list
- */
- @Override
- @SuppressWarnings({"unchecked"})
- public RetResult<List<OrderStep>> getOrderStepList(long idOrder, ERPTokenUser currentUser, String dataSourceId, long supplierCode) {
- if (idOrder < 0) {
- return RetResult.<List<OrderStep>>errorT().retcode(-1).retinfo("未传入订单id");
- }
- RetResult<BusinessOrder> orderResult = orderSearchService.getBusinessOrder(idOrder, currentUser, dataSourceId, supplierCode, null);
- if (!orderResult.isSuccess()) {
- return RetResult.error().retcode(-1).retinfo("未找到id为" + idOrder + "的订单");
- }
- BusinessOrder esOrder = orderResult.getResult();
- RMap<String, String> collectionData = new RMap<>();
- collectionData.put("orderCode", esOrder.getOrderCode());
- collectionData.put("orderName", esOrder.getOrderName());
- List<OrderStep> stepList = searchESList(esClient, jsonConvert,
- OrderStep.class,
- null,
- ((sd) -> QueryBuilders.boolQuery().must(QueryBuilders.typeQuery(ESKeys.ES_DELIVER_ORDER_STEP_TYPE))
- .must(QueryBuilders.termQuery("idOrder", idOrder))),
- null,
- supplierService.getDateYearESIndex(supplierCode, ESKeys.ES_DELIVER_ORDER_STEP_INDEX, 1),
- () -> SortBuilders.fieldSort("workTimeLong").order(SortOrder.ASC));
- return RetResult.success().retcode(0).retinfo("success").result(stepList).attachRMap(collectionData);
- }
- }
|