1.修改定时任务判断逻辑,根据第三方系统设置参数判断是否启用

2.复制UDI自助平台单据复制和编辑功能
master
x_z 3 years ago
parent f8cda1703c
commit 8781a47704

@ -14,7 +14,6 @@ import com.glxp.api.admin.entity.basic.BussinessTypeEntity;
import com.glxp.api.admin.entity.business.StockOrderDetailEntity;
import com.glxp.api.admin.entity.business.StockOrderEntity;
import com.glxp.api.admin.entity.business.StockQRCodeTextEntity;
import com.glxp.api.admin.entity.info.CompanyEntity;
import com.glxp.api.admin.entity.info.SystemParamConfigEntity;
import com.glxp.api.admin.entity.inout.OrderEntity;
import com.glxp.api.admin.entity.inout.WarehouseEntity;
@ -38,7 +37,10 @@ import com.glxp.api.admin.res.inout.ErpOrderResponse;
import com.glxp.api.admin.res.inout.StockOrderResponse;
import com.glxp.api.admin.service.auth.AuthAdminService;
import com.glxp.api.admin.service.auth.CustomerService;
import com.glxp.api.admin.service.basic.*;
import com.glxp.api.admin.service.basic.BasicUnitMaintainService;
import com.glxp.api.admin.service.basic.BussinessLocalTypeService;
import com.glxp.api.admin.service.basic.BussinessTypeService;
import com.glxp.api.admin.service.basic.UdiRelevanceService;
import com.glxp.api.admin.service.business.StockOrderDetailService;
import com.glxp.api.admin.service.business.StockOrderDetailTempService;
import com.glxp.api.admin.service.business.StockOrderService;
@ -394,6 +396,8 @@ public class StockOrderController {
StockOrderEntity stockOrderEntity = stockOrderService.findById(addStockOrderChangeRequest.getStockOrderId());
OrderEntity originOrder = orderService.findById(stockOrderEntity.getOrderIdFk());
String oldOrderId = originOrder.getId();
String replicateNo = originOrder.getReplicateNo(); //复制单号
List<WarehouseEntity> originCodes = codesService.findByReceiptId(originOrder.getId());
originOrder.setActDate(DateUtil.formatDate(new Date()));
originOrder.setFromCorp(addStockOrderChangeRequest.getFromCorp());
@ -405,33 +409,49 @@ public class StockOrderController {
originOrder.setContrastStatus(0);//设置erp校验状态为未校验
originOrder.setReceiveStatus(0); //设置验收状态为未验收
originOrder.setStatus(ConstantStatus.ORDER_STATUS_PROCESS);
originOrder.setErpFk(null);//关联业务单据置空
originOrder.setLocStorageCode(addStockOrderChangeRequest.getLocStorageCode());
BussinessTypeEntity bussinessTypeEntity = bussinessTypeService.findBTByAction(originOrder.getAction());
String orderNo = gennerOrderUtils.createScOrderNo(new OrderNoTypeBean(Constant.SCAN_ORDER + MyStrUtil.trim(bussinessTypeEntity.getPrefix()), "yyyyMMdd"));
String supplementOrderNo = orderNo;
originOrder.setId(supplementOrderNo);
if (StrUtil.isBlank(replicateNo)) {
replicateNo = supplementOrderNo; //此单据第一条复制单号
} else {
replicateNo = replicateNo + "," + supplementOrderNo; //复制单号拼接上新的单号
}
originOrder.setId(supplementOrderNo);
originOrder.setReplicateNo(null); //新单据的复制单号置空
List<WarehouseEntity> supplementCodes = new ArrayList<>();
List<WarehouseEntity> products = addStockOrderChangeRequest.getProducts();
originCodes.forEach(
code -> {
WarehouseEntity supplementCode = new WarehouseEntity();
BeanUtil.copyProperties(code, supplementCode);
supplementCode.setFromCorpId(originOrder.getFromCorpId());
supplementCode.setFromCorp(originOrder.getFromCorp());
supplementCode.setLocStorageCode(originOrder.getLocStorageCode());
supplementCode.setOrderId(supplementOrderNo);
//查询补单设置
supplementCode.setAction(originOrder.getAction());
supplementCode.setMainAction(originOrder.getMainAction());
supplementCode.setId(null);
supplementCodes.add(supplementCode);
for (WarehouseEntity product : products) {
if (product.getRelId().equals(code.getRelId())) {
if ((StrUtil.isNotBlank(product.getBatchNo()) && StrUtil.isNotBlank(code.getBatchNo()) && product.getBatchNo().equals(code.getBatchNo()))
|| (StrUtil.isBlank(product.getBatchNo()) && StrUtil.isBlank(code.getBatchNo()))) {
WarehouseEntity supplementCode = new WarehouseEntity();
BeanUtil.copyProperties(code, supplementCode);
supplementCode.setFromCorpId(originOrder.getFromCorpId());
supplementCode.setFromCorp(originOrder.getFromCorp());
supplementCode.setLocStorageCode(originOrder.getLocStorageCode());
supplementCode.setOrderId(supplementOrderNo);
//查询补单设置
supplementCode.setAction(originOrder.getAction());
supplementCode.setMainAction(originOrder.getMainAction());
supplementCode.setId(null);
supplementCodes.add(supplementCode);
}
}
}
}
);
originOrder.setUpdateTime(new Date());
orderService.insertOrder(originOrder);
codesTempService.insertCodesTemp(supplementCodes);
orderService.updateReplicateNo(oldOrderId, replicateNo);
return ResultVOUtils.success();
}

@ -145,7 +145,10 @@ public class SystemParamConfigController {
if (!"0".equals(systemParamConfigSaveRequest.getParamValue())) {
time = Integer.parseInt(systemParamConfigSaveRequest.getParamValue());
}
String cornStr = CronUtils.parseHourIntervel(time);
if (time > 28) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "参数错误大于28天会导致部分2月份无法更新数据");
}
String cornStr = CronUtils.parseDayIntervel(time);
ScheduledEntity scheduledEntity = new ScheduledEntity();
scheduledEntity.setCron(cornStr);
scheduledEntity.setCronName("downThirdSysDataTask");

@ -34,4 +34,13 @@ public interface BasicThirdSysBusApiDao {
* @return
*/
List<String> selectAllCode();
/**
* ID
*
* @param thirdId
* @param type
* @return
*/
int countByThirdSysAndType(@Param("thirdSys") String thirdSys, @Param("type") int type);
}

@ -4,6 +4,7 @@ import com.glxp.api.admin.entity.inout.OrderEntity;
import com.glxp.api.admin.entity.inout.WarehouseEntity;
import com.glxp.api.admin.req.inout.OrderFilterRequest;
import com.glxp.api.admin.req.inout.OrderQueryRequest;
import com.glxp.api.admin.res.inout.OrderNoResult;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -73,4 +74,21 @@ public interface OrderDao {
* @return
*/
boolean updateOrderTime(@Param("actDate") String actDate, @Param("auditTime") String auditTime, @Param("updateTime") String updateTime, @Param("orderIds") List<String> orderIds);
/**
*
*
* @param orderId
* @param replicateNo
* @return
*/
boolean updateReplicateNo(@Param("orderId") String orderId, @Param("replicateNo") String replicateNo);
/**
*
*
* @param id
* @return
*/
OrderNoResult selectOrderNos(String id);
}

@ -52,4 +52,7 @@ public class OrderEntity {
private Date auditTime;
private String thirdBillNo;
//复制单号,多个单号之间使用英文逗号,分隔
private String replicateNo;
}

@ -1,7 +1,10 @@
package com.glxp.api.admin.req.inout;
import com.glxp.api.admin.entity.inout.WarehouseEntity;
import lombok.Data;
import java.util.List;
@Data
public class AddStockOrderChangeRequest {
@ -20,5 +23,6 @@ public class AddStockOrderChangeRequest {
private String customerId;
private String stockOrderId;
private List<WarehouseEntity> products;
}

@ -112,7 +112,7 @@ public interface OrderService {
* @param orderEntity
* @param orders
*/
public void getAllOrder(OrderEntity orderEntity, List<OrderEntity> orders);
List<OrderEntity> getAllOrder(OrderEntity orderEntity);
/**
*
@ -121,4 +121,12 @@ public interface OrderService {
*/
List<String> getWaitSubmitOrder();
/**
*
*
* @param orderId
* @param replicateNo
* @return
*/
boolean updateReplicateNo(String orderId, String replicateNo);
}

@ -30,7 +30,6 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@ -172,9 +171,7 @@ public class CodesServiceImpl implements CodesService {
public void replaceCodes(CodesReplaceRequest codesReplaceRequest) {
OrderEntity orderEntity = orderDao.selectByBillNo(codesReplaceRequest.getOrderId());
//查询所有单据
List<OrderEntity> orderList = new ArrayList<>();
orderList.add(orderEntity);
orderService.getAllOrder(orderEntity, orderList);
List<OrderEntity> orderList = orderService.getAllOrder(orderEntity);
for (OrderEntity order : orderList) {
//查询条码

@ -2,6 +2,7 @@ package com.glxp.api.admin.service.inout.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ReflectUtil;
import cn.hutool.core.util.StrUtil;
import com.github.pagehelper.PageHelper;
import com.glxp.api.admin.constant.Constant;
@ -31,6 +32,7 @@ import com.glxp.api.admin.req.inout.OrderFilterRequest;
import com.glxp.api.admin.req.inout.OrderQueryRequest;
import com.glxp.api.admin.req.inventory.FilterInvProductDetailRequest;
import com.glxp.api.admin.req.inventory.FilterInvProductRequest;
import com.glxp.api.admin.res.inout.OrderNoResult;
import com.glxp.api.admin.res.inout.StockOrderResponse;
import com.glxp.api.admin.service.info.SystemParamConfigService;
import com.glxp.api.admin.service.inout.OrderService;
@ -43,6 +45,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.lang.reflect.Field;
import java.util.*;
import java.util.stream.Collectors;
@ -168,7 +171,7 @@ public class OrderServiceImpl implements OrderService {
if (orderFilterRequest == null) {
return Collections.emptyList();
}
if(orderFilterRequest.getPage()!=null){
if (orderFilterRequest.getPage() != null) {
int offset = (orderFilterRequest.getPage() - 1) * orderFilterRequest.getLimit();
PageHelper.offsetPage(offset, orderFilterRequest.getLimit());
}
@ -356,6 +359,10 @@ public class OrderServiceImpl implements OrderService {
return stockOrderDao.selectWaitSubmitOrders();
}
@Override
public boolean updateReplicateNo(String orderId, String replicateNo) {
return orderDao.updateReplicateNo(orderId, replicateNo);
}
@Override
public List<OrderEntity> filterOrderForDelete(String billNo) {
@ -363,11 +370,44 @@ public class OrderServiceImpl implements OrderService {
if (null == orderEntity) {
return Collections.emptyList();
}
//查询码表中所有的单据号
List<OrderEntity> orders = new ArrayList<>();
orders.add(orderEntity);
getAllOrder(orderEntity, orders);
return orders;
return getAllOrder(orderEntity);
}
//通过源单据查询所有关联的单据数据
public void getLinkedOrderId(String id, List<String> orderIds) {
List<String> list = getOneOrderById(id);
if (!orderIds.containsAll(list)) {
//找出不包含在原有集合中的单据号,回调方法
String orderId = null;
for (String item : list) {
if (!orderIds.contains(item)) {
orderId = item;
break;
}
}
orderIds.addAll(list);
getLinkedOrderId(orderId, orderIds);
}
}
//通过单号查询一个单据
public List<String> getOneOrderById(String id) {
List<String> orderIds = new ArrayList<>();
OrderNoResult orderNo = orderDao.selectOrderNos(id);
Field[] fields = ReflectUtil.getFields(OrderNoResult.class);
for (Field field : fields) {
String value = String.valueOf(ReflectUtil.getFieldValue(orderNo, field));
if (StrUtil.isNotBlank(value) && !"null".equals(value)) {
if (field.getName().equals("replicateNo")) {
String[] ids = value.split(",");
orderIds.addAll(Arrays.asList(ids));
} else {
orderIds.add(value);
}
}
}
return orderIds;
}
/**
@ -377,40 +417,30 @@ public class OrderServiceImpl implements OrderService {
* @param orders
*/
@Override
public void getAllOrder(OrderEntity orderEntity, List<OrderEntity> orders) {
OrderFilterRequest orderFilterRequest = new OrderFilterRequest();
//补单单号
if (StrUtil.isNotBlank(orderEntity.getSupplementNo())) {
//补单单号不为空,查询补单数据
orderFilterRequest.setId(orderEntity.getSupplementNo());
OrderEntity order = orderDao.findOne(orderFilterRequest);
if (null != order && !orders.contains(order)) {
orders.add(order);
getAllOrder(order, orders);
public List<OrderEntity> getAllOrder(OrderEntity orderEntity) {
List<String> orderIds = new ArrayList<>();
orderIds.add(orderEntity.getId());
getLinkedOrderId(orderEntity.getId(), orderIds);
//去除本单的单据号
Iterator<String> iterator = orderIds.iterator();
while (iterator.hasNext()) {
if (iterator.next().equals(orderEntity.getId())) {
iterator.remove();
break;
}
}
//缺量补单上级单号
if (StrUtil.isNotBlank(orderEntity.getOriginUllageSupNo())) {
//缺量补单上级单号不为空,查询单据数据
orderFilterRequest.setId(orderEntity.getOriginUllageSupNo());
OrderEntity order = orderDao.findOne(orderFilterRequest);
if (null != order && !orders.contains(order)) {
orders.add(order);
getAllOrder(order, orders);
}
}
List<OrderEntity> orders = new ArrayList<>();
orders.add(orderEntity);
//缺量补单
if (StrUtil.isNotBlank(orderEntity.getUllageSupNo())) {
//缺量补单单号不为空,查询单据数据
orderFilterRequest.setId(orderEntity.getUllageSupNo());
OrderEntity order = orderDao.findOne(orderFilterRequest);
if (null != order && !orders.contains(order)) {
orders.add(order);
getAllOrder(order, orders);
}
//查询除本单以外的所有的单据
if (CollUtil.isNotEmpty(orderIds)) {
List<OrderEntity> orderEntities = orderDao.selectByIds(orderIds);
orders.addAll(orderEntities);
}
return orders;
}
@Transactional(rollbackFor = Exception.class)

@ -2,8 +2,13 @@ package com.glxp.api.admin.thread;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.json.JSONUtil;
import com.glxp.api.admin.constant.ThirdSysConstant;
import com.glxp.api.admin.dao.basic.BasicThirdSysBusApiDao;
import com.glxp.api.admin.dao.basic.BasicThirdSysDao;
import com.glxp.api.admin.dao.basic.BasicThirdSysDetailDao;
import com.glxp.api.admin.dao.schedule.ScheduledDao;
import com.glxp.api.admin.dao.schedule.SystemParamConfigDao;
import com.glxp.api.admin.entity.basic.BasicThirdSysDetailEntity;
import com.glxp.api.admin.entity.info.ScheduledEntity;
import com.glxp.api.admin.entity.info.SystemParamConfigEntity;
import com.glxp.api.admin.req.info.ScheduledRequest;
@ -37,6 +42,12 @@ public class OrderSubmitTask implements SchedulingConfigurer {
private OrderService orderService;
@Resource
private StockOrderService stockOrderService;
@Resource
private BasicThirdSysDetailDao basicThirdSysDetailDao;
@Resource
private BasicThirdSysDao basicThirdSysDao;
@Resource
private BasicThirdSysBusApiDao basicThirdSysBusApiDao;
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
@ -60,23 +71,36 @@ public class OrderSubmitTask implements SchedulingConfigurer {
return;
}
//查询可提交订单
List<String> orderIds = orderService.getWaitSubmitOrder();
AtomicInteger count = new AtomicInteger(0);
if (CollUtil.isNotEmpty(orderIds)) {
log.info("待提交单据数量为: {} 条", orderIds.size());
for (String orderId : orderIds) {
log.info("开始提交id为 {} 的单据", orderId);
BaseResponse baseResponse = stockOrderService.submitOrderToThirdys(orderId);
if (baseResponse.getCode() == 20000) {
count.addAndGet(1);
log.info("自动提交成功");
} else {
log.error("自动提交失败,响应信息:{}" + JSONUtil.toJsonStr(baseResponse));
//查询所有启用的第三方系统的标识
List<String> thirdIds = basicThirdSysDao.selectEnabledThirdId();
if (CollUtil.isNotEmpty(thirdIds)) {
for (String thirdId : thirdIds) {
BasicThirdSysDetailEntity warehouseConfig = basicThirdSysDetailDao.selectByKey(ThirdSysConstant.ORDER_SUBMIT_URL, thirdId);
if (null != warehouseConfig && warehouseConfig.getFromType().equals(3) && warehouseConfig.getEnabled()) {
//查询业务单据提交的单据类型有无数据
int count = basicThirdSysBusApiDao.countByThirdSysAndType(thirdId, 2);
if (count > 0) {
//查询可提交订单
List<String> orderIds = orderService.getWaitSubmitOrder();
AtomicInteger counter = new AtomicInteger(0);
if (CollUtil.isNotEmpty(orderIds)) {
log.info("待提交单据数量为: {} 条", orderIds.size());
for (String orderId : orderIds) {
log.info("开始提交id为 {} 的单据", orderId);
BaseResponse baseResponse = stockOrderService.submitOrderToThirdys(orderId);
if (baseResponse.getCode() == 20000) {
counter.addAndGet(1);
log.info("自动提交成功");
} else {
log.error("自动提交失败,响应信息:{}" + JSONUtil.toJsonStr(baseResponse));
}
}
}
log.info("单据自动提交完成,提交成功: {} 条", counter.get());
}
}
}
}
log.info("单据自动提交完成,提交成功: {} 条", count.get());
}

@ -38,4 +38,14 @@ public class CronUtils {
}
return cron;
}
public static String parseDayIntervel(int time) {
int day = time;
String cron = "0 0 0 1/" + day + " * ? ";
if (time >= 28) {
day = 28;
cron = "0 0 0 1/" + day + " * ? ";
}
return cron;
}
}

@ -87,4 +87,11 @@
select code from basic_third_sys_bus_api
</select>
<select id="countByThirdSysAndType" resultType="int">
select count(*)
from basic_third_sys_bus_api
where thirdSys = #{thirdSys}
and type = #{type}
</select>
</mapper>

@ -569,4 +569,16 @@
where id = #{id}
</select>
<update id="updateReplicateNo">
update io_order
set replicateNo = #{replicateNo}
where id = #{orderId}
</update>
<select id="selectOrderNos" resultType="com.glxp.api.admin.res.inout.OrderNoResult">
select supplementNo, originUllageSupNo, ullageSupNo, replicateNo
from io_order
where id = #{id}
</select>
</mapper>
Loading…
Cancel
Save