feat: 术士套包、定数包功能开发

dev_fifo1.0
chenhc 1 year ago
parent 50490a88dc
commit 9c6b03fb1b

@ -810,5 +810,13 @@ public class IoOrderDetailBizController extends BaseController {
return ResultVOUtils.page(pageInfo);
}
//录入业务单据详情
@AuthRuleAnnotation("")
@PostMapping("/udiwms/inout/order/addWarlockBagProduct")
@Log(title = "单据管理", businessType = BusinessType.INSERT)
public BaseResponse addWarlockBagProduct(@RequestBody AddWarlockBagProductReqeust addWarlockBagProductReqeust) {
IoOrderEntity orderEntity = orderDetailBizService.addWarlockBagProduct(addWarlockBagProductReqeust);
return ResultVOUtils.success(orderEntity);
}
}

@ -0,0 +1,17 @@
package com.glxp.api.req.inout;
import com.baomidou.mybatisplus.annotation.TableField;
import com.glxp.api.entity.inout.IoOrderEntity;
import lombok.Data;
import java.util.List;
@Data
public class AddWarlockBagProductReqeust {
private IoOrderEntity orderEntity;
@TableField(value = "id")
private String id;
}

@ -1,7 +1,11 @@
package com.glxp.api.service.basic;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageHelper;
import com.glxp.api.dao.basic.BasicDestinyRelMapper;
import com.glxp.api.entity.basic.BasicSkPrescribeItemEntity;
import com.glxp.api.entity.basic.BasicSkProjectDetailEntity;
import com.glxp.api.entity.thrsys.ThrProductsEntity;
import com.glxp.api.req.basic.AddProductRequest;
import com.glxp.api.req.basic.BasicSkProjectRequest;
@ -28,6 +32,8 @@ public class BasicSkProjectService extends ServiceImpl<BasicSkProjectMapper, Bas
@Resource
BasicSkProjectMapper basicSkProjectMapper;
@Resource
BasicDestinyRelMapper basicDestinyRelMapper;
@Resource
UdiProductService udiProductService;
@Resource
BasicDestinyRelService basicDestinyRelService;
@ -65,4 +71,11 @@ public class BasicSkProjectService extends ServiceImpl<BasicSkProjectMapper, Bas
udiProductService.addProduct(addProductRequest);
return true;
}
public List<BasicSkProjectDetailEntity> selectListByPId(String pId) {
QueryWrapper<BasicSkProjectDetailEntity> qw = new QueryWrapper<>();
qw.eq("pId", pId);
List<BasicSkProjectDetailEntity> basicSkPrescribeItemEntities = basicDestinyRelMapper.selectList(qw);
return basicSkPrescribeItemEntities;
}
}

@ -2,6 +2,8 @@ package com.glxp.api.service.inout;
import com.glxp.api.entity.inout.IoOrderDetailBizEntity;
import com.glxp.api.entity.inout.IoOrderDetailResultEntity;
import com.glxp.api.entity.inout.IoOrderEntity;
import com.glxp.api.req.inout.AddWarlockBagProductReqeust;
import com.glxp.api.req.inout.FilterOrderDetailBizRequest;
import com.glxp.api.req.inout.FilterOrderDetailCodeRequest;
import com.glxp.api.res.inout.IoOrderDetailBizResponse;
@ -62,4 +64,5 @@ public interface IoOrderDetailBizService {
Boolean batchInsertBizs(List<IoOrderDetailBizEntity> bizEntities);
IoOrderEntity addWarlockBagProduct(AddWarlockBagProductReqeust addWarlockBagProductReqeust);
}

@ -131,12 +131,12 @@ public class IoDestinyProcessDetailServiceImpl implements IoDestinyProcessDetail
String code = basicSkProjectEntity.getCode();
if (StrUtil.isNotEmpty(maxDestinyNo)){
//解析加1
String newString = maxDestinyNo.replace(code, "");
String newString = maxDestinyNo.replace("#"+code+"####", "");
long parseLong = Long.parseLong(newString);
return code+ StringUtils.padl(parseLong+1,8);
return "#"+code+"####"+ StringUtils.padl(parseLong+1,8);
}else {
//初始化
return code+"00000001";
return "#"+code+"####"+"00000001";
}
}

@ -5,29 +5,52 @@ import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageHelper;
import com.glxp.api.common.util.ResultVOUtils;
import com.glxp.api.constant.Constant;
import com.glxp.api.constant.ConstantStatus;
import com.glxp.api.dao.inout.IoOrderDetailBizDao;
import com.glxp.api.entity.auth.AuthAdmin;
import com.glxp.api.entity.auth.InvWarehouseEntity;
import com.glxp.api.entity.basic.BasicBussinessTypeEntity;
import com.glxp.api.entity.basic.BasicSkPrescribeItemEntity;
import com.glxp.api.entity.basic.BasicSkProjectDetailEntity;
import com.glxp.api.entity.inout.IoOrderDetailBizEntity;
import com.glxp.api.entity.inout.IoOrderDetailCodeEntity;
import com.glxp.api.entity.inout.IoOrderDetailResultEntity;
import com.glxp.api.entity.inout.IoOrderEntity;
import com.glxp.api.entity.system.SystemParamConfigEntity;
import com.glxp.api.exception.JsonException;
import com.glxp.api.req.inout.AddBizProductReqeust;
import com.glxp.api.req.inout.AddWarlockBagProductReqeust;
import com.glxp.api.req.inout.FilterOrderDetailBizRequest;
import com.glxp.api.req.inout.FilterOrderDetailCodeRequest;
import com.glxp.api.res.basic.UdiRelevanceResponse;
import com.glxp.api.res.inout.IoOrderDetailBizResponse;
import com.glxp.api.res.inout.IoOrderDetailCodeResponse;
import com.glxp.api.res.inout.IoOrderDetailResultResponse;
import com.glxp.api.res.inout.IoOrderInvoiceResponse;
import com.glxp.api.service.auth.CustomerService;
import com.glxp.api.service.auth.InvWarehouseService;
import com.glxp.api.service.basic.BasicSkPrescirbeDetailService;
import com.glxp.api.service.basic.BasicSkProjectService;
import com.glxp.api.service.basic.IBasicBussinessTypeService;
import com.glxp.api.service.basic.UdiRelevanceService;
import com.glxp.api.service.inout.IoCheckInoutService;
import com.glxp.api.service.inout.IoOrderDetailBizService;
import com.glxp.api.service.inout.IoOrderDetailCodeService;
import com.glxp.api.service.inout.IoOrderService;
import com.glxp.api.service.system.SystemParamConfigService;
import com.glxp.api.util.GennerOrderUtils;
import com.glxp.api.util.IntUtil;
import com.glxp.api.util.OrderNoTypeBean;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
@Service
@ -37,6 +60,23 @@ public class IoOrderDetailBizServiceImpl implements IoOrderDetailBizService {
@Resource
@Lazy
IoOrderDetailBizDao ioOrderDetailBizDao;
@Resource
SystemParamConfigService systemParamConfigService;
@Resource
CustomerService customerService;
@Resource
private IBasicBussinessTypeService basicBussinessTypeService;
@Resource
InvWarehouseService invWarehouseService;
@Resource
GennerOrderUtils gennerOrderUtils;
@Resource
BasicSkProjectService basicSkProjectService;
@Resource
private UdiRelevanceService udiRelevanceService;
@Resource
IoOrderDetailBizService orderDetailBizService;
@Override
public IoOrderDetailBizEntity selectById(Long id) {
@ -154,6 +194,124 @@ public class IoOrderDetailBizServiceImpl implements IoOrderDetailBizService {
return ioOrderDetailBizDao.insertBatch(bizEntities);
}
@Override
public IoOrderEntity addWarlockBagProduct(AddWarlockBagProductReqeust addWarlockBagProductReqeust) {
SystemParamConfigEntity systemParamConfigEntity = systemParamConfigService.selectByParamKey("vail_product_cert");
// boolean isVailCert = systemParamConfigEntity.getParamValue().equals("1") ? true : false;
AuthAdmin authAdmin = customerService.getUserBean();
if (addWarlockBagProductReqeust.getId() == null )
throw new JsonException("未选择术士组套信息");
if (addWarlockBagProductReqeust.getOrderEntity() == null)
throw new JsonException(500, "未指定订单");
IoOrderEntity orderEntity = addWarlockBagProductReqeust.getOrderEntity();
IoOrderEntity isExit = orderService.findByBillNo(orderEntity.getBillNo());
if (StrUtil.isEmpty(orderEntity.getBillNo()) || isExit == null) {
BasicBussinessTypeEntity bussinessTypeEntity = basicBussinessTypeService.findByAction(orderEntity.getAction());
InvWarehouseEntity invWarehouseEntity = invWarehouseService.findByInvSubByCode(orderEntity.getInvCode());
String orderNo = gennerOrderUtils.createScOrderNo(new OrderNoTypeBean(Constant.SCAN_ORDER + StrUtil.trimToEmpty(bussinessTypeEntity.getPrefix()), "yyyyMMdd"));
orderEntity.setBillNo(orderNo);
orderEntity.setCreateUser(authAdmin.getId() + "");
orderEntity.setCreateTime(new Date());
orderEntity.setMainAction(bussinessTypeEntity.getMainAction());
if (StrUtil.isNotEmpty(orderEntity.getFromInvCode())) {
InvWarehouseEntity fromEntity = invWarehouseService.findByInvSubByCode(orderEntity.getInvCode());
orderEntity.setFromDeptCode(fromEntity.getParentId());
}
orderEntity.setFromType(ConstantStatus.FROM_WEBNEW);
orderEntity.setStatus(ConstantStatus.ORDER_STATUS_TEMP_SAVE);
orderEntity.setDealStatus(ConstantStatus.ORDER_DEAL_DRAFT);
orderEntity.setCreateUser(authAdmin.getId() + "");
orderEntity.setCreateTime(new Date());
orderEntity.setUpdateUser(authAdmin.getId() + "");
orderEntity.setUpdateTime(new Date());
orderEntity.setCustomerId(authAdmin.getCustomerId() + "");
orderEntity.setDeptCode(invWarehouseEntity.getParentId());
orderEntity.setInvCode(orderEntity.getInvCode());
orderEntity.setBusType(bussinessTypeEntity.getBusType());
orderService.insertOrder(orderEntity);
}
String pId = addWarlockBagProductReqeust.getId();
List<BasicSkProjectDetailEntity> list = basicSkProjectService.selectListByPId(pId);
if (CollUtil.isEmpty(list)) throw new JsonException("术士套包数据为空!");
List<AddBizProductReqeust> datas = new ArrayList<>();
list.forEach( x -> {
AddBizProductReqeust addBizProductReqeust = new AddBizProductReqeust();
addBizProductReqeust.setOrderEntity(orderEntity);
addBizProductReqeust.setSupId(String.valueOf(x.getSupId()));
addBizProductReqeust.setRelId(x.getRelId());
// TODO: 2024/4/15 单据数量 需要添加进去 页面效果需要优化 其他页面需要使用到 术士组套 该功能
datas.add(addBizProductReqeust);
});
for (AddBizProductReqeust item : datas) {
UdiRelevanceResponse udiRelevanceResponse = udiRelevanceService.selectSupGroupById(item.getRelId(), item.getSupId());
BasicBussinessTypeEntity bussinessTypeEntity = basicBussinessTypeService.findByAction(orderEntity.getAction());
//是否校验产品采购类型 1校验2.无需校验
if(IntUtil.value(bussinessTypeEntity.getVailProductAttributes()) == 1){
Integer purType = IntUtil.value(udiRelevanceResponse.getPurType()); //1普通入账产品2.预验收产品。3寄售产品
int actionType = IntUtil.value(bussinessTypeEntity.getActionType()); //1带票正常2.预验收。3寄售
if (purType != actionType){
//包装友好提示
String msg = "";
switch (actionType) {
case 1:
msg = "普通入账产品";
break;
case 2:
msg = "预验收产品";
break;
case 3:
msg = "寄售产品";
break;
}
String msg2 = "";
switch (purType) {
case 1:
msg2 = "普通入账产品";
break;
case 2:
msg2 = "预验收产品";
break;
case 3:
msg2 = "寄售产品";
break;
}
throw new JsonException( "单据只允许录入" + msg +",当前录入产品为"+msg2+",请检查后重试!");
}
}
IoOrderDetailBizEntity ioOrderDetailBizEntity = new IoOrderDetailBizEntity();
ioOrderDetailBizEntity.setOrderIdFk(orderEntity.getBillNo());
ioOrderDetailBizEntity.setBindRlFk(udiRelevanceResponse.getId());
ioOrderDetailBizEntity.setUuidFk(udiRelevanceResponse.getUuid());
ioOrderDetailBizEntity.setNameCode(udiRelevanceResponse.getNameCode());
ioOrderDetailBizEntity.setCoName(udiRelevanceResponse.getCpmctymc());
ioOrderDetailBizEntity.setYlqxzcrbarmc(udiRelevanceResponse.getYlqxzcrbarmc());
ioOrderDetailBizEntity.setManufacturer(udiRelevanceResponse.getManufactory());
ioOrderDetailBizEntity.setMeasname(udiRelevanceResponse.getMeasname());
ioOrderDetailBizEntity.setSpec(udiRelevanceResponse.getGgxh());
ioOrderDetailBizEntity.setPrice(udiRelevanceResponse.getPrice());
ioOrderDetailBizEntity.setProductDate(item.getProductDate());
ioOrderDetailBizEntity.setExpireDate(item.getExpireDate());
ioOrderDetailBizEntity.setBatchNo(item.getBatchNo());
ioOrderDetailBizEntity.setSupId(item.getSupId());
// if (null == addBizProductReqeust.getZczbhhzbapzbh() || "".equals(addBizProductReqeust.getZczbhhzbapzbh())) {
// ioOrderDetailBizEntity.setCertCode(udiRelevanceResponse.getZczbhhzbapzbh());
// } else {
// ioOrderDetailBizEntity.setCertCode(addBizProductReqeust.getZczbhhzbapzbh());
// }
orderDetailBizService.insert(ioOrderDetailBizEntity);
}
orderEntity.setUpdateTime(new Date());
orderEntity.setUpdateUser(authAdmin.getId() + "");
orderService.update(orderEntity);
return orderEntity;
}
@Override
public IoOrderDetailBizEntity selectByBatchNoAndBindRlFk(String batchNo, String bindRlFk) {
QueryWrapper<IoOrderDetailBizEntity> ew = new QueryWrapper<>();

@ -4,7 +4,7 @@ server:
spring:
datasource:
driver-class-name: com.p6spy.engine.spy.P6SpyDriver
jdbc-url: jdbc:p6spy:mysql://192.168.0.166:3306/udi_wms_pt?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
jdbc-url: jdbc:p6spy:mysql://192.168.0.43:3306/udi_wms_ct?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
username: root
password: 123456
hikari:

Loading…
Cancel
Save