1.新增预验收库存产品信息,库存产品信息详情;

2.更改预验收出库扫码校验流程;
3.更改预验收生成库存流程;
4.新增预验收出库后生成退货单;
5.更改预验收出库后扣减数量流程
master
anthonywj 2 years ago
parent b337627cb6
commit 9c16967583

@ -235,10 +235,12 @@ public class Constant {
* supInvoice
* norDetail
* preDetail
* preInDetail
*/
public static final String ORDER_ACTION_NOR_DETAIL = "norDetail";
public static final String ORDER_ACTION_PRE_DETAIL = "preDetail";
public static final String ORDER_ACTION_PREIN_DETAIL = "preInDetail";
public static final String ORDER_ACTION_SUP_DELIVERY = "supDelivery";
public static final String ORDER_ACTION_SUP_INVOICE = "supInvoice";
public static final String ORDER_ACTION_SUP_DELAUDIT = "supDelAudit";

@ -452,8 +452,8 @@ public class IoCodeTempController extends BaseController {
//校验预验收是否已存在
if (bussinessTypeEntity.getActionType() == ConstantStatus.ACTION_TYPE_PREIN) {
if (StrUtil.isNotEmpty(udiEntity.getSerialNo())) {
List<InvPreinDetailEntity> invProductDetailEntities = invPreinDetailService.findUseByCode(code);
if (CollUtil.isNotEmpty(invProductDetailEntities)) {
int count = invPreinDetailService.findCountByCode(code);
if (count > 0) {
return ResultVOUtils.error(500, "预验收库存已存在此UDI码,请检查后重试!");
}
}
@ -461,31 +461,27 @@ public class IoCodeTempController extends BaseController {
//校验预验收库存是否已存在
if (bussinessTypeEntity.isScanPreIn()) {
InvPreinDetailEntity invProductDetailEntity = invPreinDetailService.findUseOneByCode(code);
if (invProductDetailEntity == null) {
return ResultVOUtils.error(500, "预验收库存未存在此产品!");
int preInCount = invPreinDetailService.findCountByCode(code);
InvPreinDetailEntity invPreinDetailEntity = invPreinDetailService.findUseOneByCode(code);
if (preInCount <= 0) {
return ResultVOUtils.error(500, "预验收库存数量不足!");
} else {
if (StrUtil.isNotEmpty(invProductDetailEntity.getBatchNo()) && StrUtil.isNotEmpty(addOrderRequest.getBatchNo())
&& !invProductDetailEntity.getBatchNo().equals(addOrderRequest.getBatchNo())) {
if (StrUtil.isNotEmpty(invPreinDetailEntity.getBatchNo()) && StrUtil.isNotEmpty(addOrderRequest.getBatchNo())
&& !invPreinDetailEntity.getBatchNo().equals(addOrderRequest.getBatchNo())) {
return ResultVOUtils.error(500, "当前批次号与预验收录入批次号不匹配!");
}
if (StrUtil.isNotEmpty(orderId)) {//非首次添加
if (StrUtil.isEmpty(udiEntity.getSerialNo())) {//该单据已有该产品
//无序列号,则可能存在多个预验收入库单
IoCodeTempEntity codeTempEntity = codeTempService.findByUnique(orderId, code);
List<InvPreinDetailEntity> invPreinDetailEntities = invPreinDetailService.findUseByCode(code);
int count = 0;
for (InvPreinDetailEntity temp : invPreinDetailEntities) {
count = count + temp.getCount();
}
if (codeTempEntity != null) {
if (count < (codeTempEntity.getMyCount() + 1)) {
if (preInCount < (codeTempEntity.getMyCount() + 1)) {
return ResultVOUtils.error(500, "超出预验收库存数量");
}
}
} else {
if (invProductDetailEntity.getCount() < 1) {
return ResultVOUtils.error(500, "超出预验收库存数量");
if (preInCount < 1) {
return ResultVOUtils.error(500, "预验收库存数量不足");
}
}
}

@ -0,0 +1,105 @@
package com.glxp.api.controller.inv;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.github.pagehelper.PageInfo;
import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.common.util.ResultVOUtils;
import com.glxp.api.entity.inv.InvPreInProductDetailEntity;
import com.glxp.api.entity.inv.InvPreProductDetailEntity;
import com.glxp.api.req.inv.FilterInvPreProductDetailRequest;
import com.glxp.api.req.inv.FilterInvPreinDetailRequest;
import com.glxp.api.req.inv.FilterInvPreinProductRequest;
import com.glxp.api.res.PageSimpleResponse;
import com.glxp.api.res.inv.InvPreProductDetailResponse;
import com.glxp.api.res.inv.InvPreProductPageResponse;
import com.glxp.api.res.inv.InvPreinDetailResponse;
import com.glxp.api.res.inv.InvPreinProductResponse;
import com.glxp.api.service.auth.CustomerService;
import com.glxp.api.service.auth.WarehouseUserService;
import com.glxp.api.service.inv.InvPreinDetailService;
import com.glxp.api.service.inv.InvPreinProductDetailService;
import com.glxp.api.service.inv.InvPreinProductService;
import com.glxp.api.util.udi.FilterUdiUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
*
*/
@Slf4j
@RestController
public class InvPreinProductController {
@Resource
private InvPreinProductDetailService invPreinProductDetailService;
@Resource
private InvPreinProductService invPreinProductService;
@Resource
private WarehouseUserService warehouseUserService;
@Resource
private CustomerService customerService;
/**
*
*
* @param filterInvPreinProductRequest
* @return
*/
@GetMapping("/spms/inv/pre/in/product/filter")
public BaseResponse filterList(FilterInvPreinProductRequest filterInvPreinProductRequest) {
boolean showSup = false; //前端控制表格显示字段
if (StrUtil.isNotBlank(filterInvPreinProductRequest.getUdiCode())) {
filterInvPreinProductRequest.setNameCode(FilterUdiUtils.getDiStr(filterInvPreinProductRequest.getUdiCode()));
}
if (StrUtil.isBlank(filterInvPreinProductRequest.getInvCode())) {
List<String> invCodes = warehouseUserService.selectCodeByUser(customerService.getUserIdStr());
if (CollUtil.isNotEmpty(invCodes)) {
filterInvPreinProductRequest.setInvCodes(invCodes);
}
}
List<InvPreinProductResponse> list = invPreinProductService.filterList(filterInvPreinProductRequest);
PageInfo<InvPreinProductResponse> pageInfo = new PageInfo<>(list);
InvPreProductPageResponse<InvPreinProductResponse> pageResponse = new InvPreProductPageResponse<>();
pageResponse.setList(pageInfo.getList());
pageResponse.setTotal(pageInfo.getTotal());
pageResponse.setShowSup(showSup);
return ResultVOUtils.success(pageResponse);
}
/**
*
*
* @param detailRequest
* @return
*/
@GetMapping("/spms/inv/pre/in/product/filterDetail")
public BaseResponse filterInvPreProductDetail(FilterInvPreProductDetailRequest detailRequest) {
List<InvPreInProductDetailEntity> invPreProductDetailEntities = invPreinProductDetailService.filterPreProductDetailList(detailRequest);
PageInfo<InvPreInProductDetailEntity> pageInfo = new PageInfo<>(invPreProductDetailEntities);
List<InvPreProductDetailResponse> list = new ArrayList<>();
if (CollUtil.isNotEmpty(invPreProductDetailEntities)) {
invPreProductDetailEntities.forEach(invPreProductDetailEntity -> {
InvPreProductDetailResponse response = new InvPreProductDetailResponse();
BeanUtil.copyProperties(invPreProductDetailEntity, response);
//设置单据类型名称等单据相关参数
invPreinProductDetailService.setOrderInfo(response);
list.add(response);
});
}
PageSimpleResponse<InvPreProductDetailResponse> pageSimpleResponse = new PageSimpleResponse<>();
pageSimpleResponse.setList(list);
pageSimpleResponse.setTotal(pageInfo.getTotal());
return ResultVOUtils.success(pageSimpleResponse);
}
}

@ -0,0 +1,30 @@
package com.glxp.api.dao.inv;
import com.glxp.api.dao.BaseMapperPlus;
import com.glxp.api.entity.inv.InvPreInProductDetailEntity;
import com.glxp.api.req.inv.FilterInvPreProductDetailRequest;
import com.glxp.api.req.inv.FilterInvProductDetailRequest;
import java.util.List;
/**
* Dao
*/
public interface InvPreInProductDetailDao extends BaseMapperPlus<InvPreInProductDetailDao, InvPreInProductDetailEntity, InvPreInProductDetailEntity> {
/**
*
*
* @param filterInvPreProductDetailRequest
* @return
*/
List<InvPreInProductDetailEntity> filterPreProductDetailList(FilterInvPreProductDetailRequest filterInvPreProductDetailRequest);
/**
*
*
* @param detailRequest
* @return
*/
boolean deleteInvPreProductDetail(FilterInvProductDetailRequest detailRequest);
}

@ -0,0 +1,31 @@
package com.glxp.api.dao.inv;
import com.glxp.api.dao.BaseMapperPlus;
import com.glxp.api.entity.inv.InvPreinProductEntity;
import com.glxp.api.req.inv.FilterInvPreinProductRequest;
import com.glxp.api.res.inv.InvPreinProductResponse;
import java.util.List;
/**
* Dao
*/
public interface InvPreinProductDao extends BaseMapperPlus<InvPreinProductDao, InvPreinProductEntity, InvPreinProductEntity> {
/**
* VO
*
* @param invPreProductRequest
* @return
*/
List<InvPreinProductResponse> filterList(FilterInvPreinProductRequest invPreProductRequest);
/**
*
*
* @param invPreProductRequest
* @return
*/
List<InvPreinProductEntity> filterPreProductList(FilterInvPreinProductRequest invPreProductRequest);
}

@ -397,4 +397,8 @@ public class BasicBussinessTypeEntity {
private boolean checkCertExpire;
@TableField(value = "preInBackAction")
private String preInBackAction;
}

@ -0,0 +1,167 @@
package com.glxp.api.entity.inv;
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 lombok.Data;
import java.util.Date;
/**
*
*/
@Data
@TableName(value = "inv_pre_product_detail")
public class InvPreInProductDetailEntity {
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
/**
* UDI
*/
@TableField(value = "code")
private String code;
/**
*
*/
@TableField(value = "mainAction")
private String mainAction;
/**
*
*/
@TableField(value = "`action`")
private String action;
/**
*
*/
@TableField(value = "orderId")
private String orderId;
/**
* ID
*/
@TableField(value = "relId")
private Long relId;
/**
*
*/
@TableField(value = "nameCode")
private String nameCode;
/**
*
*/
@TableField(value = "batchNo")
private String batchNo;
/**
*
*/
@TableField(value = "produceDate")
private String produceDate;
/**
*
*/
@TableField(value = "expireDate")
private String expireDate;
/**
*
*/
@TableField(value = "serialNo")
private String serialNo;
/**
*
*/
@TableField(value = "supId")
private String supId;
/**
*
*/
@TableField(value = "`count`")
private int count;
/**
*
*/
@TableField(value = "reCount")
private int reCount;
/**
*
*/
@TableField(value = "deptCode")
private String deptCode;
/**
*
*/
@TableField(value = "invCode")
private String invCode;
/**
*
*/
@TableField(value = "invSpaceCode")
private String invSpaceCode;
/**
*
*/
@TableField(value = "purchaseType")
private Integer purchaseType;
/**
*
*/
@TableField(value = "updateTime")
private Date updateTime;
public static final String COL_ID = "id";
public static final String COL_CODE = "code";
public static final String COL_MAINACTION = "mainAction";
public static final String COL_ACTION = "action";
public static final String COL_ORDERID = "orderId";
public static final String COL_RELID = "relId";
public static final String COL_NAMECODE = "nameCode";
public static final String COL_BATCHNO = "batchNo";
public static final String COL_PRODUCEDATE = "produceDate";
public static final String COL_EXPIREDATE = "expireDate";
public static final String COL_SERIALNO = "serialNo";
public static final String COL_SUPID = "supId";
public static final String COL_COUNT = "count";
public static final String COL_RECOUNT = "reCount";
public static final String COL_DEPTCODE = "deptCode";
public static final String COL_INVCODE = "invCode";
public static final String COL_INVSPACECODE = "invSpaceCode";
public static final String COL_PURCHASETYPE = "purchaseType";
public static final String COL_UPDATETIME = "updateTime";
}

@ -125,6 +125,8 @@ public class InvPreProductDetailEntity {
@TableField(value = "updateTime")
private Date updateTime;
public static final String COL_ID = "id";
public static final String COL_CODE = "code";

@ -91,4 +91,9 @@ public class InvPreinDetailEntity {
@TableField(value = "status")
private int status;
@TableField(value = "mainAction")
private String mainAction;
@TableField(value = "action")
private String action;
}

@ -0,0 +1,133 @@
package com.glxp.api.entity.inv;
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 lombok.Data;
import java.util.Date;
/**
*
*/
@Data
@TableName(value = "inv_prein_product")
public class InvPreinProductEntity {
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
/**
* ID
*/
@TableField(value = "relIdFk")
private Long relIdFk;
/**
*
*/
@TableField(value = "nameCode")
private String nameCode;
/**
*
*/
@TableField(value = "batchNo")
private String batchNo;
/**
*
*/
@TableField(value = "productionDate")
private String productionDate;
/**
*
*/
@TableField(value = "expireDate")
private String expireDate;
/**
*
*/
@TableField(value = "inCount")
private int inCount;
/**
*
*/
@TableField(value = "outCount")
private int outCount;
/**
*
*/
@TableField(value = "reCount")
private int reCount;
/**
* ID
*/
@TableField(value = "customerId")
private String customerId;
/**
* ID
*/
@TableField(value = "supId")
private String supId;
/**
*
*/
@TableField(value = "deptCode")
private String deptCode;
/**
*
*/
@TableField(value = "invCode")
private String invCode;
/**
*
*/
@TableField(value = "createTime")
private Date createTime;
/**
*
*/
@TableField(value = "updateTime")
private Date updateTime;
public static final String COL_ID = "id";
public static final String COL_RELIDFK = "relIdFk";
public static final String COL_NAMECODE = "nameCode";
public static final String COL_BATCHNO = "batchNo";
public static final String COL_PRODUCTIONDATE = "productionDate";
public static final String COL_EXPIREDATE = "expireDate";
public static final String COL_INCOUNT = "inCount";
public static final String COL_OUTCOUNT = "outCount";
public static final String COL_RECOUNT = "reCount";
public static final String COL_CUSTOMERID = "customerId";
public static final String COL_SUPID = "supId";
public static final String COL_DEPTCODE = "deptCode";
public static final String COL_INVCODE = "invCode";
public static final String COL_CREATETIME = "createTime";
public static final String COL_UPDATETIME = "updateTime";
}

@ -298,6 +298,7 @@ public class BussinessTypeSaveRequest {
private boolean checkVailDate;
private boolean checkExpire;
private boolean checkCertExpire;
private String preInBackAction;
}

@ -0,0 +1,101 @@
package com.glxp.api.req.inv;
import com.glxp.api.util.page.ListPageRequest;
import lombok.Data;
import java.util.List;
/**
*
*/
@Data
public class FilterInvPreinProductRequest extends ListPageRequest {
private String id;
/**
*
*/
private String cpmctymc;
/**
* DI
*/
private String nameCode;
/**
* UDI
*/
private String udiCode;
/**
* ID
*/
private String relIdFk;
/**
*
*/
private String ggxh;
/**
*
*/
private String batchNo;
/**
*
*/
private String productionDate;
/**
*
*/
private String expireDate;
/**
*
*/
private String ylqxzcrbarmc;
/**
*
*/
private String zczbhhzbapzbh;
/**
* ID
*/
private String customerId;
/**
* ID
*/
private String supId;
/**
*
*/
private String supName;
/**
*
*/
private String deptCode;
/**
*
*/
private String invCode;
/**
*
*/
private List<String> invCodes;
/**
*
*/
private String cplb;
}

@ -147,5 +147,5 @@ public class BasicBussinessTypeResponse {
private boolean checkVailDate;
private boolean checkExpire;
private boolean checkCertExpire;
private String preInBackAction;
}

@ -1,10 +1,9 @@
package com.glxp.api.res.inv;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import java.util.Date;
@Data
public class InvPreinDetailResponse {
@ -75,4 +74,71 @@ public class InvPreinDetailResponse {
private String fromName;
/**
*
*/
private String supId;
/**
*
*/
private String deptCode;
/**
*
*/
private String invCode;
/**
*
*/
private String invSpaceCode;
/**
*
*/
private Integer purchaseType;
/**
*
*/
private Date updateTime;
/**
*
*/
private String mainAction;
/**
*
*/
private String action;
/**
*
*/
private String actionName;
/**
*
*/
private String mainActionStr;
/**
*
*/
private Integer inCount;
/**
*
*/
private Integer outCount;
/**
*
*/
private String orderTime;
}

@ -0,0 +1,108 @@
package com.glxp.api.res.inv;
import lombok.Data;
/**
* VO
*/
@Data
public class InvPreinProductResponse {
private Integer id;
/**
* DI
*/
private String nameCode;
/**
*
*/
private String cpmctymc;
/**
* ID
*/
private String relIdFk;
/**
*
*/
private String ggxh;
/**
*
*/
private String batchNo;
/**
*
*/
private String productionDate;
/**
*
*/
private String expireDate;
/**
*
*/
private String ylqxzcrbarmc;
/**
*
*/
private String zczbhhzbapzbh;
/**
*
*/
private int inCount;
/**
*
*/
private int outCount;
/**
*
*/
private int reCount;
/**
* ID
*/
private String customerId;
/**
*
*/
private String supName;
/**
* ID
*/
private String supId;
/**
*
*/
private String deptName;
/**
*
*/
private String invName;
/**
*
*/
private String deptCode;
/**
*
*/
private String invCode;
}

@ -209,13 +209,17 @@ public class BasicBussinessTypeServiceImpl implements IBasicBussinessTypeService
switch (vueType) {
case Constant.ORDER_ACTION_NOR_DETAIL:
bussinessTypeEntities = basicBussinessTypeDao.selectList(new QueryWrapper<BasicBussinessTypeEntity>()
.eq("actionType", 1).eq("inStock", true));
.eq("actionType", 1).eq("inStock", true).eq("enable", true));
break;
case Constant.ORDER_ACTION_PRE_DETAIL:
bussinessTypeEntities = basicBussinessTypeDao.selectList(new QueryWrapper<BasicBussinessTypeEntity>()
.eq("actionType", 3).eq("inStock", true).eq("enable", true));
break;
case Constant.ORDER_ACTION_PREIN_DETAIL:
bussinessTypeEntities = basicBussinessTypeDao.selectList(new QueryWrapper<BasicBussinessTypeEntity>()
.eq("actionType", 2).eq("inStock", true).eq("enable", true));
break;
case Constant.ORDER_ACTION_SUP_DELIVERY:
//允许送货单直接入库变更库存,则不判断送货单是否入库
String deliveryInstock = systemParamConfigService.selectValueByParamKey("deliveryInstock");

@ -218,11 +218,7 @@ public class IoChangeInoutService {
outOrder.setInvCode(invWarehouseEntity.getCode());
outOrder.setDeptCode(invWarehouseEntity.getParentId());
SystemParamConfigEntity systemParamConfigEntity = systemParamConfigService.selectByParamKey("additional_auto_submit");
if ("1".equals(systemParamConfigEntity.getParamValue())) {
outOrder.setStatus(ConstantStatus.ORDER_STATUS_PROCESS);
} else {
outOrder.setStatus(ConstantStatus.ORDER_STATUS_ADDITIONAL);
}
//互填单号
orderEntity.setUllageSupNo(outOrder.getBillNo());

@ -2,13 +2,16 @@ package com.glxp.api.service.inout;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.lang.UUID;
import cn.hutool.core.thread.ThreadUtil;
import cn.hutool.core.util.StrUtil;
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.entity.basic.BasicBussinessTypeEntity;
import com.glxp.api.entity.basic.UdiEntity;
import com.glxp.api.entity.inout.*;
import com.glxp.api.entity.inv.InvInnerOrderPdfTempEntity;
import com.glxp.api.entity.inv.InvPreinDetailEntity;
import com.glxp.api.res.inout.IoOrderCheckResultResponse;
import com.glxp.api.res.inout.IoOrderDetailBizResponse;
@ -16,18 +19,26 @@ import com.glxp.api.res.inout.IoOrderDetailCodeResponse;
import com.glxp.api.service.basic.IBasicBussinessTypeService;
import com.glxp.api.service.inv.InvPreinDetailService;
import com.glxp.api.service.inv.InvPreinOrderService;
import com.glxp.api.util.CustomUtil;
import com.glxp.api.util.GennerOrderUtils;
import com.glxp.api.util.JasperUtils;
import com.glxp.api.util.OrderNoTypeBean;
import com.glxp.api.util.udi.FilterUdiUtils;
import net.sf.jasperreports.engine.JRException;
import org.springframework.beans.BeanUtils;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.io.IOException;
import java.util.*;
/**
*
*/
@Service
@Transactional(rollbackFor = Exception.class)
public class IoCheckInoutService {
@Resource
@ -48,6 +59,8 @@ public class IoCheckInoutService {
InvPreinDetailService invPreinDetailService;
@Resource
IoGenInvService genInvService;
@Resource
IoAddInoutService addInoutService;
//判断是否需要手动校验
public boolean checkManual(String billNo) {
@ -722,43 +735,37 @@ public class IoCheckInoutService {
//校验完成后生成库存
public void genInv(IoOrderEntity orderEntity, BasicBussinessTypeEntity bussinessTypeEntity) {
//预验收出库,删掉对应预验收库存
if (bussinessTypeEntity.getMainAction().equals(ConstantType.TYPE_OUT) && bussinessTypeEntity.isScanPreIn()) {
List<IoCodeEntity> codeList = codeService.findByOrderId(orderEntity.getBillNo());
ThreadUtil.execAsync(() -> {
List<IoCodeEntity> codeList = codeService.findByOrderId(orderEntity.getBillNo());
//找出UDI码对应的预验收入库单号
Map<String, String> preInOrder = new HashMap<>();
for (IoCodeEntity warehouseEntity : codeList) {
List<InvPreinDetailEntity> invProductDetailEntities = invPreinDetailService.findByCode(warehouseEntity.getCode());
if (invProductDetailEntities.size() > 0) {
for (InvPreinDetailEntity invPreinDetailEntity : invProductDetailEntities) {
for (InvPreinDetailEntity invPreinDetailEntity : invProductDetailEntities)
preInOrder.put(invPreinDetailEntity.getOrderId(), invPreinDetailEntity.getOrderId());
invPreinDetailEntity.setStatus(ConstantStatus.INVIN_USE);
invPreinDetailService.update(invPreinDetailEntity);
}
}
}
if (preInOrder.size() > 0) {
if (StrUtil.isEmpty(orderEntity.getRelKey())) {
orderEntity.setRelKey(UUID.fastUUID().toString(true));
}
String preInBillNo = "";
boolean isBreak = false;
List<IoCodeEntity> backCodeList = new ArrayList<>();
for (String key : preInOrder.keySet()) {
if (!isBreak) {
preInBillNo = preInBillNo + "," + key;
IoOrderEntity preInEntity = orderService.findByBillNo(key);
preInEntity.setPreOutBillNo(orderEntity.getBillNo());
preInEntity.setRelKey(orderEntity.getRelKey());
orderService.update(preInEntity);
BasicBussinessTypeEntity preBusType = basicBussinessTypeService.findByAction(preInEntity.getAction());
//预验收不删除单号,方便后续查询
if (preBusType.isPreInBack()) { //预验收如果带回,则清空相关预验收库存;
invPreinDetailService.updateBack(preInEntity.getBillNo());
// invPreinDetailService.deleteByOrderId(preInEntity.getBillNo());
invPreinDetailService.deleteByOrderId(preInEntity.getBillNo());
//剩余UDI码生成退货单 todo
List<IoCodeEntity> codeEntities = codeService.findByOrderId(preInBillNo);
backCodeList.addAll(codeEntities);
} else { //预验收如果不带回,则清除已出库相关库存
for (IoCodeEntity codeEntity : codeList) {
if (StrUtil.isEmpty(codeEntity.getSerialNo())) {
@ -773,26 +780,22 @@ public class IoCheckInoutService {
if (count >= 0) {
isBreak = true;
if (count == 0) {
// invPreinDetailService.deleteByCode(key, codeEntity.getCode());
invPreinDetailService.deleteByCode(key, codeEntity.getCode());
} else {
invPreinDetailEntity.setStatus(ConstantStatus.INVIN_IN);
invPreinDetailEntity.setCount(count);
invPreinDetailService.update(invPreinDetailEntity);
}
int reCount = invPreinDetailEntity.getReCount() - codeEntity.getMyReCount();
if (reCount == 0) {
// invPreinDetailService.deleteByCode(key, codeEntity.getCode());
invPreinDetailService.deleteByCode(key, codeEntity.getCode());
} else {
invPreinDetailEntity.setStatus(ConstantStatus.INVIN_IN);
invPreinDetailEntity.setReCount(reCount);
invPreinDetailService.update(invPreinDetailEntity);
}
}
}
} else {
// invPreinDetailService.deleteByCode(key, codeEntity.getCode());
invPreinDetailService.deleteByCode(key, codeEntity.getCode());
}
}
@ -803,12 +806,101 @@ public class IoCheckInoutService {
}
orderEntity.setPreInBillNo(preInBillNo.substring(1));
orderService.update(orderEntity);
//生成退货单 1.查出所有关联的单据条码2.扣减当前出库数量3.生成单据类型对应绑定的出库单
if (CollUtil.isNotEmpty(backCodeList)) {
List<IoCodeEntity> realBackCodeList = new ArrayList<>();
for (IoCodeEntity backCodeEntity : backCodeList) {
for (IoCodeEntity codeEntity : codeList) {
if (codeEntity.getCount() != 0 && backCodeEntity.getCode().equals(codeEntity.getCode())) {
int count = backCodeEntity.getCount() - codeEntity.getCount();
int reCount = backCodeEntity.getReCount() - codeEntity.getReCount();
if (count > 0) {
codeEntity.setCount(0);
codeEntity.setReCount(0);
backCodeEntity.setCount(count);
backCodeEntity.setReCount(reCount);
realBackCodeList.add(backCodeEntity);
} else if (count == 0) {
codeEntity.setCount(0);
codeEntity.setReCount(0);
} else if (count < 0) {
codeEntity.setCount(-count);
codeEntity.setReCount(-reCount);
}
}
}
}
if (CollUtil.isNotEmpty(realBackCodeList)) {
Map<String, List<IoCodeEntity>> backPreInOrder = new HashMap<>();
for (IoCodeEntity codeEntity : codeList) {
List<IoCodeEntity> codeEntities = backPreInOrder.get(codeEntity.getOrderId());
if (CollUtil.isEmpty(codeEntities)) {
codeEntities = new ArrayList<>();
}
codeEntities.add(codeEntity);
backPreInOrder.put(codeEntity.getOrderId(), codeEntities);
}
for (String key : backPreInOrder.keySet()) {
IoOrderEntity originOrder = orderService.findByBillNo(key);
BasicBussinessTypeEntity basicBussinessTypeEntity = basicBussinessTypeService.findByAction(originOrder.getAction());
if (StrUtil.isNotEmpty(basicBussinessTypeEntity.getPreInBackAction())) {
IoOrderEntity outOrder = new IoOrderEntity();
BeanUtils.copyProperties(originOrder, outOrder);
outOrder.setId(null);
outOrder.setMainAction(ConstantType.TYPE_OUT);
outOrder.setAction(basicBussinessTypeEntity.getAction());
outOrder.setCreateTime(new Date());
outOrder.setFromType(ConstantStatus.FROM_CHANGE);
String orderNo = gennerOrderUtils.createScOrderNo(new OrderNoTypeBean(Constant.SCAN_ORDER + StrUtil.trimToEmpty(basicBussinessTypeEntity.getPrefix()), "yyyyMMdd"));
outOrder.setBillNo(orderNo);
outOrder.setCustomerId(Constant.SYSTEM_CUSTOMER_ID);
outOrder.setCorpOrderId(CustomUtil.getId() + "x");
outOrder.setStatus(ConstantStatus.ORDER_STATUS_PROCESS);
originOrder.setUllageSupNo(outOrder.getBillNo());
originOrder.setUpdateTime(new Date());
orderService.update(originOrder);
outOrder.setOriginUllageSupNo(originOrder.getBillNo());
outOrder.setCreateUser(null);
outOrder.setReviewUser(null);
orderService.insertOrder(outOrder);
//生成条码
List<IoCodeTempEntity> codeTempEntities = new ArrayList<>();
for (IoCodeEntity warehouseEntity : backPreInOrder.get(key)) {
IoCodeTempEntity codeTempEntity = new IoCodeTempEntity();
BeanUtils.copyProperties(warehouseEntity, codeTempEntity);
codeTempEntity.setId(null);
codeTempEntity.setOrderId(outOrder.getBillNo());
codeTempEntity.setAction(outOrder.getAction());
codeTempEntity.setMainAction(outOrder.getMainAction());
codeTempEntity.setCreateTime(new Date());
codeTempEntity.setUpdateTime(new Date());
codeTempEntities.add(codeTempEntity);
}
codeTempService.insertBatch(codeTempEntities);
addInoutService.dealProcess(outOrder);
if (!checkManual(outOrder.getBillNo())) {
check(outOrder.getBillNo());
}
}
}
}
}
}
});
}
//校验是否是不入库存单据
if (bussinessTypeEntity.isInStock()) {
// if (bussinessTypeEntity.getBusType() == ConstantStatus.BUS_TYPE_NORMAL) {
//生成库存
if (bussinessTypeEntity.getActionType() == ConstantStatus.ACTION_TYPE_PREIN) {
genInvService.genPreInInv(orderEntity.getBillNo());
@ -825,6 +917,10 @@ public class IoCheckInoutService {
}
// 预验收使用出库处理1.不带回扣库存;2.带回时生成退货出库单
@Resource
GennerOrderUtils gennerOrderUtils;
public String checkId(IoOrderDetailBizEntity bizEntity, IoOrderDetailCodeEntity codeEntity) {

@ -119,6 +119,8 @@ public class IoGenInvService {
InvPreProductService invPreProductService;
@Resource
InvPreProductDetailService invPreProductDetailService;
@Resource
InvPreinProductDetailService invPreinProductDetailService;
//生成寄售库存
public void genPreInv(String orderId) {
@ -171,13 +173,18 @@ public class IoGenInvService {
}
@Resource
InvPreinProductService invPreinProductService;
//生成预验收库存
public void genPreInInv(String orderId) {
//入库预验收进入到实际在库码表
IoOrderEntity orderEntity = orderService.findByBillNo(orderId);
if (orderEntity.getMainAction().equals(ConstantType.TYPE_PUT)) {
InvPreinOrderEntity invPreinOrderEntity = new InvPreinOrderEntity();
BeanUtils.copyProperties(orderEntity, invPreinOrderEntity);
invPreinOrderService.insert(invPreinOrderEntity);
List<IoCodeEntity> codeEnttities = codeService.findByOrderId(orderId);
List<InvPreinDetailEntity> invPreinDetailEntities = new ArrayList<>();
codeEnttities.forEach(codeEntity ->
@ -190,8 +197,54 @@ public class IoGenInvService {
invPreinDetailEntity.setOriginReCount(codeEntity.getReCount());
invPreinDetailEntities.add(invPreinDetailEntity);
});
invPreinDetailService.insertList(invPreinDetailEntities);
}
//走正常流程,生成对应库存
// 生成库存产品信息表
List<IoOrderDetailResultEntity> orderDetailResultEntities = orderDetailResultService.findByOrderId(orderId);
//生成库存产品表
for (IoOrderDetailResultEntity orderDetailResultEntity : orderDetailResultEntities) {
InvPreinProductEntity invProductEntity = invPreinProductService.selectByUnique(orderDetailResultEntity.getBindRlFk(), orderDetailResultEntity.getBatchNo(), orderDetailResultEntity.getSupId(), orderEntity.getDeptCode(), orderEntity.getInvCode());
if (invProductEntity == null) {
invProductEntity = new InvPreinProductEntity();
invProductEntity.setRelIdFk(orderDetailResultEntity.getBindRlFk());
invProductEntity.setNameCode(orderDetailResultEntity.getNameCode());
invProductEntity.setBatchNo(orderDetailResultEntity.getBatchNo());
invProductEntity.setProductionDate(orderDetailResultEntity.getProductDate());
invProductEntity.setExpireDate(orderDetailResultEntity.getExpireDate());
invProductEntity.setInCount(0);
invProductEntity.setOutCount(0);
invProductEntity.setSupId(orderDetailResultEntity.getSupId());
invProductEntity.setDeptCode(orderEntity.getDeptCode());
invProductEntity.setInvCode(orderEntity.getInvCode());
invProductEntity.setCreateTime(new Date());
invProductEntity.setUpdateTime(new Date());
invPreinProductService.insert(invProductEntity);
}
if (orderEntity.getMainAction().equals(ConstantType.TYPE_OUT)) {
invProductEntity.setOutCount(invProductEntity.getOutCount() + orderDetailResultEntity.getReCount());
} else if (orderEntity.getMainAction().equals(ConstantType.TYPE_PUT)) {
invProductEntity.setInCount(invProductEntity.getInCount() + orderDetailResultEntity.getReCount());
}
invProductEntity.setReCount(invProductEntity.getInCount() - invProductEntity.getOutCount());
invProductEntity.setUpdateTime(new Date());
invPreinProductService.update(invProductEntity);
}
List<IoCodeEntity> codeEnttities = codeService.findByOrderId(orderId);
//生成库存码详情
List<InvPreInProductDetailEntity> invProductDetailEntities = new ArrayList<>();
for (IoCodeEntity codeEntity : codeEnttities) {
InvPreInProductDetailEntity invProductDetailEntity = new InvPreInProductDetailEntity();
BeanUtils.copyProperties(codeEntity, invProductDetailEntity);
invProductDetailEntity.setRelId(codeEntity.getRelId());
invProductDetailEntity.setUpdateTime(new Date());
invProductDetailEntity.setPurchaseType(ConstantStatus.PRUCHASE_COMMON);
invProductDetailEntities.add(invProductDetailEntity);
}
invPreinProductDetailService.insertList(invProductDetailEntities);
}

@ -1,8 +1,12 @@
package com.glxp.api.service.inv;
import com.glxp.api.entity.inv.InvPreProductDetailEntity;
import com.glxp.api.entity.inv.InvPreinDetailEntity;
import com.glxp.api.req.inv.FilterInvPreProductDetailRequest;
import com.glxp.api.req.inv.FilterInvPreinDetailRequest;
import com.glxp.api.req.inv.FilterInvPreinProductRequest;
import com.glxp.api.req.inv.FilterInvPreinRequest;
import com.glxp.api.res.inv.InvPreProductDetailResponse;
import com.glxp.api.res.inv.InvPreinDetailResponse;
import com.glxp.api.res.inv.InvPreinOrderResponse;
@ -36,4 +40,5 @@ public interface InvPreinDetailService {
int updateBack(String orderId);
int findCountByCode(String code);
}

@ -0,0 +1,53 @@
package com.glxp.api.service.inv;
import com.glxp.api.entity.inv.InvPreInProductDetailEntity;
import com.glxp.api.entity.inv.InvPreProductDetailEntity;
import com.glxp.api.req.inv.FilterInvPreProductDetailRequest;
import com.glxp.api.req.inv.FilterInvProductDetailRequest;
import com.glxp.api.res.inv.InvPreProductDetailResponse;
import java.util.List;
/**
* Service
*/
public interface InvPreinProductDetailService {
int insert(InvPreInProductDetailEntity invPreInProductDetailEntity);
boolean insertList(List<InvPreInProductDetailEntity> invPreProductDetailEntities);
List<InvPreInProductDetailEntity> selectByOrderIdFk(String billNo);
InvPreInProductDetailEntity selectByCode(String billNo, String code);
boolean update(InvPreInProductDetailEntity invPreInProductDetailEntity);
boolean deleteById(String id);
int deleteByOrderId(String billNo);
/**
*
*
* @param invPreProductDetailRequest
* @return
*/
List<InvPreInProductDetailEntity> filterPreProductDetailList(FilterInvPreProductDetailRequest invPreProductDetailRequest);
/**
*
*
* @param response
*/
void setOrderInfo(InvPreProductDetailResponse response);
/**
*
*
* @param detailRequest
*/
boolean deleteInvPreProductDetail(FilterInvProductDetailRequest detailRequest);
}

@ -0,0 +1,49 @@
package com.glxp.api.service.inv;
import com.glxp.api.entity.inv.InvPreinProductEntity;
import com.glxp.api.req.inv.FilterInvPreinDetailRequest;
import com.glxp.api.req.inv.FilterInvPreinProductRequest;
import com.glxp.api.res.inv.InvPreinProductResponse;
import java.util.List;
/**
* Service
*/
public interface InvPreinProductService {
int insert(InvPreinProductEntity invPreinProductEntity);
boolean update(InvPreinProductEntity invPreinProductEntity);
InvPreinProductEntity selectByUnique(Long relId, String batchNo, String supId, String deptCode, String invCode);
boolean deleteById(Integer id);
/**
* VO
*
* @param filterInvPreinDetailRequest
* @return
*/
List<InvPreinProductResponse> filterList(FilterInvPreinProductRequest filterInvPreinDetailRequest);
/**
*
*
* @param invPreProductRequest
* @return
*/
List<InvPreinProductEntity> filterPreinProductList(FilterInvPreinProductRequest invPreProductRequest);
/**
* ID
*
* @param id
* @return
*/
InvPreinProductEntity findById(String id);
boolean isExitByRelId(String relId);
}

@ -0,0 +1,135 @@
package com.glxp.api.service.inv.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageHelper;
import com.glxp.api.constant.ConstantType;
import com.glxp.api.dao.basic.BasicBussinessTypeDao;
import com.glxp.api.dao.basic.UdiProductDao;
import com.glxp.api.dao.inout.IoOrderDao;
import com.glxp.api.dao.inv.InvPreInProductDetailDao;
import com.glxp.api.dao.inv.InvPreProductDetailDao;
import com.glxp.api.entity.basic.BasicBussinessTypeEntity;
import com.glxp.api.entity.inout.IoOrderEntity;
import com.glxp.api.entity.inv.InvPreInProductDetailEntity;
import com.glxp.api.req.inv.FilterInvPreProductDetailRequest;
import com.glxp.api.req.inv.FilterInvProductDetailRequest;
import com.glxp.api.res.inv.InvPreProductDetailResponse;
import com.glxp.api.service.inv.InvPreProductDetailService;
import com.glxp.api.service.inv.InvPreinProductDetailService;
import com.glxp.api.util.DateUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Collections;
import java.util.List;
@Slf4j
@Service
@Transactional(rollbackFor = Exception.class)
public class InvPreInProductDetailServiceImpl implements InvPreinProductDetailService {
@Resource
private InvPreInProductDetailDao invPreInProductDetailDao;
@Resource
private BasicBussinessTypeDao bussinessTypeDao;
@Resource
private IoOrderDao orderDao;
@Resource
private UdiProductDao udiProductDao;
@Override
public int insert(InvPreInProductDetailEntity invPreInProductDetailEntity) {
return invPreInProductDetailDao.insert(invPreInProductDetailEntity);
}
@Override
public boolean insertList(List<InvPreInProductDetailEntity> invPreProductDetailEntities) {
return invPreInProductDetailDao.insertBatch(invPreProductDetailEntities);
}
@Override
public List<InvPreInProductDetailEntity> selectByOrderIdFk(String billNo) {
if (StrUtil.isEmpty(billNo))
return null;
List<InvPreInProductDetailEntity> invProductDetailEntities = invPreInProductDetailDao.selectList(new QueryWrapper<InvPreInProductDetailEntity>().eq("orderId", billNo));
return invProductDetailEntities;
}
@Override
public InvPreInProductDetailEntity selectByCode(String billNo, String code) {
List<InvPreInProductDetailEntity> invProductDetailEntities = invPreInProductDetailDao.selectList
(new QueryWrapper<InvPreInProductDetailEntity>().eq("code", code).eq("orderId", billNo));
if (CollUtil.isNotEmpty(invProductDetailEntities))
return invProductDetailEntities.get(0);
else
return null;
}
@Override
public boolean update(InvPreInProductDetailEntity invPreInProductDetailEntity) {
return invPreInProductDetailDao.updateById(invPreInProductDetailEntity) == 1 ? true : false;
}
@Override
public boolean deleteById(String id) {
return invPreInProductDetailDao.deleteById(id) == 1 ? true : false;
}
@Override
public int deleteByOrderId(String billNo) {
return invPreInProductDetailDao.delete(new QueryWrapper<InvPreInProductDetailEntity>().eq("orderId", billNo));
}
@Override
public List<InvPreInProductDetailEntity> filterPreProductDetailList(FilterInvPreProductDetailRequest invPreProductDetailRequest) {
if (null == invPreProductDetailRequest) {
return Collections.emptyList();
}
if (null != invPreProductDetailRequest.getPage() && null != invPreProductDetailRequest.getLimit()) {
PageHelper.offsetPage((invPreProductDetailRequest.getPage() - 1) * invPreProductDetailRequest.getLimit(), invPreProductDetailRequest.getLimit());
}
return invPreInProductDetailDao.filterPreProductDetailList(invPreProductDetailRequest);
}
@Override
public void setOrderInfo(InvPreProductDetailResponse response) {
//查询DI层级根据DI层级设置数量取值
Integer packLevel = udiProductDao.selectPackLevel(response.getNameCode());
//设置出入库中文及出入库数量
if (null != packLevel && packLevel != 1) {
//多级包装
if (response.getMainAction().equals(ConstantType.TYPE_OUT)) {
response.setMainActionStr("出库");
response.setOutCount(response.getReCount());
} else {
response.setMainActionStr("入库");
response.setInCount(response.getReCount());
}
} else {
//单层包装
if (response.getMainAction().equals(ConstantType.TYPE_OUT)) {
response.setMainActionStr("出库");
response.setOutCount(response.getCount());
} else {
response.setMainActionStr("入库");
response.setInCount(response.getCount());
}
}
//设置单据类型名称
BasicBussinessTypeEntity busType = bussinessTypeDao.selectOne(new QueryWrapper<BasicBussinessTypeEntity>().select("name").eq("action", response.getAction()));
response.setActionName(busType.getName());
//设置单据日期
IoOrderEntity order = orderDao.selectOne(new QueryWrapper<IoOrderEntity>().select("createTime").eq("billNo", response.getOrderId()));
response.setOrderTime(DateUtil.toDateStr(order.getCreateTime(), "yyyy-MM-dd HH:mm:ss"));
}
@Override
public boolean deleteInvPreProductDetail(FilterInvProductDetailRequest detailRequest) {
return invPreInProductDetailDao.deleteInvPreProductDetail(detailRequest);
}
}

@ -4,13 +4,21 @@ import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageHelper;
import com.glxp.api.constant.ConstantStatus;
import com.glxp.api.constant.ConstantType;
import com.glxp.api.dao.inv.InvPreinDetailDao;
import com.glxp.api.dao.inv.InvPreinOrderDao;
import com.glxp.api.entity.basic.BasicBussinessTypeEntity;
import com.glxp.api.entity.inout.IoOrderEntity;
import com.glxp.api.entity.inv.InvPreProductDetailEntity;
import com.glxp.api.entity.inv.InvPreinDetailEntity;
import com.glxp.api.entity.inv.InvProductDetailEntity;
import com.glxp.api.req.inv.FilterInvPreProductDetailRequest;
import com.glxp.api.req.inv.FilterInvPreinDetailRequest;
import com.glxp.api.req.inv.FilterInvPreinProductRequest;
import com.glxp.api.res.inv.InvPreProductDetailResponse;
import com.glxp.api.res.inv.InvPreinDetailResponse;
import com.glxp.api.service.inv.InvPreinDetailService;
import com.glxp.api.util.DateUtil;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -60,15 +68,6 @@ public class InvPreinDetailServiceImpl implements InvPreinDetailService {
public List<InvPreinDetailEntity> findByCode(String code) {
return invPreinDetailDao.selectList(new QueryWrapper<InvPreinDetailEntity>().eq("code", code));
}
//
// @Override
// public InvPreinDetailEntity findOneByCode(String code) {
// List<InvPreinDetailEntity> invPreinDetailEntities = invPreinDetailDao.selectList(new QueryWrapper<InvPreinDetailEntity>().eq("code", code).last("limit 1"));
// if (CollUtil.isNotEmpty(invPreinDetailEntities)) {
// return invPreinDetailEntities.get(0);
// }
// return null;
// }
@Override
public int deleteByOrderId(String orderId) {
@ -110,5 +109,21 @@ public class InvPreinDetailServiceImpl implements InvPreinDetailService {
return 1;
}
@Override
public int findCountByCode(String code) {
List<InvPreinDetailEntity> invPreinDetailEntities = invPreinDetailDao.selectList(new QueryWrapper<InvPreinDetailEntity>().eq("code", code));
int count = 0;
if (CollUtil.isNotEmpty(invPreinDetailEntities)) {
for (InvPreinDetailEntity invProductDetailEntity : invPreinDetailEntities) {
if (invProductDetailEntity.getMainAction().equals(ConstantType.TYPE_PUT))
count = count + invProductDetailEntity.getReCount();
else {
count = count - invProductDetailEntity.getReCount();
}
}
}
return count;
}
}

@ -0,0 +1,83 @@
package com.glxp.api.service.inv.impl;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageHelper;
import com.glxp.api.dao.inv.InvPreinProductDao;
import com.glxp.api.entity.inv.InvPreinProductEntity;
import com.glxp.api.req.inv.FilterInvPreinProductRequest;
import com.glxp.api.res.inv.InvPreinProductResponse;
import com.glxp.api.service.inv.InvPreinProductService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Collections;
import java.util.List;
@Slf4j
@Service
@Transactional(rollbackFor = Exception.class)
public class InvPreinProductServiceImpl implements InvPreinProductService {
@Resource
private InvPreinProductDao invPreinProductDao;
@Override
public int insert(InvPreinProductEntity invPreinProductEntity) {
return invPreinProductDao.insert(invPreinProductEntity);
}
@Override
public boolean update(InvPreinProductEntity invPreinProductEntity) {
return invPreinProductDao.updateById(invPreinProductEntity) == 1 ? true : false;
}
@Override
public InvPreinProductEntity selectByUnique(Long relId, String batchNo, String supId, String deptCode, String invCode) {
return invPreinProductDao.selectOne(new QueryWrapper<InvPreinProductEntity>().eq("relIdFk", relId).eq(StrUtil.isNotEmpty(batchNo), "batchNo", batchNo)
.isNull(StrUtil.isEmpty(batchNo), "batchNo").eq("supId", supId).eq("deptCode", deptCode).eq("invCode", invCode));
}
@Override
public boolean deleteById(Integer id) {
return invPreinProductDao.deleteById(id) == 1 ? true : false;
}
@Override
public List<InvPreinProductResponse> filterList(FilterInvPreinProductRequest invPreProductRequest) {
if (null == invPreProductRequest) {
return Collections.emptyList();
}
if (null != invPreProductRequest.getPage()) {
PageHelper.offsetPage((invPreProductRequest.getPage() - 1) * invPreProductRequest.getLimit(), invPreProductRequest.getLimit());
}
return invPreinProductDao.filterList(invPreProductRequest);
}
@Override
public List<InvPreinProductEntity> filterPreinProductList(FilterInvPreinProductRequest invPreProductRequest) {
if (null == invPreProductRequest) {
return Collections.emptyList();
}
if (null != invPreProductRequest.getPage() && null != invPreProductRequest.getLimit()) {
PageHelper.offsetPage((invPreProductRequest.getPage() - 1) * invPreProductRequest.getLimit(), invPreProductRequest.getLimit());
}
return invPreinProductDao.filterPreProductList(invPreProductRequest);
}
@Override
public InvPreinProductEntity findById(String id) {
return invPreinProductDao.selectById(id);
}
@Override
public boolean isExitByRelId(String relId) {
return invPreinProductDao.exists(new QueryWrapper<InvPreinProductEntity>().eq("relIdFk", relId));
}
}

@ -2,8 +2,8 @@ server:
port: 9993
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
jdbc-url: jdbc:mysql://127.0.0.1:3306/udi_spms?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
driver-class-name: com.p6spy.engine.spy.P6SpyDriver
jdbc-url: jdbc:p6spy:mysql://127.0.0.1:3306/udi_spms?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
username: root
password: 123456
hikari:

@ -70,7 +70,7 @@
vailGroupBuy, busType, inStock, actionType, thrCheckEnable, thrCheckWebNew,
thrCheckPdaUn, thrCheckPdaEd, thrCheckUdims, thrCheckPc, thrCheckSp,
thrCheckChange, thrCheckBalance, thrCheckCopy, fillCodeRel, checkVailDate,
checkExpire, checkCertExpire)
checkExpire, checkCertExpire,preInBackAction)
values (#{mainAction}, #{action}, #{name}, #{enable}, #{remark}, #{thirdSysFk}, #{genUnit}, #{innerOrder},
#{secCheckEnable}, #{checkEnable}, #{checkUdims}, #{checkPdaEd}, #{checkPdaUn}, #{checkPc},
#{checkWebNew}, #{checkSp}, #{checkChange}, #{secCheckUdims}, #{secCheckPdaEd}, #{secCheckPdaUn},
@ -82,7 +82,7 @@
#{vailGroupBuy}, #{busType}, #{inStock}, #{actionType}, #{thrCheckEnable}, #{thrCheckWebNew},
#{thrCheckPdaUn}, #{thrCheckPdaEd}, #{thrCheckUdims}, #{thrCheckPc}, #{thrCheckSp},
#{thrCheckChange}, #{thrCheckBalance}, #{thrCheckCopy}, #{fillCodeRel}, #{checkVailDate},
#{checkExpire}, #{checkCertExpire})
#{checkExpire}, #{checkCertExpire},#{preInBackAction})
</insert>
<select id="selectBusList" resultType="com.glxp.api.entity.basic.BasicBussinessTypeEntity">

@ -0,0 +1,77 @@
<?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.inv.InvPreInProductDetailDao">
<select id="filterPreProductDetailList" resultType="com.glxp.api.entity.inv.InvPreInProductDetailEntity">
select *
from inv_prein_product_detail
<where>
<if test="code != null and code != ''">
AND code = #{code}
</if>
<if test="mainAction != null and mainAction != ''">
AND mainAction = #{mainAction}
</if>
<if test="action != null and action != ''">
AND action = #{action}
</if>
<if test="supId != null and supId != ''">
and supId = #{supId}
</if>
<if test="relId != null and relId != ''">
AND relId = #{relId}
</if>
<if test="nameCode != null and nameCode != ''">
AND nameCode like concat('%', #{nameCode}, '%')
</if>
<if test="orderId != null and orderId != ''">
AND orderId = #{orderId}
</if>
<if test="deptCode != null and deptCode != ''">
AND deptCode = #{deptCode}
</if>
<if test="invCode != null and invCode != ''">
AND invCode = #{invCode}
</if>
<if test="invSpaceCode != null and invSpaceCode != ''">
AND invSpaceCode = #{invSpaceCode}
</if>
<if test="batchNo != null and batchNo != ''">
AND batchNo = #{batchNo}
</if>
<if test="batchNo == null and batchNo == ''">
AND batchNo is null
</if>
<if test="productIdList != null and productIdList.size() != 0">
AND relId in
<foreach collection="productIdList" item="item" index="index" open="(" close=")" separator=",">
#{item}
</foreach>
</if>
<if test="updateTime != null and updateTime != ''">
AND updateTime <![CDATA[ <= ]]> #{updateTime}
</if>
</where>
</select>
<delete id="deleteInvPreProductDetail">
delete
from inv_prein_product_detail
<where>
<if test="relId != null and relId != ''">
AND relId = #{relId}
</if>
<if test="batchNo != null and batchNo != '' and batchNo != 'empty'">
AND batchNo = #{batchNo}
</if>
<if test="batchNo == 'empty'">
AND batchNo is null
</if>
<if test="supId != null and supId != ''">
AND supId = #{supId}
</if>
<if test="invCode != null and invCode != ''">
AND invCode = #{invCode}
</if>
</where>
</delete>
</mapper>

@ -0,0 +1,138 @@
<?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.inv.InvPreinProductDao">
<select id="filterList" resultType="com.glxp.api.res.inv.InvPreinProductResponse">
select ipp.id,
ipp.nameCode,
bp.cpmctymc,
ipp.relIdFk,
bp.ggxh,
ipp.batchNo,
ipp.productionDate,
ipp.expireDate,
bp.ylqxzcrbarmc,
bp.zczbhhzbapzbh,
ipp.inCount,
ipp.outCount,
ipp.reCount,
ipp.customerId,
basic_corp.name supName,
ipp.supId,
auth_dept.name deptName,
auth_warehouse.name invName,
ipp.deptCode,
ipp.invCode
from inv_prein_product ipp
inner join basic_udirel on ipp.relIdFk = basic_udirel.id
inner join basic_products bp on basic_udirel.uuid = bp.uuid
left join basic_corp on ipp.supId = basic_corp.erpId
left join auth_dept on auth_dept.code = ipp.deptCode
left join auth_warehouse on auth_warehouse.code = ipp.invCode
<where>
bp.diType = 1
<if test="cpmctymc != null and cpmctymc != ''">
AND bp.cpmctymc like concat('%', #{cpmctymc}, '%')
</if>
<if test="nameCode != null and nameCode != ''">
AND ipp.nameCode like concat('%', #{nameCode}, '%')
</if>
<if test="relIdFk != null and relIdFk != ''">
AND ipp.relIdFk = #{relIdFk}
</if>
<if test="ggxh != null and ggxh != ''">
AND bp.ggxh like concat('%', #{ggxh}, '%')
</if>
<if test="batchNo != null and batchNo != ''">
AND ipp.batchNo like concat('%', #{batchNo}, '%')
</if>
<if test="productionDate != null and productionDate != ''">
AND ipp.productionDate = #{productionDate}
</if>
<if test="expireDate != null and expireDate != ''">
AND ipp.expireDate = #{expireDate}
</if>
<if test="ylqxzcrbarmc != null and ylqxzcrbarmc != ''">
AND bp.ylqxzcrbarmc like concat('%', #{ylqxzcrbarmc}, '%')
</if>
<if test="zczbhhzbapzbh != null and zczbhhzbapzbh != ''">
AND bp.zczbhhzbapzbh like concat('%', #{zczbhhzbapzbh}, '%')
</if>
<if test="customerId != null and customerId != ''">
AND ipp.customerId = #{customerId}
</if>
<if test="supId != null and supId != ''">
AND ipp.supId = #{supId}
</if>
<if test="deptCode != null and deptCode != ''">
AND ipp.deptCode = #{deptCode}
</if>
<if test="invCode != null and invCode != ''">
AND ipp.invCode = #{invCode}
</if>
<if test="invCodes != null and invCodes.size() != 0">
AND ipp.invCode in
<foreach collection="invCodes" item="item" index="index" open="(" close=")" separator=",">
#{item}
</foreach>
</if>
</where>
</select>
<select id="filterPreProductList" resultType="com.glxp.api.entity.inv.InvPreinProductEntity">
select ipp.*
from inv_prein_product ipp
inner join basic_udirel on ipp.relIdFk = basic_udirel.id
inner join basic_products bp on basic_udirel.uuid = bp.uuid
left join basic_corp on ipp.supId = basic_corp.erpId
left join auth_dept on auth_dept.code = ipp.deptCode
left join auth_warehouse on auth_warehouse.code = ipp.invCode
<where>
bp.diType = 1
<if test="cpmctymc != null and cpmctymc != ''">
AND bp.cpmctymc like concat('%', #{cpmctymc}, '%')
</if>
<if test="nameCode != null and nameCode != ''">
AND ipp.nameCode like concat('%', #{nameCode}, '%')
</if>
<if test="relIdFk != null and relIdFk != ''">
AND ipp.relIdFk = #{relIdFk}
</if>
<if test="ggxh != null and ggxh != ''">
AND bp.ggxh like concat('%', #{ggxh}, '%')
</if>
<if test="batchNo != null and batchNo != ''">
AND ipp.batchNo like concat('%', #{batchNo}, '%')
</if>
<if test="productionDate != null and productionDate != ''">
AND ipp.productionDate = #{productionDate}
</if>
<if test="expireDate != null and expireDate != ''">
AND ipp.expireDate = #{expireDate}
</if>
<if test="ylqxzcrbarmc != null and ylqxzcrbarmc != ''">
AND bp.ylqxzcrbarmc like concat('%', #{ylqxzcrbarmc}, '%')
</if>
<if test="zczbhhzbapzbh != null and zczbhhzbapzbh != ''">
AND bp.zczbhhzbapzbh like concat('%', #{zczbhhzbapzbh}, '%')
</if>
<if test="customerId != null and customerId != ''">
AND ipp.customerId = #{customerId}
</if>
<if test="supId != null and supId != ''">
AND ipp.supId = #{supId}
</if>
<if test="deptCode != null and deptCode != ''">
AND ipp.deptCode = #{deptCode}
</if>
<if test="invCode != null and invCode != ''">
AND ipp.invCode = #{invCode}
</if>
<if test="invCodes != null and invCodes.size() != 0">
AND ipp.invCode in
<foreach collection="invCodes" item="item" index="index" open="(" close=")" separator=",">
#{item}
</foreach>
</if>
</where>
</select>
</mapper>

@ -28,7 +28,6 @@ CALL Pro_Temp_ColumnWork('thr_products', 'createTime', 'varchar(255) ', 1);
CALL Pro_Temp_ColumnWork('auth_warehouse', 'advanceType', 'tinyint', 1);
CALL Pro_Temp_ColumnWork('auth_warehouse', 'spUse', 'tinyint', 1);
@ -65,7 +64,7 @@ CALL Pro_Temp_ColumnWork('basic_bussiness_type', 'fillCodeRel', 'tinyint', 1);
CALL Pro_Temp_ColumnWork('basic_bussiness_type', 'checkVailDate', 'tinyint', 1);
CALL Pro_Temp_ColumnWork('basic_bussiness_type', 'checkExpire', 'tinyint', 1);
CALL Pro_Temp_ColumnWork('basic_bussiness_type', 'checkCertExpire', 'tinyint', 1);
CALL Pro_Temp_ColumnWork('basic_bussiness_type', 'preInBackAction', 'varchar(255) ', 1);
CALL Pro_Temp_ColumnWork('pur_delivery_detail', 'batchNo', 'varchar(255) ', 1);
CALL Pro_Temp_ColumnWork('pur_delivery_detail', 'productDate', 'varchar(255) ', 1);
@ -109,6 +108,9 @@ CALL Pro_Temp_ColumnWork('inv_prein_detail', 'status', 'tinyint', 1);
CALL Pro_Temp_ColumnWork('inv_prein_detail', 'originCount', 'int', 1);
CALL Pro_Temp_ColumnWork('inv_prein_detail', 'originReCount', 'int', 1);
CALL Pro_Temp_ColumnWork('inv_prein_detail', 'mainAction', 'varchar(255)', 1);
CALL Pro_Temp_ColumnWork('inv_prein_detail', 'action', 'varchar(255)', 1);
CALL Pro_Temp_ColumnWork('io_code_lost', 'nameCode', 'varchar(255)', 1);
INSERT ignore INTO `sys_param_config`(`id`, `parentId`, `paramName`, `paramKey`, `paramValue`, `paramStatus`,
@ -154,3 +156,59 @@ CALL Pro_Temp_ColumnWork('sync_data_set', 'basicDept', 'tinyint', 1);
# CALL Pro_Temp_ColumnWork('sup_cert_set', 'needForeign', 'tinyint', 1);
CREATE TABLE IF NOT EXISTS `inv_prein_product`
(
`id` int NOT NULL AUTO_INCREMENT,
`relIdFk` bigint NULL DEFAULT NULL COMMENT '耗材字典ID',
`nameCode` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '最小销售标识',
`batchNo` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '批次号',
`productionDate` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '生产日期',
`expireDate` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '失效日期',
`inCount` int NULL DEFAULT NULL COMMENT '入库数量',
`outCount` int NULL DEFAULT NULL COMMENT '出库数量',
`reCount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '实际数量',
`customerId` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '客户ID',
`supId` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '供应商ID',
`deptCode` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '部门编码',
`invCode` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '仓库编码',
`createTime` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
`updateTime` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB
CHARACTER SET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci COMMENT = '预验收库存表'
ROW_FORMAT = DYNAMIC;
SET FOREIGN_KEY_CHECKS = 1;
CREATE TABLE IF NOT EXISTS `inv_prein_product_detail`
(
`id` int NOT NULL AUTO_INCREMENT,
`code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'UDI码',
`mainAction` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '出入单据类型',
`action` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '单据类型',
`orderId` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '订单号外键',
`relId` int NOT NULL COMMENT '耗材字典ID',
`nameCode` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '最小销售标识',
`batchNo` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '批次号',
`produceDate` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '生产日期',
`expireDate` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '失效日期',
`serialNo` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '序列号',
`supId` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '供应商',
`count` int NULL DEFAULT NULL COMMENT '扫码数量',
`reCount` int NULL DEFAULT NULL COMMENT '实际数量',
`deptCode` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '部门编码',
`invCode` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '仓库编码',
`invSpaceCode` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '货位编码',
`purchaseType` tinyint NULL DEFAULT NULL COMMENT '采购类型',
`updateTime` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB
CHARACTER SET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci COMMENT = '预验收库存详情表'
ROW_FORMAT = DYNAMIC;

Loading…
Cancel
Save