Merge branch '20231126-yw' into dev_ksck
# Conflicts: # src/main/java/com/glxp/api/dao/thrsys/ThrInvOrderDetailMapper.java # src/main/java/com/glxp/api/dao/thrsys/ThrInvOrderMapper.java # src/main/java/com/glxp/api/service/thrsys/ThrInvOrderDetailService.java # src/main/java/com/glxp/api/service/thrsys/ThrInvOrderService.java # src/main/resources/mybatis/mapper/thrsys/ThrInvOrderDetailMapper.xml # src/main/resources/mybatis/mapper/thrsys/ThrInvOrderMapper.xmldev_20240306
commit
9e79e7cda9
@ -0,0 +1,111 @@
|
||||
package com.glxp.api.controller.thrsys;
|
||||
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import com.glxp.api.annotation.AuthRuleAnnotation;
|
||||
import com.glxp.api.common.enums.ResultEnum;
|
||||
import com.glxp.api.common.res.BaseResponse;
|
||||
import com.glxp.api.common.util.ResultVOUtils;
|
||||
import com.glxp.api.entity.thrsys.ThrInvOrder;
|
||||
import com.glxp.api.entity.thrsys.ThrInvOrderDetail;
|
||||
import com.glxp.api.entity.thrsys.ThrOrderDetailEntity;
|
||||
import com.glxp.api.entity.thrsys.ThrOrderEntity;
|
||||
import com.glxp.api.req.system.DeleteRequest;
|
||||
import com.glxp.api.req.thrsys.*;
|
||||
import com.glxp.api.res.PageSimpleResponse;
|
||||
import com.glxp.api.service.thrsys.ThrInvOrderDetailService;
|
||||
import com.glxp.api.service.thrsys.ThrInvOrderService;
|
||||
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 javax.annotation.Resource;
|
||||
import javax.validation.Valid;
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
public class ThrInvOrderController {
|
||||
|
||||
@Resource
|
||||
ThrInvOrderService thrInvOrderService;
|
||||
|
||||
@Resource
|
||||
ThrInvOrderDetailService thrInvOrderDetailService;
|
||||
|
||||
@AuthRuleAnnotation("")
|
||||
@GetMapping("/udiwms/thrsys/getThrInvOrders")
|
||||
public BaseResponse getOrders(FilterThrInvOrderRequest filterThrInvOrderRequest,
|
||||
BindingResult bindingResult) {
|
||||
|
||||
if (bindingResult.hasErrors()) {
|
||||
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage());
|
||||
}
|
||||
List<ThrInvOrder> thrInvOrders
|
||||
= thrInvOrderService.filterThrInvOrder(filterThrInvOrderRequest);
|
||||
PageInfo<ThrInvOrder> pageInfo;
|
||||
pageInfo = new PageInfo<>(thrInvOrders);
|
||||
PageSimpleResponse<ThrInvOrder> pageSimpleResponse = new PageSimpleResponse<>();
|
||||
pageSimpleResponse.setTotal(pageInfo.getTotal());
|
||||
pageSimpleResponse.setList(thrInvOrders);
|
||||
return ResultVOUtils.success(pageSimpleResponse);
|
||||
}
|
||||
|
||||
@AuthRuleAnnotation("")
|
||||
@GetMapping("/udiwms/thrsys/getThrInvOrderDetails")
|
||||
public BaseResponse getThrInvOrderDetails(FilterThrInvOrderDetailRequest filterThrInvOrderDetailRequest,
|
||||
BindingResult bindingResult) {
|
||||
|
||||
if (bindingResult.hasErrors()) {
|
||||
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage());
|
||||
}
|
||||
List<ThrInvOrderDetail> thrInvOrderDetails
|
||||
= thrInvOrderDetailService.filterThrInvOrderDetails(filterThrInvOrderDetailRequest);
|
||||
PageInfo<ThrInvOrderDetail> pageInfo;
|
||||
pageInfo = new PageInfo<>(thrInvOrderDetails);
|
||||
PageSimpleResponse<ThrInvOrderDetail> pageSimpleResponse = new PageSimpleResponse<>();
|
||||
pageSimpleResponse.setTotal(pageInfo.getTotal());
|
||||
pageSimpleResponse.setList(thrInvOrderDetails);
|
||||
return ResultVOUtils.success(pageSimpleResponse);
|
||||
}
|
||||
|
||||
@AuthRuleAnnotation("")
|
||||
@PostMapping("/udiwms/thrsys/delThrInvOrderDetail")
|
||||
public BaseResponse delThrInvOrderDetail(@RequestBody DeleteRequest deleteRequest, BindingResult bindingResult) {
|
||||
if (bindingResult.hasErrors()) {
|
||||
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage());
|
||||
}
|
||||
String id = deleteRequest.getId();
|
||||
int b = thrInvOrderDetailService.delThrInvOrderDetail(Integer.parseInt(id));
|
||||
if (b > 0) return ResultVOUtils.success("删除成功");
|
||||
else return ResultVOUtils.error(500, "无法删除!");
|
||||
}
|
||||
|
||||
@AuthRuleAnnotation("")
|
||||
@PostMapping("/udiwms/thrsys/delThrInvOrder")
|
||||
public BaseResponse delThrInvOrder(@RequestBody DeleteRequest deleteRequest, BindingResult bindingResult) {
|
||||
if (bindingResult.hasErrors()) {
|
||||
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage());
|
||||
}
|
||||
String billNo = deleteRequest.getBillNo();
|
||||
int b = thrInvOrderService.delThrInvOrderByBillNo(billNo);
|
||||
if (b > 0) {
|
||||
thrInvOrderDetailService.delThrInvOrderDetailByBillNo(billNo);
|
||||
return ResultVOUtils.success("删除成功");
|
||||
}
|
||||
else return ResultVOUtils.error(500, "无法删除!");
|
||||
}
|
||||
|
||||
@AuthRuleAnnotation("")
|
||||
@PostMapping("/udiwms/thrsys/generateOrder")
|
||||
public BaseResponse generateOrder(@RequestBody @Valid GenerateOrderRequest generateOrderRequest, BindingResult bindingResult) {
|
||||
if (bindingResult.hasErrors()) {
|
||||
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage());
|
||||
}
|
||||
if (thrInvOrderService.generateOrder(generateOrderRequest)){
|
||||
return ResultVOUtils.success("生成成功");
|
||||
}
|
||||
return ResultVOUtils.error(500, "生成失败!");
|
||||
}
|
||||
|
||||
}
|
@ -1,9 +1,27 @@
|
||||
package com.glxp.api.dao.thrsys;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.glxp.api.entity.thrsys.ThrInvOrderDetailEntity;
|
||||
import com.glxp.api.dao.BaseMapperPlus;
|
||||
import com.glxp.api.dao.inout.IoOrderDetailBizDao;
|
||||
import com.glxp.api.entity.inout.IoOrderDetailBizEntity;
|
||||
import com.glxp.api.entity.thrsys.ThrInvOrderDetail;
|
||||
import com.glxp.api.req.thrsys.FilterThrInvOrderDetailRequest;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Mapper
|
||||
public interface ThrInvOrderDetailMapper extends BaseMapper<ThrInvOrderDetailEntity> {
|
||||
public interface ThrInvOrderDetailMapper extends BaseMapperPlus<ThrInvOrderDetailMapper, ThrInvOrderDetail, ThrInvOrderDetail> {
|
||||
int deleteByPrimaryKey(Integer id);
|
||||
|
||||
int insert(ThrInvOrderDetail record);
|
||||
|
||||
int insertSelective(ThrInvOrderDetail record);
|
||||
|
||||
ThrInvOrderDetail selectByPrimaryKey(Integer id);
|
||||
|
||||
int updateByPrimaryKeySelective(ThrInvOrderDetail record);
|
||||
|
||||
int updateByPrimaryKey(ThrInvOrderDetail record);
|
||||
|
||||
List<ThrInvOrderDetail> filterThrOrderDetailDetail(FilterThrInvOrderDetailRequest filterThrInvOrderDetailRequest);
|
||||
}
|
||||
|
@ -1,9 +1,26 @@
|
||||
package com.glxp.api.dao.thrsys;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.glxp.api.entity.thrsys.ThrInvOrderEntity;
|
||||
import com.glxp.api.dao.BaseMapperPlus;
|
||||
import com.glxp.api.entity.thrsys.ThrInvOrder;
|
||||
import com.glxp.api.entity.thrsys.ThrInvOrderDetail;
|
||||
import com.glxp.api.req.thrsys.FilterThrInvOrderRequest;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Mapper
|
||||
public interface ThrInvOrderMapper extends BaseMapper<ThrInvOrderEntity> {
|
||||
public interface ThrInvOrderMapper extends BaseMapperPlus<ThrInvOrderMapper, ThrInvOrder, ThrInvOrder> {
|
||||
int deleteByPrimaryKey(Integer id);
|
||||
|
||||
int insert(ThrInvOrder record);
|
||||
|
||||
int insertSelective(ThrInvOrder record);
|
||||
|
||||
ThrInvOrder selectByPrimaryKey(Integer id);
|
||||
|
||||
int updateByPrimaryKeySelective(ThrInvOrder record);
|
||||
|
||||
int updateByPrimaryKey(ThrInvOrder record);
|
||||
|
||||
List<ThrInvOrder> filterThrInvOrder(FilterThrInvOrderRequest filterThrInvOrderRequest);
|
||||
}
|
||||
|
@ -0,0 +1,108 @@
|
||||
package com.glxp.api.entity.thrsys;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 库存出入库明细
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@TableName(value = "thr_inv_order")
|
||||
public class ThrInvOrder implements Serializable {
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 单据号
|
||||
*/
|
||||
private String billNo;
|
||||
|
||||
/**
|
||||
* 单据时间
|
||||
*/
|
||||
private Date billDate;
|
||||
|
||||
/**
|
||||
* 库存开始时间
|
||||
*/
|
||||
private Date startDate;
|
||||
|
||||
/**
|
||||
* 库存结束时间
|
||||
*/
|
||||
private Date endDate;
|
||||
|
||||
/**
|
||||
* 出入库类型
|
||||
*/
|
||||
private String mainAction;
|
||||
|
||||
/**
|
||||
* 第三方单据类型
|
||||
*/
|
||||
private String billType;
|
||||
|
||||
/**
|
||||
* 外部系统
|
||||
*/
|
||||
private String thirdSysFk;
|
||||
|
||||
/**
|
||||
* 部门编码
|
||||
*/
|
||||
private String deptCode;
|
||||
|
||||
/**
|
||||
* 仓库编码
|
||||
*/
|
||||
private String invCode;
|
||||
|
||||
/**
|
||||
* 货位编码
|
||||
*/
|
||||
private String spaceCode;
|
||||
|
||||
/**
|
||||
* 单据状态
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createTime;
|
||||
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
private String createUser;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updateTime;
|
||||
|
||||
/**
|
||||
* 更新人
|
||||
*/
|
||||
private String updateUser;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
}
|
@ -0,0 +1,156 @@
|
||||
package com.glxp.api.entity.thrsys;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@TableName(value = "thr_inv_order_detail")
|
||||
public class ThrInvOrderDetail implements Serializable {
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Long id;
|
||||
/**
|
||||
* 单据号
|
||||
*/
|
||||
private String orderIdFk;
|
||||
|
||||
/**
|
||||
* 产品通用名称
|
||||
*/
|
||||
private String cpmctymc;
|
||||
|
||||
/**
|
||||
* 物资字典主键
|
||||
*/
|
||||
private Long relId;
|
||||
|
||||
/**
|
||||
* 第三方项目编码/耗材字典
|
||||
*/
|
||||
private String thrCode;
|
||||
|
||||
/**
|
||||
* DI
|
||||
*/
|
||||
private String nameCode;
|
||||
|
||||
/**
|
||||
* 规格型号
|
||||
*/
|
||||
private String ggxh;
|
||||
|
||||
/**
|
||||
* 批次号
|
||||
*/
|
||||
private Long batchNo;
|
||||
|
||||
/**
|
||||
* 计量单位
|
||||
*/
|
||||
private String measname;
|
||||
|
||||
/**
|
||||
* 价格
|
||||
*/
|
||||
private BigDecimal price;
|
||||
|
||||
/**
|
||||
* 生产日期
|
||||
*/
|
||||
private Date productionDate;
|
||||
|
||||
/**
|
||||
* 失效日期
|
||||
*/
|
||||
private Date expireDate;
|
||||
|
||||
/**
|
||||
* 医疗器械注册备案人
|
||||
*/
|
||||
private String ylqxzcrbarmc;
|
||||
|
||||
/**
|
||||
* 注册/备案号
|
||||
*/
|
||||
private String zczbhhzbapzbh;
|
||||
|
||||
/**
|
||||
* 入库数量
|
||||
*/
|
||||
private String inCount;
|
||||
|
||||
/**
|
||||
* 出库数量
|
||||
*/
|
||||
private String outCount;
|
||||
|
||||
/**
|
||||
* 供应商
|
||||
*/
|
||||
private String supName;
|
||||
|
||||
/**
|
||||
* 部门
|
||||
*/
|
||||
private String deptName;
|
||||
|
||||
/**
|
||||
* 部门编码
|
||||
*/
|
||||
private String deptCode;
|
||||
|
||||
/**
|
||||
* 仓库
|
||||
*/
|
||||
private String invName;
|
||||
|
||||
/**
|
||||
* 仓库编码
|
||||
*/
|
||||
private String invCode;
|
||||
|
||||
/**
|
||||
* 货位
|
||||
*/
|
||||
private String spaceCode;
|
||||
|
||||
/**
|
||||
* 货位编码
|
||||
*/
|
||||
private String spaceName;
|
||||
|
||||
/**
|
||||
* 实际数量
|
||||
*/
|
||||
private String reCount;
|
||||
|
||||
/**
|
||||
* 出入库类型
|
||||
*/
|
||||
private String mainAction;
|
||||
|
||||
/**
|
||||
* 生产企业
|
||||
*/
|
||||
private String manufacturer;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,13 @@
|
||||
package com.glxp.api.req.thrsys;
|
||||
|
||||
|
||||
import com.glxp.api.util.page.ListPageRequest;
|
||||
import lombok.Data;
|
||||
|
||||
|
||||
@Data
|
||||
public class FilterThrInvOrderDetailRequest extends ListPageRequest {
|
||||
|
||||
private String orderIdFk;
|
||||
|
||||
}
|
@ -0,0 +1,32 @@
|
||||
package com.glxp.api.req.thrsys;
|
||||
|
||||
import com.glxp.api.res.thrsys.ThrOrderResponse;
|
||||
import com.glxp.api.util.page.ListPageRequest;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class FilterThrInvOrderRequest extends ListPageRequest {
|
||||
|
||||
/**
|
||||
* 单据号
|
||||
*/
|
||||
private String billNo;
|
||||
/**
|
||||
* 外部系统
|
||||
*/
|
||||
private String thirdSysFk;
|
||||
/**
|
||||
* 开始日期
|
||||
*/
|
||||
private String startDate; //起始日期
|
||||
/**
|
||||
* 结束日期
|
||||
*/
|
||||
private String endDate; //结束日期
|
||||
/**
|
||||
* 单据类型
|
||||
*/
|
||||
private String billType;
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
package com.glxp.api.req.thrsys;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
|
||||
@Data
|
||||
public class GenerateOrderRequest {
|
||||
|
||||
/**
|
||||
* 来源单据号
|
||||
*/
|
||||
@NotEmpty(message = "来源单据号不能为空!")
|
||||
private String billNo;
|
||||
|
||||
/**
|
||||
* 业务类型
|
||||
*/
|
||||
@NotEmpty(message = "业务类型不能为空!")
|
||||
private String action;
|
||||
|
||||
/**
|
||||
* 往来单位
|
||||
*/
|
||||
@NotEmpty(message = "往来单位不能为空!")
|
||||
private String fromCorp;
|
||||
|
||||
}
|
@ -1,10 +1,14 @@
|
||||
package com.glxp.api.service.thrsys;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.glxp.api.dao.thrsys.ThrInvOrderDetailMapper;
|
||||
import com.glxp.api.entity.thrsys.ThrInvOrderDetailEntity;
|
||||
@Service
|
||||
public class ThrInvOrderDetailService extends ServiceImpl<ThrInvOrderDetailMapper, ThrInvOrderDetailEntity> {
|
||||
import com.glxp.api.entity.thrsys.ThrInvOrderDetail;
|
||||
import com.glxp.api.req.thrsys.FilterThrInvOrderDetailRequest;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface ThrInvOrderDetailService {
|
||||
public List<ThrInvOrderDetail> filterThrInvOrderDetails(FilterThrInvOrderDetailRequest filterThrInvOrderDetailRequest);
|
||||
|
||||
int delThrInvOrderDetail(Integer id);
|
||||
|
||||
int delThrInvOrderDetailByBillNo(String billNo);
|
||||
}
|
||||
|
@ -1,10 +1,35 @@
|
||||
package com.glxp.api.service.thrsys;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.glxp.api.entity.thrsys.ThrInvOrderEntity;
|
||||
import com.glxp.api.dao.thrsys.ThrInvOrderMapper;
|
||||
@Service
|
||||
public class ThrInvOrderService extends ServiceImpl<ThrInvOrderMapper, ThrInvOrderEntity> {
|
||||
import com.glxp.api.entity.thrsys.ThrInvOrder;
|
||||
import com.glxp.api.entity.thrsys.ThrSystemDetailEntity;
|
||||
import com.glxp.api.req.inv.FilterInvProductRequest;
|
||||
import com.glxp.api.req.thrsys.FilterThrInvOrderRequest;
|
||||
import com.glxp.api.req.thrsys.GenerateOrderRequest;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface ThrInvOrderService {
|
||||
|
||||
/**
|
||||
* 查询三方系统的出入库明细、进行处理
|
||||
*/
|
||||
public void handleExternalThrInvOrder(FilterInvProductRequest filterInvProductRequest);
|
||||
|
||||
void downloadInvOrder(ThrSystemDetailEntity thrSystemDetailEntity);
|
||||
|
||||
/**
|
||||
* 分忧条件查询
|
||||
* @param filterThrInvOrderRequest
|
||||
* @return
|
||||
*/
|
||||
List<ThrInvOrder> filterThrInvOrder(FilterThrInvOrderRequest filterThrInvOrderRequest);
|
||||
|
||||
int delThrInvOrderByBillNo(String billNo);
|
||||
|
||||
/**
|
||||
* 转生成单据
|
||||
* @param generateOrderRequest
|
||||
* @return
|
||||
*/
|
||||
boolean generateOrder(GenerateOrderRequest generateOrderRequest);
|
||||
}
|
||||
|
@ -0,0 +1,47 @@
|
||||
package com.glxp.api.service.thrsys.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import com.glxp.api.dao.thrsys.ThrInvOrderDetailMapper;
|
||||
import com.glxp.api.entity.thrsys.ThrInvOrderDetail;
|
||||
import com.glxp.api.entity.thrsys.ThrOrderDetailEntity;
|
||||
import com.glxp.api.req.thrsys.FilterThrInvOrderDetailRequest;
|
||||
import com.glxp.api.service.thrsys.ThrInvOrderDetailService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class ThrInvOrderDetailServiceImpl implements ThrInvOrderDetailService {
|
||||
|
||||
@Resource
|
||||
ThrInvOrderDetailMapper thrInvOrderDetailMapper;
|
||||
|
||||
@Override
|
||||
public List<ThrInvOrderDetail> filterThrInvOrderDetails(FilterThrInvOrderDetailRequest filterThrInvOrderDetailRequest) {
|
||||
if (filterThrInvOrderDetailRequest == null) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
if (filterThrInvOrderDetailRequest.getPage() != null) {
|
||||
int offset = (filterThrInvOrderDetailRequest.getPage() - 1) * filterThrInvOrderDetailRequest.getLimit();
|
||||
PageHelper.offsetPage(offset, filterThrInvOrderDetailRequest.getLimit());
|
||||
}
|
||||
List<ThrInvOrderDetail> data = thrInvOrderDetailMapper.filterThrOrderDetailDetail(filterThrInvOrderDetailRequest);
|
||||
return data;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int delThrInvOrderDetail(Integer id) {
|
||||
return thrInvOrderDetailMapper.deleteByPrimaryKey(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int delThrInvOrderDetailByBillNo(String billNo) {
|
||||
UpdateWrapper<ThrInvOrderDetail> uw = new UpdateWrapper<>();
|
||||
uw.eq("orderIdFk",billNo);
|
||||
return thrInvOrderDetailMapper.delete(uw);
|
||||
}
|
||||
}
|
@ -0,0 +1,307 @@
|
||||
package com.glxp.api.service.thrsys.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import com.glxp.api.common.res.BaseResponse;
|
||||
import com.glxp.api.constant.Constant;
|
||||
import com.glxp.api.constant.ConstantStatus;
|
||||
import com.glxp.api.constant.ConstantType;
|
||||
import com.glxp.api.dao.thrsys.ThrInvOrderDetailMapper;
|
||||
import com.glxp.api.dao.thrsys.ThrInvOrderMapper;
|
||||
import com.glxp.api.entity.basic.BasicSkProjectDetailEntity;
|
||||
import com.glxp.api.entity.inout.IoOrderDetailBizEntity;
|
||||
import com.glxp.api.entity.inout.IoOrderEntity;
|
||||
import com.glxp.api.entity.system.SystemParamConfigEntity;
|
||||
import com.glxp.api.entity.thrsys.ThrInvOrder;
|
||||
import com.glxp.api.entity.thrsys.ThrInvOrderDetail;
|
||||
import com.glxp.api.entity.thrsys.ThrOrderEntity;
|
||||
import com.glxp.api.entity.thrsys.ThrSystemDetailEntity;
|
||||
import com.glxp.api.http.ErpInvClient;
|
||||
import com.glxp.api.req.inv.FilterInvProductRequest;
|
||||
import com.glxp.api.req.thrsys.FilterThrInvOrderRequest;
|
||||
import com.glxp.api.req.thrsys.GenerateOrderRequest;
|
||||
import com.glxp.api.res.PageSimpleResponse;
|
||||
import com.glxp.api.res.inv.ThrInvResultResponse;
|
||||
import com.glxp.api.service.auth.CustomerService;
|
||||
import com.glxp.api.service.basic.impl.BasicDestinyRelService;
|
||||
import com.glxp.api.service.inout.IoOrderDetailBizService;
|
||||
import com.glxp.api.service.inout.IoOrderService;
|
||||
import com.glxp.api.service.system.SystemParamConfigService;
|
||||
import com.glxp.api.service.thrsys.ThrInvOrderService;
|
||||
import com.glxp.api.util.GennerOrderUtils;
|
||||
import com.glxp.api.util.OrderNoTypeBean;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public class ThrInvOrderServiceImpl implements ThrInvOrderService {
|
||||
|
||||
@Resource
|
||||
ErpInvClient erpInvClient;
|
||||
@Resource
|
||||
BasicDestinyRelService basicDestinyRelService;
|
||||
@Resource
|
||||
ThrInvOrderMapper thrInvOrderMapper;
|
||||
@Resource
|
||||
ThrInvOrderDetailMapper thrInvOrderDetailMapper;
|
||||
@Resource
|
||||
SystemParamConfigService systemParamConfigService;
|
||||
@Resource
|
||||
GennerOrderUtils gennerOrderUtils;
|
||||
@Resource
|
||||
CustomerService customerService;
|
||||
@Resource
|
||||
IoOrderService ioOrderService;
|
||||
@Resource
|
||||
IoOrderDetailBizService ioOrderDetailBizService;
|
||||
|
||||
// 设置要输出的日期格式
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
|
||||
|
||||
@Override
|
||||
public void handleExternalThrInvOrder(FilterInvProductRequest filterInvProductRequest) {
|
||||
BaseResponse<PageSimpleResponse<ThrInvResultResponse>> baseResponse = erpInvClient.getInvResult(filterInvProductRequest);
|
||||
if (baseResponse.getCode() == 20000) {
|
||||
List<ThrInvResultResponse> list = baseResponse.getData().getList();
|
||||
if (CollectionUtil.isNotEmpty(list)) {
|
||||
String billNo = generateBillNo(filterInvProductRequest);//单据号
|
||||
//处理 返回实体 转换成 单据 和 单据明细
|
||||
List<ThrInvOrderDetail> thrInvOrderDetails = new ArrayList<>();
|
||||
handleExternalConvertThrInvOrderDetail(list, thrInvOrderDetails, billNo);
|
||||
|
||||
if (CollectionUtil.isNotEmpty(thrInvOrderDetails)) {
|
||||
ThrInvOrder thrInvOrder = new ThrInvOrder();
|
||||
handleExternalConvertThrInvOrder(billNo, filterInvProductRequest, thrInvOrder, list.get(0));
|
||||
|
||||
//保存数据
|
||||
thrInvOrderMapper.insert(thrInvOrder);
|
||||
thrInvOrderDetailMapper.insertBatch(thrInvOrderDetails);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void downloadInvOrder(ThrSystemDetailEntity thrSystemDetailEntity) {
|
||||
log.info("自动抓取第三方出入库明细生成单据定时任务开始");
|
||||
FilterInvProductRequest filterInvProductRequest = new FilterInvProductRequest();
|
||||
filterInvProductRequest.setThirdSys(thrSystemDetailEntity.getThirdSysFk());
|
||||
filterInvProductRequest.setThirdSysUrlValue(thrSystemDetailEntity.getValue());
|
||||
String days = getBeginAndEndDateByDays(1);
|
||||
|
||||
filterInvProductRequest.setStartDate(stringToDate(days + " 00:00:00"));
|
||||
filterInvProductRequest.setEndDate(stringToDate(days + " 23:59:59"));
|
||||
handleExternalThrInvOrder(filterInvProductRequest);
|
||||
log.info("自动抓取第三方出入库明细生成单据定时任务结束");
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ThrInvOrder> filterThrInvOrder(FilterThrInvOrderRequest filterThrInvOrderRequest) {
|
||||
if (filterThrInvOrderRequest == null) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
if (filterThrInvOrderRequest.getPage() != null) {
|
||||
int offset = (filterThrInvOrderRequest.getPage() - 1) * filterThrInvOrderRequest.getLimit();
|
||||
PageHelper.offsetPage(offset, filterThrInvOrderRequest.getLimit());
|
||||
}
|
||||
List<ThrInvOrder> data = thrInvOrderMapper.filterThrInvOrder(filterThrInvOrderRequest);
|
||||
return data;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int delThrInvOrderByBillNo(String billNo) {
|
||||
UpdateWrapper<ThrInvOrder> uw = new UpdateWrapper<>();
|
||||
uw.eq("billNo", billNo);
|
||||
return thrInvOrderMapper.delete(uw);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean generateOrder(GenerateOrderRequest generateOrderRequest) {
|
||||
String billNo = generateOrderRequest.getBillNo();
|
||||
//通过单号获取单据信息
|
||||
QueryWrapper<ThrInvOrder> qw = new QueryWrapper<>();
|
||||
qw.eq("billNo",billNo);
|
||||
ThrInvOrder thrInvOrder = thrInvOrderMapper.selectOne(qw);
|
||||
if (Objects.isNull(thrInvOrder)) return false;
|
||||
|
||||
//通过单号获取单据明细信息
|
||||
QueryWrapper<ThrInvOrderDetail> qwd = new QueryWrapper<>();
|
||||
qwd.eq("orderIdFk",billNo);
|
||||
List<ThrInvOrderDetail> thrInvOrderDetails = thrInvOrderDetailMapper.selectList(qwd);
|
||||
if (CollectionUtil.isNotEmpty(thrInvOrderDetails)) return false;
|
||||
|
||||
//新单号
|
||||
String newBillNo = gennerOrderUtils.createScOrderNo(new OrderNoTypeBean(Constant.SCAN_ORDER, "yyyyMMdd"));
|
||||
|
||||
IoOrderEntity ioOrderEntity = new IoOrderEntity();
|
||||
ioOrderEntity.setBillNo(newBillNo);
|
||||
ioOrderEntity.setMainAction(thrInvOrder.getMainAction());
|
||||
ioOrderEntity.setFromCorp(generateOrderRequest.getFromCorp());
|
||||
ioOrderEntity.setInvCode(thrInvOrder.getInvCode());
|
||||
ioOrderEntity.setDeptCode(thrInvOrder.getDeptCode());
|
||||
|
||||
ioOrderEntity.setFromType(ConstantStatus.FROM_THRORDER);//网页新增
|
||||
ioOrderEntity.setStatus(ConstantStatus.ORDER_STATUS_TEMP_SAVE);//草稿
|
||||
ioOrderEntity.setDealStatus(ConstantStatus.ORDER_DEAL_DRAFT);//草稿
|
||||
ioOrderEntity.setCorpOrderId(billNo);//单据号
|
||||
ioOrderEntity.setUpdateTime(new Date());
|
||||
ioOrderEntity.setCreateTime(new Date());
|
||||
Long userId = customerService.getUserId();
|
||||
ioOrderEntity.setCreateUser(userId + "");
|
||||
ioOrderEntity.setUpdateUser(userId + "");
|
||||
ioOrderEntity.setOrderType(ConstantStatus.ORDER_TYPE_NORMAL);//正常单据处理
|
||||
|
||||
List<IoOrderDetailBizEntity> newOrderDetailBiz = new ArrayList<>(thrInvOrderDetails.size());
|
||||
if (!copyOrderDetailBiz(thrInvOrderDetails,newOrderDetailBiz)){
|
||||
return false;
|
||||
}
|
||||
|
||||
ioOrderService.insertOrder(ioOrderEntity);
|
||||
return ioOrderDetailBizService.batchInsertBizs(newOrderDetailBiz);
|
||||
}
|
||||
|
||||
private boolean copyOrderDetailBiz(List<ThrInvOrderDetail> thrInvOrderDetails, List<IoOrderDetailBizEntity> newOrderDetailBiz) {
|
||||
/**
|
||||
* 1、获取产品的集合列表信息
|
||||
* 2、遍历封装
|
||||
*/
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成单号 SFIO + 6位起始日期 + 6位结束日期 + 6位随机
|
||||
*
|
||||
* @param filterInvProductRequest
|
||||
* @return
|
||||
*/
|
||||
private String generateBillNo(FilterInvProductRequest filterInvProductRequest) {
|
||||
String startDate = sdf.format(filterInvProductRequest.getStartDate()).substring(2);
|
||||
String endDate = sdf.format(filterInvProductRequest.getEndDate()).substring(2);
|
||||
Integer random = new Random().nextInt(900000) + 100000;
|
||||
return Constant.TRIPARTITE_INV_ORDER + startDate + endDate + random;
|
||||
}
|
||||
|
||||
/**
|
||||
* 将三方的出入库明细列表 转换为 系统的出入库单据
|
||||
*
|
||||
* @param filterInvProductRequest
|
||||
* @param thrInvOrder
|
||||
* @param thrInvResultResponse
|
||||
*/
|
||||
private void handleExternalConvertThrInvOrder(String billNo, FilterInvProductRequest filterInvProductRequest, ThrInvOrder thrInvOrder, ThrInvResultResponse thrInvResultResponse) {
|
||||
|
||||
Date newDate = new Date();
|
||||
thrInvOrder.setBillNo(billNo);//单据号
|
||||
thrInvOrder.setBillDate(newDate);//单据时间
|
||||
thrInvOrder.setStartDate(filterInvProductRequest.getStartDate());//库存开始时间
|
||||
thrInvOrder.setEndDate(filterInvProductRequest.getEndDate());//库存结束时间
|
||||
thrInvOrder.setMainAction(thrInvResultResponse.getMainAction());//出入库类型
|
||||
thrInvOrder.setBillType(thrInvResultResponse.getMainAction());//第三方单据类型
|
||||
thrInvOrder.setThirdSysFk(filterInvProductRequest.getThirdSys());//外部系统
|
||||
thrInvOrder.setDeptCode(thrInvResultResponse.getDeptCode());//部门编号
|
||||
thrInvOrder.setInvCode(thrInvResultResponse.getInvCode());//仓库代码
|
||||
thrInvOrder.setSpaceCode(thrInvResultResponse.getSpaceCode());//货位编码
|
||||
thrInvOrder.setStatus(ConstantStatus.SFIO_DRAFT);//单据状态 草稿
|
||||
thrInvOrder.setCreateTime(newDate);
|
||||
thrInvOrder.setCreateUser("系统自动");
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 将三方的出入库明细列表 转换为 系统的出入库单据明细
|
||||
*
|
||||
* @param list
|
||||
* @param thrInvOrderDetails
|
||||
* @param billNo
|
||||
*/
|
||||
private void handleExternalConvertThrInvOrderDetail(List<ThrInvResultResponse> list, List<ThrInvOrderDetail> thrInvOrderDetails, String billNo) {
|
||||
Integer inv_set_enable = Integer.valueOf(systemParamConfigService.selectValueByParamKey("inv_set_enable"));
|
||||
if (inv_set_enable == null || inv_set_enable == 0) {
|
||||
list.forEach(item -> {
|
||||
String mainAction = item.getMainAction();
|
||||
Integer count = 0;
|
||||
if (ConstantType.TYPE_PUT.equals(mainAction)) {
|
||||
count = Integer.valueOf(item.getInCount());
|
||||
} else {
|
||||
count = Integer.valueOf(item.getOutCount());
|
||||
}
|
||||
ThrInvOrderDetail thrInvOrderDetail = new ThrInvOrderDetail();
|
||||
BeanUtils.copyProperties(item, thrInvOrderDetail);
|
||||
thrInvOrderDetail.setOrderIdFk(billNo);
|
||||
thrInvOrderDetail.setRelId(Long.parseLong(item.getThrCode()));
|
||||
thrInvOrderDetail.setReCount(String.valueOf(count));
|
||||
thrInvOrderDetails.add(thrInvOrderDetail);
|
||||
});
|
||||
} else {
|
||||
list.forEach(item -> {
|
||||
String thrCode = item.getThrCode();
|
||||
String mainAction = item.getMainAction();
|
||||
Integer count = 0;
|
||||
if (ConstantType.TYPE_PUT.equals(mainAction)) {
|
||||
count = Integer.valueOf(item.getInCount());
|
||||
} else {
|
||||
count = Integer.valueOf(item.getOutCount());
|
||||
}
|
||||
//通过thrCode获取到项目组套
|
||||
List<BasicSkProjectDetailEntity> skProjectDetailEntityList = basicDestinyRelService.filterDestinyRelListByPId(thrCode);
|
||||
if (CollectionUtil.isNotEmpty(skProjectDetailEntityList) && count > 0) {
|
||||
Integer finalCount = count;
|
||||
skProjectDetailEntityList.forEach(sk -> {
|
||||
ThrInvOrderDetail thrInvOrderDetail = new ThrInvOrderDetail();
|
||||
BeanUtils.copyProperties(item, thrInvOrderDetail);
|
||||
thrInvOrderDetail.setOrderIdFk(billNo);
|
||||
thrInvOrderDetail.setRelId(sk.getRelId());
|
||||
Integer skCount = sk.getCount();
|
||||
if (skCount != null && skCount > 0) {
|
||||
thrInvOrderDetail.setReCount(String.valueOf(skCount * finalCount));
|
||||
thrInvOrderDetails.add(thrInvOrderDetail);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取距离当前时间日期(n天)的开始时间和结束时间
|
||||
*
|
||||
* @param n
|
||||
* @return
|
||||
*/
|
||||
public static String getBeginAndEndDateByDays(int n) {
|
||||
Date date = new Date();//取时间
|
||||
Calendar calendar = new GregorianCalendar();
|
||||
calendar.setTime(date);
|
||||
calendar.add(calendar.DATE, -1);//把日期往前减少一天,若想把日期向后推一天则将负数改为正数
|
||||
date = calendar.getTime();
|
||||
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
|
||||
return formatter.format(date);
|
||||
}
|
||||
|
||||
public static Date stringToDate(String time) {
|
||||
SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
Date date = null;
|
||||
try {
|
||||
date = dateformat.parse(time);
|
||||
} catch (ParseException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return date;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue