临床使用出库修改,新增采购类型,使用出库拆单补单等

dev_20240306
anthonywj 1 year ago
parent a83523fe58
commit 584bbcaed6

@ -3,6 +3,7 @@ package com.glxp.api.controller.basic;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.glxp.api.annotation.Log; import com.glxp.api.annotation.Log;
import com.glxp.api.common.enums.ResultEnum; import com.glxp.api.common.enums.ResultEnum;
@ -21,6 +22,7 @@ import com.glxp.api.res.basic.BasicBusTypePreResponse;
import com.glxp.api.service.auth.InvWarehouseService; import com.glxp.api.service.auth.InvWarehouseService;
import com.glxp.api.service.basic.IBasicBusTypePreService; import com.glxp.api.service.basic.IBasicBusTypePreService;
import com.glxp.api.service.basic.IBasicBussinessTypeService; import com.glxp.api.service.basic.IBasicBussinessTypeService;
import com.glxp.api.util.IntUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.BindingResult; import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
@ -169,10 +171,13 @@ public class BasicBusTypePreController {
} }
if (basicBusTypePreEntity != null) { if (basicBusTypePreEntity != null) {
//判断是否重复添加 //判断是否重复添加
if (IntUtil.value(basicBusTypePreEntity.getSplitOrder()) < 1) {
boolean result = basicBusTypePreService.verifyExists(basicBusTypePreEntity); boolean result = basicBusTypePreService.verifyExists(basicBusTypePreEntity);
if (result) { if (result) {
return ResultVOUtils.error(ResultEnum.DATA_REPEAT, "原单据类型已存在,不允许重复添加!"); return ResultVOUtils.error(ResultEnum.DATA_REPEAT, "原单据类型已存在,不允许重复添加!");
} }
}
if (basicBusTypePreEntity.getAction().equals(basicBusTypePreEntity.getOriginAction())) { if (basicBusTypePreEntity.getAction().equals(basicBusTypePreEntity.getOriginAction())) {
return ResultVOUtils.error(ResultEnum.DATA_REPEAT, "出入库单与目标出入库单相同!"); return ResultVOUtils.error(ResultEnum.DATA_REPEAT, "出入库单与目标出入库单相同!");
} }
@ -203,10 +208,20 @@ public class BasicBusTypePreController {
if (basicBusTypePreEntity != null) { if (basicBusTypePreEntity != null) {
//判断是否重复添加 //判断是否重复添加
//校验是否允许存在多个相同的单据类型
if (IntUtil.value(basicBusTypePreEntity.getSplitOrder()) < 1) {
long count = basicBusTypePreService.count(new QueryWrapper<BasicBusTypePreEntity>().eq("action", basicBusTypePreEntity.getAction()));
if (count > 0) {
return ResultVOUtils.error(ResultEnum.DATA_REPEAT, "原单据类型已存在,不允许重复添加!");
}
} else {
boolean result = basicBusTypePreService.verifyExists(basicBusTypePreEntity); boolean result = basicBusTypePreService.verifyExists(basicBusTypePreEntity);
if (result) { if (result) {
return ResultVOUtils.error(ResultEnum.DATA_REPEAT, "原单据类型已存在,不允许重复添加!"); return ResultVOUtils.error(ResultEnum.DATA_REPEAT, "原单据类型已存在,不允许重复添加!");
} }
}
if (StrUtil.isNotBlank(basicBusTypePreEntity.getDefaultInvCode())) { if (StrUtil.isNotBlank(basicBusTypePreEntity.getDefaultInvCode())) {
InvWarehouseEntity invWarehouse = invWarehouseService.findByInvSubByCode(basicBusTypePreEntity.getDefaultInvCode()); InvWarehouseEntity invWarehouse = invWarehouseService.findByInvSubByCode(basicBusTypePreEntity.getDefaultInvCode());

@ -416,8 +416,6 @@ public class IoCodeTempController extends BaseController {
//过期提醒: //过期提醒:
// SystemParamConfigEntity expireParamConfigEntity = systemParamConfigService.selectByParamKey("expire_date_tip");
//IntUtil.value(bussinessTypeEntity.getCheckVailDate()) == 1 && !addOrderRequest.isIgnoreExpire()
if (IntUtil.value(bussinessTypeEntity.getCheckExpire()) == 1 && !addOrderRequest.isIgnoreExpire()) { if (IntUtil.value(bussinessTypeEntity.getCheckExpire()) == 1 && !addOrderRequest.isIgnoreExpire()) {
if (StrUtil.isNotEmpty(udiEntity.getExpireDate())) { if (StrUtil.isNotEmpty(udiEntity.getExpireDate())) {
String expireDate = "20" + udiEntity.getExpireDate(); String expireDate = "20" + udiEntity.getExpireDate();
@ -437,8 +435,8 @@ public class IoCodeTempController extends BaseController {
} }
} }
UdiRelevanceResponse udiRelevanceResponse = udiRelevanceService.selectByNameCode(udiEntity.getUdi()); UdiRelevanceResponse udiRelevanceResponse = udiRelevanceService.selectByNameCode(udiEntity.getUdi());
//近效期提醒 //近效期提醒
// SystemParamConfigEntity recentParamConfigEntity = systemParamConfigService.selectByParamKey("recent_date_tip");
long recent = 0; long recent = 0;
if (udiRelevanceResponse.getRecentDateTime() != null) if (udiRelevanceResponse.getRecentDateTime() != null)
recent = udiRelevanceResponse.getRecentDateTime().longValue(); recent = udiRelevanceResponse.getRecentDateTime().longValue();
@ -469,7 +467,6 @@ public class IoCodeTempController extends BaseController {
if (resultTime > 0) { if (resultTime > 0) {
long time = resultTime / (24 * 60 * 60 * 1000); long time = resultTime / (24 * 60 * 60 * 1000);
if (resultTime < recentTieme) { if (resultTime < recentTieme) {
// return ResultVOUtils.error(605, "当前产品临近过期,距过期还剩" + time + "天,无法添加!");
return ResultVOUtils.error(505, "当前产品临近过期,距过期还剩" + time + "天,是否确定继续添加?"); return ResultVOUtils.error(505, "当前产品临近过期,距过期还剩" + time + "天,是否确定继续添加?");
} }
} }
@ -488,7 +485,7 @@ public class IoCodeTempController extends BaseController {
} }
//校验预验收库存是否已存在 //校验预验收库存是否已存在
if (bussinessTypeEntity.isScanPreIn()) { if (bussinessTypeEntity.isScanPreIn() && checkDiAttribute(bussinessTypeEntity, udiRelevanceResponse, 2)) {
if (bussinessTypeEntity.getBackPreinType() == 1 && bussinessTypeEntity.isPreInBack()) {//按单出库&& bussinessTypeEntity.isPreInBack() if (bussinessTypeEntity.getBackPreinType() == 1 && bussinessTypeEntity.isPreInBack()) {//按单出库&& bussinessTypeEntity.isPreInBack()
String orderIds = addOrderRequest.getCheckPreInOrders(); String orderIds = addOrderRequest.getCheckPreInOrders();
if (StrUtil.isNotEmpty(orderIds)) { if (StrUtil.isNotEmpty(orderIds)) {
@ -559,6 +556,17 @@ public class IoCodeTempController extends BaseController {
// IoCodeTempEntity codeTempEntity = isExitToatal(code, codeEnttitys); // IoCodeTempEntity codeTempEntity = isExitToatal(code, codeEnttitys);
//校验库存 //校验库存
BaseResponse invRes = null; BaseResponse invRes = null;
if (IntUtil.value(bussinessTypeEntity.getUseDyCount()) == 2) {
if (bussinessTypeEntity.isScanPreIn() && checkDiAttribute(bussinessTypeEntity, udiRelevanceResponse, 2)) { //校验预验收库存
invRes = checkPreInInv(bussinessTypeEntity, genDetaiEntity, false);
}
if (bussinessTypeEntity.isAdvancePreIn() && checkDiAttribute(bussinessTypeEntity, udiRelevanceResponse, 3)) { //校验寄售库存
invRes = checkPreInv(bussinessTypeEntity, genDetaiEntity, false);
}
if (bussinessTypeEntity.isVailInv() && checkDiAttribute(bussinessTypeEntity, udiRelevanceResponse, 1)) {
invRes = checkInv(bussinessTypeEntity, genDetaiEntity, false);
}
} else {
if (bussinessTypeEntity.isScanPreIn()) { //校验预验收库存 if (bussinessTypeEntity.isScanPreIn()) { //校验预验收库存
invRes = checkPreInInv(bussinessTypeEntity, genDetaiEntity, false); invRes = checkPreInInv(bussinessTypeEntity, genDetaiEntity, false);
} else if (bussinessTypeEntity.isAdvancePreIn()) { //校验寄售库存 } else if (bussinessTypeEntity.isAdvancePreIn()) { //校验寄售库存
@ -566,6 +574,8 @@ public class IoCodeTempController extends BaseController {
} else { } else {
invRes = checkInv(bussinessTypeEntity, genDetaiEntity, false); invRes = checkInv(bussinessTypeEntity, genDetaiEntity, false);
} }
}
if (invRes != null) { if (invRes != null) {
return invRes; return invRes;
} }
@ -736,6 +746,29 @@ public class IoCodeTempController extends BaseController {
} }
if (IntUtil.value(bussinessTypeEntity.getUseDyCount()) == 2) {
if (bussinessTypeEntity.isScanPreIn() && checkDiAttribute(bussinessTypeEntity, udiRelevanceResponse, 2)) { //校验预验收库存
BaseResponse invRes = checkPreInInv(bussinessTypeEntity, codeEnttity, false);
if (invRes != null) {
deleteEmptyBillNo(orderEntity);
return invRes;
}
}
if (bussinessTypeEntity.isAdvancePreIn() && checkDiAttribute(bussinessTypeEntity, udiRelevanceResponse, 3)) { //校验寄售库存
BaseResponse invRes = checkPreInv(bussinessTypeEntity, codeEnttity, false);
if (invRes != null) {
deleteEmptyBillNo(orderEntity);
return invRes;
}
}
if (bussinessTypeEntity.isVailInv() && checkDiAttribute(bussinessTypeEntity, udiRelevanceResponse, 1)) {
BaseResponse invRes = checkInv(bussinessTypeEntity, codeEnttity, false);
if (invRes != null) {
deleteEmptyBillNo(orderEntity);
return invRes;
}
}
} else {
if (bussinessTypeEntity.isScanPreIn()) { //校验预验收库存 if (bussinessTypeEntity.isScanPreIn()) { //校验预验收库存
BaseResponse invRes = checkPreInInv(bussinessTypeEntity, codeEnttity, false); BaseResponse invRes = checkPreInInv(bussinessTypeEntity, codeEnttity, false);
if (invRes != null) { if (invRes != null) {
@ -755,6 +788,9 @@ public class IoCodeTempController extends BaseController {
return invRes; return invRes;
} }
} }
}
//是否边扫边校验 //是否边扫边校验
if (bussinessTypeEntity.getCheckWebNew() == 1 && bussinessTypeEntity.isCheckEnable()) { if (bussinessTypeEntity.getCheckWebNew() == 1 && bussinessTypeEntity.isCheckEnable()) {
String errMsg = ioCheckInoutService.checkCode(codeEnttity); String errMsg = ioCheckInoutService.checkCode(codeEnttity);
@ -1813,5 +1849,19 @@ public class IoCodeTempController extends BaseController {
return ResultVOUtils.success(addCodeResult); return ResultVOUtils.success(addCodeResult);
} }
/**
* @param udiRelevanceResponse
* @param purType 1:23
*/
public boolean checkDiAttribute(BasicBussinessTypeEntity bussinessTypeEntity, UdiRelevanceResponse udiRelevanceResponse, Integer purType) {
if (bussinessTypeEntity.getUseDyCount() == 2) {
if (IntUtil.value(udiRelevanceResponse.getPurType()) == IntUtil.value(purType)) {
return true;
} else
return false;
}
return true;
}
} }

@ -32,7 +32,7 @@ public interface BasicBusTypePreDao extends BaseMapperPlus<BasicBusTypePreDao, B
* @param action * @param action
* @return * @return
*/ */
List<BasicBusTypePreEntity> findByAction(String action); List<BasicBusTypePreEntity> findByAction(@Param("action") String action, @Param("originAction") String originAction);
/** /**
* *

@ -123,24 +123,37 @@ public class BasicBusTypePreEntity {
@TableField(value = "remark") @TableField(value = "remark")
private String remark; private String remark;
// 创建单模式1送货至入库单模式2.向上级补单模式3.预验收转入库单模式4.寄售转入库单模式5.退货向上级补单模式 /**
* 12.3.4.5.退
*/
@TableField(value = "createType") @TableField(value = "createType")
private int createType; private int createType;
/** /**
* *
*/ */
@TableField(value = "targetBusAction") @TableField(value = "targetBusAction")
private String targetBusAction; private String targetBusAction;
/**
*
*/
@TableField(value = "busBeforeTime") @TableField(value = "busBeforeTime")
private Integer busBeforeTime; private Integer busBeforeTime;
/**
*
*/
@TableField(value = "auditStatus") @TableField(value = "auditStatus")
private Integer auditStatus; private Integer auditStatus;
/**
*
*/
@TableField(value = "busAuditStatus") @TableField(value = "busAuditStatus")
private Integer busAuditStatus; private Integer busAuditStatus;
/**
* 012:3:
*/
@TableField(value = "splitOrder")
private Integer splitOrder;
@TableField(exist = false) @TableField(exist = false)
public static final String COL_ID = "id"; public static final String COL_ID = "id";

@ -197,7 +197,7 @@ public class BasicBussinessTypeEntity {
private boolean secCheckBalance; private boolean secCheckBalance;
/** /**
* 使 * 使 0:1使2使
*/ */
@TableField(value = "useDyCount") @TableField(value = "useDyCount")
private int useDyCount; private int useDyCount;

@ -97,6 +97,12 @@ public class UdiRelevanceEntity {
@TableField(value = "isAdavence") @TableField(value = "isAdavence")
private Boolean isAdavence; private Boolean isAdavence;
/**
* 1:23
*/
@TableField(value = "purType")
private Integer purType;
/** /**
* 使 * 使
*/ */

@ -163,7 +163,7 @@ public class BussinessTypeSaveRequest {
private Boolean secCheckBalance; private Boolean secCheckBalance;
/** /**
* 使 * 使 0:1使2使
*/ */
private Integer useDyCount; private Integer useDyCount;

@ -50,6 +50,11 @@ public class CompanyProductRelevanceRequest extends ListPageRequest {
private Boolean isAdavence; private Boolean isAdavence;
private String unitFk; private String unitFk;
/**
* 1:23
*/
private Integer purType;
private String corpId; private String corpId;
private String billType; private String billType;
private String manufactory; private String manufactory;

@ -1,6 +1,7 @@
package com.glxp.api.req.basic; package com.glxp.api.req.basic;
import com.baomidou.mybatisplus.annotation.TableField;
import com.glxp.api.util.page.ListPageRequest; import com.glxp.api.util.page.ListPageRequest;
import lombok.Data; import lombok.Data;
@ -45,6 +46,10 @@ public class FilterUdiInfoRequest extends ListPageRequest {
private String udplatCode; private String udplatCode;
private String mainId; private String mainId;
private Boolean isAdavence; private Boolean isAdavence;
/**
* 1:23
*/
private Integer purType;
private String corpId; private String corpId;
private String billType; private String billType;

@ -51,6 +51,10 @@ public class FilterUdiRelRequest extends ListPageRequest {
private String udplatCode; private String udplatCode;
private String mainId; private String mainId;
private Boolean isAdavence; private Boolean isAdavence;
/**
* 1:23
*/
private Integer purType;
private String corpId; private String corpId;
private String billType; private String billType;

@ -22,4 +22,5 @@ public class SupplementRequest {
private String spmc; private String spmc;
private String cpms; private String cpms;
private String price; private String price;
private Integer purType;
} }

@ -30,6 +30,10 @@ public class UdiRelevanceRequest {
private Integer lockStatus; private Integer lockStatus;
private String udplatCode; private String udplatCode;
private Boolean isAdavence; private Boolean isAdavence;
/**
* 1:23
*/
private Integer purType;
private String supName; private String supName;
private String originUuid; private String originUuid;
private String price; private String price;

@ -22,6 +22,10 @@ public class UdiRelevanceSaveRequest {
private Boolean isLock; private Boolean isLock;
private Integer lockStatus; private Integer lockStatus;
private Boolean isAdavence; private Boolean isAdavence;
/**
* 1:23
*/
private Integer purType;
private Boolean useMuti; private Boolean useMuti;
private Integer useNum; private Integer useNum;
private String supName; private String supName;

@ -83,6 +83,9 @@ public class BasicBussinessTypeResponse {
private int checkBalance; private int checkBalance;
private boolean secCheckBalance; private boolean secCheckBalance;
/**
* 使 0:1使2使
*/
private int useDyCount; private int useDyCount;
private boolean expireTip; private boolean expireTip;

@ -58,6 +58,10 @@ public class CompanyProductRelevanceResponse {
private String mainId; private String mainId;
private String mainName; private String mainName;
private Boolean isAdavence; private Boolean isAdavence;
/**
* 1:23
*/
private Integer purType;
private String scbssfbhph; private String scbssfbhph;
private String scbssfbhxlh; private String scbssfbhxlh;

@ -23,6 +23,10 @@ public class UdiRelevanceResponse {
private Boolean isLock; private Boolean isLock;
private Integer lockStatus; private Integer lockStatus;
private Boolean isAdavence; private Boolean isAdavence;
/**
* 1:23
*/
private Integer purType;
private Boolean useMuti; private Boolean useMuti;
private Integer useNum; private Integer useNum;
private String supName; private String supName;

@ -58,6 +58,10 @@ public class UdiRlSupResponse {
private String mainId; private String mainId;
private String mainName; private String mainName;
private Boolean isAdavence; private Boolean isAdavence;
/**
* 1:23
*/
private Integer purType;
private String scbssfbhph; private String scbssfbhph;
private String scbssfbhxlh; private String scbssfbhxlh;

@ -60,6 +60,10 @@ public class UdiInfoResponse {
private Integer status; private Integer status;
private String supId; private String supId;
private boolean isAdavence; private boolean isAdavence;
/**
* 1:23
*/
private Integer purType;
private boolean isDisable; private boolean isDisable;
private boolean useMuti; private boolean useMuti;

@ -64,6 +64,8 @@ public interface IBasicBusTypePreService extends IService<BasicBusTypePreEntity>
*/ */
List<BasicBusTypePreEntity> findByAction(String action); List<BasicBusTypePreEntity> findByAction(String action);
List<BasicBusTypePreEntity> findByOiginActions(String originAction);
/** /**
* *
* *

@ -105,4 +105,6 @@ public interface UdiRelevanceService extends IService<UdiRelevanceEntity> {
String getRelIdByUdiCode(String code); String getRelIdByUdiCode(String code);
UdiRelevanceResponse selectOneUdi(FilterUdiRelRequest filterUdiRelRequest); UdiRelevanceResponse selectOneUdi(FilterUdiRelRequest filterUdiRelRequest);
Integer findPurType(Long relId);
} }

@ -11,6 +11,7 @@ import com.glxp.api.req.basic.FilterBusTypePreRequest;
import com.glxp.api.res.basic.BasicBusTypePreResponse; import com.glxp.api.res.basic.BasicBusTypePreResponse;
import com.glxp.api.service.auth.CustomerService; import com.glxp.api.service.auth.CustomerService;
import com.glxp.api.service.basic.IBasicBusTypePreService; import com.glxp.api.service.basic.IBasicBusTypePreService;
import com.glxp.api.util.IntUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -62,7 +63,12 @@ public class BasicBusTypePreServiceImpl extends ServiceImpl<BasicBusTypePreDao,
@Override @Override
public List<BasicBusTypePreEntity> findByAction(String action) { public List<BasicBusTypePreEntity> findByAction(String action) {
return basicBusTypePreDao.findByAction(action); return basicBusTypePreDao.findByAction(action, null);
}
@Override
public List<BasicBusTypePreEntity> findByOiginActions(String originAction) {
return basicBusTypePreDao.findByAction(null, originAction);
} }
@Override @Override
@ -83,6 +89,9 @@ public class BasicBusTypePreServiceImpl extends ServiceImpl<BasicBusTypePreDao,
@Override @Override
public boolean verifyExists(BasicBusTypePreEntity basicBusTypePreEntity) { public boolean verifyExists(BasicBusTypePreEntity basicBusTypePreEntity) {
// 校验是否有相同的单据类型流转配置
QueryWrapper<BasicBusTypePreEntity> wrapper = new QueryWrapper<>(); QueryWrapper<BasicBusTypePreEntity> wrapper = new QueryWrapper<>();
wrapper.eq("action", basicBusTypePreEntity.getAction()) wrapper.eq("action", basicBusTypePreEntity.getAction())
.eq("originAction", basicBusTypePreEntity.getOriginAction()) .eq("originAction", basicBusTypePreEntity.getOriginAction())
@ -92,7 +101,6 @@ public class BasicBusTypePreServiceImpl extends ServiceImpl<BasicBusTypePreDao,
.eq(null != basicBusTypePreEntity.getSupplementAll(), "supplementAll", basicBusTypePreEntity.getSupplementAll()) .eq(null != basicBusTypePreEntity.getSupplementAll(), "supplementAll", basicBusTypePreEntity.getSupplementAll())
.eq(null != basicBusTypePreEntity.getAuditStatus(), "auditStatus", basicBusTypePreEntity.getAuditStatus()) .eq(null != basicBusTypePreEntity.getAuditStatus(), "auditStatus", basicBusTypePreEntity.getAuditStatus())
.eq(null != basicBusTypePreEntity.getBusAuditStatus(), "busAuditStatus", basicBusTypePreEntity.getBusAuditStatus()); .eq(null != basicBusTypePreEntity.getBusAuditStatus(), "busAuditStatus", basicBusTypePreEntity.getBusAuditStatus());
List<BasicBusTypePreEntity> list = basicBusTypePreDao.selectList(wrapper); List<BasicBusTypePreEntity> list = basicBusTypePreDao.selectList(wrapper);
if (CollUtil.isNotEmpty(list)) { if (CollUtil.isNotEmpty(list)) {
if (null != basicBusTypePreEntity.getId()) { if (null != basicBusTypePreEntity.getId()) {
@ -105,6 +113,8 @@ public class BasicBusTypePreServiceImpl extends ServiceImpl<BasicBusTypePreDao,
return true; return true;
} }
} }
return false; return false;
} }

@ -2,6 +2,7 @@ package com.glxp.api.service.basic.impl;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.glxp.api.constant.ConstantStatus; import com.glxp.api.constant.ConstantStatus;
@ -16,6 +17,7 @@ import com.glxp.api.res.basic.UdiRlSupResponse;
import com.glxp.api.service.basic.UdiRelevanceService; import com.glxp.api.service.basic.UdiRelevanceService;
import com.glxp.api.service.basic.UdiRlSupService; import com.glxp.api.service.basic.UdiRlSupService;
import com.glxp.api.service.thrsys.ThrSystemService; import com.glxp.api.service.thrsys.ThrSystemService;
import com.glxp.api.util.IntUtil;
import com.glxp.api.util.udi.FilterUdiUtils; import com.glxp.api.util.udi.FilterUdiUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -414,4 +416,11 @@ public class UdiRelevanceServiceImpl extends ServiceImpl<UdiRelevanceDao, UdiRel
return udiRelevanceDao.selectOneUdi(filterUdiRelRequest); return udiRelevanceDao.selectOneUdi(filterUdiRelRequest);
} }
@Override
public Integer findPurType(Long relId) {
UdiRelevanceEntity udiRelevanceEntity = udiRelevanceDao.selectOne(new QueryWrapper<UdiRelevanceEntity>().select("purType").eq("id", relId).last("limit 1"));
return IntUtil.value(udiRelevanceEntity.getPurType());
}
} }

@ -931,6 +931,9 @@ public class IoAddInoutService {
InvWarehouseEntity invWarehouseEntity = invWarehouseService.findByOne(ConstantStatus.ACTION_TYPE_PREIN); InvWarehouseEntity invWarehouseEntity = invWarehouseService.findByOne(ConstantStatus.ACTION_TYPE_PREIN);
for (IoCodeTempEntity codeTempEntity : codeTempEntities) { for (IoCodeTempEntity codeTempEntity : codeTempEntities) {
if (checkDiAttribute(bussinessTypeEntity, codeTempEntity.getRelId(), 2)) {
int count = 0; int count = 0;
if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_NULL) { if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_NULL) {
if (StrUtil.isNotEmpty(codeTempEntity.getSerialNo())) { if (StrUtil.isNotEmpty(codeTempEntity.getSerialNo())) {
@ -947,10 +950,12 @@ public class IoAddInoutService {
return ResultVOUtils.error(500, "UDI码" + codeTempEntity.getCode() + "预验收库存数量不足!"); return ResultVOUtils.error(500, "UDI码" + codeTempEntity.getCode() + "预验收库存数量不足!");
} }
} }
}
} else if (bussinessTypeEntity.isAdvancePreIn()) { //校验寄售库存 } else if (bussinessTypeEntity.isAdvancePreIn()) { //校验寄售库存
InvWarehouseEntity invWarehouseEntity = invWarehouseService.findByOne(ConstantStatus.ACTION_TYPE_ADVANCE); InvWarehouseEntity invWarehouseEntity = invWarehouseService.findByOne(ConstantStatus.ACTION_TYPE_ADVANCE);
for (IoOrderDetailBizEntity orderDetailCodeEntity : orderDetailBizEntities) { for (IoOrderDetailBizEntity orderDetailCodeEntity : orderDetailBizEntities) {
if (checkDiAttribute(bussinessTypeEntity, orderDetailCodeEntity.getBindRlFk(), 3)) {
int count = 0; int count = 0;
if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_NULL) { if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_NULL) {
count = invPreProductDetailService.vailStockCount(orderDetailCodeEntity.getBindRlFk(), orderDetailCodeEntity.getBatchNo(), orderDetailCodeEntity.getSupId(), null, invWarehouseEntity.getCode(), null); count = invPreProductDetailService.vailStockCount(orderDetailCodeEntity.getBindRlFk(), orderDetailCodeEntity.getBatchNo(), orderDetailCodeEntity.getSupId(), null, invWarehouseEntity.getCode(), null);
@ -961,6 +966,7 @@ public class IoAddInoutService {
return ResultVOUtils.error(500, "提交失败," + orderDetailCodeEntity.getCoName() + "库存数量不足!"); return ResultVOUtils.error(500, "提交失败," + orderDetailCodeEntity.getCoName() + "库存数量不足!");
} }
} }
}
} else { //校验普通库存 } else { //校验普通库存
if (bussinessTypeEntity.isVailInv() && bussinessTypeEntity.getMainAction().equals(ConstantType.TYPE_OUT)) { if (bussinessTypeEntity.isVailInv() && bussinessTypeEntity.getMainAction().equals(ConstantType.TYPE_OUT)) {
@ -970,6 +976,7 @@ public class IoAddInoutService {
outInvCode = invWarehouseEntity.getCode(); outInvCode = invWarehouseEntity.getCode();
} }
for (IoOrderDetailBizEntity orderDetailCodeEntity : orderDetailBizEntities) { for (IoOrderDetailBizEntity orderDetailCodeEntity : orderDetailBizEntities) {
if (checkDiAttribute(bussinessTypeEntity, orderDetailCodeEntity.getBindRlFk(), 1)) {
int count = 0; int count = 0;
if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_NULL) { if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_NULL) {
count = invProductDetailService.vailStockCount(orderDetailCodeEntity.getBindRlFk(), orderDetailCodeEntity.getBatchNo(), orderDetailCodeEntity.getSupId(), null, outInvCode, null); count = invProductDetailService.vailStockCount(orderDetailCodeEntity.getBindRlFk(), orderDetailCodeEntity.getBatchNo(), orderDetailCodeEntity.getSupId(), null, outInvCode, null);
@ -982,9 +989,24 @@ public class IoAddInoutService {
} }
} }
} }
}
return null; return null;
} }
/**
*
*/
public boolean checkDiAttribute(BasicBussinessTypeEntity bussinessTypeEntity, Long relId, Integer purType) {
if (bussinessTypeEntity.getUseDyCount() == 2) {
if (udiRelevanceService.findPurType(relId) == IntUtil.value(purType)) {
return true;
} else
return false;
}
return true;
}
/** /**
* *
@ -1068,6 +1090,4 @@ public class IoAddInoutService {
} }
} }

@ -1,5 +1,6 @@
package com.glxp.api.service.inout; package com.glxp.api.service.inout;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.glxp.api.entity.basic.UdiRelevanceEntity; import com.glxp.api.entity.basic.UdiRelevanceEntity;
import com.glxp.api.service.basic.UdiRelevanceService; import com.glxp.api.service.basic.UdiRelevanceService;
import com.glxp.api.service.inout.impl.IoCodeService; import com.glxp.api.service.inout.impl.IoCodeService;
@ -148,7 +149,14 @@ public class IoChangeInoutService {
@Resource @Resource
UdiRelevanceService udiRelevanceService; UdiRelevanceService udiRelevanceService;
//生成单据 /**
*
*
* @param bussinessChangeTypeEntity
* @param useInList
* @param orderEntity
* @param isGenInovice
*/
public void buildInOrder(BasicBusTypePreEntity bussinessChangeTypeEntity, List<IoCodeEntity> useInList, IoOrderEntity orderEntity, boolean isGenInovice) { public void buildInOrder(BasicBusTypePreEntity bussinessChangeTypeEntity, List<IoCodeEntity> useInList, IoOrderEntity orderEntity, boolean isGenInovice) {
@ -160,13 +168,43 @@ public class IoChangeInoutService {
return; return;
} }
//是否根据耗材属性拆单
if (IntUtil.value(bussinessChangeTypeEntity.getSplitOrder()) > 0) {
List<BasicBusTypePreEntity> busTypePreEntities = basicBusTypePreService.findByOiginActions(orderEntity.getAction());
if (CollUtil.isNotEmpty(busTypePreEntities)) {
List<IoCodeEntity> normalCodes = new ArrayList<>();
List<IoCodeEntity> preInCodes = new ArrayList<>();
List<IoCodeEntity> preCodes = new ArrayList<>();
for (IoCodeEntity codeEntity : useInList) {
if (udiRelevanceService.findPurType(codeEntity.getRelId()) == ConstantStatus.ACTION_TYPE_NORMAL) {
normalCodes.add(codeEntity);
} else if (udiRelevanceService.findPurType(codeEntity.getRelId()) == ConstantStatus.ACTION_TYPE_PREIN) {
preInCodes.add(codeEntity);
} else if (udiRelevanceService.findPurType(codeEntity.getRelId()) == ConstantStatus.ACTION_TYPE_ADVANCE) {
preCodes.add(codeEntity);
}
}
BasicBussinessTypeEntity targetBustypeEntity;
for (BasicBusTypePreEntity busTypePreEntity : busTypePreEntities) {
targetBustypeEntity = basicBussinessTypeService.findByAction(busTypePreEntity.getAction());
if (busTypePreEntity.getSplitOrder() == ConstantStatus.ACTION_TYPE_NORMAL) {
buildGenOrder(targetBustypeEntity, busTypePreEntity, normalCodes, orderEntity, isGenInovice);
} else if (busTypePreEntity.getSplitOrder() == ConstantStatus.ACTION_TYPE_PREIN) {
buildGenOrder(targetBustypeEntity, busTypePreEntity, preInCodes, orderEntity, isGenInovice);
} else if (busTypePreEntity.getSplitOrder() == ConstantStatus.ACTION_TYPE_ADVANCE) {
buildGenOrder(targetBustypeEntity, busTypePreEntity, preCodes, orderEntity, isGenInovice);
}
}
}
} else {
//补单根据集采、非集采拆单
BasicBussinessTypeEntity targetBustypeEntity = basicBussinessTypeService.findByAction(bussinessChangeTypeEntity.getAction()); BasicBussinessTypeEntity targetBustypeEntity = basicBussinessTypeService.findByAction(bussinessChangeTypeEntity.getAction());
// buildGenOrder(targetBustypeEntity, bussinessChangeTypeEntity, useInList, orderEntity, isGenInovice);
List<IoCodeEntity> groupBuyList = new ArrayList<>(); List<IoCodeEntity> groupBuyList = new ArrayList<>();
List<IoCodeEntity> unGroupBuyList = new ArrayList<>(); List<IoCodeEntity> unGroupBuyList = new ArrayList<>();
if (IntUtil.value(targetBustypeEntity.getGroupBuySplit()) == 1) { if (IntUtil.value(targetBustypeEntity.getGroupBuySplit()) == 1) {
//过滤集采、非集采
for (IoCodeEntity codeEntity : useInList) { for (IoCodeEntity codeEntity : useInList) {
UdiRelevanceEntity udiRelevanceEntity = udiRelevanceService.selectById(codeEntity.getRelId()); UdiRelevanceEntity udiRelevanceEntity = udiRelevanceService.selectById(codeEntity.getRelId());
if (IntUtil.value(udiRelevanceEntity.getGroupBuy())) { if (IntUtil.value(udiRelevanceEntity.getGroupBuy())) {
@ -186,6 +224,8 @@ public class IoChangeInoutService {
buildGenOrder(targetBustypeEntity, bussinessChangeTypeEntity, useInList, orderEntity, isGenInovice); buildGenOrder(targetBustypeEntity, bussinessChangeTypeEntity, useInList, orderEntity, isGenInovice);
} }
}
} }
@ -342,10 +382,11 @@ public class IoChangeInoutService {
//根据单据设置状态 1:草稿 //根据单据设置状态 1:草稿
if (bussinessChangeTypeEntity.getAuditStatus() == 1) { if (bussinessChangeTypeEntity.getAuditStatus() == 1) {
outOrder.setStatus(ConstantStatus.ORDER_STATUS_TEMP_SAVE); outOrder.setStatus(ConstantStatus.ORDER_STATUS_TEMP_SAVE);
outOrder.setDealStatus(ConstantStatus.ORDER_STATUS_TEMP_SAVE);
orderService.update(outOrder); orderService.update(outOrder);
for (IoCodeTempEntity codeTempEntity : codeTempEntities) { for (IoCodeTempEntity codeTempEntity : codeTempEntities) {
addInoutService.genOrderDetailCode(orderEntity, codeTempEntity); addInoutService.genOrderDetailCode(outOrder, codeTempEntity);
} }
} else if (bussinessChangeTypeEntity.getAuditStatus() == 2 || bussinessChangeTypeEntity.getAuditStatus() == 3) { } else if (bussinessChangeTypeEntity.getAuditStatus() == 2 || bussinessChangeTypeEntity.getAuditStatus() == 3) {

@ -77,6 +77,12 @@ public class SupplementVailUtil {
return "产品价格不能为空"; return "产品价格不能为空";
} }
} }
basicProductSetEntity = basicProductSetEntityMap.get("purType");
if (isMustFill(type, basicProductSetEntity)) {
if (StrUtil.isEmptyIfStr(supplementRequest.getPurType())) {
return "采购类型不能为空";
}
}
basicProductSetEntity = basicProductSetEntityMap.get("basicPrductRemak1"); basicProductSetEntity = basicProductSetEntityMap.get("basicPrductRemak1");

@ -24,7 +24,14 @@
left join basic_bussiness_type on basic_bustype_pre.originAction = basic_bussiness_type.action left join basic_bussiness_type on basic_bustype_pre.originAction = basic_bussiness_type.action
left join auth_dept on basic_bustype_pre.defaultDeptCode = auth_dept.code left join auth_dept on basic_bustype_pre.defaultDeptCode = auth_dept.code
left join auth_warehouse on basic_bustype_pre.defaultInvCode = auth_warehouse.code left join auth_warehouse on basic_bustype_pre.defaultInvCode = auth_warehouse.code
where basic_bustype_pre.action = #{action} <where>
<if test="originAction != null and originAction != ''">
AND basic_bustype_pre.originAction like concat('%', #{originAction}, '%')
</if>
<if test="action != null and action != ''">
AND basic_bustype_pre.action like concat('%', #{action}, '%')
</if>
</where>
</select> </select>
<select id="selectBusTypePreResList" resultType="com.glxp.api.res.basic.BasicBusTypePreResponse"> <select id="selectBusTypePreResList" resultType="com.glxp.api.res.basic.BasicBusTypePreResponse">
@ -62,7 +69,8 @@
</where> </where>
</select> </select>
<insert id="insertOrUpdateEntity" keyColumn="id" keyProperty="id" parameterType="com.glxp.api.entity.basic.BasicBusTypePreEntity" useGeneratedKeys="true"> <insert id="insertOrUpdateEntity" keyColumn="id" keyProperty="id"
parameterType="com.glxp.api.entity.basic.BasicBusTypePreEntity" useGeneratedKeys="true">
insert into basic_bustype_pre insert into basic_bustype_pre
<trim prefix="(" suffix=")" suffixOverrides=","> <trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null"> <if test="id != null">
@ -146,5 +154,4 @@
createType = #{createType,jdbcType=TINYINT}, createType = #{createType,jdbcType=TINYINT},
</trim> </trim>
</insert> </insert>
</mapper> </mapper>

@ -99,6 +99,7 @@
basic_corp.name companyName, basic_corp.name companyName,
basic_udirel.mainId, basic_udirel.mainId,
basic_udirel.isAdavence, basic_udirel.isAdavence,
basic_udirel.purType,
basic_products.scbssfbhph, basic_products.scbssfbhph,
basic_products.scbssfbhxlh, basic_products.scbssfbhxlh,
basic_products.scbssfbhscrq, basic_products.scbssfbhscrq,

@ -1228,7 +1228,7 @@
INTO basic_udirel INTO basic_udirel
(id, uuid, mainId, thirdId, thirdId1, thirdId2, thirdId3, thirdId4, udplatCode, isUseDy, isDisable, (id, uuid, mainId, thirdId, thirdId1, thirdId2, thirdId3, thirdId4, udplatCode, isUseDy, isDisable,
isLock, isLock,
lockStatus, isAdavence, useMuti, useNum, supName, createTime, updateTime, modifyTime, createUser, lockStatus, isAdavence,purType, useMuti, useNum, supName, createTime, updateTime, modifyTime, createUser,
updateUser, updateUser,
remark, useExpireTime, dispatch, groupBuy, needCert) remark, useExpireTime, dispatch, groupBuy, needCert)
values (#{id}, values (#{id},
@ -1244,7 +1244,7 @@
#{isDisable}, #{isDisable},
#{isLock}, #{isLock},
#{lockStatus}, #{lockStatus},
#{isAdavence}, #{isAdavence},#{purType},
#{useMuti}, #{useMuti},
#{useNum}, #{useNum},
#{supName}, #{supName},
@ -1263,7 +1263,7 @@
INTO basic_udirel INTO basic_udirel
(id, uuid, mainId, thirdId, thirdId1, thirdId2, thirdId3, thirdId4, udplatCode, isUseDy, isDisable, (id, uuid, mainId, thirdId, thirdId1, thirdId2, thirdId3, thirdId4, udplatCode, isUseDy, isDisable,
isLock, isLock,
lockStatus, isAdavence, useMuti, useNum, supName, createTime, updateTime, modifyTime, createUser, lockStatus, isAdavence,purType, useMuti, useNum, supName, createTime, updateTime, modifyTime, createUser,
updateUser, updateUser,
remark, useExpireTime, dispatch, groupBuy, needCert) remark, useExpireTime, dispatch, groupBuy, needCert)
values (#{id}, values (#{id},
@ -1279,7 +1279,7 @@
#{isDisable}, #{isDisable},
#{isLock}, #{isLock},
#{lockStatus}, #{lockStatus},
#{isAdavence}, #{isAdavence},#{purType},
#{useMuti}, #{useMuti},
#{useNum}, #{useNum},
#{supName}, #{supName},
@ -1353,6 +1353,9 @@
<if test="isAdavence != null"> <if test="isAdavence != null">
isAdavence=#{isAdavence}, isAdavence=#{isAdavence},
</if> </if>
<if test="purType != null">
purType=#{purType},
</if>
<if test="useMuti != null"> <if test="useMuti != null">
useMuti=#{useMuti}, useMuti=#{useMuti},
</if> </if>
@ -1432,7 +1435,7 @@
into basic_udirel into basic_udirel
(id, uuid, mainId, thirdId, thirdId1, thirdId2, thirdId3, thirdId4, udplatCode, isUseDy, isDisable, (id, uuid, mainId, thirdId, thirdId1, thirdId2, thirdId3, thirdId4, udplatCode, isUseDy, isDisable,
isLock, isLock,
lockStatus, isAdavence, useMuti, useNum, supName, createTime, updateTime, modifyTime, createUser, lockStatus, isAdavence,purType, useMuti, useNum, supName, createTime, updateTime, modifyTime, createUser,
updateUser, updateUser,
remark, useExpireTime, dispatch, groupBuy, needCert) remark, useExpireTime, dispatch, groupBuy, needCert)
values values
@ -1451,7 +1454,7 @@
#{item.isDisable}, #{item.isDisable},
#{item.isLock}, #{item.isLock},
#{item.lockStatus}, #{item.lockStatus},
#{item.isAdavence}, #{item.isAdavence},#{item.purType},
#{item.useMuti}, #{item.useMuti},
#{item.useNum}, #{item.useNum},
#{item.supName}, #{item.supName},

@ -46,7 +46,7 @@
basic_udirel.lockStatus, basic_udirel.lockStatus,
basic_udirel.mainId, basic_udirel.mainId,
basic_udirel.isAdavence, basic_udirel.isAdavence,
basic_udirel.purType,
basic_udirel.lowStockNum, basic_udirel.lowStockNum,
basic_udirel.overStockNum, basic_udirel.overStockNum,
basic_udirel.recentDateTime, basic_udirel.recentDateTime,

@ -608,3 +608,4 @@ CALL Pro_Temp_ColumnWork('io_order', 'fromSpmsOrders', 'varchar(255)', 1);
CALL Pro_Temp_ColumnWork('basic_bussiness_type', 'checkReview', 'tinyint', 1); CALL Pro_Temp_ColumnWork('basic_bussiness_type', 'checkReview', 'tinyint', 1);
CALL Pro_Temp_ColumnWork('basic_bussiness_type', 'secCheckReview', 'tinyint', 1); CALL Pro_Temp_ColumnWork('basic_bussiness_type', 'secCheckReview', 'tinyint', 1);
CALL Pro_Temp_ColumnWork('basic_bussiness_type', 'thrCheckReview', 'tinyint', 1); CALL Pro_Temp_ColumnWork('basic_bussiness_type', 'thrCheckReview', 'tinyint', 1);

@ -503,5 +503,11 @@ SET FOREIGN_KEY_CHECKS = 1;
CALL Pro_Temp_ColumnWork('thr_corp', 'kfdm', 'varchar(255)', 1); CALL Pro_Temp_ColumnWork('thr_corp', 'kfdm', 'varchar(255)', 1);
CALL Pro_Temp_ColumnWork('basic_udirel', 'purType', 'tinyint', 1);
INSERT ignore INTO basic_product_set(`id`, `parmName`, `parmKey`, `enable`, `supSelect`, `supAdd`, `localAdd`, `remark`,
`sort`, `localEdit`)
VALUES (33, '采购类型', 'purType', 1, 1, 1, 0, '采购类型是否必填字段', 65, 1);

Loading…
Cancel
Save