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.StockOrderDetailEntity;
import com.glxp.api.admin.entity.business.StockOrderEntity; import com.glxp.api.admin.entity.business.StockOrderEntity;
import com.glxp.api.admin.entity.business.StockQRCodeTextEntity; 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.info.SystemParamConfigEntity;
import com.glxp.api.admin.entity.inout.OrderEntity; import com.glxp.api.admin.entity.inout.OrderEntity;
import com.glxp.api.admin.entity.inout.WarehouseEntity; 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.res.inout.StockOrderResponse;
import com.glxp.api.admin.service.auth.AuthAdminService; import com.glxp.api.admin.service.auth.AuthAdminService;
import com.glxp.api.admin.service.auth.CustomerService; 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.StockOrderDetailService;
import com.glxp.api.admin.service.business.StockOrderDetailTempService; import com.glxp.api.admin.service.business.StockOrderDetailTempService;
import com.glxp.api.admin.service.business.StockOrderService; import com.glxp.api.admin.service.business.StockOrderService;
@ -394,6 +396,8 @@ public class StockOrderController {
StockOrderEntity stockOrderEntity = stockOrderService.findById(addStockOrderChangeRequest.getStockOrderId()); StockOrderEntity stockOrderEntity = stockOrderService.findById(addStockOrderChangeRequest.getStockOrderId());
OrderEntity originOrder = orderService.findById(stockOrderEntity.getOrderIdFk()); OrderEntity originOrder = orderService.findById(stockOrderEntity.getOrderIdFk());
String oldOrderId = originOrder.getId();
String replicateNo = originOrder.getReplicateNo(); //复制单号
List<WarehouseEntity> originCodes = codesService.findByReceiptId(originOrder.getId()); List<WarehouseEntity> originCodes = codesService.findByReceiptId(originOrder.getId());
originOrder.setActDate(DateUtil.formatDate(new Date())); originOrder.setActDate(DateUtil.formatDate(new Date()));
originOrder.setFromCorp(addStockOrderChangeRequest.getFromCorp()); originOrder.setFromCorp(addStockOrderChangeRequest.getFromCorp());
@ -405,15 +409,29 @@ public class StockOrderController {
originOrder.setContrastStatus(0);//设置erp校验状态为未校验 originOrder.setContrastStatus(0);//设置erp校验状态为未校验
originOrder.setReceiveStatus(0); //设置验收状态为未验收 originOrder.setReceiveStatus(0); //设置验收状态为未验收
originOrder.setStatus(ConstantStatus.ORDER_STATUS_PROCESS); originOrder.setStatus(ConstantStatus.ORDER_STATUS_PROCESS);
originOrder.setErpFk(null);//关联业务单据置空
originOrder.setLocStorageCode(addStockOrderChangeRequest.getLocStorageCode()); originOrder.setLocStorageCode(addStockOrderChangeRequest.getLocStorageCode());
BussinessTypeEntity bussinessTypeEntity = bussinessTypeService.findBTByAction(originOrder.getAction()); BussinessTypeEntity bussinessTypeEntity = bussinessTypeService.findBTByAction(originOrder.getAction());
String orderNo = gennerOrderUtils.createScOrderNo(new OrderNoTypeBean(Constant.SCAN_ORDER + MyStrUtil.trim(bussinessTypeEntity.getPrefix()), "yyyyMMdd")); String orderNo = gennerOrderUtils.createScOrderNo(new OrderNoTypeBean(Constant.SCAN_ORDER + MyStrUtil.trim(bussinessTypeEntity.getPrefix()), "yyyyMMdd"));
String supplementOrderNo = orderNo; String supplementOrderNo = orderNo;
originOrder.setId(supplementOrderNo); 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> supplementCodes = new ArrayList<>();
List<WarehouseEntity> products = addStockOrderChangeRequest.getProducts();
originCodes.forEach( originCodes.forEach(
code -> { code -> {
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(); WarehouseEntity supplementCode = new WarehouseEntity();
BeanUtil.copyProperties(code, supplementCode); BeanUtil.copyProperties(code, supplementCode);
supplementCode.setFromCorpId(originOrder.getFromCorpId()); supplementCode.setFromCorpId(originOrder.getFromCorpId());
@ -425,13 +443,15 @@ public class StockOrderController {
supplementCode.setMainAction(originOrder.getMainAction()); supplementCode.setMainAction(originOrder.getMainAction());
supplementCode.setId(null); supplementCode.setId(null);
supplementCodes.add(supplementCode); supplementCodes.add(supplementCode);
}
}
}
} }
); );
originOrder.setUpdateTime(new Date()); originOrder.setUpdateTime(new Date());
orderService.insertOrder(originOrder); orderService.insertOrder(originOrder);
codesTempService.insertCodesTemp(supplementCodes); codesTempService.insertCodesTemp(supplementCodes);
orderService.updateReplicateNo(oldOrderId, replicateNo);
return ResultVOUtils.success(); return ResultVOUtils.success();
} }

@ -145,7 +145,10 @@ public class SystemParamConfigController {
if (!"0".equals(systemParamConfigSaveRequest.getParamValue())) { if (!"0".equals(systemParamConfigSaveRequest.getParamValue())) {
time = Integer.parseInt(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 scheduledEntity = new ScheduledEntity();
scheduledEntity.setCron(cornStr); scheduledEntity.setCron(cornStr);
scheduledEntity.setCronName("downThirdSysDataTask"); scheduledEntity.setCronName("downThirdSysDataTask");

@ -34,4 +34,13 @@ public interface BasicThirdSysBusApiDao {
* @return * @return
*/ */
List<String> selectAllCode(); 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.entity.inout.WarehouseEntity;
import com.glxp.api.admin.req.inout.OrderFilterRequest; import com.glxp.api.admin.req.inout.OrderFilterRequest;
import com.glxp.api.admin.req.inout.OrderQueryRequest; 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.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@ -73,4 +74,21 @@ public interface OrderDao {
* @return * @return
*/ */
boolean updateOrderTime(@Param("actDate") String actDate, @Param("auditTime") String auditTime, @Param("updateTime") String updateTime, @Param("orderIds") List<String> orderIds); 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 Date auditTime;
private String thirdBillNo; private String thirdBillNo;
//复制单号,多个单号之间使用英文逗号,分隔
private String replicateNo;
} }

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

@ -112,7 +112,7 @@ public interface OrderService {
* @param orderEntity * @param orderEntity
* @param orders * @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(); 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 org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
@ -172,9 +171,7 @@ public class CodesServiceImpl implements CodesService {
public void replaceCodes(CodesReplaceRequest codesReplaceRequest) { public void replaceCodes(CodesReplaceRequest codesReplaceRequest) {
OrderEntity orderEntity = orderDao.selectByBillNo(codesReplaceRequest.getOrderId()); OrderEntity orderEntity = orderDao.selectByBillNo(codesReplaceRequest.getOrderId());
//查询所有单据 //查询所有单据
List<OrderEntity> orderList = new ArrayList<>(); List<OrderEntity> orderList = orderService.getAllOrder(orderEntity);
orderList.add(orderEntity);
orderService.getAllOrder(orderEntity, orderList);
for (OrderEntity order : orderList) { 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.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ReflectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.glxp.api.admin.constant.Constant; 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.inout.OrderQueryRequest;
import com.glxp.api.admin.req.inventory.FilterInvProductDetailRequest; import com.glxp.api.admin.req.inventory.FilterInvProductDetailRequest;
import com.glxp.api.admin.req.inventory.FilterInvProductRequest; 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.res.inout.StockOrderResponse;
import com.glxp.api.admin.service.info.SystemParamConfigService; import com.glxp.api.admin.service.info.SystemParamConfigService;
import com.glxp.api.admin.service.inout.OrderService; import com.glxp.api.admin.service.inout.OrderService;
@ -43,6 +45,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.lang.reflect.Field;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -168,7 +171,7 @@ public class OrderServiceImpl implements OrderService {
if (orderFilterRequest == null) { if (orderFilterRequest == null) {
return Collections.emptyList(); return Collections.emptyList();
} }
if(orderFilterRequest.getPage()!=null){ if (orderFilterRequest.getPage() != null) {
int offset = (orderFilterRequest.getPage() - 1) * orderFilterRequest.getLimit(); int offset = (orderFilterRequest.getPage() - 1) * orderFilterRequest.getLimit();
PageHelper.offsetPage(offset, orderFilterRequest.getLimit()); PageHelper.offsetPage(offset, orderFilterRequest.getLimit());
} }
@ -356,6 +359,10 @@ public class OrderServiceImpl implements OrderService {
return stockOrderDao.selectWaitSubmitOrders(); return stockOrderDao.selectWaitSubmitOrders();
} }
@Override
public boolean updateReplicateNo(String orderId, String replicateNo) {
return orderDao.updateReplicateNo(orderId, replicateNo);
}
@Override @Override
public List<OrderEntity> filterOrderForDelete(String billNo) { public List<OrderEntity> filterOrderForDelete(String billNo) {
@ -363,11 +370,44 @@ public class OrderServiceImpl implements OrderService {
if (null == orderEntity) { if (null == orderEntity) {
return Collections.emptyList(); return Collections.emptyList();
} }
//查询码表中所有的单据号
List<OrderEntity> orders = new ArrayList<>(); return getAllOrder(orderEntity);
orders.add(orderEntity); }
getAllOrder(orderEntity, orders);
return orders; //通过源单据查询所有关联的单据数据
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 * @param orders
*/ */
@Override @Override
public void getAllOrder(OrderEntity orderEntity, List<OrderEntity> orders) { public List<OrderEntity> getAllOrder(OrderEntity orderEntity) {
OrderFilterRequest orderFilterRequest = new OrderFilterRequest(); List<String> orderIds = new ArrayList<>();
//补单单号 orderIds.add(orderEntity.getId());
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);
}
}
//缺量补单上级单号 getLinkedOrderId(orderEntity.getId(), orderIds);
if (StrUtil.isNotBlank(orderEntity.getOriginUllageSupNo())) {
//缺量补单上级单号不为空,查询单据数据 //去除本单的单据号
orderFilterRequest.setId(orderEntity.getOriginUllageSupNo()); Iterator<String> iterator = orderIds.iterator();
OrderEntity order = orderDao.findOne(orderFilterRequest); while (iterator.hasNext()) {
if (null != order && !orders.contains(order)) { if (iterator.next().equals(orderEntity.getId())) {
orders.add(order); iterator.remove();
getAllOrder(order, orders); break;
} }
} }
//缺量补单 List<OrderEntity> orders = new ArrayList<>();
if (StrUtil.isNotBlank(orderEntity.getUllageSupNo())) { orders.add(orderEntity);
//缺量补单单号不为空,查询单据数据
orderFilterRequest.setId(orderEntity.getUllageSupNo()); //查询除本单以外的所有的单据
OrderEntity order = orderDao.findOne(orderFilterRequest); if (CollUtil.isNotEmpty(orderIds)) {
if (null != order && !orders.contains(order)) { List<OrderEntity> orderEntities = orderDao.selectByIds(orderIds);
orders.add(order); orders.addAll(orderEntities);
getAllOrder(order, orders);
}
} }
return orders;
} }
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)

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

@ -38,4 +38,14 @@ public class CronUtils {
} }
return cron; 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 code from basic_third_sys_bus_api
</select> </select>
<select id="countByThirdSysAndType" resultType="int">
select count(*)
from basic_third_sys_bus_api
where thirdSys = #{thirdSys}
and type = #{type}
</select>
</mapper> </mapper>

@ -569,4 +569,16 @@
where id = #{id} where id = #{id}
</select> </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> </mapper>
Loading…
Cancel
Save