Merge remote-tracking branch 'origin/master'

master
郑明梁 2 years ago
commit 0ec54ddd64

@ -68,8 +68,10 @@ public class UdiRlSupController {
if (StrUtil.isNotEmpty(companyProductRelevanceRequest.getUdiCode())) {
UdiEntity udiEntity = FilterUdiUtils.getUdi(companyProductRelevanceRequest.getUdiCode());
if (udiEntity != null)
if (udiEntity != null) {
companyProductRelevanceRequest.setNameCode(udiEntity.getUdi());
companyProductRelevanceRequest.setUnionCode(udiEntity.getUdi());
}
}
//如果输入DI标识精确找到不同层级对应的产品信息
if (StrUtil.isNotEmpty(companyProductRelevanceRequest.getUnionCode())) {

@ -7,12 +7,15 @@ import com.glxp.api.common.enums.ResultEnum;
import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.common.util.ResultVOUtils;
import com.glxp.api.entity.basic.BasicBussinessTypeEntity;
import com.glxp.api.entity.inout.IoOrderDetailBizEntity;
import com.glxp.api.entity.inout.IoOrderDetailCodeEntity;
import com.glxp.api.entity.inout.IoOrderEntity;
import com.glxp.api.req.inout.FilterCodeRequest;
import com.glxp.api.req.inout.FilterOrderDetailResultRequest;
import com.glxp.api.res.inout.IoCodeResponse;
import com.glxp.api.res.inout.IoOrderDetailResultResponse;
import com.glxp.api.service.basic.IBasicBussinessTypeService;
import com.glxp.api.service.inout.IoOrderDetailResultService;
import com.glxp.api.service.inout.IoOrderService;
import com.glxp.api.service.inout.*;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@ -31,6 +34,8 @@ public class IoOrderDetailResultController {
private IoOrderDetailResultService orderDetailResultService;
@Resource
IBasicBussinessTypeService basicBussinessTypeService;
@Resource
IoCodeService codeService;
/**
*
@ -59,22 +64,31 @@ public class IoOrderDetailResultController {
if (StrUtil.isEmpty(filterErpOrderRequest.getOrderIdFk())) {
return ResultVOUtils.error(500, "单据号不能为空!");
}
IoOrderEntity orderEntity = orderService.findByBillNo(filterErpOrderRequest.getOrderIdFk());
BasicBussinessTypeEntity bussinessTypeEntity = basicBussinessTypeService.findByAction(orderEntity.getAction());
filterErpOrderRequest.setPage(null);
filterErpOrderRequest.setLimit(null);
IoOrderEntity orderEntity = orderService.findByBillNo(filterErpOrderRequest.getOrderIdFk());
List<IoOrderDetailResultResponse> list = orderDetailResultService.filterList(filterErpOrderRequest);
return ResultVOUtils.success(list);
}
@Resource
IoOrderDetailBizService orderDetailBizService;
@Resource
IoOrderDetailCodeService orderDetailCodeService;
@Resource
IoCheckInoutService checkInoutService;
@AuthRuleAnnotation("")
@GetMapping("/udiwms/inout/wditCheck/filterList")
public BaseResponse waitCheckList(FilterOrderDetailResultRequest orderDetailResultRequest) {
BasicBussinessTypeEntity bussinessTypeEntity = basicBussinessTypeService.findByAction(orderEntity.getAction());
if ((bussinessTypeEntity.getOrderVisibleType() == 1 && orderEntity.getStatus() == 4) || filterErpOrderRequest.getShowType() == 1) {
//todo使用关联查
// erpOrderEntities = transferSerList(erpOrderEntities, filterErpOrderRequest.getOrderId());
}
List<IoOrderDetailBizEntity> orderDetailBizEntities = orderDetailBizService.findByOrderId(orderDetailResultRequest.getOrderIdFk());
List<IoOrderDetailCodeEntity> orderDetailCodeEntities = orderDetailCodeService.findByOrderId(orderDetailResultRequest.getOrderIdFk());
return ResultVOUtils.success(list);
return ResultVOUtils.success(checkInoutService.combineCheck(orderDetailBizEntities, orderDetailCodeEntities));
}
}

@ -21,6 +21,7 @@ import com.glxp.api.service.auth.CustomerService;
import com.glxp.api.service.auth.WarehouseUserService;
import com.glxp.api.service.inv.InvProductDetailService;
import com.glxp.api.service.inv.InvProductService;
import com.glxp.api.util.DateUtil;
import com.glxp.api.util.udi.FilterUdiUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.BindingResult;
@ -100,6 +101,18 @@ public class InvProductController {
});
}
//根据单据日期排序
list.sort((o1, o2) -> {
long o1OrderTime = DateUtil.parseDate(o1.getOrderTime()).getTime();
long o2OrderTime = DateUtil.parseDate(o2.getOrderTime()).getTime();
if (o1OrderTime > o2OrderTime) {
return 1;
} else if (o1OrderTime < o2OrderTime) {
return -1;
}
return 0;
});
PageSimpleResponse<InvProductDetailResponse> pageSimpleResponse = new PageSimpleResponse<>();
pageSimpleResponse.setTotal(pageInfo.getTotal());
pageSimpleResponse.setList(list);

@ -0,0 +1,52 @@
package com.glxp.api.controller.inv;
import cn.hutool.core.util.StrUtil;
import com.github.pagehelper.PageInfo;
import com.glxp.api.annotation.AuthRuleAnnotation;
import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.common.util.ResultVOUtils;
import com.glxp.api.entity.basic.BasicCorpEntity;
import com.glxp.api.req.inout.FilterOrderRequest;
import com.glxp.api.req.inv.FilterSickTraceRequest;
import com.glxp.api.res.PageSimpleResponse;
import com.glxp.api.res.inout.IoOrderResponse;
import com.glxp.api.service.basic.BasicCorpService;
import com.glxp.api.service.inout.IoOrderService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
@RestController
public class InvSickTraceController {
@Resource
IoOrderService orderService;
@Resource
BasicCorpService basicCorpService;
@AuthRuleAnnotation("")
@GetMapping("spms/inv/sick/order/trace")
public BaseResponse filterSickTrace(FilterSickTraceRequest filterSickTraceRequest) {
if (StrUtil.isEmpty(filterSickTraceRequest.getSickAd())) {
return ResultVOUtils.error(500, "病人住院号不能为空!");
}
BasicCorpEntity basicCorpEntity = basicCorpService.selectByName(filterSickTraceRequest.getSickAd());
if (basicCorpEntity == null) {
return ResultVOUtils.error(500, "未查询到病人信息");
}
FilterOrderRequest orderFilterRequest = new FilterOrderRequest();
orderFilterRequest.setFromCorp(basicCorpEntity.getErpId());
List<IoOrderResponse> orderEntityList = orderService.filterList(orderFilterRequest);
PageInfo<IoOrderResponse> pageInfo;
pageInfo = new PageInfo<>(orderEntityList);
PageSimpleResponse<IoOrderResponse> pageSimpleResponse = new PageSimpleResponse<>();
pageSimpleResponse.setTotal(pageInfo.getTotal());
pageSimpleResponse.setList(orderEntityList);
return ResultVOUtils.success(pageSimpleResponse);
}
}

@ -155,7 +155,8 @@ public class ThrDeptController {
// return ResultVOUtils.error(500, "请先关联仓库对应的第三方仓库,再关联分库!");
// }
// filterThrSubInvWarehouseRequest.setParentId((String) thirdId);
List<ThrInvWarehouseEntity> thrInvWarehouseEntities = thrInvWarehouseService.filterThrInvWarehouse(filterThrSubInvWarehouseRequest);
filterThrSubInvWarehouseRequest.setStatus(0);
List<ThrInvWarehouseEntity> thrInvWarehouseEntities = thrInvWarehouseService.selectByThrDeptCode(filterThrSubInvWarehouseRequest);
PageInfo<ThrInvWarehouseEntity> pageInfo;
pageInfo = new PageInfo<>(thrInvWarehouseEntities);
PageSimpleResponse<ThrInvWarehouseEntity> pageSimpleResponse = new PageSimpleResponse<>();

@ -53,5 +53,11 @@ public interface UdiProductDao {
*/
void importUdiInfo(@Param("udiInfoEntities") List<UdiProductEntity> udiInfoEntities);
/**
*
*
* @param nameCode
* @return
*/
Integer selectPackLevel(@Param("nameCode") String nameCode);
}

@ -16,6 +16,8 @@ public interface ThrInvWarehouseDao {
List<ThrInvWarehouseEntity> selectByPid(String pid);
List<ThrInvWarehouseEntity> selectByThrDeptCode(FilterThrSubInvWarehouseRequest filterThrSubInvWarehouseRequest);
boolean insertThrInvWarehouse(ThrInvWarehouseEntity thrInvWarehouseEntity);
boolean insertThrInvWarehouses(@Param("thrInvWarehouseEntitys") List<ThrInvWarehouseEntity> thrInvWarehouseEntitys);

@ -0,0 +1,9 @@
package com.glxp.api.req.inv;
import lombok.Data;
@Data
public class FilterSickTraceRequest {
private String sickAd; //病人住院号
}

@ -11,5 +11,6 @@ public class FilterThrSubInvWarehouseRequest extends ListPageRequest {
private String name;
private String parentId;
private String thirdSysFk;
private Integer status;
}

@ -142,4 +142,10 @@ public class IoCodeResponse {
*
*/
private String warehouseName;
private String ggxh;
private String ylqxzcrbarmc;
private String zczbhhzbapzbh;
private String manufactory;
}

@ -0,0 +1,171 @@
package com.glxp.api.res.inout;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class IoOrderCheckResultResponse {
private Integer id;
/**
*
*/
private String orderIdFk;
/**
* ID
*/
private Long bindRlFk;
/**
* DIUUID
*/
private String uuidFk;
/**
* DI
*/
private String nameCode;
/**
*
*/
private String bBatchNo;
/**
*
*/
private String bProductDate;
/**
*
*/
private String bExpireDate;
/**
*
*/
private String sBatchNo;
/**
*
*/
private String sProductDate;
/**
*
*/
private String sExpireDate;
/**
*
*/
private String coName;
/**
*
*/
private String certCode;
/**
*
*/
private String ylqxzcrbarmc;
/**
*
*/
private String manufacturer;
/**
*
*/
private String measname;
/**
*
*/
private String spec;
/**
*
*/
private BigDecimal price;
/**
*
*/
private String secSalesListNo;
/**
*
*/
private String firstSalesInvNo;
/**
*
*/
private String secSalesInvNo;
/**
*
*/
private String invoiceDate;
/**
* ID
*/
private String supId;
/**
*
*/
private String bindSupStatus;
/**
*
*/
private int count;
/**
*
*/
private String remark;
/**
* 1
*/
private String remark1;
/**
* 2
*/
private String remark2;
/**
* 3
*/
private String remark3;
/**
* 4
*/
private String remark4;
/**
* 5
*/
private String remark5;
private String bindRlIds;
private boolean checkSuccess;
private int scanCount;
}

@ -216,6 +216,11 @@ public class IoOrderResponse {
*/
private Integer exportStatus;
/**
*
*/
private String errMsg;
public String getFromName() {

@ -147,7 +147,7 @@ public class IoAddInoutService {
//三期校验
String checkOriginMsg = checkOriginCode(warehouseEntity);
if (StrUtil.isNotEmpty(checkOriginMsg)) {
orderEntity.setErrMsg("checkOriginMsg");
orderEntity.setErrMsg(checkOriginMsg);
orderEntity.setStatus(ConstantStatus.ORDER_STATS_ERROR);
orderEntity.setUpdateTime(new Date());
orderService.update(orderEntity);

@ -2,11 +2,13 @@ package com.glxp.api.service.inout;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.glxp.api.common.util.ResultVOUtils;
import com.glxp.api.constant.ConstantStatus;
import com.glxp.api.constant.ConstantType;
import com.glxp.api.entity.basic.BasicBussinessTypeEntity;
import com.glxp.api.entity.inout.*;
import com.glxp.api.entity.inv.InvPreinDetailEntity;
import com.glxp.api.res.inout.IoOrderCheckResultResponse;
import com.glxp.api.res.inout.IoOrderDetailBizResponse;
import com.glxp.api.res.inout.IoOrderDetailCodeResponse;
import com.glxp.api.service.basic.IBasicBussinessTypeService;
@ -17,10 +19,7 @@ import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
*
@ -405,6 +404,64 @@ public class IoCheckInoutService {
return errMsg;
}
//单据合并校验
public List<IoOrderCheckResultResponse> combineCheck(List<IoOrderDetailBizEntity> orderDetailBizEntities, List<IoOrderDetailCodeEntity> orderDetailCodeEntities) {
List<IoOrderCheckResultResponse> orderCheckResultResponses = new ArrayList<>();
for (IoOrderDetailBizEntity bizEntity : orderDetailBizEntities) {
boolean isPass = false;
for (IoOrderDetailCodeEntity codeEntity : orderDetailCodeEntities) {
if (!codeEntity.isCheckSuccess() && checkId(bizEntity, codeEntity) == null
&& checkBatchNo(bizEntity, codeEntity) == null
) {
//将产品ID,批次号匹配的合并,添加到列表
IoOrderCheckResultResponse ioOrderCheckResultResponse = new IoOrderCheckResultResponse();
BeanUtils.copyProperties(bizEntity, ioOrderCheckResultResponse);
ioOrderCheckResultResponse.setBBatchNo(bizEntity.getBatchNo());
ioOrderCheckResultResponse.setBProductDate(bizEntity.getProductDate());
ioOrderCheckResultResponse.setBExpireDate(bizEntity.getExpireDate());
ioOrderCheckResultResponse.setSBatchNo(codeEntity.getBatchNo());
ioOrderCheckResultResponse.setSProductDate(codeEntity.getProductDate());
ioOrderCheckResultResponse.setSExpireDate(codeEntity.getExpireDate());
bizEntity.setCheckSuccess(true);
codeEntity.setCheckSuccess(true);
bizEntity.setScanCount(codeEntity.getReCount());
isPass = true;
orderCheckResultResponses.add(ioOrderCheckResultResponse);
break;
}
}
if (!isPass) {
//将未与扫码单
IoOrderCheckResultResponse ioOrderCheckResultResponse = new IoOrderCheckResultResponse();
BeanUtils.copyProperties(bizEntity, ioOrderCheckResultResponse);
ioOrderCheckResultResponse.setBBatchNo(bizEntity.getBatchNo());
ioOrderCheckResultResponse.setBProductDate(bizEntity.getProductDate());
ioOrderCheckResultResponse.setBExpireDate(bizEntity.getExpireDate());
bizEntity.setScanCount(0);
ioOrderCheckResultResponse.setCheckSuccess(false);
orderCheckResultResponses.add(ioOrderCheckResultResponse);
}
}
for (IoOrderDetailCodeEntity codeEntity : orderDetailCodeEntities) {
if (!codeEntity.isCheckSuccess()) {
IoOrderCheckResultResponse ioOrderCheckResultResponse = new IoOrderCheckResultResponse();
BeanUtils.copyProperties(codeEntity, ioOrderCheckResultResponse);
ioOrderCheckResultResponse.setSBatchNo(codeEntity.getBatchNo());
ioOrderCheckResultResponse.setSProductDate(codeEntity.getProductDate());
ioOrderCheckResultResponse.setSExpireDate(codeEntity.getExpireDate());
ioOrderCheckResultResponse.setCount(0);
orderCheckResultResponses.add(ioOrderCheckResultResponse);
}
}
return orderCheckResultResponses;
}
//扫码单反向校验
public String codeOrderCheck(List<IoOrderDetailCodeEntity> orderDetailCodeEntities, List<IoOrderDetailBizEntity> orderDetailBizEntities) {

@ -6,17 +6,16 @@ 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.InvProductDetailDao;
import com.glxp.api.entity.basic.BasicBussinessTypeEntity;
import com.glxp.api.entity.basic.UdiEntity;
import com.glxp.api.entity.inout.IoOrderEntity;
import com.glxp.api.entity.inv.InvProductDetailEntity;
import com.glxp.api.req.inv.FilterInvProductDetailRequest;
import com.glxp.api.res.inv.InvProductDetailResponse;
import com.glxp.api.service.inv.InvProductDetailService;
import com.glxp.api.util.DateUtil;
import com.glxp.api.util.udi.FilterUdiUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -34,6 +33,8 @@ public class InvProductDetailServiceImpl implements InvProductDetailService {
private BasicBussinessTypeDao bussinessTypeDao;
@Resource
private IoOrderDao orderDao;
@Resource
private UdiProductDao udiProductDao;
@Override
@ -113,14 +114,29 @@ public class InvProductDetailServiceImpl implements InvProductDetailService {
@Override
public void setOrderInfo(InvProductDetailResponse response) {
//查询DI层级根据DI层级设置数量取值
Integer packLevel = udiProductDao.selectPackLevel(response.getNameCode());
//设置出入库中文及出入库数量
if (response.getMainAction().equals(ConstantType.TYPE_OUT)) {
response.setMainActionStr("出库");
response.setOutCount(response.getCount());
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 {
response.setMainActionStr("入库");
response.setInCount(response.getCount());
//单层包装
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());
@ -137,7 +153,7 @@ public class InvProductDetailServiceImpl implements InvProductDetailService {
}
List<InvProductDetailEntity> datas =
invProductDetailDao.selectList(new QueryWrapper<InvProductDetailEntity>().eq("relId", relId).eq(StrUtil.isNotEmpty(batchNo), "batchNo", batchNo)
.isNull(StrUtil.isEmpty(batchNo), "batchNo").eq(StrUtil.isNotEmpty(supId),"supId", supId).eq("deptCode", deptCode).eq("invCode", invCode).eq(StrUtil.isNotEmpty(invSpaceCode), "invSpaceCode", invSpaceCode));
.isNull(StrUtil.isEmpty(batchNo), "batchNo").eq(StrUtil.isNotEmpty(supId), "supId", supId).eq("deptCode", deptCode).eq("invCode", invCode).eq(StrUtil.isNotEmpty(invSpaceCode), "invSpaceCode", invSpaceCode));
int count = 0;
if (CollUtil.isNotEmpty(datas)) {

@ -15,6 +15,7 @@ public interface ThrInvWarehouseService {
List<ThrInvWarehouseEntity> filterThrInvWarehouse(FilterThrSubInvWarehouseRequest filterThrSubInvWarehouseRequest);
List<ThrInvWarehouseEntity> selectByPid(String pid);
List<ThrInvWarehouseEntity> selectByThrDeptCode( FilterThrSubInvWarehouseRequest filterThrSubInvWarehouseRequest);
boolean insertThrInvWarehouse(ThrInvWarehouseEntity thrInvWarehouseEntity);

@ -63,6 +63,11 @@ public class ThrInvWarehouseServiceImpl implements ThrInvWarehouseService {
return thrInvWarehouseDao.selectByPid(pid);
}
@Override
public List<ThrInvWarehouseEntity> selectByThrDeptCode(FilterThrSubInvWarehouseRequest filterThrSubInvWarehouseRequest) {
return thrInvWarehouseDao.selectByThrDeptCode(filterThrSubInvWarehouseRequest);
}
@Override
public boolean insertThrInvWarehouse(ThrInvWarehouseEntity thrInvWarehouseEntity) {
return thrInvWarehouseDao.insertThrInvWarehouse(thrInvWarehouseEntity);

@ -392,4 +392,7 @@
</foreach>
</select>
<select id="selectPackLevel" resultType="java.lang.Integer">
select packLevel from basic_products where nameCode = #{nameCode} limit 1
</select>
</mapper>

@ -50,18 +50,20 @@
<select id="filterList" resultType="com.glxp.api.res.inout.IoCodeResponse">
select ic.*,
bp.cpmctymc productName,
ad.name deptName,
aw.name invName,
auth_space.name warehouseName,
bc.name supName
bp.cpmctymc productName,
bp.ggxh,bp.ylqxzcrbarmc,bp.zczbhhzbapzbh,bp.manufactory,
ad.name deptName,
aw.name invName,
auth_space.name warehouseName,
bc.name supName
from io_code ic
left join auth_dept ad on ic.deptCode = ad.code
left join auth_warehouse aw on ic.invCode = aw.code
left join auth_space on auth_space.code = ic.warehouseCode
left join basic_udirel bu on bu.id = ic.relId
left join basic_products bp on bu.uuid = bp.uuid
left join basic_corp bc on bc.erpId = ic.supId
left join auth_dept ad on ic.deptCode = ad.code
left join auth_warehouse aw on ic.invCode = aw.code
left join auth_space on auth_space.code = ic.warehouseCode
left join basic_udirel bu on bu.id = ic.relId
left join basic_products bp on bu.uuid = bp.uuid
left join basic_corp bc on bc.erpId = ic.supId
<where>
<if test="code != null and code != ''">
AND ic.code = #{code}
@ -105,4 +107,4 @@
</where>
group by ic.id
</select>
</mapper>
</mapper>

@ -79,7 +79,7 @@
</foreach>
</if>
</where>
group by ip.relIdFk
group by ip.relIdFk, ip.batchNo
order by ip.updateTime desc
</select>

@ -39,6 +39,14 @@
WHERE parentId = #{pid}
</select>
<select id="selectByThrDeptCode" parameterType="com.glxp.api.req.thrsys.FilterThrSubInvWarehouseRequest"
resultType="com.glxp.api.entity.thrsys.ThrInvWarehouseEntity">
select * from thr_inv_warehouse where parentId not in (SELECT code FROM thr_dept
where status=#{status} and thirdSysFk=#{thirdSysFk}) and thirdSysFk=#{thirdSysFk}
</select>
<select id="countSubInvByParentInvId" resultType="java.lang.Integer">
select count(*) from thr_inv_warehouse where
parentId = (select code from thr_dept where id = #{parentInvId})

Loading…
Cancel
Save