单据类型转换,耗材字典新增问题

master
anthonywj 2 years ago
parent f14e4c2b78
commit fbcc23540d

@ -85,7 +85,10 @@ public class BasicBussinessTypeController extends BaseController {
if (isHosUser()) {
bussinessTypeFilterRequest.setUserId(getUserId());
} else {
// 供应商用户默认获取全部单据类型
bussinessTypeFilterRequest.setUserId(null);
bussinessTypeFilterRequest.setCode(null);
}
List<BasicBussinessTypeResponse> bussinessTypeEntities;
bussinessTypeEntities = basicBussinessTypeService.filterJoinByUser(

@ -515,7 +515,8 @@ public class UdiRelevanceController {
for (ThrSystemEntity thrSystemEntity : basicThirdSysEntities) {
if (thrSystemEntity.getThirdId().equals("thirdId")) {
BasicProductThirdSysResponse basicProductThirdSysResponse = new BasicProductThirdSysResponse();
basicProductThirdSysResponse.setThirdId(udiRelevanceEntity.getThirdId());
if (StrUtil.isNotEmpty(udiRelevanceEntity.getThirdId()))
basicProductThirdSysResponse.setThirdId(udiRelevanceEntity.getThirdId());
basicProductThirdSysResponse.setSysName(thrSystemEntity.getThirdName());
basicProductThirdSysResponse.setSysId(thrSystemEntity.getThirdId());
if (udiRelevanceEntity.getThirdId() != null && !udiRelevanceEntity.getThirdId().isEmpty()) {
@ -534,7 +535,8 @@ public class UdiRelevanceController {
}
if (thrSystemEntity.getThirdId().equals("thirdId1")) {
BasicProductThirdSysResponse basicProductThirdSysResponse = new BasicProductThirdSysResponse();
basicProductThirdSysResponse.setThirdId(udiRelevanceEntity.getThirdId1());
if (StrUtil.isNotEmpty(udiRelevanceEntity.getThirdId1()))
basicProductThirdSysResponse.setThirdId(udiRelevanceEntity.getThirdId1());
basicProductThirdSysResponse.setSysName(thrSystemEntity.getThirdName());
basicProductThirdSysResponse.setSysId(thrSystemEntity.getThirdId());
if (udiRelevanceEntity.getThirdId1() != null && !udiRelevanceEntity.getThirdId1().isEmpty()) {
@ -550,7 +552,8 @@ public class UdiRelevanceController {
}
if (thrSystemEntity.getThirdId().equals("thirdId2")) {
BasicProductThirdSysResponse basicProductThirdSysResponse = new BasicProductThirdSysResponse();
basicProductThirdSysResponse.setThirdId(udiRelevanceEntity.getThirdId2());
if (StrUtil.isNotEmpty(udiRelevanceEntity.getThirdId2()))
basicProductThirdSysResponse.setThirdId(udiRelevanceEntity.getThirdId2());
basicProductThirdSysResponse.setSysName(thrSystemEntity.getThirdName());
basicProductThirdSysResponse.setSysId(thrSystemEntity.getThirdId());
if (udiRelevanceEntity.getThirdId2() != null && !udiRelevanceEntity.getThirdId2().isEmpty()) {
@ -566,7 +569,8 @@ public class UdiRelevanceController {
}
if (thrSystemEntity.getThirdId().equals("thirdId3")) {
BasicProductThirdSysResponse basicProductThirdSysResponse = new BasicProductThirdSysResponse();
basicProductThirdSysResponse.setThirdId(udiRelevanceEntity.getThirdId3());
if (StrUtil.isNotEmpty(udiRelevanceEntity.getThirdId3()))
basicProductThirdSysResponse.setThirdId(udiRelevanceEntity.getThirdId3());
basicProductThirdSysResponse.setSysName(thrSystemEntity.getThirdName());
basicProductThirdSysResponse.setSysId(thrSystemEntity.getThirdId());
if (udiRelevanceEntity.getThirdId3() != null && !udiRelevanceEntity.getThirdId3().isEmpty()) {
@ -583,7 +587,8 @@ public class UdiRelevanceController {
}
if (thrSystemEntity.getThirdId().equals("thirdId4")) {
BasicProductThirdSysResponse basicProductThirdSysResponse = new BasicProductThirdSysResponse();
basicProductThirdSysResponse.setThirdId(udiRelevanceEntity.getThirdId4());
if (StrUtil.isNotEmpty(udiRelevanceEntity.getThirdId4()))
basicProductThirdSysResponse.setThirdId(udiRelevanceEntity.getThirdId4());
basicProductThirdSysResponse.setSysName(thrSystemEntity.getThirdName());
basicProductThirdSysResponse.setSysId(thrSystemEntity.getThirdId());
if (udiRelevanceEntity.getThirdId4() != null && !udiRelevanceEntity.getThirdId4().isEmpty()) {
@ -643,11 +648,11 @@ public class UdiRelevanceController {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage());
}
boolean falg=udiProductService.updateUdiInfoById(udiProductEntity);
if(falg){
boolean falg = udiProductService.updateUdiInfoById(udiProductEntity);
if (falg) {
return ResultVOUtils.success("更新成功");
}else{
return ResultVOUtils.error(999,"更新失败");
} else {
return ResultVOUtils.error(999, "更新失败");
}
}

@ -16,6 +16,7 @@ import com.glxp.api.entity.basic.UdiProductEntity;
import com.glxp.api.entity.basic.UdiRelevanceEntity;
import com.glxp.api.entity.thrsys.ThrProductsAddDiEntity;
import com.glxp.api.entity.thrsys.ThrProductsEntity;
import com.glxp.api.entity.thrsys.ThrSystemEntity;
import com.glxp.api.exception.JsonException;
import com.glxp.api.req.basic.SupplementRequest;
import com.glxp.api.req.basic.UdiCombineRequest;
@ -31,6 +32,7 @@ import com.glxp.api.service.auth.CustomerService;
import com.glxp.api.service.basic.*;
import com.glxp.api.service.thrsys.ThrProductsAddDiService;
import com.glxp.api.service.thrsys.ThrProductsService;
import com.glxp.api.service.thrsys.ThrSystemService;
import com.glxp.api.util.CustomUtil;
import com.glxp.api.util.SupplementVailUtil;
import lombok.Data;
@ -81,7 +83,6 @@ public class ThrProductsAddDiController {
CustomerService customerService;
/**
* DI
*
@ -151,6 +152,10 @@ public class ThrProductsAddDiController {
return authAdmin.getCustomerId() + "";
}
@Resource
ThrSystemService thrSystemService;
/**
* DI
*
@ -165,86 +170,88 @@ public class ThrProductsAddDiController {
}
thrProductsAddDiEntity.setAuditTime(new Date());
thrProductsAddDiEntity.setAuditUser(customerService.getUserId()+"");
thrProductsAddDiEntity.setAuditUser(customerService.getUserId() + "");
thrProductsAddDiService.updateDiProduct(thrProductsAddDiEntity);
thrProductsAddDiEntity = thrProductsAddDiService.selecById(thrProductsAddDiEntity.getId());
//自增的数据就再到第三方产品里面
if(thrProductsAddDiEntity.getType()==2){
ThrProductsEntity thrProductsEntity=new ThrProductsEntity();
BeanUtils.copyProperties(thrProductsAddDiEntity,thrProductsEntity);
thrProductsService.insertThrProducts(thrProductsEntity);
}
ThrProductsAddDiResponse thrProductsAddDiResponse = thrProductsAddDiService.selecById(thrProductsAddDiEntity.getId());
if (thrProductsAddDiEntity.getStatus() == 2) { //审核通过
//审核通过后追加到耗材字典中
UdiCombineRequest combineRequest = new UdiCombineRequest();
combineRequest.setCustomerId(Long.valueOf(thrProductsAddDiEntity.getCustomerId()));
//插入数据,并获取关联主键
if (udiContrastService.isExit(thrProductsAddDiEntity.getUuid(), null, null)) {
return ResultVOUtils.error(500, "已存在该DI且未对照请联系供应商自行选入产品");
} else {
Long udiRelIdFk = udiContrastService.createOnlyUuid(combineRequest, thrProductsAddDiEntity.getUuid());
//字段更新
UdiRelevanceEntity udiRelevanceEntity = udiRelevanceService.selectById(udiRelIdFk);
//更新产品信息
UdiProductEntity udiProductEntity = udiProductService.findByUuid(udiRelevanceEntity.getUuid());
udiProductEntity.setSptm(thrProductsAddDiResponse.getSptm());
udiProductEntity.setYbbm(thrProductsAddDiResponse.getYbbm());
udiProductEntity.setMeasname(thrProductsAddDiResponse.getMeasname());
udiProductEntity.setManufactory(thrProductsAddDiResponse.getManufactory());
udiProductEntity.setSpmc(thrProductsAddDiResponse.getSpmc());
udiProductEntity.setCpms(thrProductsAddDiResponse.getCpms());
udiProductEntity.setPrice(thrProductsAddDiResponse.getPrice());
udiProductEntity.setBasicPrductRemak1(thrProductsAddDiResponse.getBasicPrductRemak1());
udiProductEntity.setBasicPrductRemak2(thrProductsAddDiResponse.getBasicPrductRemak2());
udiProductEntity.setBasicPrductRemak3(thrProductsAddDiResponse.getBasicPrductRemak3());
udiProductEntity.setBasicPrductRemak4(thrProductsAddDiResponse.getBasicPrductRemak4());
udiProductEntity.setBasicPrductRemak5(thrProductsAddDiResponse.getBasicPrductRemak5());
udiProductEntity.setBasicPrductRemak6(thrProductsAddDiResponse.getBasicPrductRemak6());
udiProductEntity.setBasicPrductRemak7(thrProductsAddDiResponse.getBasicPrductRemak7());
udiProductEntity.setBasicPrductRemak8(thrProductsAddDiResponse.getBasicPrductRemak8());
udiProductService.updateUdiInfo(udiProductEntity);
UdiRelevanceEntity udiRelevanceEntity1=new UdiRelevanceEntity();
BeanUtils.copyProperties(udiRelevanceEntity,udiRelevanceEntity1);
udiRelevanceService.updateUdiRelevance(udiRelevanceEntity1);
//第三方产品审核通过
if (thrProductsAddDiEntity.getType() == 2) {
ThrProductsEntity thrProductsEntity = new ThrProductsEntity();
BeanUtils.copyProperties(thrProductsAddDiEntity, thrProductsEntity);
thrProductsService.insertThrProducts(thrProductsEntity);
ThrSystemEntity basicThirdSysEntity = thrSystemService.selectMainThrSys();
if (basicThirdSysEntity.getThirdId().equals(thrProductsAddDiEntity.getThirdSysFk()))
if (!udiContrastService.isExit(null, thrProductsAddDiEntity.getCode(), null)) {
udiContrastService.createOnlyMainId(thrProductsAddDiEntity.getCode());
}
} else { //选入DI信息审核通过
//审核通过后追加到耗材字典中
UdiCombineRequest combineRequest = new UdiCombineRequest();
combineRequest.setCustomerId(Long.valueOf(thrProductsAddDiEntity.getCustomerId()));
//插入数据,并获取关联主键
if (udiContrastService.isExit(thrProductsAddDiEntity.getUuid(), null, null)) {
return ResultVOUtils.error(500, "已存在该DI且未对照请联系供应商自行选入产品");
} else {
Long udiRelIdFk = udiContrastService.createOnlyUuid(combineRequest, thrProductsAddDiEntity.getUuid());
//字段更新
UdiRelevanceEntity udiRelevanceEntity = udiRelevanceService.selectById(udiRelIdFk);
//更新产品信息
UdiProductEntity udiProductEntity = udiProductService.findByUuid(udiRelevanceEntity.getUuid());
udiProductEntity.setSptm(thrProductsAddDiResponse.getSptm());
udiProductEntity.setYbbm(thrProductsAddDiResponse.getYbbm());
udiProductEntity.setMeasname(thrProductsAddDiResponse.getMeasname());
udiProductEntity.setManufactory(thrProductsAddDiResponse.getManufactory());
udiProductEntity.setSpmc(thrProductsAddDiResponse.getSpmc());
udiProductEntity.setCpms(thrProductsAddDiResponse.getCpms());
udiProductEntity.setPrice(thrProductsAddDiResponse.getPrice());
udiProductEntity.setBasicPrductRemak1(thrProductsAddDiResponse.getBasicPrductRemak1());
udiProductEntity.setBasicPrductRemak2(thrProductsAddDiResponse.getBasicPrductRemak2());
udiProductEntity.setBasicPrductRemak3(thrProductsAddDiResponse.getBasicPrductRemak3());
udiProductEntity.setBasicPrductRemak4(thrProductsAddDiResponse.getBasicPrductRemak4());
udiProductEntity.setBasicPrductRemak5(thrProductsAddDiResponse.getBasicPrductRemak5());
udiProductEntity.setBasicPrductRemak6(thrProductsAddDiResponse.getBasicPrductRemak6());
udiProductEntity.setBasicPrductRemak7(thrProductsAddDiResponse.getBasicPrductRemak7());
udiProductEntity.setBasicPrductRemak8(thrProductsAddDiResponse.getBasicPrductRemak8());
udiProductService.updateUdiInfo(udiProductEntity);
UdiRelevanceEntity udiRelevanceEntity1 = new UdiRelevanceEntity();
BeanUtils.copyProperties(udiRelevanceEntity, udiRelevanceEntity1);
udiRelevanceService.updateUdiRelevance(udiRelevanceEntity1);
// udiInfoService.updateUdiInfo(udiInfoEntity);
//回填关联关系到关联表
CompanyProductRelevanceEntity companyProductRelevanceEntity = new CompanyProductRelevanceEntity();
companyProductRelevanceEntity.setCustomerId(thrProductsAddDiEntity.getCustomerId());
companyProductRelevanceEntity.setUdiRlIdFk(udiRelIdFk);
companyProductRelevanceEntity.setCreateTime(new Date());
companyProductRelevanceEntity.setUpdateTime(new Date());
companyProductRelevanceEntity.setUnitFk(thrProductsAddDiEntity.getCustomerId().toString());
companyProductRelevanceEntity.setAuditStatus("1");
if (StrUtil.isNotEmpty(thrProductsAddDiEntity.getPrice()))
companyProductRelevanceEntity.setPrice(new BigDecimal(thrProductsAddDiEntity.getPrice()));
companyProductRelevanceService.insertCompanyProductRelevance(companyProductRelevanceEntity);
if (StrUtil.isNotEmpty(thrProductsAddDiEntity.getSelectThridSysStr())) {
List<String> thirdSysList = JSONUtil.toList(thrProductsAddDiEntity.getSelectThridSysStr(), String.class);
if (thirdSysList.size() > 0) {
for (String thirdSys : thirdSysList) {
BasicNewUploadDiEntity newUploadDiEntity = new BasicNewUploadDiEntity();
newUploadDiEntity.setRelId(udiRelIdFk + "");
newUploadDiEntity.setUpdateTime(new Date());
newUploadDiEntity.setUploadStatus(0);
newUploadDiEntity.setThirdSysFk(thirdSys);
basicNewUploadDiService.insertNewUploadDi(newUploadDiEntity);
//回填关联关系到关联表
CompanyProductRelevanceEntity companyProductRelevanceEntity = new CompanyProductRelevanceEntity();
companyProductRelevanceEntity.setCustomerId(thrProductsAddDiEntity.getCustomerId());
companyProductRelevanceEntity.setUdiRlIdFk(udiRelIdFk);
companyProductRelevanceEntity.setCreateTime(new Date());
companyProductRelevanceEntity.setUpdateTime(new Date());
companyProductRelevanceEntity.setUnitFk(thrProductsAddDiEntity.getCustomerId().toString());
companyProductRelevanceEntity.setAuditStatus("1");
if (StrUtil.isNotEmpty(thrProductsAddDiEntity.getPrice()))
companyProductRelevanceEntity.setPrice(new BigDecimal(thrProductsAddDiEntity.getPrice()));
companyProductRelevanceService.insertCompanyProductRelevance(companyProductRelevanceEntity);
if (StrUtil.isNotEmpty(thrProductsAddDiEntity.getSelectThridSysStr())) {
List<String> thirdSysList = JSONUtil.toList(thrProductsAddDiEntity.getSelectThridSysStr(), String.class);
if (thirdSysList.size() > 0) {
for (String thirdSys : thirdSysList) {
BasicNewUploadDiEntity newUploadDiEntity = new BasicNewUploadDiEntity();
newUploadDiEntity.setRelId(udiRelIdFk + "");
newUploadDiEntity.setUpdateTime(new Date());
newUploadDiEntity.setUploadStatus(0);
newUploadDiEntity.setThirdSysFk(thirdSys);
basicNewUploadDiService.insertNewUploadDi(newUploadDiEntity);
}
}
}
}
}

@ -81,6 +81,19 @@ public class BasicBusTypeChangeEntity {
@TableField(value = "remark")
private String remark;
@TableField(value = "auditStatus")
private Integer auditStatus;
@TableField(value = "busAuditStatus")
private Integer busAuditStatus;
@TableField(value = "targetBusAction")
private String targetBusAction;
@TableField(value = "beforeTime")
private Integer beforeTime;
@TableField(value = "busBeforeTime")
private Integer busBeforeTime;
public static final String COL_ID = "id";
public static final String COL_ORIGINACTION = "originAction";

@ -123,6 +123,19 @@ public class BasicBusTypePreEntity {
@TableField(value = "remark")
private String remark;
/**
*
*/
@TableField(value = "targetBusAction")
private String targetBusAction;
@TableField(value = "busBeforeTime")
private Integer busBeforeTime;
@TableField(value = "auditStatus")
private Integer auditStatus;
@TableField(value = "busAuditStatus")
private Integer busAuditStatus;
public static final String COL_ID = "id";
public static final String COL_INTRO = "intro";

@ -29,4 +29,7 @@ public class BasicBusTypePreResponse extends BasicBusTypePreEntity {
*/
private String defaultInvName;
private String targetBusName;
}

@ -0,0 +1,233 @@
package com.glxp.api.service.inout;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.glxp.api.constant.Constant;
import com.glxp.api.constant.ConstantStatus;
import com.glxp.api.constant.ConstantType;
import com.glxp.api.entity.auth.InvWarehouseEntity;
import com.glxp.api.entity.basic.BasicBusTypePreEntity;
import com.glxp.api.entity.basic.BasicBussinessTypeEntity;
import com.glxp.api.entity.inout.IoCodeEntity;
import com.glxp.api.entity.inout.IoCodeTempEntity;
import com.glxp.api.entity.inout.IoOrderEntity;
import com.glxp.api.entity.inv.InvProductDetailEntity;
import com.glxp.api.entity.system.SystemParamConfigEntity;
import com.glxp.api.service.auth.InvWarehouseService;
import com.glxp.api.service.basic.IBasicBusTypePreService;
import com.glxp.api.service.basic.IBasicBussinessTypeService;
import com.glxp.api.service.inv.InvProductDetailService;
import com.glxp.api.service.inv.InvProductService;
import com.glxp.api.service.system.SystemParamConfigService;
import com.glxp.api.util.CustomUtil;
import com.glxp.api.util.DateUtil;
import com.glxp.api.util.GennerOrderUtils;
import com.glxp.api.util.OrderNoTypeBean;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.*;
/**
*
*/
@Service
public class IoChangeInoutService {
@Resource
IBasicBusTypePreService basicBusTypePreService;
@Resource
IoCodeService codeService;
@Resource
IoOrderService orderService;
@Resource
InvProductDetailService invProductDetailService;
@Resource
IBasicBussinessTypeService basicBussinessTypeService;
@Resource
GennerOrderUtils gennerOrderUtils;
@Resource
IoAddInoutService addInoutService;
@Resource
IoCheckInoutService ioCheckInoutService;
@Resource
InvWarehouseService invWarehouseService;
@Resource
SystemParamConfigService systemParamConfigService;
@Resource
IoCodeTempService codeTempService;
public void changeOrder(IoOrderEntity orderEntity) {
BasicBusTypePreEntity basicBusTypePreEntity = basicBusTypePreService.findByOriginAction(orderEntity.getAction());
List<IoCodeEntity> codeEnttities = codeService.findByOrderId(orderEntity.getBillNo());
buildInOrder(basicBusTypePreEntity, codeEnttities, orderEntity);
}
//后续做修改
public void changeBusOrder(IoOrderEntity orderEntity) {
}
//普通出入库单据流转
public void genNewOrder(IoOrderEntity orderEntity, List<InvProductDetailEntity> invProductDetailEntities) {
BasicBusTypePreEntity basicBusTypePreEntity = basicBusTypePreService.findByOriginAction(orderEntity.getAction());
List<IoCodeEntity> codeEnttities = codeService.findByOrderId(orderEntity.getBillNo());
if (basicBusTypePreEntity.getSupplementAll()) {//全量补单
invProductDetailService.insertList(invProductDetailEntities);
buildInOrder(basicBusTypePreEntity, codeEnttities, orderEntity);
} else { //缺量补单
List<IoCodeEntity> inList = new ArrayList<>();
for (IoCodeEntity warehouseEntity : codeEnttities) {
Integer invCount = getInvCount(warehouseEntity);
Integer count = warehouseEntity.getMyReCount();
if (invCount > 0) {//仓库已存在该产品
if (count > invCount) { //当前数量>结余数量,说明该产品是无序列号或者是多级包装
if (count > invCount) { //该产品实际数量大于结余数量,说明是多级包装,直接补
inList.add(warehouseEntity);
} else if (warehouseEntity.getSerialNo() == null) { //无序列号(多级包装无序列号的已在上一步被排除),补齐数量
int lea = count - invCount;
warehouseEntity.setCount(lea / (count)); //
inList.add(warehouseEntity);
}
}
} else { //结余数量《=0直接补
inList.add(warehouseEntity);
}
InvProductDetailEntity invProductDetailEntity = filterInvByCode(invProductDetailEntities, warehouseEntity.getCode());
invProductDetailService.insert(invProductDetailEntity);
}
buildInOrder(basicBusTypePreEntity, inList, orderEntity);
}
}
public InvProductDetailEntity filterInvByCode(List<InvProductDetailEntity> invProductDetailEntities, String
code) {
for (InvProductDetailEntity invProductDetailEntity : invProductDetailEntities) {
if (invProductDetailEntity.getCode().equals(code)) {
return invProductDetailEntity;
}
}
return null;
}
//计算当前库存数量
public int getInvCount(IoCodeEntity codeEntity) {
List<InvProductDetailEntity> resultLists = invProductDetailService.selectByUnique(codeEntity.getRelId(), codeEntity.getBatchNo(), codeEntity.getSupId(), codeEntity.getDeptCode(), codeEntity.getInvCode());
int invCount = 0;
if (CollUtil.isNotEmpty(resultLists)) {
for (InvProductDetailEntity invProductDetailEntity : resultLists) {
if (invProductDetailEntity.getMainAction().equals(ConstantType.TYPE_OUT)) {
invCount = invCount - invProductDetailEntity.getReCount();
} else {
invCount = invCount + invProductDetailEntity.getReCount();
}
}
}
return invCount;
}
//生成单据
public void buildInOrder(BasicBusTypePreEntity bussinessChangeTypeEntity, List<IoCodeEntity> useInList, IoOrderEntity orderEntity) {
if (useInList.size() <= 0) {
return;
}
Map<String, List<IoCodeEntity>> filterSupMaps = new HashMap<>();
BasicBussinessTypeEntity targetBustypeEntity = basicBussinessTypeService.findByAction(bussinessChangeTypeEntity.getAction());
//过滤供应商
if (targetBustypeEntity.getCorpType() == ConstantStatus.CORP_TYPE_OUT) {
for (IoCodeEntity warehouseEntity : useInList) {
if (warehouseEntity.getSupId() != null) {
if (filterSupMaps.get(warehouseEntity.getSupId()) == null) {
List<IoCodeEntity> temps = new ArrayList<>();
temps.add(warehouseEntity);
filterSupMaps.put(warehouseEntity.getSupId(), temps);
} else {
filterSupMaps.get(warehouseEntity.getSupId()).add(warehouseEntity);
}
}
}
} else {
filterSupMaps.put(bussinessChangeTypeEntity.getDefaultInvCode(), useInList);
}
//根据往来单位生成入库单
for (String corpName : filterSupMaps.keySet()) {
List<IoCodeEntity> temps;
temps = filterSupMaps.get(corpName);
IoOrderEntity outOrder = new IoOrderEntity();
BeanUtils.copyProperties(orderEntity, outOrder);
outOrder.setId(null);
outOrder.setSupplementNo(null);//补单需置空
if (bussinessChangeTypeEntity.getBeforeTime() != null)
outOrder.setCreateTime(DateUtil.getBeforeDay(DateUtil.fromDate(orderEntity), bussinessChangeTypeEntity.getBeforeTime()));
else
outOrder.setCreateTime(DateUtil.fromDate(orderEntity));
outOrder.setAction(targetBustypeEntity.getAction());
outOrder.setMainAction(targetBustypeEntity.getMainAction());
outOrder.setBusType(targetBustypeEntity.getBusType());
outOrder.setFromType(ConstantStatus.FROM_CHANGE);
String orderNo = gennerOrderUtils.createScOrderNo(new OrderNoTypeBean(Constant.SCAN_ORDER + StrUtil.trimToEmpty(targetBustypeEntity.getPrefix()), "yyyyMMdd"));
outOrder.setBillNo(orderNo);
if (targetBustypeEntity.getCorpType() == ConstantStatus.CORP_TYPE_OUT) {
outOrder.setCustomerId(corpName);
outOrder.setFromCorp(corpName);
outOrder.setFromInvCode(null);
outOrder.setFromDeptCode(null);
} else {
outOrder.setCustomerId(Constant.SYSTEM_CUSTOMER_ID);
outOrder.setFromInvCode(bussinessChangeTypeEntity.getDefaultInvCode());
outOrder.setFromDeptCode(bussinessChangeTypeEntity.getDefaultDeptCode());
outOrder.setFromCorp(null);
}
outOrder.setCorpOrderId(CustomUtil.getId() + "x");
InvWarehouseEntity invWarehouseEntity = invWarehouseService.findByInvSubByCode(bussinessChangeTypeEntity.getInvCode());
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());
orderEntity.setUpdateTime(new Date());
orderService.update(orderEntity);
outOrder.setOriginUllageSupNo(orderEntity.getBillNo());
outOrder.setCreateUser(null);
outOrder.setReviewUser(null);
orderService.insertOrder(outOrder);
List<IoCodeTempEntity> codeTempEntities = new ArrayList<>();
for (IoCodeEntity warehouseEntity : temps) {
IoCodeTempEntity codeTempEntity = new IoCodeTempEntity();
BeanUtils.copyProperties(warehouseEntity, codeTempEntity);
codeTempEntity.setId(null);
codeTempEntity.setOrderId(outOrder.getBillNo());
codeTempEntity.setAction(outOrder.getAction());
codeTempEntity.setMainAction(outOrder.getMainAction());
codeTempEntities.add(codeTempEntity);
}
codeTempService.insertBatch(codeTempEntities);
//根据单据设置状态 1:草稿
if (bussinessChangeTypeEntity.getAuditStatus() == 1) {
orderEntity.setStatus(ConstantStatus.ORDER_STATUS_TEMP_SAVE);
orderService.update(orderEntity);
} else if (bussinessChangeTypeEntity.getAuditStatus() == 2 || bussinessChangeTypeEntity.getAuditStatus() == 3) {
addInoutService.dealProcess(outOrder);
if (!ioCheckInoutService.checkManual(outOrder.getBillNo())) {
ioCheckInoutService.check(outOrder.getBillNo());
}
}
}
}
}

@ -584,6 +584,9 @@ public class IoCheckInoutService {
}
}
@Resource
IoChangeInoutService changeInoutService;
//校验完成后生成库存
public void genInv(IoOrderEntity orderEntity, BasicBussinessTypeEntity bussinessTypeEntity) {
@ -658,15 +661,22 @@ public class IoCheckInoutService {
}
}
//生成库存
if (bussinessTypeEntity.isPreIn()) {
genInvService.genPreInInv(orderEntity.getBillNo());
} else if (bussinessTypeEntity.isAdvanceType()) {
genInvService.genPreInv(orderEntity.getBillNo());
//校验是否是不入库存单据
if (bussinessTypeEntity.getBusType() == ConstantStatus.BUS_TYPE_NORMAL) {
//生成库存
if (bussinessTypeEntity.isPreIn()) {
genInvService.genPreInInv(orderEntity.getBillNo());
} else if (bussinessTypeEntity.isAdvanceType()) {
genInvService.genPreInv(orderEntity.getBillNo());
} else {
genInvService.genNorInv(orderEntity.getBillNo());
}
} else {
genInvService.genNorInv(orderEntity.getBillNo());
//不入库存,直接进行单据流转
changeInoutService.changeOrder(orderEntity);
}
}

@ -43,8 +43,7 @@ public class IoGenInvService {
InvPreinOrderService invPreinOrderService;
@Resource
InvPreinDetailService invPreinDetailService;
@Resource
IBasicBussinessTypeService basicBussinessTypeService;
@Resource
IoOrderService orderService;
@Resource
@ -53,14 +52,10 @@ public class IoGenInvService {
IoCodeService codeService;
@Resource
IBasicBusTypePreService basicBusTypePreService;
@Resource
GennerOrderUtils gennerOrderUtils;
@Resource
InvWarehouseService invWarehouseService;
@Resource
SystemParamConfigService systemParamConfigService;
@Resource
IoCodeTempService codeTempService;
IoChangeInoutService ioChangeInoutService;
//生成普通库存
@ -112,7 +107,7 @@ public class IoGenInvService {
}
BasicBusTypePreEntity basicBusTypePreEntity = basicBusTypePreService.findByOriginAction(orderEntity.getAction());
if (basicBusTypePreEntity != null) { //进行单据流转
genNewOrder(orderEntity, invProductDetailEntities);
ioChangeInoutService.genNewOrder(orderEntity, invProductDetailEntities);
} else { //生成库存结束
invProductDetailService.insertList(invProductDetailEntities);
}
@ -199,163 +194,4 @@ public class IoGenInvService {
}
//单据流转
public void genNewOrder(IoOrderEntity orderEntity, List<InvProductDetailEntity> invProductDetailEntities) {
BasicBusTypePreEntity basicBusTypePreEntity = basicBusTypePreService.findByOriginAction(orderEntity.getAction());
List<IoCodeEntity> codeEnttities = codeService.findByOrderId(orderEntity.getBillNo());
if (basicBusTypePreEntity.getSupplementAll()) {//全量补单
invProductDetailService.insertList(invProductDetailEntities);
buildInOrder(basicBusTypePreEntity, codeEnttities, orderEntity);
} else { //缺量补单
List<IoCodeEntity> inList = new ArrayList<>();
for (IoCodeEntity warehouseEntity : codeEnttities) {
Integer invCount = getInvCount(warehouseEntity);
Integer count = warehouseEntity.getMyReCount();
if (invCount > 0) {//仓库已存在该产品
if (count > invCount) { //当前数量>结余数量,说明该产品是无序列号或者是多级包装
if (count > invCount) { //该产品实际数量大于结余数量,说明是多级包装,直接补
inList.add(warehouseEntity);
} else if (warehouseEntity.getSerialNo() == null) { //无序列号(多级包装无序列号的已在上一步被排除),补齐数量
int lea = count - invCount;
warehouseEntity.setCount(lea / (count)); //
inList.add(warehouseEntity);
}
}
} else { //结余数量《=0直接补
inList.add(warehouseEntity);
}
InvProductDetailEntity invProductDetailEntity = filterInvByCode(invProductDetailEntities, warehouseEntity.getCode());
invProductDetailService.insert(invProductDetailEntity);
}
buildInOrder(basicBusTypePreEntity, inList, orderEntity);
}
}
public InvProductDetailEntity filterInvByCode(List<InvProductDetailEntity> invProductDetailEntities, String
code) {
for (InvProductDetailEntity invProductDetailEntity : invProductDetailEntities) {
if (invProductDetailEntity.getCode().equals(code)) {
return invProductDetailEntity;
}
}
return null;
}
//生成单据
public void buildInOrder(BasicBusTypePreEntity bussinessChangeTypeEntity, List<IoCodeEntity> useInList, IoOrderEntity orderEntity) {
if (useInList.size() <= 0) {
return;
}
Map<String, List<IoCodeEntity>> filterSupMaps = new HashMap<>();
BasicBussinessTypeEntity targetBustypeEntity = basicBussinessTypeService.findByAction(bussinessChangeTypeEntity.getAction());
//过滤供应商
if (targetBustypeEntity.getCorpType() == ConstantStatus.CORP_TYPE_OUT) {
for (IoCodeEntity warehouseEntity : useInList) {
if (warehouseEntity.getSupId() != null) {
if (filterSupMaps.get(warehouseEntity.getSupId()) == null) {
List<IoCodeEntity> temps = new ArrayList<>();
temps.add(warehouseEntity);
filterSupMaps.put(warehouseEntity.getSupId(), temps);
} else {
filterSupMaps.get(warehouseEntity.getSupId()).add(warehouseEntity);
}
}
}
} else {
filterSupMaps.put(bussinessChangeTypeEntity.getDefaultInvCode(), useInList);
}
//根据往来单位生成入库单
for (String corpName : filterSupMaps.keySet()) {
List<IoCodeEntity> temps;
temps = filterSupMaps.get(corpName);
IoOrderEntity outOrder = new IoOrderEntity();
BeanUtils.copyProperties(orderEntity, outOrder);
outOrder.setId(null);
outOrder.setSupplementNo(null);//补单需置空
if (bussinessChangeTypeEntity.getBeforeTime() != null)
outOrder.setCreateTime(DateUtil.getBeforeDay(DateUtil.fromDate(orderEntity), bussinessChangeTypeEntity.getBeforeTime()));
else
outOrder.setCreateTime(DateUtil.fromDate(orderEntity));
outOrder.setAction(targetBustypeEntity.getAction());
outOrder.setMainAction(targetBustypeEntity.getMainAction());
outOrder.setBusType(targetBustypeEntity.getBusType());
outOrder.setFromType(ConstantStatus.FROM_CHANGE);
String orderNo = gennerOrderUtils.createScOrderNo(new OrderNoTypeBean(Constant.SCAN_ORDER + StrUtil.trimToEmpty(targetBustypeEntity.getPrefix()), "yyyyMMdd"));
outOrder.setBillNo(orderNo);
if (targetBustypeEntity.getCorpType() == ConstantStatus.CORP_TYPE_OUT) {
outOrder.setCustomerId(corpName);
outOrder.setFromCorp(corpName);
outOrder.setFromInvCode(null);
outOrder.setFromDeptCode(null);
} else {
outOrder.setCustomerId(Constant.SYSTEM_CUSTOMER_ID);
outOrder.setFromInvCode(bussinessChangeTypeEntity.getDefaultInvCode());
outOrder.setFromDeptCode(bussinessChangeTypeEntity.getDefaultDeptCode());
outOrder.setFromCorp(null);
}
outOrder.setCorpOrderId(CustomUtil.getId() + "x");
InvWarehouseEntity invWarehouseEntity = invWarehouseService.findByInvSubByCode(bussinessChangeTypeEntity.getInvCode());
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());
orderEntity.setUpdateTime(new Date());
orderService.update(orderEntity);
outOrder.setOriginUllageSupNo(orderEntity.getBillNo());
outOrder.setCreateUser(null);
outOrder.setReviewUser(null);
orderService.insertOrder(outOrder);
List<IoCodeTempEntity> codeTempEntities = new ArrayList<>();
for (IoCodeEntity warehouseEntity : temps) {
IoCodeTempEntity codeTempEntity = new IoCodeTempEntity();
BeanUtils.copyProperties(warehouseEntity, codeTempEntity);
codeTempEntity.setId(null);
codeTempEntity.setOrderId(outOrder.getBillNo());
codeTempEntity.setAction(outOrder.getAction());
codeTempEntity.setMainAction(outOrder.getMainAction());
codeTempEntities.add(codeTempEntity);
}
codeTempService.insertBatch(codeTempEntities);
addInoutService.dealProcess(outOrder);
if (!ioCheckInoutService.checkManual(outOrder.getBillNo())) {
ioCheckInoutService.check(outOrder.getBillNo());
}
}
}
@Resource
IoAddInoutService addInoutService;
@Resource
IoCheckInoutService ioCheckInoutService;
//计算当前库存数量
public int getInvCount(IoCodeEntity codeEntity) {
List<InvProductDetailEntity> resultLists = invProductDetailService.selectByUnique(codeEntity.getRelId(), codeEntity.getBatchNo(), codeEntity.getSupId(), codeEntity.getDeptCode(), codeEntity.getInvCode());
int invCount = 0;
if (CollUtil.isNotEmpty(resultLists)) {
for (InvProductDetailEntity invProductDetailEntity : resultLists) {
if (invProductDetailEntity.getMainAction().equals(ConstantType.TYPE_OUT)) {
invCount = invCount - invProductDetailEntity.getReCount();
} else {
invCount = invCount + invProductDetailEntity.getReCount();
}
}
}
return invCount;
}
}

@ -5,6 +5,7 @@
select bc.*, bu.name targetBusName
from basic_bustype_change bc
left join basic_bussiness_type bu on bc.targetAction = bu.action
left join basic_bustype_change bbc on bc.originAction = bbc.targetAction
<where>
<if test="originAction != null and originAction != ''">
AND bc.originAction = #{originAction}

@ -21,9 +21,9 @@
select basic_bustype_pre.*,
basic_bussiness_type.name
from basic_bustype_pre
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_warehouse on basic_bustype_pre.defaultInvCode = auth_warehouse.code
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_warehouse on basic_bustype_pre.defaultInvCode = auth_warehouse.code
where basic_bustype_pre.action = #{action}
</select>
@ -32,12 +32,17 @@
awA.name defaultInvName,
awB.name invName,
(select name from basic_bussiness_type where action = basic_bustype_pre.originAction) originName,
(select name from basic_bussiness_type where action = basic_bustype_pre.action) targetName
(select name
from basic_bussiness_type
where basic_bussiness_type.originAction = basic_bustype_pre.action) targetName,
(select basic_bustype_change.originName
from basic_bustype_change
where basic_bustype_change.originAction = basic_bustype_pre.targetBusAction) targetBusName
FROM basic_bustype_pre
left JOIN auth_warehouse awA on basic_bustype_pre.defaultInvCode = awA.code
left JOIN auth_warehouse awB on basic_bustype_pre.invCode = awB.code
left JOIN basic_bussiness_type busTypeA on basic_bustype_pre.originAction = busTypeA.action
left join basic_bussiness_type busTypeB on basic_bustype_pre.action = busTypeB.action
left JOIN auth_warehouse awA on basic_bustype_pre.defaultInvCode = awA.code
left JOIN auth_warehouse awB on basic_bustype_pre.invCode = awB.code
left JOIN basic_bussiness_type busTypeA on basic_bustype_pre.originAction = busTypeA.action
left join basic_bussiness_type busTypeB on basic_bustype_pre.action = busTypeB.action
<where>
<if test="action != ''and action != null">
AND basic_bustype_pre.`action` = #{action}

@ -227,7 +227,7 @@
resultType="com.glxp.api.res.basic.BasicBussinessTypeResponse">
SELECT basic_bussiness_type.*
FROM basic_bussiness_type
INNER JOIN auth_user_bustype ON basic_bussiness_type.action = auth_user_bustype.scAction
left JOIN auth_user_bustype ON basic_bussiness_type.action = auth_user_bustype.scAction
<where>
<if test="name != ''and name != null">
AND basic_bussiness_type.name LIKE concat('%', #{name}, '%')

@ -41,3 +41,16 @@ CALL Pro_Temp_ColumnWork('pur_returned_detail', 'expireDate', 'varchar(255) ', 1
CALL Pro_Temp_ColumnWork('pur_delivery', 'supId', 'varchar(255) ', 1);
CALL Pro_Temp_ColumnWork('pur_returned', 'supId', 'varchar(255) ', 1);
CALL Pro_Temp_ColumnWork('basic_bustype_pre', 'targetBusAction', 'varchar(255)', 1);
CALL Pro_Temp_ColumnWork('basic_bustype_pre', 'busBeforeTime', 'tinyint', 1);
CALL Pro_Temp_ColumnWork('basic_bustype_pre', 'beforeTime', 'tinyint', 1);
CALL Pro_Temp_ColumnWork('basic_bustype_pre', 'auditStatus', 'tinyint', 1);
CALL Pro_Temp_ColumnWork('basic_bustype_pre', 'busAuditStatus', 'tinyint', 1);
CALL Pro_Temp_ColumnWork('basic_bustype_change', 'auditStatus', 'tinyint', 1);
CALL Pro_Temp_ColumnWork('basic_bustype_change', 'busAuditStatus', 'tinyint', 1);
CALL Pro_Temp_ColumnWork('basic_bustype_change', 'targetBusAction', 'varchar(255)', 1);
CALL Pro_Temp_ColumnWork('basic_bustype_change', 'beforeTime', 'tinyint', 1);
CALL Pro_Temp_ColumnWork('basic_bustype_change', 'busBeforeTime', 'tinyint', 1);

Loading…
Cancel
Save