1.添加提交单据相关接口

master
x_z 2 years ago
parent a0c0aa7514
commit b772499867

@ -15,10 +15,7 @@ import com.glxp.api.entity.basic.EntrustReceEntity;
import com.glxp.api.entity.inout.*;
import com.glxp.api.req.auth.FilterInvBusUserRequest;
import com.glxp.api.req.basic.BasicEntrustRecRequest;
import com.glxp.api.req.inout.AddOrderRequest;
import com.glxp.api.req.inout.FilterOrderDetailBizRequest;
import com.glxp.api.req.inout.FilterOrderRequest;
import com.glxp.api.req.inout.OrderEditRequest;
import com.glxp.api.req.inout.*;
import com.glxp.api.req.system.DeleteRequest;
import com.glxp.api.res.PageSimpleResponse;
import com.glxp.api.res.inout.IoOrderDetailBizResponse;
@ -31,14 +28,10 @@ import com.glxp.api.service.inout.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@ -419,4 +412,31 @@ public class IoOrderController extends BaseController {
return ResultVOUtils.success();
}
/**
*
*
* @param uploadOrderRequest
* @return
*/
@GetMapping("/udiwms/inout/order/upload/filter")
public BaseResponse filterUploadOrder(FilterUploadOrderRequest uploadOrderRequest) {
List<IoOrderResponse> list = orderService.filterUploadOrderList(uploadOrderRequest);
PageInfo<IoOrderResponse> pageInfo = new PageInfo<>(list);
return ResultVOUtils.page(pageInfo);
}
/**
*
*
* @param billNo
* @return
*/
@GetMapping("/udiwms/inout/order/submitToThrSys")
public BaseResponse submitToThrSys(@RequestParam("billNo") String billNo) {
if (StrUtil.isBlank(billNo)) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL);
}
return orderService.submitToThrSys(billNo);
}
}

@ -3,6 +3,7 @@ package com.glxp.api.dao.inout;
import com.glxp.api.dao.BaseMapperPlus;
import com.glxp.api.entity.inout.IoOrderEntity;
import com.glxp.api.req.inout.FilterOrderRequest;
import com.glxp.api.req.inout.FilterUploadOrderRequest;
import com.glxp.api.res.inout.IoOrderResponse;
import com.glxp.api.res.inout.OrderNoResult;
import org.apache.ibatis.annotations.Param;
@ -42,4 +43,20 @@ public interface IoOrderDao extends BaseMapperPlus<IoOrderDao, IoOrderEntity, Io
* @return
*/
OrderNoResult selectBillNos(@Param("billNo") String billNo);
/**
*
*
* @param uploadOrderRequest
* @return
*/
List<IoOrderResponse> selectUploadOrder(FilterUploadOrderRequest uploadOrderRequest);
/**
*
*
* @param billNo
* @return
*/
String selectActionByBillNo(@Param("billNo") String billNo);
}

@ -15,5 +15,11 @@ public interface SyncUploadDataBustypeDao {
void inserts(@Param("syncDataBustypeEntities") List<SyncDataBustypeEntity> syncDataBustypeEntities);
/**
*
*
* @param action
* @return
*/
int selectCountByAction(@Param("action") String action);
}

@ -11,6 +11,7 @@ import java.util.Date;
@Data
@TableName(value = "io_order")
public class IoOrderEntity {
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@ -206,5 +207,10 @@ public class IoOrderEntity {
@TableField(value = "fromThrBillNo")
private String fromThrBillNo;
/**
* /0.1.2.
*/
@TableField(value = "exportStatus")
private Integer exportStatus;
}

@ -4,14 +4,11 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import lombok.Data;
@Data
@TableName(value = "thr_system_bus_api")
public class ThrSystemBusApiEntity implements Serializable {
public class ThrSystemBusApiEntity {
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@ -34,7 +31,7 @@ public class ThrSystemBusApiEntity implements Serializable {
private String url;
@TableField(value = "`type`")
private Byte type;
private Integer type;
@TableField(value = "remark")
private String remark;

@ -0,0 +1,49 @@
package com.glxp.api.req.inout;
import com.glxp.api.util.page.ListPageRequest;
import lombok.Data;
import java.util.List;
/**
*
*/
@Data
public class FilterUploadOrderRequest extends ListPageRequest {
/**
*
*/
private String billNo;
/**
*
*/
private String billType;
/**
*
*/
private List<String> billTypes;
/**
*
*/
private String invCode;
/**
*
*/
private String startTime;
/**
*
*/
private String endTime;
/**
*
*/
private String submitStatus;
}

@ -0,0 +1,171 @@
package com.glxp.api.req.thrsys;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
*
*/
@Data
public class UdiwmsOrderDetailRequest {
/**
*
*/
private String productId;
/**
*
*/
private String productName;
/**
*
*/
private BigDecimal price;
/**
*
*/
private String batchNo;
/**
*
*/
private String expireDate;
/**
*
*/
private String productDate;
/**
*
*/
private String standard;
/**
*
*/
private String billNo;
/**
*
*/
private String secSalesInvNo;
/**
*
*/
private String invoiceDate;
/**
*
*/
private String secSalesListNo;
/**
*
*/
private String firstSalesInvNo;
/**
* /
*/
private String registerNo;
/**
*
*/
private String manufactory;
/**
*
*/
private String measname;
/**
*
*/
private Integer count;
/**
*
*/
private String remark;
/**
* 1/ID
*/
private String remark1;
/**
* 2/
*/
private String remark2;
/**
* 3/
*/
private String remark3;
/**
*
*/
private boolean allowNoBatch;
/**
*
*/
private String serialNo;
private List<CodeDetailEntity> codeList;
/**
*
*/
public static class CodeDetailEntity {
/**
* UDI
*/
private String code;
/**
* DI
*/
private String nameCode;
/**
*
*/
private Integer count;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getNameCode() {
return nameCode;
}
public void setNameCode(String nameCode) {
this.nameCode = nameCode;
}
public Integer getCount() {
return count;
}
public void setCount(Integer count) {
this.count = count;
}
}
}

@ -0,0 +1,65 @@
package com.glxp.api.req.thrsys;
import lombok.Data;
import java.util.List;
@Data
public class UdiwmsOrderRequest {
/**
*
*/
private String billNo;
/**
*
*/
private String billDate;
/**
* ID
*/
private String corpId;
/**
* ,0.1.
*/
private String billFlag;
/**
* 1:2:
*/
private Integer inoutType;
/**
* /
*/
private String billType;
/**
*
*/
private String corpName;
/**
*
*/
private String locInvCode;
/**
*
*/
private String locInvName;
/**
*
*/
private String remark;
/**
*
*/
private List<UdiwmsOrderDetailRequest> item;
}

@ -1,7 +1,6 @@
package com.glxp.api.res.inout;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
import java.util.Date;
@ -212,6 +211,11 @@ public class IoOrderResponse {
private String customerName;
/**
* /0.1.2.
*/
private Integer exportStatus;
public String getFromName() {

@ -1,7 +1,9 @@
package com.glxp.api.service.inout;
import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.entity.inout.IoOrderEntity;
import com.glxp.api.req.inout.FilterOrderRequest;
import com.glxp.api.req.inout.FilterUploadOrderRequest;
import com.glxp.api.req.inout.OrderEditRequest;
import com.glxp.api.res.inout.IoOrderResponse;
@ -95,5 +97,19 @@ public interface IoOrderService {
*/
void updateOrderInfo(OrderEditRequest orderEditRequest);
/**
*
*
* @param uploadOrderRequest
* @return
*/
List<IoOrderResponse> filterUploadOrderList(FilterUploadOrderRequest uploadOrderRequest);
/**
*
*
* @param billNo
* @return
*/
BaseResponse submitToThrSys(String billNo);
}

@ -5,26 +5,37 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ReflectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageHelper;
import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.common.util.ResultVOUtils;
import com.glxp.api.constant.Constant;
import com.glxp.api.constant.ConstantStatus;
import com.glxp.api.constant.ConstantType;
import com.glxp.api.dao.auth.DeptDao;
import com.glxp.api.dao.auth.InvWarehouseDao;
import com.glxp.api.dao.basic.BasicBussinessTypeDao;
import com.glxp.api.dao.basic.BasicCorpDao;
import com.glxp.api.dao.inout.IoOrderDao;
import com.glxp.api.dao.thrsys.ThrSystemBusApiDao;
import com.glxp.api.dao.thrsys.ThrSystemDao;
import com.glxp.api.entity.basic.BasicBussinessTypeEntity;
import com.glxp.api.entity.inout.*;
import com.glxp.api.entity.inv.*;
import com.glxp.api.entity.system.SyncDataBustypeEntity;
import com.glxp.api.entity.thrsys.ThrSystemBusApiEntity;
import com.glxp.api.entity.thrsys.ThrSystemEntity;
import com.glxp.api.http.HttpOkClient;
import com.glxp.api.req.inout.FilterOrderRequest;
import com.glxp.api.req.inout.FilterUploadOrderRequest;
import com.glxp.api.req.inout.OrderEditRequest;
import com.glxp.api.req.thrsys.UdiwmsOrderRequest;
import com.glxp.api.res.inout.IoOrderResponse;
import com.glxp.api.res.inout.OrderNoResult;
import com.glxp.api.service.basic.IBasicBussinessTypeService;
import com.glxp.api.service.inout.*;
import com.glxp.api.service.inv.*;
import com.glxp.api.service.system.SyncUploadDataBustypeService;
import com.glxp.api.util.DateUtil;
import com.glxp.api.util.udi.UdiCalCountUtil;
import lombok.extern.slf4j.Slf4j;
@ -34,6 +45,7 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.lang.reflect.Field;
import java.util.*;
import java.util.stream.Collectors;
@Slf4j
@Service
@ -44,8 +56,6 @@ public class IoOrderServiceImpl implements IoOrderService {
@Resource
private BasicBussinessTypeDao basicBussinessTypeDao;
@Resource
private BasicCorpDao basicCorpDao;
@Resource
private DeptDao deptDao;
@Resource
private InvWarehouseDao invWarehouseDao;
@ -73,6 +83,14 @@ public class IoOrderServiceImpl implements IoOrderService {
IoOrderDetailCodeService ioOrderDetailCodeService;
@Resource
IoOrderDetailResultService ioOrderDetailResultService;
@Resource
private SyncUploadDataBustypeService syncUploadDataBustypeService;
@Resource
private ThrSystemBusApiDao thrSystemBusApiDao;
@Resource
private ThrSystemDao thrSystemDao;
@Resource
private HttpOkClient httpOkClient;
@Override
public List<IoOrderEntity> selectAll() {
@ -116,6 +134,7 @@ public class IoOrderServiceImpl implements IoOrderService {
@Override
public int insertOrder(IoOrderEntity orderEntity) {
orderEntity.setId(null);
orderEntity.setExportStatus(0); //上传状态:未上传
return orderDao.insert(orderEntity);
}
@ -124,6 +143,7 @@ public class IoOrderServiceImpl implements IoOrderService {
public int insertOrUpdate(IoOrderEntity orderEntity) {
IoOrderEntity temp = orderDao.selectOne(new QueryWrapper<IoOrderEntity>().eq("billNo", orderEntity.getBillNo()));
if (temp == null) {
orderEntity.setExportStatus(0); //上传状态:未上传
return orderDao.insert(orderEntity);
} else {
return orderDao.updateById(orderEntity);
@ -443,7 +463,7 @@ public class IoOrderServiceImpl implements IoOrderService {
result.add(response);
} catch (Exception e) {
e.printStackTrace();
log.error(orderEntity.getBillNo() + "平衡补单出错\n" );
log.error(orderEntity.getBillNo() + "平衡补单出错\n");
}
});
@ -544,6 +564,87 @@ public class IoOrderServiceImpl implements IoOrderService {
orderDao.update(order, new QueryWrapper<IoOrderEntity>().in("billNo", orderEditRequest.getOrderIds()));
}
@Override
public List<IoOrderResponse> filterUploadOrderList(FilterUploadOrderRequest uploadOrderRequest) {
if (null == uploadOrderRequest) {
return Collections.emptyList();
}
//判断是否查询指定的单据类型,如果没指定则查询配置的所有可以上传的类型
if (StrUtil.isBlank(uploadOrderRequest.getBillType())) {
List<SyncDataBustypeEntity> busTypes = syncUploadDataBustypeService.findAll();
if (CollUtil.isNotEmpty(busTypes)) {
Iterator<SyncDataBustypeEntity> iterator = busTypes.iterator();
while (iterator.hasNext()) {
Long count = thrSystemBusApiDao.selectCount(new QueryWrapper<ThrSystemBusApiEntity>()
.eq("code", iterator.next().getAction()));
if (count == 0) {
//单据类型不在上传单据类型列表中配置
iterator.remove();
}
}
if (CollUtil.isNotEmpty(busTypes)) {
List<String> busCodes = busTypes.stream().map(SyncDataBustypeEntity::getAction).collect(Collectors.toList());
uploadOrderRequest.setBillTypes(busCodes);
} else {
log.info("未在接口设置中配置,无可以上传的单据数据");
return Collections.emptyList();
}
} else {
log.info("上传设置中未配置可以上传的单据类型");
return Collections.emptyList();
}
} else {
//查询此单据类型在上传第三方系统单据类型中是否有配置,若未配置则查询无数据
boolean exists = syncUploadDataBustypeService.findExists(uploadOrderRequest.getBillType());
if (exists) {
//查询此单据类型有无关联
Long count = thrSystemBusApiDao.selectCount(new QueryWrapper<ThrSystemBusApiEntity>()
.eq("code", uploadOrderRequest.getBillType()));
if (count == 0) {
log.info("未在接口设置中配置,无可以上传的单据数据");
return Collections.emptyList();
}
} else {
log.info("查询的单据类型未在单据上传设置中配置");
return Collections.emptyList();
}
}
if (null != uploadOrderRequest.getPage() && null != uploadOrderRequest.getLimit()) {
PageHelper.offsetPage((uploadOrderRequest.getPage() - 1) * uploadOrderRequest.getLimit(), uploadOrderRequest.getLimit());
}
return orderDao.selectUploadOrder(uploadOrderRequest);
}
@Override
public BaseResponse submitToThrSys(String billNo) {
//查询单据类型
String billType = orderDao.selectActionByBillNo(billNo);
//查询此单据类型对应的第三方系统ID
ThrSystemBusApiEntity thrSystemBusApiEntity = thrSystemBusApiDao.selectByCode(billType);
//查询第三方系统
ThrSystemEntity thrSystemEntity = thrSystemDao.selectByThirdId(thrSystemBusApiEntity.getThirdSys());
if (null == thrSystemEntity || StrUtil.isBlank(thrSystemEntity.getThridUrl())) {
return ResultVOUtils.error(500, "提交失败未配置第三方服务IP地址");
}
UdiwmsOrderRequest udiwmsOrderRequest = new UdiwmsOrderRequest();
udiwmsOrderRequest.setBillNo(billNo);
udiwmsOrderRequest.setBillType(billType);
String response = httpOkClient.uCloudPost(thrSystemEntity.getThridUrl() + "/udiwms/erp/submitOrders", udiwmsOrderRequest);
if (StrUtil.isBlank(response)) {
log.info("单据提交失败,无返回信息");
return ResultVOUtils.error(500, "提交失败");
} else {
BaseResponse baseResponse = JSONObject.parseObject(response, BaseResponse.class);
if (baseResponse.getCode() == 20000) {
return ResultVOUtils.success("提交成功");
} else {
log.error("单据提交失败,错误信息:{}", baseResponse.getMessage());
return ResultVOUtils.error(500, "提交失败");
}
}
}
/**
*

@ -335,6 +335,10 @@ public class InvCountOrderServiceImpl implements InvCountOrderService {
//设置为草稿状态
order.setStatus(1);
order.setDealStatus(1);
//设置上传状态为未上传
order.setExportStatus(0);
//生成单据号
String orderNo = gennerOrderUtils.createScOrderNo(new OrderNoTypeBean(Constant.SCAN_ORDER + StrUtil.trim(inBusType.getPrefix()), "yyyyMMdd"));
order.setBillNo(orderNo);

@ -12,4 +12,11 @@ public interface SyncUploadDataBustypeService {
void inserts(List<SyncDataBustypeEntity> syncDataBustypeEntities);
/**
*
*
* @param action
* @return
*/
boolean findExists(String action);
}

@ -1,5 +1,6 @@
package com.glxp.api.service.system.impl;
import cn.hutool.core.util.StrUtil;
import com.glxp.api.dao.system.SyncUploadDataBustypeDao;
import com.glxp.api.entity.system.SyncDataBustypeEntity;
import com.glxp.api.service.system.SyncUploadDataBustypeService;
@ -12,7 +13,7 @@ import java.util.List;
public class SyncUploadDataBustypeServiceImpl implements SyncUploadDataBustypeService {
@Resource
SyncUploadDataBustypeDao syncUploadDataBustypeDao;
private SyncUploadDataBustypeDao syncUploadDataBustypeDao;
@Override
public List<SyncDataBustypeEntity> findAll() {
@ -28,4 +29,13 @@ public class SyncUploadDataBustypeServiceImpl implements SyncUploadDataBustypeSe
public void inserts(List<SyncDataBustypeEntity> syncDataBustypeEntities) {
syncUploadDataBustypeDao.inserts(syncDataBustypeEntities);
}
@Override
public boolean findExists(String action) {
if (StrUtil.isNotBlank(action)) {
int count = syncUploadDataBustypeDao.selectCountByAction(action);
return count > 0;
}
return false;
}
}

@ -20,7 +20,7 @@ import java.util.List;
public class ThrSystemServiceImpl implements ThrSystemService {
@Resource
ThrSystemDao thrSystemDao;
private ThrSystemDao thrSystemDao;
@Resource
private AuthLicenseDao authLicenseDao;

@ -143,4 +143,54 @@
from io_order
where billNo = #{billNo}
</select>
<select id="selectUploadOrder" resultType="com.glxp.api.res.inout.IoOrderResponse">
select io.*,
(select name from basic_bussiness_type bus where bus.action = io.action) billTypeName,
(select name from auth_dept ad where ad.code = io.deptCode) deptName,
(select name from auth_warehouse aw where aw.code = io.invCode) invName,
(select employeeName from auth_user au where au.id = io.createUser) createUserName,
(select employeeName from auth_user au2 where au2.id = io.updateUser) updateUserName,
(select employeeName from auth_user au3 where au3.id = io.reviewUser) reviewUserName,
(select name from auth_dept ad2 where ad2.code = io.fromDeptCode) fromDeptName,
(select name from auth_warehouse aw2 where aw2.code = io.fromInvCode) fromInvName,
(select name from basic_corp bc where bc.erpId = io.fromCorp) fromCorpName,
(select name from basic_corp bc where bc.erpId = io.customerId) customerName
from io_order as io
<where>
io.dealStatus = 3
<if test="billType != null and billType != ''">
AND action = #{billType}
</if>
<if test="billTypes != null and billTypes.size() != 0">
AND action in
<foreach collection="billTypes" item="item" index="index" open="(" close=")" separator=",">
#{item}
</foreach>
</if>
<if test="billNo != null and billNo != ''">
AND billNo like concat('%', #{billNo}, '%')
</if>
<if test="invCode != null and invCode != ''">
AND invCode = #{invCode}
</if>
<if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
AND date_format(createTime, '%Y-%m-%d') between date_format(#{startTime}, '%Y-%m-%d') and date_format(#{endTime}, '%Y-%m-%d')
</if>
<if test="startTime != null and startTime != '' and (endTime == null or endTime == '')">
AND date_format(createTime, '%Y-%m-%d') >= date_format(#{startTime}, '%Y-%m-%d')
</if>
<if test="endTime != null and endTime != '' and (startTime == null or startTime == '')">
AND date_format(createTime, '%Y-%m-%d') &lt;= date_format(#{endTime}, '%Y-%m-%d')
</if>
<if test="submitStatus != null and submitStatus != ''">
AND exportStatus = #{submitStatus}
</if>
</where>
order by io.updateTime desc
</select>
<select id="selectActionByBillNo" resultType="java.lang.String">
select action from io_order where billNo = #{billNo}
</select>
</mapper>

@ -1,22 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.glxp.api.dao.inout.IoOrderDetailResultDao">
<select id="filterList" resultType="com.glxp.api.res.inout.IoOrderDetailResultResponse">
select * from io_order_detail_result
<where>
<if test="orderIdFk != null and orderIdFk != ''">
AND orderIdFk = #{orderIdFk}
</if>
<if test="nameCode != null and nameCode != ''">
AND nameCode = #{nameCode}
</if>
<if test="batchNo != null and batchNo != ''">
AND batchNo = #{batchNo}
</if>
<if test="coName != null and coName != ''">
AND coName = #{productName}
</if>
</where>
<select id="filterList" resultType="com.glxp.api.res.inout.IoOrderDetailResultResponse">
select *
from io_order_detail_result
<where>
<if test="orderIdFk != null and orderIdFk != ''">
AND orderIdFk = #{orderIdFk}
</if>
<if test="nameCode != null and nameCode != ''">
AND nameCode = #{nameCode}
</if>
<if test="batchNo != null and batchNo != ''">
AND batchNo = #{batchNo}
</if>
<if test="coName != null and coName != ''">
AND coName = #{productName}
</if>
<if test="productName != null and productName != ''">
AND coName like concat('%', #{productName}, '%')
</if>
</where>
</select>
</mapper>

@ -29,5 +29,7 @@
</foreach>
</insert>
<select id="selectCountByAction" resultType="int">
select count(*) from thr_order_upload_bustypes where action = #{action}
</select>
</mapper>
Loading…
Cancel
Save