diff --git a/src/main/java/com/glxp/api/controller/inout/IoOrderController.java b/src/main/java/com/glxp/api/controller/inout/IoOrderController.java index 41ca39079..12ae50288 100644 --- a/src/main/java/com/glxp/api/controller/inout/IoOrderController.java +++ b/src/main/java/com/glxp/api/controller/inout/IoOrderController.java @@ -777,7 +777,7 @@ public class IoOrderController extends BaseController { if (b) return ResultVOUtils.error("当前删除任务正在执行,请勿重复点击!"); redisUtil.set("deleteAllOrder", true); - orderEntities.parallelStream().forEach(item -> + orderEntities.forEach(item -> { List delBillNos = new ArrayList<>(); delBillNos.add(item.getBillNo()); diff --git a/src/main/java/com/glxp/api/controller/inout/IoOrderDetailResultController.java b/src/main/java/com/glxp/api/controller/inout/IoOrderDetailResultController.java index 89f55776c..29813c0d3 100644 --- a/src/main/java/com/glxp/api/controller/inout/IoOrderDetailResultController.java +++ b/src/main/java/com/glxp/api/controller/inout/IoOrderDetailResultController.java @@ -120,6 +120,19 @@ public class IoOrderDetailResultController extends BaseController { return ResultVOUtils.page(pageInfo); } + /** + * 查询单据仓库带票出入库明细 + * + * @param orderDetailResultRequest + * @return + */ + @AuthRuleAnnotation("") + @GetMapping("/udiwms/inout/resultDetail/filterOrderDeptList") + public BaseResponse filterOrderDeptList(FilterOrderDetailDeptResultRequest orderDetailResultRequest) { + PageInfo pageInfo = new PageInfo<>(getOrderDeptResult(orderDetailResultRequest)); + return ResultVOUtils.page(pageInfo); + } + public List getOrderResult(FilterOrderDetailResultRequest orderDetailResultRequest) { if (CollUtil.isNotEmpty(orderDetailResultRequest.getList())) { @@ -159,6 +172,21 @@ public class IoOrderDetailResultController extends BaseController { return list; } + public List getOrderDeptResult(FilterOrderDetailDeptResultRequest orderDetailResultRequest) { + + FilterOrderRequest filterOrderRequest = new FilterOrderRequest(); + filterOrderRequest.setVueType(orderDetailResultRequest.getActionType()); + List actions = orderService.setActions(filterOrderRequest); + if (CollUtil.isEmpty(actions)) { + return Collections.emptyList(); + } + orderDetailResultRequest.setActions(actions); + + List list = orderDetailResultService.getOrderDeptResult(orderDetailResultRequest); + + return list; + } + @GetMapping("/udiwms/inout/resultDetail/exportExcel") public void exportTemplate(FilterOrderDetailResultRequest orderDetailResultRequest, HttpServletResponse response) throws IOException { @@ -395,6 +423,69 @@ public class IoOrderDetailResultController extends BaseController { return ResultVOUtils.success(); } + + /** + * 仓库出入库明细打印 + * + * @param filterOrderDetailDeptResultRequest + * @return + */ + @AuthRuleAnnotation("") + @PostMapping("/udiwms/inout/resultDetail/filterOrderPrintDept") + public BaseResponse filterOrderPrintDept(@RequestBody FilterOrderDetailDeptResultRequest filterOrderDetailDeptResultRequest, HttpServletRequest request, HttpServletResponse response) throws JRException, IOException { + List ioOrderDetailResultResponseList = new ArrayList<>(); + SystemPDFTemplateEntity systemPDFTemplateEntity = systemPDFTemplateService.selectById(filterOrderDetailDeptResultRequest.getTemplateId()); + //打印单号标签 + Map data = new HashMap<>(1); + List list = new ArrayList<>(); + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String dateStr = sdf.format(new Date()); + + //按选入打印 + if (filterOrderDetailDeptResultRequest.getList() != null && filterOrderDetailDeptResultRequest.getList().size() > 0) { + ioOrderDetailResultResponseList = filterOrderDetailDeptResultRequest.getList(); + } else { + + //按查询打印 + FilterOrderRequest filterOrderRequest = new FilterOrderRequest(); + filterOrderRequest.setVueType(filterOrderDetailDeptResultRequest.getActionType()); + List actions = orderService.setActions(filterOrderRequest); + if (CollUtil.isEmpty(actions)) { + return ResultVOUtils.success(""); + } + filterOrderDetailDeptResultRequest.setActions(actions); + + ioOrderDetailResultResponseList = orderDetailResultService.getOrderDeptResult(filterOrderDetailDeptResultRequest); + } + int i = 1; + for (IoOrderDetailDeptResultResponse item : ioOrderDetailResultResponseList) { + + //组装数据 + Map ioOrderDetailResultData = new HashMap<>(); + ioOrderDetailResultData.put("index", String.valueOf(i)); + ioOrderDetailResultData.put("amount", item.getAmount() == null ? null : item.getAmount()); + ioOrderDetailResultData.put("count", item.getCount()); + ioOrderDetailResultData.put("fromInvCode", item.getFromInvCode() == null ? ' ' : item.getFromInvCode()); + ioOrderDetailResultData.put("fromInvName", item.getFromInvName() == null ? ' ' : item.getFromInvName()); + ioOrderDetailResultData.put("startAduditTime", filterOrderDetailDeptResultRequest.getStartAduditTime() == null ? ' ' : filterOrderDetailDeptResultRequest.getStartAduditTime()); + ioOrderDetailResultData.put("endAduditTime", filterOrderDetailDeptResultRequest.getEndAduditTime() == null ? ' ' : filterOrderDetailDeptResultRequest.getEndAduditTime()); + ioOrderDetailResultData.put("locInvName", filterOrderDetailDeptResultRequest.getLocInvName() == null ? ' ' : filterOrderDetailDeptResultRequest.getLocInvName()); + ioOrderDetailResultData.put("employeeName", filterOrderDetailDeptResultRequest.getEmployeeName() == null ? ' ' : filterOrderDetailDeptResultRequest.getEmployeeName()); + ioOrderDetailResultData.put("exportTime", dateStr); + + + list.add(ioOrderDetailResultData); + i++; + } + + + data.put("data", list); + String param = JSON.toJSONString(data); + JasperUtils.jasperReport(request, response, param, filePath + "pdf/template/" + systemPDFTemplateEntity.getPath(), "pdf"); + return ResultVOUtils.success(); + } + /** * 科室设备明细打印 * diff --git a/src/main/java/com/glxp/api/dao/inout/IoOrderDetailResultDao.java b/src/main/java/com/glxp/api/dao/inout/IoOrderDetailResultDao.java index 4d2c5489c..4d34e5618 100644 --- a/src/main/java/com/glxp/api/dao/inout/IoOrderDetailResultDao.java +++ b/src/main/java/com/glxp/api/dao/inout/IoOrderDetailResultDao.java @@ -3,9 +3,11 @@ package com.glxp.api.dao.inout; import com.glxp.api.dao.BaseMapperPlus; import com.glxp.api.entity.inout.IoOrderDetailResultEntity; import com.glxp.api.req.inout.CptTraceRequest; +import com.glxp.api.req.inout.FilterOrderDetailDeptResultRequest; import com.glxp.api.req.inout.FilterOrderDetailResultRequest; import com.glxp.api.res.inout.CptTraceOrderResponse; import com.glxp.api.res.inout.IoExOrderDetailResultResponse; +import com.glxp.api.res.inout.IoOrderDetailDeptResultResponse; import com.glxp.api.res.inout.IoOrderDetailResultResponse; import com.glxp.api.res.inv.IoOrderDetailStatRsponse; import io.lettuce.core.dynamic.annotation.Param; @@ -44,4 +46,6 @@ public interface IoOrderDetailResultDao extends BaseMapperPlus exFilterOrderDetail(FilterOrderDetailResultRequest orderDetailResultRequest); + + List filterOrderDeptList(FilterOrderDetailDeptResultRequest orderDetailResultRequest); } diff --git a/src/main/java/com/glxp/api/req/inout/FilterOrderDetailDeptResultRequest.java b/src/main/java/com/glxp/api/req/inout/FilterOrderDetailDeptResultRequest.java new file mode 100644 index 000000000..8b36ed91d --- /dev/null +++ b/src/main/java/com/glxp/api/req/inout/FilterOrderDetailDeptResultRequest.java @@ -0,0 +1,43 @@ +package com.glxp.api.req.inout; + +import com.glxp.api.res.inout.IoOrderDetailDeptResultResponse; +import com.glxp.api.res.inout.IoOrderDetailResultResponse; +import com.glxp.api.util.page.ListPageRequest; +import lombok.Data; + +import java.util.List; + +/** + * 单据扫码明细查询参数 + */ +@Data +public class FilterOrderDetailDeptResultRequest extends ListPageRequest { + + private String startAduditTime; //起始日期 + private String endAduditTime; //结束日期 + private String fromCorp; + private String invCode; + private String actionType; + private String manufacturer; + private String zczbhhzbapzbh; + private Boolean isStack; + private String invoiceEncode; + + private String templateId; + private List actions; + private List list; + private String action; + private String mainAction; + private Integer inoutPrintStatus; + private String invName; + private String employeeName; + private String fromInvName; + private String locInvName; + private String confirmStarTime; //发票确认起始日期 + private String confirmEndTime; //发票确认结束日期 + private String corpName;//供应商名字 + private String fromInvCode;//供应商名字 + + + private Boolean groupBuy; //是否集采产品 +} diff --git a/src/main/java/com/glxp/api/res/inout/IoOrderDetailDeptResultResponse.java b/src/main/java/com/glxp/api/res/inout/IoOrderDetailDeptResultResponse.java new file mode 100644 index 000000000..aaa2f1ecc --- /dev/null +++ b/src/main/java/com/glxp/api/res/inout/IoOrderDetailDeptResultResponse.java @@ -0,0 +1,31 @@ +package com.glxp.api.res.inout; + +import cn.hutool.core.util.StrUtil; +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 单据扫码明细VO + */ +@Data +public class IoOrderDetailDeptResultResponse { + + + /** + * 部门编码外键 + */ + private String fromInvCode; + + + /** + * 部门编码外键 + */ + private String fromInvName; + + private Integer count; + private BigDecimal amount; + +} diff --git a/src/main/java/com/glxp/api/res/inout/ReceiveDetailResponse.java b/src/main/java/com/glxp/api/res/inout/ReceiveDetailResponse.java index 33d6e94ff..bde82ead4 100644 --- a/src/main/java/com/glxp/api/res/inout/ReceiveDetailResponse.java +++ b/src/main/java/com/glxp/api/res/inout/ReceiveDetailResponse.java @@ -47,4 +47,9 @@ public class ReceiveDetailResponse { private BigDecimal price; private String supName; + /** + * 包装规格 + */ + private String bzgg; + } diff --git a/src/main/java/com/glxp/api/service/inout/IoAddInoutService.java b/src/main/java/com/glxp/api/service/inout/IoAddInoutService.java index f9ce5fa6a..7f2533fcf 100644 --- a/src/main/java/com/glxp/api/service/inout/IoAddInoutService.java +++ b/src/main/java/com/glxp/api/service/inout/IoAddInoutService.java @@ -278,12 +278,7 @@ public class IoAddInoutService { } if (orderDetailBizEntity.getBindRlFk() == null) { - errMsg = errMsg + orderDetailBizEntity.getCoName() + "该产品未指定唯一耗材编码;"; - - } - if (StrUtil.isEmpty(orderDetailBizEntity.getSupId())) { - errMsg = errMsg + orderDetailBizEntity.getCoName() + "该产品未指定供应商;"; } if (IntUtil.value(orderDetailBizEntity.getCount()) == 0) { errMsg = errMsg + orderDetailBizEntity.getCoName() + "产品数量不能为0;"; diff --git a/src/main/java/com/glxp/api/service/inout/IoOrderDetailResultService.java b/src/main/java/com/glxp/api/service/inout/IoOrderDetailResultService.java index 48fab077f..c4d53ffb0 100644 --- a/src/main/java/com/glxp/api/service/inout/IoOrderDetailResultService.java +++ b/src/main/java/com/glxp/api/service/inout/IoOrderDetailResultService.java @@ -3,9 +3,11 @@ package com.glxp.api.service.inout; import com.glxp.api.entity.inout.IoOrderDetailCodeEntity; import com.glxp.api.entity.inout.IoOrderDetailResultEntity; import com.glxp.api.req.inout.CptTraceRequest; +import com.glxp.api.req.inout.FilterOrderDetailDeptResultRequest; import com.glxp.api.req.inout.FilterOrderDetailResultRequest; import com.glxp.api.res.inout.CptTraceOrderResponse; import com.glxp.api.res.inout.IoExOrderDetailResultResponse; +import com.glxp.api.res.inout.IoOrderDetailDeptResultResponse; import com.glxp.api.res.inout.IoOrderDetailResultResponse; import java.util.List; @@ -31,4 +33,6 @@ public interface IoOrderDetailResultService { List cptTrace(CptTraceRequest cptTraceRequest); List exFilterOrderDetail(FilterOrderDetailResultRequest orderDetailResultRequest); + + List getOrderDeptResult(FilterOrderDetailDeptResultRequest orderDetailResultRequest); } diff --git a/src/main/java/com/glxp/api/service/inout/impl/IoOrderDetailResultServiceImpl.java b/src/main/java/com/glxp/api/service/inout/impl/IoOrderDetailResultServiceImpl.java index 95eea1c7c..3274c98ae 100644 --- a/src/main/java/com/glxp/api/service/inout/impl/IoOrderDetailResultServiceImpl.java +++ b/src/main/java/com/glxp/api/service/inout/impl/IoOrderDetailResultServiceImpl.java @@ -7,9 +7,11 @@ import com.glxp.api.dao.inout.IoOrderDetailResultDao; import com.glxp.api.entity.inout.IoOrderDetailCodeEntity; import com.glxp.api.entity.inout.IoOrderDetailResultEntity; import com.glxp.api.req.inout.CptTraceRequest; +import com.glxp.api.req.inout.FilterOrderDetailDeptResultRequest; import com.glxp.api.req.inout.FilterOrderDetailResultRequest; import com.glxp.api.res.inout.CptTraceOrderResponse; import com.glxp.api.res.inout.IoExOrderDetailResultResponse; +import com.glxp.api.res.inout.IoOrderDetailDeptResultResponse; import com.glxp.api.res.inout.IoOrderDetailResultResponse; import com.glxp.api.service.inout.IoOrderDetailResultService; import org.springframework.stereotype.Service; @@ -93,4 +95,15 @@ public class IoOrderDetailResultServiceImpl implements IoOrderDetailResultServic } return orderDetailResultDao.exFilterOrderDetail(orderDetailResultRequest); } + + @Override + public List getOrderDeptResult(FilterOrderDetailDeptResultRequest orderDetailResultRequest) { + if (null == orderDetailResultRequest) { + return Collections.emptyList(); + } + if (null != orderDetailResultRequest.getPage() && null != orderDetailResultRequest.getLimit()) { + PageHelper.offsetPage((orderDetailResultRequest.getPage() - 1) * orderDetailResultRequest.getLimit(), orderDetailResultRequest.getLimit()); + } + return orderDetailResultDao.filterOrderDeptList(orderDetailResultRequest); + } } diff --git a/src/main/java/com/glxp/api/service/thrsys/impl/ThrInvOrderServiceImpl.java b/src/main/java/com/glxp/api/service/thrsys/impl/ThrInvOrderServiceImpl.java index 7da7b7394..895da4a31 100644 --- a/src/main/java/com/glxp/api/service/thrsys/impl/ThrInvOrderServiceImpl.java +++ b/src/main/java/com/glxp/api/service/thrsys/impl/ThrInvOrderServiceImpl.java @@ -23,6 +23,7 @@ import com.glxp.api.entity.basic.*; import com.glxp.api.entity.inout.IoCodeTempEntity; import com.glxp.api.entity.inout.IoOrderDetailBizEntity; import com.glxp.api.entity.inout.IoOrderEntity; +import com.glxp.api.entity.inv.InvProductEntity; import com.glxp.api.entity.thrsys.*; import com.glxp.api.exception.JsonException; import com.glxp.api.http.ErpInvClient; @@ -902,6 +903,29 @@ public class ThrInvOrderServiceImpl implements ThrInvOrderService { thrInvOrderDetail.setHandleStatus(1); thrInvOrderDetail.setToBillNo(null); + List invProductEntities = invProductService.selectByRelId(relId, null, null, thrInvOrder.getInvCode()); + if (CollUtil.isNotEmpty(invProductEntities)) { + InvProductEntity invProductEntity1 = null; + for (InvProductEntity invProductEntity : invProductEntities) { + if (IntUtil.value(invProductEntity.getReCount()) > 0 && IntUtil.value(invProductEntity.getReCount()) > IntUtil.value(item.getReCount())) { + item.setSupId(invProductEntity.getSupId()); + break; + } else if (IntUtil.value(invProductEntity.getReCount()) > 0) { + //随机找一个有库存的供应商 + invProductEntity1 = invProductEntity; + } + } + if (StrUtil.isEmpty(item.getSupId()) && invProductEntity1 != null) { + item.setSupId(invProductEntity1.getSupId()); + } + } + if (StrUtil.isEmpty(item.getSupId())) { + CompanyProductRelevanceEntity udiRlSupEntity = udiRlSupService.selOneByRlId(relId); + if (udiRlSupEntity != null) + item.setSupId(udiRlSupEntity.getCustomerId()); + } + + Integer skCount = sk.getCount(); if (skCount != null && skCount > 0) { thrInvOrderDetail.setReCount(String.valueOf(skCount * count)); @@ -942,9 +966,27 @@ public class ThrInvOrderServiceImpl implements ThrInvOrderService { item.setToBillNo(null); updateThrInvOrderDetails.add(item); //校验产品是否被供应商关联 - CompanyProductRelevanceEntity udiRlSupEntity = udiRlSupService.selOneByRlId(relId); - if (udiRlSupEntity != null) - item.setSupId(udiRlSupEntity.getCustomerId()); + List invProductEntities = invProductService.selectByRelId(relId, null, null, thrInvOrder.getInvCode()); + if (CollUtil.isNotEmpty(invProductEntities)) { + InvProductEntity invProductEntity1 = null; + for (InvProductEntity invProductEntity : invProductEntities) { + if (IntUtil.value(invProductEntity.getReCount()) > 0 && IntUtil.value(invProductEntity.getReCount()) > IntUtil.value(item.getReCount())) { + item.setSupId(invProductEntity.getSupId()); + break; + } else if (IntUtil.value(invProductEntity.getReCount()) > 0) { + //随机找一个有库存的供应商 + invProductEntity1 = invProductEntity; + } + } + if (StrUtil.isEmpty(item.getSupId()) && invProductEntity1 != null) { + item.setSupId(invProductEntity1.getSupId()); + } + } + if (StrUtil.isEmpty(item.getSupId())) { + CompanyProductRelevanceEntity udiRlSupEntity = udiRlSupService.selOneByRlId(relId); + if (udiRlSupEntity != null) + item.setSupId(udiRlSupEntity.getCustomerId()); + } } } }); diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index a2ecc2dc9..c3f8f2655 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -4,9 +4,9 @@ server: spring: datasource: driver-class-name: com.p6spy.engine.spy.P6SpyDriver - jdbc-url: jdbc:p6spy:mysql://127.0.0.1:3306/udi_wms_pt2?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true + jdbc-url: jdbc:p6spy:mysql://192.168.0.59:3306/udi_wms?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true username: root - password: 123456 + password: Glxp@6066 hikari: connection-timeout: 60000 maximum-pool-size: 20 diff --git a/src/main/resources/mybatis/mapper/inout/IoOrderDetailResultDao.xml b/src/main/resources/mybatis/mapper/inout/IoOrderDetailResultDao.xml index 3afd30e08..0e689156a 100644 --- a/src/main/resources/mybatis/mapper/inout/IoOrderDetailResultDao.xml +++ b/src/main/resources/mybatis/mapper/inout/IoOrderDetailResultDao.xml @@ -116,6 +116,58 @@ group by a2.id + + +