From c68e6278085feb434a64e77a606f2e3f5317c32d Mon Sep 17 00:00:00 2001 From: dimengzhe Date: Mon, 10 Feb 2025 11:39:42 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E4=BF=AE=E6=94=B9oa=E5=B7=B2=E5=8A=9E?= =?UTF-8?q?=E6=9D=A1=E6=95=B0=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../flowable/biz/flowtask/FlowTaskMapper.java | 1 + .../flowable/biz/flowtask/FlowTaskMapper.xml | 29 +++++++++++++++++++ .../biz/flowtask/FlowTaskService.java | 2 +- 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskMapper.java b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskMapper.java index b3686657e4..6dae632b30 100644 --- a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskMapper.java +++ b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskMapper.java @@ -31,6 +31,7 @@ public interface FlowTaskMapper extends BaseMapper { List> finishedList1(Map map); int finishedListCount(Map map); + int finishedListCountOA(Map map); /** * 根据流程实例的id查询最新的待办环节 diff --git a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskMapper.xml b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskMapper.xml index 6801a5a000..5ba94024db 100644 --- a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskMapper.xml +++ b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskMapper.xml @@ -200,6 +200,35 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsgoodstag/WmsGoodsTagService.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsgoodstag/WmsGoodsTagService.java index a3c201eebb..8cfdb91f6a 100644 --- a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsgoodstag/WmsGoodsTagService.java +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsgoodstag/WmsGoodsTagService.java @@ -10,8 +10,6 @@ import com.yxt.common.base.utils.StringUtils; import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.vo.PagerVo; -import com.yxt.wms.biz.inventory.wmsansbill.WmsAnsBill; -import com.yxt.wms.biz.inventory.wmsansbill.WmsAnsBillVo; import com.yxt.wms.biz.inventory.wmsgoodstag.app.*; import com.yxt.wms.biz.inventory.wmsgoodstag.pageUtil.MyPagerUtil; import com.yxt.wms.biz.inventory.wmsgoodstag.pageUtil.MyPagerVo; @@ -19,8 +17,10 @@ import com.yxt.wms.biz.inventory.wmsreceiptbill.WmsReceiptBill; import com.yxt.wms.biz.inventory.wmsreceiptbill.WmsReceiptBillService; import com.yxt.wms.biz.inventory.wmsreceiptbilldetail.WmsReceiptBillDetail; import com.yxt.wms.biz.inventory.wmsreceiptbilldetail.WmsReceiptBillDetailService; +import com.yxt.wms.feign.portal.privilege.PrivilegeQuery; import com.yxt.wms.feign.portal.sysorganization.SysOrganizationFeign; import com.yxt.wms.feign.portal.sysorganization.SysOrganizationVo; +import com.yxt.wms.feign.portal.sysuser.SysUserFeign; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -42,11 +42,65 @@ public class WmsGoodsTagService extends MybatisBaseService goodsTagList(PagerQuery pagerQuery) { + GoodsTagListQuery query = pagerQuery.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + //========================================数据授权开始 + if (StringUtils.isNotBlank(query.getMenuSid())) { + PrivilegeQuery privilegeQuery = new PrivilegeQuery(); + privilegeQuery.setOrgPath(query.getOrgPath()); + privilegeQuery.setMenuSid(query.getMenuSid()); + privilegeQuery.setUserSid(query.getUserSid()); + ResultBean defaultIdReltBean = sysUserFeign.selectPrivilegeLevel(privilegeQuery); + if (StringUtils.isNotBlank(defaultIdReltBean.getData())) { + //数据权限ID(1集团、2事业部、3分公司、4部门、5个人) + String orgSidPath = query.getOrgPath(); + orgSidPath = orgSidPath + "/"; + int i1 = orgSidPath.indexOf("/"); + int i2 = orgSidPath.indexOf("/", i1 + 1); + int i3 = orgSidPath.indexOf("/", i2 + 1); + int i4 = orgSidPath.indexOf("/", i3 + 1); + String orgLevelKey = defaultIdReltBean.getData(); + if ("1".equals(orgLevelKey)) { + orgSidPath = orgSidPath.substring(0, i1); + qw.like("s.orgSidPath", orgSidPath); + } else if ("2".equals(orgLevelKey)) { + orgSidPath = orgSidPath.substring(0, i2); + qw.like("s.orgSidPath", orgSidPath); + } else if ("3".equals(orgLevelKey)) { + orgSidPath = orgSidPath.substring(0, i3); + qw.like("s.orgSidPath", orgSidPath); + } else if ("4".equals(orgLevelKey)) { + orgSidPath = orgSidPath.substring(0, i4); + qw.like("s.orgSidPath", orgSidPath); + } else if ("5".equals(orgLevelKey)) { + qw.eq("t.createBySid", query.getUserSid()); + } else { + PagerVo p = new PagerVo<>(); + return p; + } + } else { + PagerVo p = new PagerVo<>(); + return p; + } + } + if (StringUtils.isNotBlank(query.getName())) { + + } + qw.orderByDesc("t.createTime"); + IPage page = PagerUtil.queryToPage(pagerQuery); + IPage pagging = baseMapper.goodsTagList(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + public MyPagerVo goodsList(PagerQuery pagerQuery) { GoodsTagListQuery query = pagerQuery.getParams(); QueryWrapper qw = new QueryWrapper<>(); diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinitialdetail/WmsInitialDetail.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinitialdetail/WmsInitialDetail.java index 3287d6c322..82d3891d87 100644 --- a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinitialdetail/WmsInitialDetail.java +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinitialdetail/WmsInitialDetail.java @@ -42,8 +42,6 @@ public class WmsInitialDetail extends BaseEntity { @ApiModelProperty("单据sid") private String billSid; // 单据sid - @ApiModelProperty("商品ID") - private String goodsID; @ApiModelProperty("商品spuSid") private String goodsSpuSid; // 商品spuSid @ApiModelProperty("商品spu名称") diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinitialdetail/WmsInitialDetailMapper.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinitialdetail/WmsInitialDetailMapper.java index fd86a554cc..8ab17ecc9a 100644 --- a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinitialdetail/WmsInitialDetailMapper.java +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinitialdetail/WmsInitialDetailMapper.java @@ -31,6 +31,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.toolkit.Constants; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Update; @Mapper @@ -42,4 +43,7 @@ public interface WmsInitialDetailMapper extends BaseMapper { @Update("update wms_initial_detail set isScbq = 1 where sid = #{sid}") void updateIsScbq(String sid); + + @Select("select * from wms_initial_detail where goodsID = #{goodsID}") + WmsInitialDetailVo selByGoodsID(String goodsID); } \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinitialdetail/WmsInitialDetailService.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinitialdetail/WmsInitialDetailService.java index 1ae1ad0ea5..8b0f822fe8 100644 --- a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinitialdetail/WmsInitialDetailService.java +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinitialdetail/WmsInitialDetailService.java @@ -25,7 +25,6 @@ *********************************************************/ package com.yxt.wms.biz.inventory.wmsinitialdetail; -import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.yxt.common.base.service.MybatisBaseService; @@ -35,106 +34,175 @@ import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.vo.PagerVo; import com.yxt.wms.biz.inventory.wmsgoodstag.WmsGoodsTag; import com.yxt.wms.biz.inventory.wmsgoodstag.WmsGoodsTagService; +import com.yxt.wms.biz.inventory.wmsgoodstag.util.GetSerialNum; import com.yxt.wms.feign.portal.privilege.PrivilegeQuery; import com.yxt.wms.feign.portal.sysuser.SysUserFeign; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; - import java.math.BigDecimal; +import java.text.SimpleDateFormat; +import java.util.*; @Service public class WmsInitialDetailService extends MybatisBaseService { - @Autowired - private SysUserFeign sysUserFeign; - @Autowired - private WmsGoodsTagService wmsGoodsTagService; + @Autowired + private SysUserFeign sysUserFeign; + @Autowired + private WmsGoodsTagService wmsGoodsTagService; + + public PagerVo listPageVo(PagerQuery pq) { + WmsInitialDetailQuery query = pq.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + //========================================数据授权开始 + if (StringUtils.isNotBlank(query.getMenuUrl()) || StringUtils.isNotBlank(query.getMenuSid())) { + PrivilegeQuery privilegeQuery = new PrivilegeQuery(); + privilegeQuery.setOrgPath(query.getOrgPath()); + privilegeQuery.setMenuUrl(query.getMenuUrl()); + privilegeQuery.setMenuSid(query.getMenuSid()); + privilegeQuery.setUserSid(query.getUserSid()); + ResultBean defaultIdReltBean = sysUserFeign.selectPrivilegeLevel(privilegeQuery); + if (StringUtils.isNotBlank(defaultIdReltBean.getData())) { + //数据权限ID(1集团、2事业部、3分公司、4部门、5个人) + String orgSidPath = query.getOrgPath(); + orgSidPath = orgSidPath + "/"; + int i1 = orgSidPath.indexOf("/"); + int i2 = orgSidPath.indexOf("/", i1 + 1); + int i3 = orgSidPath.indexOf("/", i2 + 1); + int i4 = orgSidPath.indexOf("/", i3 + 1); + String orgLevelKey = defaultIdReltBean.getData(); + if ("1".equals(orgLevelKey)) { + orgSidPath = orgSidPath.substring(0, i1); + qw.like("s.orgSidPath", orgSidPath); + } else if ("2".equals(orgLevelKey)) { + orgSidPath = orgSidPath.substring(0, i2); + qw.like("s.orgSidPath", orgSidPath); + } else if ("3".equals(orgLevelKey)) { + orgSidPath = orgSidPath.substring(0, i3); + qw.like("s.orgSidPath", orgSidPath); + } else if ("4".equals(orgLevelKey)) { + orgSidPath = orgSidPath.substring(0, i4); + qw.like("s.orgSidPath", orgSidPath); + } else if ("5".equals(orgLevelKey)) { + qw.eq("wi.createBySid", query.getUserSid()); + } else { + PagerVo p = new PagerVo<>(); + return p; + } + } else { + PagerVo p = new PagerVo<>(); + return p; + } + } + if (StringUtils.isNotBlank(query.getGoodsSpuName())) { + qw.like("wid.goodsSpuName", query.getGoodsSpuName()); + } + if (StringUtils.isNotBlank(query.getGoodsSkuCode())) { + qw.like("wid.goodsSkuCode", query.getGoodsSkuCode()); + } + if (StringUtils.isNotBlank(query.getGoodsTypeName())) { + qw.like("wid.goodsTypeName", query.getGoodsTypeName()); + } + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.selectPageVo(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } - public PagerVo listPageVo(PagerQuery pq) { - WmsInitialDetailQuery query = pq.getParams(); - QueryWrapper qw = new QueryWrapper<>(); - //========================================数据授权开始 - if (StringUtils.isNotBlank(query.getMenuUrl()) || StringUtils.isNotBlank(query.getMenuSid())) { - PrivilegeQuery privilegeQuery = new PrivilegeQuery(); - privilegeQuery.setOrgPath(query.getOrgPath()); - privilegeQuery.setMenuUrl(query.getMenuUrl()); - privilegeQuery.setMenuSid(query.getMenuSid()); - privilegeQuery.setUserSid(query.getUserSid()); - ResultBean defaultIdReltBean = sysUserFeign.selectPrivilegeLevel(privilegeQuery); - if (StringUtils.isNotBlank(defaultIdReltBean.getData())) { - //数据权限ID(1集团、2事业部、3分公司、4部门、5个人) - String orgSidPath = query.getOrgPath(); - orgSidPath = orgSidPath + "/"; - int i1 = orgSidPath.indexOf("/"); - int i2 = orgSidPath.indexOf("/", i1 + 1); - int i3 = orgSidPath.indexOf("/", i2 + 1); - int i4 = orgSidPath.indexOf("/", i3 + 1); - String orgLevelKey = defaultIdReltBean.getData(); - if ("1".equals(orgLevelKey)) { - orgSidPath = orgSidPath.substring(0, i1); - qw.like("s.orgSidPath", orgSidPath); - } else if ("2".equals(orgLevelKey)) { - orgSidPath = orgSidPath.substring(0, i2); - qw.like("s.orgSidPath", orgSidPath); - } else if ("3".equals(orgLevelKey)) { - orgSidPath = orgSidPath.substring(0, i3); - qw.like("s.orgSidPath", orgSidPath); - } else if ("4".equals(orgLevelKey)) { - orgSidPath = orgSidPath.substring(0, i4); - qw.like("s.orgSidPath", orgSidPath); - } else if ("5".equals(orgLevelKey)) { - qw.eq("wi.createBySid", query.getUserSid()); - } else { - PagerVo p = new PagerVo<>(); - return p; - } - } else { - PagerVo p = new PagerVo<>(); - return p; - } - } - if (StringUtils.isNotBlank(query.getGoodsSpuName())) { - qw.like("wid.goodsSpuName", query.getGoodsSpuName()); - } - if (StringUtils.isNotBlank(query.getGoodsSkuCode())) { - qw.like("wid.goodsSkuCode", query.getGoodsSkuCode()); - } - if (StringUtils.isNotBlank(query.getGoodsTypeName())) { - qw.like("wid.goodsTypeName", query.getGoodsTypeName()); - } - IPage page = PagerUtil.queryToPage(pq); - IPage pagging = baseMapper.selectPageVo(page, qw); - PagerVo p = PagerUtil.pageToVo(pagging, null); - return p; - } + public String selectNum(String goodsId) { + return baseMapper.selectNum(goodsId); + } - public String selectNum(String goodsId) { - return baseMapper.selectNum(goodsId); - } + public ResultBean generateGoodsTag(String[] sids) { + ResultBean rb = ResultBean.fireFail(); + Set idSet = new HashSet<>(); + for (String sid : sids) { + WmsInitialDetail wmsInitialDetail = fetchBySid(sid); + String rule = wmsInitialDetail.getGoodsSkuCode() + new SimpleDateFormat("yyMMdd").format(new Date()); + if (wmsInitialDetail.getIsYwym() == 1) {//是一物一码 + int num = wmsInitialDetail.getNum().intValue(); + for (int i = 0; i < num; i++) { + //新增标签 + WmsGoodsTag wmsGoodsTag = new WmsGoodsTag(); + wmsGoodsTag.setState(0); + wmsGoodsTag.setCreateBySid(wmsInitialDetail.getCreateBySid()); + wmsGoodsTag.setBillSid(wmsInitialDetail.getBillSid()); + wmsGoodsTag.setBillDetailSid(sid); + String j = wmsGoodsTagService.selectGoodsIDNum(wmsInitialDetail.getGoodsSkuCode() + new SimpleDateFormat("yyMMdd").format(new Date())); + if (StringUtils.isBlank(j)) { + j = "0"; + } + int intValue = Integer.valueOf(j).intValue(); + String goodsID = GetSerialNum.getNum(intValue, wmsInitialDetail.getGoodsSkuCode()); + if (idSet.contains(goodsID)) { + List idList = new ArrayList<>(); + for (String s : idSet) { + if (s.contains(rule)) { + Integer integer = new Integer(s.substring(rule.length())); + idList.add(integer); + } + } + int max = Collections.max(idList); + String lsh = String.format("%04d", max + 1); + goodsID = rule + lsh; + } + wmsGoodsTag.setGoodsID(goodsID); + wmsGoodsTag.setGoodsSpuSid(wmsInitialDetail.getGoodsSpuSid()); + wmsGoodsTag.setGoodsSpuName(wmsInitialDetail.getGoodsSpuName()); + wmsGoodsTag.setGoodsSkuSid(wmsInitialDetail.getGoodsSkuSid()); + wmsGoodsTag.setGoodsSkuTitle(wmsInitialDetail.getGoodsSkuTitle()); + wmsGoodsTag.setGoodsSkuCode(wmsInitialDetail.getGoodsSkuCode()); + wmsGoodsTag.setGoodsSkuOwnSpec(wmsInitialDetail.getGoodsSkuOwnSpec()); + wmsGoodsTag.setUnit(wmsInitialDetail.getUnit()); + wmsGoodsTag.setGoodsCount(new BigDecimal("1")); + wmsGoodsTagService.insert(wmsGoodsTag); + } + } else { + //新增标签 + WmsGoodsTag wmsGoodsTag = new WmsGoodsTag(); + wmsGoodsTag.setState(0); + wmsGoodsTag.setCreateBySid(wmsInitialDetail.getCreateBySid()); + wmsGoodsTag.setBillSid(wmsInitialDetail.getBillSid()); + wmsGoodsTag.setBillDetailSid(sid); + //查询流水号生成goodsID + String i = wmsGoodsTagService.selectGoodsIDNum(wmsInitialDetail.getGoodsSkuCode() + new SimpleDateFormat("yyMMdd").format(new Date())); + if (StringUtils.isBlank(i)) { + i = "0"; + } + int intValue = Integer.valueOf(i).intValue(); + String goodsID = GetSerialNum.getNum(intValue, wmsInitialDetail.getGoodsSkuCode()); + if (idSet.contains(goodsID)) { + List idList = new ArrayList<>(); + for (String s : idSet) { + if (s.contains(rule)) { + Integer integer = new Integer(s.substring(rule.length())); + idList.add(integer); + } + } + int max = Collections.max(idList); + String num = String.format("%04d", max + 1); + goodsID = rule + num; + } + wmsGoodsTag.setGoodsID(goodsID); + wmsGoodsTag.setGoodsSpuSid(wmsInitialDetail.getGoodsSpuSid()); + wmsGoodsTag.setGoodsSpuName(wmsInitialDetail.getGoodsSpuName()); + wmsGoodsTag.setGoodsSkuSid(wmsInitialDetail.getGoodsSkuSid()); + wmsGoodsTag.setGoodsSkuTitle(wmsInitialDetail.getGoodsSkuTitle()); + wmsGoodsTag.setGoodsSkuCode(wmsInitialDetail.getGoodsSkuCode()); + wmsGoodsTag.setGoodsSkuOwnSpec(wmsInitialDetail.getGoodsSkuOwnSpec()); + wmsGoodsTag.setUnit(wmsInitialDetail.getUnit()); + wmsGoodsTag.setGoodsCount(wmsInitialDetail.getNum()); + wmsGoodsTagService.insert(wmsGoodsTag); + } + baseMapper.updateIsScbq(sid); + } + return rb.success(); + } - public ResultBean generateGoodsTag(String[] sids) { - ResultBean rb = ResultBean.fireFail(); - for (String sid : sids) { - WmsInitialDetail wmsInitialDetail = fetchBySid(sid); - //新增标签 - WmsGoodsTag wmsGoodsTag = new WmsGoodsTag(); - wmsGoodsTag.setState(0); - wmsGoodsTag.setCreateBySid(wmsInitialDetail.getCreateBySid()); - wmsGoodsTag.setBillSid(wmsInitialDetail.getBillSid()); - wmsGoodsTag.setBillDetailSid(sid); - wmsGoodsTag.setGoodsID(wmsInitialDetail.getGoodsID()); - wmsGoodsTag.setGoodsSpuSid(wmsInitialDetail.getGoodsSpuSid()); - wmsGoodsTag.setGoodsSpuName(wmsInitialDetail.getGoodsSpuName()); - wmsGoodsTag.setGoodsSkuSid(wmsInitialDetail.getGoodsSkuSid()); - wmsGoodsTag.setGoodsSkuTitle(wmsInitialDetail.getGoodsSkuTitle()); - wmsGoodsTag.setGoodsSkuCode(wmsInitialDetail.getGoodsSkuCode()); - wmsGoodsTag.setGoodsSkuOwnSpec(wmsInitialDetail.getGoodsSkuOwnSpec()); - wmsGoodsTag.setUnit(wmsInitialDetail.getUnit()); - wmsGoodsTag.setGoodsCount(wmsInitialDetail.getNum()); - wmsGoodsTagService.insert(wmsGoodsTag); - baseMapper.updateIsScbq(sid); - } - return rb.success(); - } + public ResultBean selByGoodsID(String goodsID) { + ResultBean rb = ResultBean.fireFail(); + WmsInitialDetailVo wmsInitialDetailVo = baseMapper.selByGoodsID(goodsID); + return rb.success().setData(wmsInitialDetailVo); + } } \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryMapper.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryMapper.java index 37a9eb45ac..03b75673f4 100644 --- a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryMapper.java +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryMapper.java @@ -13,6 +13,7 @@ import com.yxt.wms.biz.inventory.wmsinventory.report.DeadStockVo; import com.yxt.wms.biz.inventory.wmsinventory.report.InventoryStockListVo; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.math.BigDecimal; import java.util.List; @@ -102,4 +103,7 @@ public interface WmsInventoryMapper extends BaseMapper { List selCJByDeptSid(String deptSid); IPage inventoryStockList(IPage page, @Param(Constants.WRAPPER)QueryWrapper qw); + + @Select("select count from wms_inventory where goodsID = #{goodsID}") + String selCountByGoodsID(String goodsID); } diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryService.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryService.java index a149717e6d..eda26d4283 100644 --- a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryService.java +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryService.java @@ -1283,4 +1283,10 @@ public class WmsInventoryService extends MybatisBaseService p = PagerUtil.pageToVo(pagging, null); return p; } + + public ResultBean selCountByGoodsID(String goodsID) { + ResultBean rb = ResultBean.fireFail(); + String count = baseMapper.selCountByGoodsID(goodsID); + return rb.success().setData(count); + } } diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/WmsShelfBillService.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/WmsShelfBillService.java index 071b6dc736..72419281bc 100644 --- a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/WmsShelfBillService.java +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/WmsShelfBillService.java @@ -767,9 +767,9 @@ public class WmsShelfBillService extends MybatisBaseService data = smsPricesTrategyBillGoodsTypeDetailFeign.selByMainSid(tjmxSid).getData(); for (SmsPricestrategyBillGoodstypedetailDetailsVo smsPricestrategyBillGoodstypedetailDetailsVo : data) { BigDecimal cost = receiptBillDetail.getCost(); @@ -1314,4 +1314,22 @@ public class WmsShelfBillService extends MybatisBaseService print3(TagQuery query) { + ResultBean rb = ResultBean.fireFail(); + GoodsTagVo vo = new GoodsTagVo(); + List sids = query.getSids(); + List list = new ArrayList<>(); + for (String sid : sids) { + GoodsTag goodsTag = new GoodsTag(); + WmsGoodsTag wmsGoodsTag = wmsGoodsTagService.selectByGoodsId(sid); + goodsTag.setQrText(sid); + goodsTag.setText1(wmsGoodsTag.getGoodsSkuTitle()); + goodsTag.setText2(wmsGoodsTag.getGoodsSkuCode()); + goodsTag.setText3(DateUtil.formatDate(wmsGoodsTag.getCreateTime())); + goodsTag.setSid(wmsGoodsTag.getBillSid()); + list.add(goodsTag); + } + vo.setGoods(list); + return rb.success().setData(vo); + } } From 28e0e7c93f8f85469b75fdae0f836c5532c02b47 Mon Sep 17 00:00:00 2001 From: fanzongzhe0036 Date: Mon, 10 Feb 2025 17:25:30 +0800 Subject: [PATCH 4/7] =?UTF-8?q?=E7=89=A9=E5=93=81=E9=A2=86=E7=94=A8?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../apiadmin/base/BaseGoodsSkuExtendRest.java | 8 + .../BaseGoodsSkuExtendMapper.java | 4 + .../BaseGoodsSkuExtendService.java | 14 +- .../oa/api/AdOfficeSuppliesApplyRest.java | 92 +++++ .../AdBeverageAcceptanceApply.java | 54 +++ .../AdBeverageAcceptanceApplyDetailVo.java | 41 +++ .../AdBeverageAcceptanceApplyDto.java | 59 +++ .../AdBeverageAcceptanceApplyMapper.java | 37 ++ .../AdBeverageAcceptanceApplyMapper.xml | 39 ++ .../AdBeverageAcceptanceApplyService.java | 343 ++++++++++++++++++ .../AdBeverageAcceptanceApplyVo.java | 53 +++ .../AdBeverageAcceptanceDetail.java | 77 ++++ .../AdBeverageAcceptanceDetailDto.java | 70 ++++ ...dBeverageAcceptanceDetailListDetailVo.java | 66 ++++ .../AdBeverageAcceptanceDetailMapper.java | 41 +++ .../AdBeverageAcceptanceDetailMapper.xml | 9 + .../AdBeverageAcceptanceDetailService.java | 87 +++++ .../AdBeverageAcceptanceDetailVo.java | 67 ++++ .../AdOfficeSuppliesApply.java | 44 +++ .../AdOfficeSuppliesApplyDetailVo.java | 23 ++ .../AdOfficeSuppliesApplyDto.java | 59 +++ .../AdOfficeSuppliesApplyMapper.java | 37 ++ .../AdOfficeSuppliesApplyMapper.xml | 39 ++ .../AdOfficeSuppliesApplyService.java | 343 ++++++++++++++++++ .../AdOfficeSuppliesApplyVo.java | 53 +++ .../AdOfficeSuppliesDetail.java | 73 ++++ .../AdOfficeSuppliesDetailDto.java | 70 ++++ .../AdOfficeSuppliesDetailMapper.java | 41 +++ .../AdOfficeSuppliesDetailMapper.xml | 9 + .../AdOfficeSuppliesDetailService.java | 87 +++++ .../AdOfficeSuppliesDetailVo.java | 67 ++++ .../oa/feign/flowable/flow/ProcDefEnum.java | 1 + .../apiadmin/inventroy/WmsInventoryRest.java | 11 + .../inventory/wmsinventory/FormCommon.java | 27 ++ .../wmsinventory/WmsInventoryMapper.java | 2 + .../wmsinventory/WmsInventoryMapper.xml | 5 + .../wmsinventory/WmsInventoryService.java | 55 ++- .../wmsoldinventory/WmsOldInventoryMapper.xml | 2 +- .../WmsOldInventoryService.java | 2 +- .../BaseGoodsSkuExtendFeign.java | 4 + 40 files changed, 2206 insertions(+), 9 deletions(-) create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/api/AdOfficeSuppliesApplyRest.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptanceapply/AdBeverageAcceptanceApply.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptanceapply/AdBeverageAcceptanceApplyDetailVo.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptanceapply/AdBeverageAcceptanceApplyDto.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptanceapply/AdBeverageAcceptanceApplyMapper.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptanceapply/AdBeverageAcceptanceApplyMapper.xml create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptanceapply/AdBeverageAcceptanceApplyService.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptanceapply/AdBeverageAcceptanceApplyVo.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptancedetail/AdBeverageAcceptanceDetail.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptancedetail/AdBeverageAcceptanceDetailDto.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptancedetail/AdBeverageAcceptanceDetailListDetailVo.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptancedetail/AdBeverageAcceptanceDetailMapper.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptancedetail/AdBeverageAcceptanceDetailMapper.xml create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptancedetail/AdBeverageAcceptanceDetailService.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptancedetail/AdBeverageAcceptanceDetailVo.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesapply/AdOfficeSuppliesApply.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesapply/AdOfficeSuppliesApplyDetailVo.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesapply/AdOfficeSuppliesApplyDto.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesapply/AdOfficeSuppliesApplyMapper.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesapply/AdOfficeSuppliesApplyMapper.xml create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesapply/AdOfficeSuppliesApplyService.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesapply/AdOfficeSuppliesApplyVo.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesdetail/AdOfficeSuppliesDetail.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesdetail/AdOfficeSuppliesDetailDto.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesdetail/AdOfficeSuppliesDetailMapper.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesdetail/AdOfficeSuppliesDetailMapper.xml create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesdetail/AdOfficeSuppliesDetailService.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesdetail/AdOfficeSuppliesDetailVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/FormCommon.java diff --git a/yxt-base-biz/src/main/java/com/yxt/base/apiadmin/base/BaseGoodsSkuExtendRest.java b/yxt-base-biz/src/main/java/com/yxt/base/apiadmin/base/BaseGoodsSkuExtendRest.java index 98065eef38..3d9caf663f 100644 --- a/yxt-base-biz/src/main/java/com/yxt/base/apiadmin/base/BaseGoodsSkuExtendRest.java +++ b/yxt-base-biz/src/main/java/com/yxt/base/apiadmin/base/BaseGoodsSkuExtendRest.java @@ -59,4 +59,12 @@ public class BaseGoodsSkuExtendRest { ResultBean updateSalesPrice(@RequestParam("skuSid") String skuSid,@RequestParam("salesPrice") String salesPrice){ return baseGoodsSkuExtendService.updateSalesPrice(skuSid,salesPrice); } + + @ApiOperation("根据skuSid查询销售单价") + @PostMapping("/selSalesPrice") + ResultBean selSalesPrice(@RequestParam("skuSid") String skuSid){ + ResultBean rb = ResultBean.fireFail(); + String price = baseGoodsSkuExtendService.selSalesPrice(skuSid); + return rb.success().setData(price); + } } diff --git a/yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsskuextend/BaseGoodsSkuExtendMapper.java b/yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsskuextend/BaseGoodsSkuExtendMapper.java index 66079e9db1..1d96c8592a 100644 --- a/yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsskuextend/BaseGoodsSkuExtendMapper.java +++ b/yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsskuextend/BaseGoodsSkuExtendMapper.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Constants; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Update; /** @@ -23,4 +24,7 @@ public interface BaseGoodsSkuExtendMapper extends BaseMapper @Update("update base_goods_sku_extend set salesPrice = #{salesPrice} where goodsSkuSid = #{skuSid}") void updateSalesPrice(@Param("skuSid") String skuSid, @Param("salesPrice") String salesPrice); + + @Select("select salesPrice from base_goods_sku_extend where goodsSkuSid = #{skuSid}") + String selSalesPrice(@Param("skuSid") String skuSid); } diff --git a/yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsskuextend/BaseGoodsSkuExtendService.java b/yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsskuextend/BaseGoodsSkuExtendService.java index f2d7987953..e8acabc852 100644 --- a/yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsskuextend/BaseGoodsSkuExtendService.java +++ b/yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsskuextend/BaseGoodsSkuExtendService.java @@ -4,7 +4,10 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.date.DateTime; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; -import com.yxt.base.biz.base.basegoodssku.BaseGoodsSku; +import com.yxt.base.biz.base.basebrandinfo.BaseBrandInfoService; +import com.yxt.base.biz.base.basegoodsspudetail.BaseGoodsSpuDetailService; +import com.yxt.base.biz.base.basegoodstype.BaseGoodsTypeService; +import com.yxt.base.biz.base.basemanufacturer.BaseManufacturerService; import com.yxt.common.base.config.component.FileUploadComponent; import com.yxt.common.base.service.MybatisBaseService; import com.yxt.common.base.utils.PagerUtil; @@ -12,15 +15,10 @@ import com.yxt.common.base.utils.StringUtils; import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.vo.PagerVo; -import com.yxt.base.biz.base.basebrandinfo.BaseBrandInfoService; -import com.yxt.base.biz.base.basegoodsspudetail.BaseGoodsSpuDetailService; -import com.yxt.base.biz.base.basegoodstype.BaseGoodsTypeService; -import com.yxt.base.biz.base.basemanufacturer.BaseManufacturerService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.text.SimpleDateFormat; import java.util.Collections; import java.util.Date; import java.util.List; @@ -146,4 +144,8 @@ public class BaseGoodsSkuExtendService extends MybatisBaseService getInit( + @PathVariable(value = "sid", required = false) String sid, + @RequestParam(value = "userSid", required = false) String userSid, + @RequestParam(value = "orgPath", required = false) String orgPath) { + ResultBean rb = ResultBean.fireFail(); + if (sid == null || sid.isEmpty()) { + // 执行新增初始化 + if (userSid == null || orgPath == null) { + return rb.setMsg("userSid和orgPath不能为空"); + } + return adOfficeSuppliesApplyService.getSaveInit(userSid, orgPath); + } else { + // 执行修改初始化 + return adOfficeSuppliesApplyService.getUpdateInit(sid); + } + } + + @ApiOperation("新增或修改") + @PostMapping("/save") + public ResultBean save(@RequestBody AdOfficeSuppliesApplyDto dto) { + return adOfficeSuppliesApplyService.saveOrUpdateDto(dto); + } + + @ApiOperation("详情") + @GetMapping("/details/{sid}") + ResultBean details(@PathVariable("sid") String sid + , @RequestParam(value = "application", required = false) String application) { + return adOfficeSuppliesApplyService.details(sid,application); + } + + @ApiOperation("根据sid批量删除") + @DeleteMapping("/delBySids") + public ResultBean delBySids(@RequestBody String[] sids) { + ResultBean rb = ResultBean.fireFail(); + adOfficeSuppliesApplyService.delAll(sids); + return rb.success(); + } + + @ApiOperation("提交审批流程") + @PostMapping("/submit") + public ResultBean submit(@RequestBody AdOfficeSuppliesApplyDto dto) { + return adOfficeSuppliesApplyService.submit(dto); + } + + @ApiOperation(value = "办理(同意)") + @PutMapping("/complete") + public ResultBean complete(@Valid @RequestBody CompleteDto dto) { + return adOfficeSuppliesApplyService.complete(dto); + } + + @ApiOperation(value = "驳回任务") + @PutMapping(value = "/reject") + public ResultBean reject(@Valid @RequestBody TaskDto dto) { + return adOfficeSuppliesApplyService.reject(dto); + } + + @ApiOperation("获取流程操作标题") + @GetMapping("/getFlowOperateTitle") + @ResponseBody + ResultBean getFlowOperateTitle(@SpringQueryMap NodeQuery query) { + return adOfficeSuppliesApplyService.getFlowOperateTitle(query); + } + +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptanceapply/AdBeverageAcceptanceApply.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptanceapply/AdBeverageAcceptanceApply.java new file mode 100644 index 0000000000..c21a5b5550 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptanceapply/AdBeverageAcceptanceApply.java @@ -0,0 +1,54 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.oa.biz.adbeverageacceptanceapply; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "集团用酒领用申请", description = "集团用酒领用申请") +@TableName("ad_beverage_acceptance_apply") +public class AdBeverageAcceptanceApply extends BaseEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("基础表单sid") + private String formSid; // 基础表单sid + @ApiModelProperty("关联审批sid列表,英文逗号分隔") + private String linkFormSids; // 关联审批sid列表,英文逗号分隔 + @ApiModelProperty("用途分类key") + private String useTypeKey; // 用途分类key + @ApiModelProperty("用途分类value") + private String useTypeValue; // 用途分类value + @ApiModelProperty("费用承担部门sid") + private String feesDeptSid; // 费用承担部门sid + @ApiModelProperty("费用承担部门") + private String feesDept; // 费用承担部门 + @ApiModelProperty("具体用途") + private String specificUses; // 具体用途 +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptanceapply/AdBeverageAcceptanceApplyDetailVo.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptanceapply/AdBeverageAcceptanceApplyDetailVo.java new file mode 100644 index 0000000000..7ccab8285e --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptanceapply/AdBeverageAcceptanceApplyDetailVo.java @@ -0,0 +1,41 @@ +package com.yxt.anrui.oa.biz.adbeverageacceptanceapply; + +import com.yxt.anrui.oa.biz.oaform.FormCommon; +import com.yxt.anrui.oa.biz.oaform.OaFormCommonVo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2025/1/21 + **/ +@Data +public class AdBeverageAcceptanceApplyDetailVo extends OaFormCommonVo { + + @ApiModelProperty("备注") + private String remarks; + @ApiModelProperty("用途分类key") + private String useTypeKey; // 用途分类key + @ApiModelProperty("用途分类value") + private String useTypeValue; // 用途分类value + @ApiModelProperty("费用承担部门sid") + private String feesDeptSid; // 费用承担部门sid + @ApiModelProperty("费用承担部门") + private String feesDept; // 费用承担部门 + @ApiModelProperty("具体用途") + private String specificUses; // 具体用途 + @ApiModelProperty("费用承担部门obj") + private FormCommon feesDeptObj; // 费用承担部门obj + @ApiModelProperty("用途分类obj") + private FormCommon useTypeObj; // 用途分类obj + @ApiModelProperty("图片") + private List files = new ArrayList<>(); + @ApiModelProperty("附件") + private List appes = new ArrayList<>(); + + private List list = new ArrayList<>(); //酒品明细 +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptanceapply/AdBeverageAcceptanceApplyDto.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptanceapply/AdBeverageAcceptanceApplyDto.java new file mode 100644 index 0000000000..34abe70a21 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptanceapply/AdBeverageAcceptanceApplyDto.java @@ -0,0 +1,59 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.oa.biz.adbeverageacceptanceapply; + + +import com.yxt.anrui.oa.biz.oaform.FormCommon; +import com.yxt.anrui.oa.biz.oaform.OaFormDto; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * Project: oa(驻外人员认定申请)
+ * File: AdExpatriatesApplyDto.java
+ * Class: com.yxt.anrui.oa.api.adexpatriatesapply.AdExpatriatesApplyDto
+ * Description: 驻外人员认定申请 数据传输对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2025-01-16 15:22:53
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "驻外人员认定申请 数据传输对象", description = "驻外人员认定申请 数据传输对象") +public class AdBeverageAcceptanceApplyDto extends OaFormDto { + + @ApiModelProperty("备注") + private String remarks; + + private List list = new ArrayList<>(); +} \ No newline at end of file diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptanceapply/AdBeverageAcceptanceApplyMapper.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptanceapply/AdBeverageAcceptanceApplyMapper.java new file mode 100644 index 0000000000..e84fd07d63 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptanceapply/AdBeverageAcceptanceApplyMapper.java @@ -0,0 +1,37 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.oa.biz.adbeverageacceptanceapply; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface AdBeverageAcceptanceApplyMapper extends BaseMapper { + + int selectBySid(String join); + + AdBeverageAcceptanceApplyDetailVo details(String sid); +} \ No newline at end of file diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptanceapply/AdBeverageAcceptanceApplyMapper.xml b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptanceapply/AdBeverageAcceptanceApplyMapper.xml new file mode 100644 index 0000000000..687b436684 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptanceapply/AdBeverageAcceptanceApplyMapper.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptanceapply/AdBeverageAcceptanceApplyService.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptanceapply/AdBeverageAcceptanceApplyService.java new file mode 100644 index 0000000000..d682e9f914 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptanceapply/AdBeverageAcceptanceApplyService.java @@ -0,0 +1,343 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.oa.biz.adbeverageacceptanceapply; + +import cn.hutool.core.bean.BeanUtil; +import com.yxt.anrui.oa.biz.adofficesuppliesdetail.AdOfficeSuppliesDetailService; +import com.yxt.anrui.oa.biz.adofficesuppliesdetail.AdOfficeSuppliesDetailVo; +import com.yxt.anrui.oa.biz.oaappendix.OaAppendixService; +import com.yxt.anrui.oa.biz.oaform.*; +import com.yxt.anrui.oa.biz.oaform.flowable.*; +import com.yxt.anrui.oa.feign.flowable.flow.ProcDefEnum; +import com.yxt.anrui.oa.feign.portal.sysorganization.SysOrganizationFeign; +import com.yxt.anrui.oa.feign.portal.sysorganization.SysOrganizationVo; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.core.result.ResultBean; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.*; + +@Service +public class AdBeverageAcceptanceApplyService extends MybatisBaseService { + + @Autowired + private OaAppendixService oaAppendixService; + @Autowired + private OaFormService oaFormService; + @Autowired + private AdOfficeSuppliesDetailService adOfficeSuppliesDetailService; + @Autowired + private SysOrganizationFeign sysOrganizationFeign; + + public ResultBean getSaveInit(String userSid, String orgPath) { + ResultBean rb = ResultBean.fireFail(); + AdBeverageAcceptanceApplyVo adOfficeSuppliesApplyVo = new AdBeverageAcceptanceApplyVo(); + adOfficeSuppliesApplyVo.setCreateBySid(userSid); + adOfficeSuppliesApplyVo.setOrgSidPath(orgPath); + return rb.success().setData(adOfficeSuppliesApplyVo); + } + + public ResultBean getUpdateInit(String sid) { + ResultBean rb = ResultBean.fireFail(); + AdBeverageAcceptanceApplyVo adOfficeSuppliesApplyVo = new AdBeverageAcceptanceApplyVo(); + AdBeverageAcceptanceApply adOfficeSuppliesApply = fetchBySid(sid); + if (adOfficeSuppliesApply == null) { + return rb.setMsg("该申请不存在"); + } + OaForm oaForm = oaFormService.fetchBySid(sid); + adOfficeSuppliesApplyVo.setTaskId(oaForm.getTaskId()); + adOfficeSuppliesApplyVo.setProcInsId(oaForm.getProcInstId()); + //根据部门sid获取orgPath并赋值 + SysOrganizationVo organizationVo = sysOrganizationFeign.fetchBySid(oaForm.getDeptSid()).getData(); + String orgSidPath = organizationVo.getOrgSidPath(); + adOfficeSuppliesApplyVo.setOrgSidPath(orgSidPath); + adOfficeSuppliesApplyVo.setCreateBySid(oaForm.getCreateBySid()); + BeanUtil.copyProperties(adOfficeSuppliesApply, adOfficeSuppliesApplyVo); + List list = adOfficeSuppliesDetailService.getUpdateInit(sid); + list.removeAll(Collections.singleton(null)); + List officeObj = new ArrayList<>(); + if (!list.isEmpty()) { + for (AdOfficeSuppliesDetailVo d : list) { + FormCommon formCommon = new FormCommon(); + Map extra = new HashMap<>(); + formCommon.setId(d.getInventorySid()); + formCommon.setDictValue(d.getGoodsSpuName()); + if (StringUtils.isNotBlank(d.getCount())) { + extra.put("count",d.getCount()); + } + if (StringUtils.isNotBlank(d.getGoodsSkuOwnSpec())) { + extra.put("goodsSkuOwnSpec",d.getGoodsSkuOwnSpec()); + } + if (StringUtils.isNotBlank(d.getGoodsSkuSid())) { + extra.put("goodsSkuSid",d.getGoodsSkuSid()); + } + if (StringUtils.isNotBlank(d.getGoodsSpuSid())) { + extra.put("goodsSpuSid",d.getGoodsSpuSid()); + } + if (StringUtils.isNotBlank(d.getUnit())) { + extra.put("unit",d.getUnit()); + } + formCommon.setExtra(extra); + officeObj.add(formCommon); + } + } + adOfficeSuppliesApplyVo.setList(officeObj); + adOfficeSuppliesApplyVo.setSid(sid); + return rb.success().setData(adOfficeSuppliesApplyVo); + } + + public ResultBean saveOrUpdateDto(AdBeverageAcceptanceApplyDto dto) { + ResultBean rb = ResultBean.fireFail(); + String sid = dto.getSid(); + List list = dto.getList(); + if (StringUtils.isBlank(sid)) { + // 新建操作 + AdBeverageAcceptanceApply entity = new AdBeverageAcceptanceApply(); + BeanUtil.copyProperties(dto, entity, "sid"); + + dto.setBillNo("BGYPLY"); + dto.setSid(entity.getSid()); + ResultBean resultBean = oaFormService.saveOaForm(dto); + + if (!resultBean.getSuccess()) { + return rb; + } + + entity.setFormSid(resultBean.getData()); + baseMapper.insert(entity); + sid = entity.getSid(); + } else { + // 更新操作 + AdBeverageAcceptanceApply entity = fetchBySid(sid); + BeanUtil.copyProperties(dto, entity, "id", "sid"); + baseMapper.updateById(entity); + } + adOfficeSuppliesDetailService.saveDetails(list, sid); + return rb.success().setData(sid); + } + + + public ResultBean delAll(String[] sids) { + ResultBean rb = ResultBean.fireFail(); + //查询该sid中是否有流程不是待提交的 + int count = baseMapper.selectBySid(StringUtils.join(sids, ",")); + if (count > 0) { + return rb.setMsg("删除的数据中包含已提交或已办结审批的数据,删除失败"); + } + delBySids(sids); + return rb.success(); + } + + public ResultBean details(String sid, String application) { + ResultBean rb = ResultBean.fireFail(); + AdBeverageAcceptanceApplyDetailVo adOfficeSuppliesApplyDetailVo = baseMapper.details(sid); + if (adOfficeSuppliesApplyDetailVo == null) { + return rb.setMsg("该申请不存在"); + } + //基础字段赋值 + BeanUtil.copyProperties(oaFormService.getDetails(sid), adOfficeSuppliesApplyDetailVo); + List obj = new ArrayList<>(); + List detailVos = adOfficeSuppliesDetailService.getUpdateInit(sid); + if (!detailVos.isEmpty()) { + for (AdOfficeSuppliesDetailVo d : detailVos) { + FormCommon formCommon = new FormCommon(); + Map extra = new HashMap<>(); + formCommon.setId(d.getInventorySid()); + formCommon.setDictValue(d.getGoodsSpuName()); + if (StringUtils.isNotBlank(d.getCount())) { + extra.put("count",d.getCount()); + } + if (StringUtils.isNotBlank(d.getGoodsSkuOwnSpec())) { + extra.put("goodsSkuOwnSpec",d.getGoodsSkuOwnSpec()); + } + if (StringUtils.isNotBlank(d.getGoodsSkuSid())) { + extra.put("goodsSkuSid",d.getGoodsSkuSid()); + } + if (StringUtils.isNotBlank(d.getGoodsSpuSid())) { + extra.put("goodsSpuSid",d.getGoodsSpuSid()); + } + if (StringUtils.isNotBlank(d.getUnit())) { + extra.put("unit",d.getUnit()); + } + formCommon.setExtra(extra); + obj.add(formCommon); + } + } + adOfficeSuppliesApplyDetailVo.setList(obj); + return rb.success().setData(adOfficeSuppliesApplyDetailVo); + } + + /** + * 提交 + * + * @param dto + * @return + */ + public ResultBean submit(AdBeverageAcceptanceApplyDto dto) { + ResultBean rb = ResultBean.fireFail(); + ResultBean stringResultBean = saveOrUpdateDto(dto); + if (!stringResultBean.getSuccess()) { + return rb.setMsg(stringResultBean.getData()); + } + String businessSid = stringResultBean.getData(); + + SubmitDto submitDto = new SubmitDto(); + submitDto.setUserSid(dto.getCreateBySid()); + submitDto.setBusinessSid(businessSid); + + Map formVariables = new HashMap<>(); + formVariables = getMap(formVariables, businessSid); + submitDto.setFormVariables(formVariables); + submitDto.setProcDefId(ProcDefEnum.BGYPLYAPPLY.getProDefId()); + submitDto.setNextTaskId(dto.getTaskId()); + submitDto.setRule(OaFormRuleEnum.DIRECTLY_UNDER.getRule()); + return oaFormService.submit(submitDto); + } + + /** + * 办理(同意) + * + * @param dto + * @return + */ + public ResultBean complete(CompleteDto dto) { + Map formVariables = dto.getFormVariables(); + formVariables = getMap(formVariables, dto.getBusinessSid()); + dto.setFormVariables(formVariables); + BusinessVariablesDto businessVariablesDto = new BusinessVariablesDto(); + BeanUtil.copyProperties(dto, businessVariablesDto); + return oaFormService.complete(businessVariablesDto); + } + + /** + * 驳回 + * + * @param dto + * @return + */ + public ResultBean reject(TaskDto dto) { + Map formVariables = dto.getFormVariables(); + formVariables = getMap(formVariables, dto.getBusinessSid()); + dto.setFormVariables(formVariables); + return oaFormService.reject(dto); + } + + public ResultBean getFlowOperateTitle(NodeQuery query) { + // 默认失败返回 + ResultBean rb = ResultBean.fireFail(); + + // 获取next值和formVariables + int next = query.getNext(); + + // 获取并更新formVariables + Map formVariables = getMap(query.getFormVariables(), query.getBusinessSid()); + query.setFormVariables(formVariables); + + // 校验next参数是否有效(只允许0或1) + if (next != 0 && next != 1) { + return rb.setMsg("参数错误:next"); // 如果next不是0或1,返回错误信息 + } + + // 获取节点名称 + String data = getNodeName(query, next); + + // 如果data为null,表示未获取到有效的节点信息 + if (data == null) { + return rb.setMsg("没有获取到节点信息"); // 返回错误消息 + } + + // 返回成功的结果和获取到的节点名称 + return rb.success().setData(data); + } + + /** + * 网关参数组成 + * + * @param formVariables + * @param sid + * @return + */ + public Map getMap(Map formVariables, String sid) { + Map appMap = new HashMap<>(); + appMap.put("sid", sid); + /*appMap.put("editUrl", "approval/#/pages/EditOnboradingApplyActivity?sid=" + sid); + appMap.put("detailUrl", "approval/#/pages/DetailOnboradingApplyActivity?sid=" + sid); + appMap.put("flowOperateUrl", "oa/v1/HrHireApply/getFlowOperateTitle"); + appMap.put("agreeUrl", "oa/v1/HrHireApply/complete"); + appMap.put("stopUrl", "oa/v1/oaform/breakProcess"); + appMap.put("rejectUrl", "oa/v1/HrHireApply/reject"); + appMap.put("recallUrl", "oa/v1/oaform/revokeProcess"); + appMap.put("signUrl", "oa/v1/oaform/delegate"); + appMap.put("transferUrl", "oa/v1/oaform/assignTask");*/ + appMap.put(OaFormUrlEnum.HRHIREAPPLY_EDIT.getType(), OaFormUrlEnum.HRHIREAPPLY_EDIT.getUrl() + "?sid=" + sid); + appMap.put(OaFormUrlEnum.HRHIREAPPLY_DETAIL.getType(), OaFormUrlEnum.HRHIREAPPLY_DETAIL.getUrl() + "?sid=" + sid); + appMap.put(OaFormUrlEnum.HRHIREAPPLY_FLOWOPERATEURL.getType(), OaFormUrlEnum.HRHIREAPPLY_FLOWOPERATEURL.getUrl()); + appMap.put(OaFormUrlEnum.HRHIREAPPLY_AGREEURL.getType(), OaFormUrlEnum.HRHIREAPPLY_AGREEURL.getUrl()); + appMap.put(OaFormUrlEnum.STOPURL.getType(), OaFormUrlEnum.STOPURL.getUrl()); + appMap.put(OaFormUrlEnum.HRHIREAPPLY_REJECTURL.getType(), OaFormUrlEnum.HRHIREAPPLY_REJECTURL.getUrl()); + appMap.put(OaFormUrlEnum.RECALLURL.getType(), OaFormUrlEnum.RECALLURL.getUrl()); + appMap.put(OaFormUrlEnum.SIGNURL.getType(), OaFormUrlEnum.SIGNURL.getUrl()); + appMap.put(OaFormUrlEnum.TRANSFERURL.getType(), OaFormUrlEnum.TRANSFERURL.getUrl()); + formVariables.put("app", appMap); + //根据组织查询是否是分公司 + OaForm oaForm = oaFormService.fetchBySid(sid); + AdBeverageAcceptanceApply adOfficeSuppliesApply = fetchBySid(sid); + SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(oaForm.getUseOrgSid()).getData(); + //是否是分公司 + formVariables.put("isTrue", sysOrganization.getIsDept() == 0); + return formVariables; + } + + /** + * 根据next的值获取前一个节点或下一个节点的名称。 + * + * @param query 包含查询所需参数的NodeQuery对象 + * @param next 参数,0表示上一环节,1表示下一环节 + * @return 节点名称,如果失败则返回null + */ + private String getNodeName(NodeQuery query, int next) { + // 根据next值选择相应的服务方法获取节点信息 + ResultBean> resultBean = (next == 0) + ? oaFormService.getPreviousNodesForReject(query) // 获取上一环节的节点 + : oaFormService.getNextNodesForSubmit(query); // 获取下一环节的节点 + // 如果服务调用成功 + if (resultBean.getSuccess()) { + // 清除结果列表中的null值,避免空节点 + resultBean.getData().removeAll(Collections.singleton(null)); + // 如果结果列表非空,返回第一个节点的名称 + if (!resultBean.getData().isEmpty()) { + return resultBean.getData().get(0).getName(); + } + } else { + // 如果服务调用失败,返回null + return null; + } + // 如果结果为空,返回null + return null; + } +} \ No newline at end of file diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptanceapply/AdBeverageAcceptanceApplyVo.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptanceapply/AdBeverageAcceptanceApplyVo.java new file mode 100644 index 0000000000..779f1d9faa --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptanceapply/AdBeverageAcceptanceApplyVo.java @@ -0,0 +1,53 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.oa.biz.adbeverageacceptanceapply; + +import com.yxt.anrui.oa.biz.oaform.FormCommon; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +@Data +public class AdBeverageAcceptanceApplyVo { + + private String sid; + /* private String userSid; + private String orgPath;*/ + private String orgSidPath; + private String createBySid; + + @ApiModelProperty("备注") + private String remarks; + private List list = new ArrayList<>(); + + private String taskId; + @ApiModelProperty("流程实例id") + private String procInsId; + +// private String testPage; +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptancedetail/AdBeverageAcceptanceDetail.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptancedetail/AdBeverageAcceptanceDetail.java new file mode 100644 index 0000000000..f4644abc5d --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptancedetail/AdBeverageAcceptanceDetail.java @@ -0,0 +1,77 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.oa.biz.adbeverageacceptancedetail; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * Project: yxt-oa(认定人员)
+ * File: AdExpatriatesDetail.java
+ * Class: com.yxt.anrui.oa.api.adexpatriatesdetail.AdExpatriatesDetail
+ * Description: 驻外人员认定列表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2025-01-20 15:35:08
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "集团用酒领用申请列表", description = "集团用酒领用申请列表") +@TableName("ad_beverage_acceptance_detail") +public class AdBeverageAcceptanceDetail extends BaseEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("申请sid") + private String mainSid; // 申请sid + @ApiModelProperty("物品基础信息Sid") + private String goodsSpuSid; // 物品基础信息Sid + @ApiModelProperty("商品名称") + private String goodsSpuName; // 商品名称 + @ApiModelProperty("物品Skusid") + private String goodsSkuSid; // 物品Skusid + @ApiModelProperty("规格型号") + private String goodsSkuOwnSpec; // 规格型号 + @ApiModelProperty("计量单位") + private String unit; // 计量单位 + @ApiModelProperty("数量") + private BigDecimal count; // 库存数量 + @ApiModelProperty("库存sid") + private String inventorySid; // 库存sid + @ApiModelProperty("单价") + private BigDecimal price; // 单价 + @ApiModelProperty("合计金额") + private BigDecimal priceTotal; // 合计金额 + + +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptancedetail/AdBeverageAcceptanceDetailDto.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptancedetail/AdBeverageAcceptanceDetailDto.java new file mode 100644 index 0000000000..a2cdf53d09 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptancedetail/AdBeverageAcceptanceDetailDto.java @@ -0,0 +1,70 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.oa.biz.adbeverageacceptancedetail; + + +import com.yxt.anrui.oa.biz.oaform.FormCommon; +import com.yxt.common.core.dto.Dto; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: yxt-oa(认定人员)
+ * File: AdExpatriatesDetailDto.java
+ * Class: com.yxt.anrui.oa.api.adexpatriatesdetail.AdExpatriatesDetailDto
+ * Description: 驻外人员认定列表 数据传输对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2025-01-20 15:35:08
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "驻外人员认定列表 数据传输对象", description = "驻外人员认定列表 数据传输对象") +public class AdBeverageAcceptanceDetailDto implements Dto { + + @ApiModelProperty("驻外人员") + private FormCommon expatriatesObj; + private String expatriatesKey; + private String expatriatesValue; + @ApiModelProperty("驻外人员部门") + private FormCommon deptObj; + private String deptKey; + private String deptValue; + @ApiModelProperty("驻外人员职位") + private FormCommon jobObj; + private String jobKey; + private String jobValue; + @ApiModelProperty("驻外人员家庭常住地址") + private String expatriatesHomeAddress; + @ApiModelProperty("驻外人员工作地址") + private String expatriatesWorkAddress; + @ApiModelProperty("驻外人员开始驻外时间") + private String expatriatesDate; +} \ No newline at end of file diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptancedetail/AdBeverageAcceptanceDetailListDetailVo.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptancedetail/AdBeverageAcceptanceDetailListDetailVo.java new file mode 100644 index 0000000000..5260105860 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptancedetail/AdBeverageAcceptanceDetailListDetailVo.java @@ -0,0 +1,66 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.oa.biz.adbeverageacceptancedetail; + + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: yxt-oa(认定人员)
+ * File: AdExpatriatesDetailVo.java
+ * Class: com.yxt.anrui.oa.api.adexpatriatesdetail.AdExpatriatesDetailVo
+ * Description: 驻外人员认定列表 视图数据对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2025-01-20 15:35:08
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "驻外人员认定列表 视图数据对象", description = "驻外人员认定列表 视图数据对象") +public class AdBeverageAcceptanceDetailListDetailVo implements Vo { + + private String sid; + + @ApiModelProperty("驻外人员") + private String expatriatesValue; + @ApiModelProperty("驻外人员部门") + private String deptValue; + @ApiModelProperty("驻外人员职位") + private String jobValue; + @ApiModelProperty("驻外人员家庭常住地址") + private String expatriatesHomeAddress; + @ApiModelProperty("驻外人员工作地址") + private String expatriatesWorkAddress; + @ApiModelProperty("驻外人员开始驻外时间") + private String expatriatesDate; + +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptancedetail/AdBeverageAcceptanceDetailMapper.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptancedetail/AdBeverageAcceptanceDetailMapper.java new file mode 100644 index 0000000000..9daf747b59 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptancedetail/AdBeverageAcceptanceDetailMapper.java @@ -0,0 +1,41 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.oa.biz.adbeverageacceptancedetail; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +@Mapper +public interface AdBeverageAcceptanceDetailMapper extends BaseMapper { + + @Select("select * from ad_office_supplies_detail where mainSid = #{mainSid}") + List selectByMainSid(String mainSid); + + List getUpdateInit(String sid); +} \ No newline at end of file diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptancedetail/AdBeverageAcceptanceDetailMapper.xml b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptancedetail/AdBeverageAcceptanceDetailMapper.xml new file mode 100644 index 0000000000..f95347aa9b --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptancedetail/AdBeverageAcceptanceDetailMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptancedetail/AdBeverageAcceptanceDetailService.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptancedetail/AdBeverageAcceptanceDetailService.java new file mode 100644 index 0000000000..f65beae17e --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptancedetail/AdBeverageAcceptanceDetailService.java @@ -0,0 +1,87 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.oa.biz.adbeverageacceptancedetail; + +import com.yxt.anrui.oa.biz.oaform.FormCommon; +import com.yxt.common.base.service.MybatisBaseService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.Collections; +import java.util.List; +import java.util.Map; + +@Service +public class AdBeverageAcceptanceDetailService extends MybatisBaseService { + + public void saveDetails(List list, String sid) { + //根据sid查询明细并删除 + List list2 = baseMapper.selectByMainSid(sid); + list2.removeAll(Collections.singleton(null)); + if (!list2.isEmpty()) { + list2.stream().forEach(v -> { + deleteBySid(v.getSid()); + }); + } + list.removeAll(Collections.singleton(null)); + if (!list.isEmpty()) { + list.stream().forEach(f -> { + AdBeverageAcceptanceDetail detail = new AdBeverageAcceptanceDetail(); + detail.setMainSid(sid); + detail.setInventorySid(f.getId()); + detail.setGoodsSpuName(f.getDictValue()); + if (null != f.getExtra()) { + Map e = f.getExtra(); + for (Map.Entry entry : e.entrySet()) { + if (StringUtils.isNotBlank((String)entry.getValue())) { + if (entry.getKey().equals("count")) { + detail.setCount(new BigDecimal((String)entry.getValue())); + } + if (entry.getKey().equals("goodsSkuOwnSpec")) { + detail.setGoodsSkuOwnSpec((String)entry.getValue()); + } + if (entry.getKey().equals("goodsSkuSid")) { + detail.setGoodsSkuSid((String)entry.getValue()); + } + if (entry.getKey().equals("goodsSpuSid")) { + detail.setGoodsSpuSid((String)entry.getValue()); + } + if (entry.getKey().equals("unit")) { + detail.setUnit((String)entry.getValue()); + } + } + } + } + baseMapper.insert(detail); + }); + } + } + + public List getUpdateInit(String sid) { + return baseMapper.getUpdateInit(sid); + } +} \ No newline at end of file diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptancedetail/AdBeverageAcceptanceDetailVo.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptancedetail/AdBeverageAcceptanceDetailVo.java new file mode 100644 index 0000000000..a6ecf52b7f --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptancedetail/AdBeverageAcceptanceDetailVo.java @@ -0,0 +1,67 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.oa.biz.adbeverageacceptancedetail; + + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: yxt-oa(认定人员)
+ * File: AdExpatriatesDetailVo.java
+ * Class: com.yxt.anrui.oa.api.adexpatriatesdetail.AdExpatriatesDetailVo
+ * Description: 驻外人员认定列表 视图数据对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2025-01-20 15:35:08
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "驻外人员认定列表 视图数据对象", description = "驻外人员认定列表 视图数据对象") +public class AdBeverageAcceptanceDetailVo implements Vo { + + private String sid; + + @ApiModelProperty("物品基础信息Sid") + private String goodsSpuSid; // 物品基础信息Sid + @ApiModelProperty("商品名称") + private String goodsSpuName; // 商品名称 + @ApiModelProperty("物品Skusid") + private String goodsSkuSid; // 物品Skusid + @ApiModelProperty("规格型号") + private String goodsSkuOwnSpec; // 规格型号 + @ApiModelProperty("计量单位") + private String unit; // 计量单位 + @ApiModelProperty("库存数量") + private String count; // 库存数量 + @ApiModelProperty("库存sid") + private String inventorySid; // 库存sid +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesapply/AdOfficeSuppliesApply.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesapply/AdOfficeSuppliesApply.java new file mode 100644 index 0000000000..d4e5033899 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesapply/AdOfficeSuppliesApply.java @@ -0,0 +1,44 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.oa.biz.adofficesuppliesapply; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "办公用品领用", description = "办公用品领用") +@TableName("ad_office_supplies_apply") +public class AdOfficeSuppliesApply extends BaseEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("基础表单sid") + private String formSid; // 基础表单sid + + +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesapply/AdOfficeSuppliesApplyDetailVo.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesapply/AdOfficeSuppliesApplyDetailVo.java new file mode 100644 index 0000000000..4fa2efec42 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesapply/AdOfficeSuppliesApplyDetailVo.java @@ -0,0 +1,23 @@ +package com.yxt.anrui.oa.biz.adofficesuppliesapply; + +import com.yxt.anrui.oa.biz.oaform.FormCommon; +import com.yxt.anrui.oa.biz.oaform.OaFormCommonVo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2025/1/21 + **/ +@Data +public class AdOfficeSuppliesApplyDetailVo extends OaFormCommonVo { + + @ApiModelProperty("备注") + private String remarks; + + private List list = new ArrayList<>(); +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesapply/AdOfficeSuppliesApplyDto.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesapply/AdOfficeSuppliesApplyDto.java new file mode 100644 index 0000000000..30b388d44e --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesapply/AdOfficeSuppliesApplyDto.java @@ -0,0 +1,59 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.oa.biz.adofficesuppliesapply; + + +import com.yxt.anrui.oa.biz.oaform.FormCommon; +import com.yxt.anrui.oa.biz.oaform.OaFormDto; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * Project: oa(驻外人员认定申请)
+ * File: AdExpatriatesApplyDto.java
+ * Class: com.yxt.anrui.oa.api.adexpatriatesapply.AdExpatriatesApplyDto
+ * Description: 驻外人员认定申请 数据传输对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2025-01-16 15:22:53
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "驻外人员认定申请 数据传输对象", description = "驻外人员认定申请 数据传输对象") +public class AdOfficeSuppliesApplyDto extends OaFormDto { + + @ApiModelProperty("备注") + private String remarks; + + private List list = new ArrayList<>(); +} \ No newline at end of file diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesapply/AdOfficeSuppliesApplyMapper.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesapply/AdOfficeSuppliesApplyMapper.java new file mode 100644 index 0000000000..9c2b991e10 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesapply/AdOfficeSuppliesApplyMapper.java @@ -0,0 +1,37 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.oa.biz.adofficesuppliesapply; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface AdOfficeSuppliesApplyMapper extends BaseMapper { + + int selectBySid(String join); + + AdOfficeSuppliesApplyDetailVo details(String sid); +} \ No newline at end of file diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesapply/AdOfficeSuppliesApplyMapper.xml b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesapply/AdOfficeSuppliesApplyMapper.xml new file mode 100644 index 0000000000..687b436684 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesapply/AdOfficeSuppliesApplyMapper.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesapply/AdOfficeSuppliesApplyService.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesapply/AdOfficeSuppliesApplyService.java new file mode 100644 index 0000000000..fcdebf7a22 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesapply/AdOfficeSuppliesApplyService.java @@ -0,0 +1,343 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.oa.biz.adofficesuppliesapply; + +import cn.hutool.core.bean.BeanUtil; +import com.yxt.anrui.oa.biz.adofficesuppliesdetail.AdOfficeSuppliesDetailService; +import com.yxt.anrui.oa.biz.adofficesuppliesdetail.AdOfficeSuppliesDetailVo; +import com.yxt.anrui.oa.biz.oaappendix.OaAppendixService; +import com.yxt.anrui.oa.biz.oaform.*; +import com.yxt.anrui.oa.biz.oaform.flowable.*; +import com.yxt.anrui.oa.feign.flowable.flow.ProcDefEnum; +import com.yxt.anrui.oa.feign.portal.sysorganization.SysOrganizationFeign; +import com.yxt.anrui.oa.feign.portal.sysorganization.SysOrganizationVo; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.core.result.ResultBean; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.*; + +@Service +public class AdOfficeSuppliesApplyService extends MybatisBaseService { + + @Autowired + private OaAppendixService oaAppendixService; + @Autowired + private OaFormService oaFormService; + @Autowired + private AdOfficeSuppliesDetailService adOfficeSuppliesDetailService; + @Autowired + private SysOrganizationFeign sysOrganizationFeign; + + public ResultBean getSaveInit(String userSid, String orgPath) { + ResultBean rb = ResultBean.fireFail(); + AdOfficeSuppliesApplyVo adOfficeSuppliesApplyVo = new AdOfficeSuppliesApplyVo(); + adOfficeSuppliesApplyVo.setCreateBySid(userSid); + adOfficeSuppliesApplyVo.setOrgSidPath(orgPath); + return rb.success().setData(adOfficeSuppliesApplyVo); + } + + public ResultBean getUpdateInit(String sid) { + ResultBean rb = ResultBean.fireFail(); + AdOfficeSuppliesApplyVo adOfficeSuppliesApplyVo = new AdOfficeSuppliesApplyVo(); + AdOfficeSuppliesApply adOfficeSuppliesApply = fetchBySid(sid); + if (adOfficeSuppliesApply == null) { + return rb.setMsg("该申请不存在"); + } + OaForm oaForm = oaFormService.fetchBySid(sid); + adOfficeSuppliesApplyVo.setTaskId(oaForm.getTaskId()); + adOfficeSuppliesApplyVo.setProcInsId(oaForm.getProcInstId()); + //根据部门sid获取orgPath并赋值 + SysOrganizationVo organizationVo = sysOrganizationFeign.fetchBySid(oaForm.getDeptSid()).getData(); + String orgSidPath = organizationVo.getOrgSidPath(); + adOfficeSuppliesApplyVo.setOrgSidPath(orgSidPath); + adOfficeSuppliesApplyVo.setCreateBySid(oaForm.getCreateBySid()); + BeanUtil.copyProperties(adOfficeSuppliesApply, adOfficeSuppliesApplyVo); + List list = adOfficeSuppliesDetailService.getUpdateInit(sid); + list.removeAll(Collections.singleton(null)); + List officeObj = new ArrayList<>(); + if (!list.isEmpty()) { + for (AdOfficeSuppliesDetailVo d : list) { + FormCommon formCommon = new FormCommon(); + Map extra = new HashMap<>(); + formCommon.setId(d.getInventorySid()); + formCommon.setDictValue(d.getGoodsSpuName()); + if (StringUtils.isNotBlank(d.getCount())) { + extra.put("count",d.getCount()); + } + if (StringUtils.isNotBlank(d.getGoodsSkuOwnSpec())) { + extra.put("goodsSkuOwnSpec",d.getGoodsSkuOwnSpec()); + } + if (StringUtils.isNotBlank(d.getGoodsSkuSid())) { + extra.put("goodsSkuSid",d.getGoodsSkuSid()); + } + if (StringUtils.isNotBlank(d.getGoodsSpuSid())) { + extra.put("goodsSpuSid",d.getGoodsSpuSid()); + } + if (StringUtils.isNotBlank(d.getUnit())) { + extra.put("unit",d.getUnit()); + } + formCommon.setExtra(extra); + officeObj.add(formCommon); + } + } + adOfficeSuppliesApplyVo.setList(officeObj); + adOfficeSuppliesApplyVo.setSid(sid); + return rb.success().setData(adOfficeSuppliesApplyVo); + } + + public ResultBean saveOrUpdateDto(AdOfficeSuppliesApplyDto dto) { + ResultBean rb = ResultBean.fireFail(); + String sid = dto.getSid(); + List list = dto.getList(); + if (StringUtils.isBlank(sid)) { + // 新建操作 + AdOfficeSuppliesApply entity = new AdOfficeSuppliesApply(); + BeanUtil.copyProperties(dto, entity, "sid"); + + dto.setBillNo("BGYPLY"); + dto.setSid(entity.getSid()); + ResultBean resultBean = oaFormService.saveOaForm(dto); + + if (!resultBean.getSuccess()) { + return rb; + } + + entity.setFormSid(resultBean.getData()); + baseMapper.insert(entity); + sid = entity.getSid(); + } else { + // 更新操作 + AdOfficeSuppliesApply entity = fetchBySid(sid); + BeanUtil.copyProperties(dto, entity, "id", "sid"); + baseMapper.updateById(entity); + } + adOfficeSuppliesDetailService.saveDetails(list, sid); + return rb.success().setData(sid); + } + + + public ResultBean delAll(String[] sids) { + ResultBean rb = ResultBean.fireFail(); + //查询该sid中是否有流程不是待提交的 + int count = baseMapper.selectBySid(StringUtils.join(sids, ",")); + if (count > 0) { + return rb.setMsg("删除的数据中包含已提交或已办结审批的数据,删除失败"); + } + delBySids(sids); + return rb.success(); + } + + public ResultBean details(String sid, String application) { + ResultBean rb = ResultBean.fireFail(); + AdOfficeSuppliesApplyDetailVo adOfficeSuppliesApplyDetailVo = baseMapper.details(sid); + if (adOfficeSuppliesApplyDetailVo == null) { + return rb.setMsg("该申请不存在"); + } + //基础字段赋值 + BeanUtil.copyProperties(oaFormService.getDetails(sid), adOfficeSuppliesApplyDetailVo); + List obj = new ArrayList<>(); + List detailVos = adOfficeSuppliesDetailService.getUpdateInit(sid); + if (!detailVos.isEmpty()) { + for (AdOfficeSuppliesDetailVo d : detailVos) { + FormCommon formCommon = new FormCommon(); + Map extra = new HashMap<>(); + formCommon.setId(d.getInventorySid()); + formCommon.setDictValue(d.getGoodsSpuName()); + if (StringUtils.isNotBlank(d.getCount())) { + extra.put("count",d.getCount()); + } + if (StringUtils.isNotBlank(d.getGoodsSkuOwnSpec())) { + extra.put("goodsSkuOwnSpec",d.getGoodsSkuOwnSpec()); + } + if (StringUtils.isNotBlank(d.getGoodsSkuSid())) { + extra.put("goodsSkuSid",d.getGoodsSkuSid()); + } + if (StringUtils.isNotBlank(d.getGoodsSpuSid())) { + extra.put("goodsSpuSid",d.getGoodsSpuSid()); + } + if (StringUtils.isNotBlank(d.getUnit())) { + extra.put("unit",d.getUnit()); + } + formCommon.setExtra(extra); + obj.add(formCommon); + } + } + adOfficeSuppliesApplyDetailVo.setList(obj); + return rb.success().setData(adOfficeSuppliesApplyDetailVo); + } + + /** + * 提交 + * + * @param dto + * @return + */ + public ResultBean submit(AdOfficeSuppliesApplyDto dto) { + ResultBean rb = ResultBean.fireFail(); + ResultBean stringResultBean = saveOrUpdateDto(dto); + if (!stringResultBean.getSuccess()) { + return rb.setMsg(stringResultBean.getData()); + } + String businessSid = stringResultBean.getData(); + + SubmitDto submitDto = new SubmitDto(); + submitDto.setUserSid(dto.getCreateBySid()); + submitDto.setBusinessSid(businessSid); + + Map formVariables = new HashMap<>(); + formVariables = getMap(formVariables, businessSid); + submitDto.setFormVariables(formVariables); + submitDto.setProcDefId(ProcDefEnum.BGYPLYAPPLY.getProDefId()); + submitDto.setNextTaskId(dto.getTaskId()); + submitDto.setRule(OaFormRuleEnum.DIRECTLY_UNDER.getRule()); + return oaFormService.submit(submitDto); + } + + /** + * 办理(同意) + * + * @param dto + * @return + */ + public ResultBean complete(CompleteDto dto) { + Map formVariables = dto.getFormVariables(); + formVariables = getMap(formVariables, dto.getBusinessSid()); + dto.setFormVariables(formVariables); + BusinessVariablesDto businessVariablesDto = new BusinessVariablesDto(); + BeanUtil.copyProperties(dto, businessVariablesDto); + return oaFormService.complete(businessVariablesDto); + } + + /** + * 驳回 + * + * @param dto + * @return + */ + public ResultBean reject(TaskDto dto) { + Map formVariables = dto.getFormVariables(); + formVariables = getMap(formVariables, dto.getBusinessSid()); + dto.setFormVariables(formVariables); + return oaFormService.reject(dto); + } + + public ResultBean getFlowOperateTitle(NodeQuery query) { + // 默认失败返回 + ResultBean rb = ResultBean.fireFail(); + + // 获取next值和formVariables + int next = query.getNext(); + + // 获取并更新formVariables + Map formVariables = getMap(query.getFormVariables(), query.getBusinessSid()); + query.setFormVariables(formVariables); + + // 校验next参数是否有效(只允许0或1) + if (next != 0 && next != 1) { + return rb.setMsg("参数错误:next"); // 如果next不是0或1,返回错误信息 + } + + // 获取节点名称 + String data = getNodeName(query, next); + + // 如果data为null,表示未获取到有效的节点信息 + if (data == null) { + return rb.setMsg("没有获取到节点信息"); // 返回错误消息 + } + + // 返回成功的结果和获取到的节点名称 + return rb.success().setData(data); + } + + /** + * 网关参数组成 + * + * @param formVariables + * @param sid + * @return + */ + public Map getMap(Map formVariables, String sid) { + Map appMap = new HashMap<>(); + appMap.put("sid", sid); + /*appMap.put("editUrl", "approval/#/pages/EditOnboradingApplyActivity?sid=" + sid); + appMap.put("detailUrl", "approval/#/pages/DetailOnboradingApplyActivity?sid=" + sid); + appMap.put("flowOperateUrl", "oa/v1/HrHireApply/getFlowOperateTitle"); + appMap.put("agreeUrl", "oa/v1/HrHireApply/complete"); + appMap.put("stopUrl", "oa/v1/oaform/breakProcess"); + appMap.put("rejectUrl", "oa/v1/HrHireApply/reject"); + appMap.put("recallUrl", "oa/v1/oaform/revokeProcess"); + appMap.put("signUrl", "oa/v1/oaform/delegate"); + appMap.put("transferUrl", "oa/v1/oaform/assignTask");*/ + appMap.put(OaFormUrlEnum.HRHIREAPPLY_EDIT.getType(), OaFormUrlEnum.HRHIREAPPLY_EDIT.getUrl() + "?sid=" + sid); + appMap.put(OaFormUrlEnum.HRHIREAPPLY_DETAIL.getType(), OaFormUrlEnum.HRHIREAPPLY_DETAIL.getUrl() + "?sid=" + sid); + appMap.put(OaFormUrlEnum.HRHIREAPPLY_FLOWOPERATEURL.getType(), OaFormUrlEnum.HRHIREAPPLY_FLOWOPERATEURL.getUrl()); + appMap.put(OaFormUrlEnum.HRHIREAPPLY_AGREEURL.getType(), OaFormUrlEnum.HRHIREAPPLY_AGREEURL.getUrl()); + appMap.put(OaFormUrlEnum.STOPURL.getType(), OaFormUrlEnum.STOPURL.getUrl()); + appMap.put(OaFormUrlEnum.HRHIREAPPLY_REJECTURL.getType(), OaFormUrlEnum.HRHIREAPPLY_REJECTURL.getUrl()); + appMap.put(OaFormUrlEnum.RECALLURL.getType(), OaFormUrlEnum.RECALLURL.getUrl()); + appMap.put(OaFormUrlEnum.SIGNURL.getType(), OaFormUrlEnum.SIGNURL.getUrl()); + appMap.put(OaFormUrlEnum.TRANSFERURL.getType(), OaFormUrlEnum.TRANSFERURL.getUrl()); + formVariables.put("app", appMap); + //根据组织查询是否是分公司 + OaForm oaForm = oaFormService.fetchBySid(sid); + AdOfficeSuppliesApply adOfficeSuppliesApply = fetchBySid(sid); + SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(oaForm.getUseOrgSid()).getData(); + //是否是分公司 + formVariables.put("isTrue", sysOrganization.getIsDept() == 0); + return formVariables; + } + + /** + * 根据next的值获取前一个节点或下一个节点的名称。 + * + * @param query 包含查询所需参数的NodeQuery对象 + * @param next 参数,0表示上一环节,1表示下一环节 + * @return 节点名称,如果失败则返回null + */ + private String getNodeName(NodeQuery query, int next) { + // 根据next值选择相应的服务方法获取节点信息 + ResultBean> resultBean = (next == 0) + ? oaFormService.getPreviousNodesForReject(query) // 获取上一环节的节点 + : oaFormService.getNextNodesForSubmit(query); // 获取下一环节的节点 + // 如果服务调用成功 + if (resultBean.getSuccess()) { + // 清除结果列表中的null值,避免空节点 + resultBean.getData().removeAll(Collections.singleton(null)); + // 如果结果列表非空,返回第一个节点的名称 + if (!resultBean.getData().isEmpty()) { + return resultBean.getData().get(0).getName(); + } + } else { + // 如果服务调用失败,返回null + return null; + } + // 如果结果为空,返回null + return null; + } +} \ No newline at end of file diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesapply/AdOfficeSuppliesApplyVo.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesapply/AdOfficeSuppliesApplyVo.java new file mode 100644 index 0000000000..d94d648470 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesapply/AdOfficeSuppliesApplyVo.java @@ -0,0 +1,53 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.oa.biz.adofficesuppliesapply; + +import com.yxt.anrui.oa.biz.oaform.FormCommon; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +@Data +public class AdOfficeSuppliesApplyVo { + + private String sid; + /* private String userSid; + private String orgPath;*/ + private String orgSidPath; + private String createBySid; + + @ApiModelProperty("备注") + private String remarks; + private List list = new ArrayList<>(); + + private String taskId; + @ApiModelProperty("流程实例id") + private String procInsId; + +// private String testPage; +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesdetail/AdOfficeSuppliesDetail.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesdetail/AdOfficeSuppliesDetail.java new file mode 100644 index 0000000000..7e6a51e0d2 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesdetail/AdOfficeSuppliesDetail.java @@ -0,0 +1,73 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.oa.biz.adofficesuppliesdetail; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * Project: yxt-oa(认定人员)
+ * File: AdExpatriatesDetail.java
+ * Class: com.yxt.anrui.oa.api.adexpatriatesdetail.AdExpatriatesDetail
+ * Description: 驻外人员认定列表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2025-01-20 15:35:08
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "办公用品领用列表", description = "办公用品领用列表") +@TableName("ad_office_supplies_detail") +public class AdOfficeSuppliesDetail extends BaseEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("申请sid") + private String mainSid; // 申请sid + @ApiModelProperty("物品基础信息Sid") + private String goodsSpuSid; // 物品基础信息Sid + @ApiModelProperty("商品名称") + private String goodsSpuName; // 商品名称 + @ApiModelProperty("物品Skusid") + private String goodsSkuSid; // 物品Skusid + @ApiModelProperty("规格型号") + private String goodsSkuOwnSpec; // 规格型号 + @ApiModelProperty("计量单位") + private String unit; // 计量单位 + @ApiModelProperty("数量") + private BigDecimal count; // 库存数量 + @ApiModelProperty("库存sid") + private String inventorySid; // 库存sid + + +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesdetail/AdOfficeSuppliesDetailDto.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesdetail/AdOfficeSuppliesDetailDto.java new file mode 100644 index 0000000000..b4ddf66f26 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesdetail/AdOfficeSuppliesDetailDto.java @@ -0,0 +1,70 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.oa.biz.adofficesuppliesdetail; + + +import com.yxt.anrui.oa.biz.oaform.FormCommon; +import com.yxt.common.core.dto.Dto; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: yxt-oa(认定人员)
+ * File: AdExpatriatesDetailDto.java
+ * Class: com.yxt.anrui.oa.api.adexpatriatesdetail.AdExpatriatesDetailDto
+ * Description: 驻外人员认定列表 数据传输对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2025-01-20 15:35:08
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "驻外人员认定列表 数据传输对象", description = "驻外人员认定列表 数据传输对象") +public class AdOfficeSuppliesDetailDto implements Dto { + + @ApiModelProperty("驻外人员") + private FormCommon expatriatesObj; + private String expatriatesKey; + private String expatriatesValue; + @ApiModelProperty("驻外人员部门") + private FormCommon deptObj; + private String deptKey; + private String deptValue; + @ApiModelProperty("驻外人员职位") + private FormCommon jobObj; + private String jobKey; + private String jobValue; + @ApiModelProperty("驻外人员家庭常住地址") + private String expatriatesHomeAddress; + @ApiModelProperty("驻外人员工作地址") + private String expatriatesWorkAddress; + @ApiModelProperty("驻外人员开始驻外时间") + private String expatriatesDate; +} \ No newline at end of file diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesdetail/AdOfficeSuppliesDetailMapper.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesdetail/AdOfficeSuppliesDetailMapper.java new file mode 100644 index 0000000000..c38e32aafa --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesdetail/AdOfficeSuppliesDetailMapper.java @@ -0,0 +1,41 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.oa.biz.adofficesuppliesdetail; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +@Mapper +public interface AdOfficeSuppliesDetailMapper extends BaseMapper { + + @Select("select * from ad_office_supplies_detail where mainSid = #{mainSid}") + List selectByMainSid(String mainSid); + + List getUpdateInit(String sid); +} \ No newline at end of file diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesdetail/AdOfficeSuppliesDetailMapper.xml b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesdetail/AdOfficeSuppliesDetailMapper.xml new file mode 100644 index 0000000000..f95347aa9b --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesdetail/AdOfficeSuppliesDetailMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesdetail/AdOfficeSuppliesDetailService.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesdetail/AdOfficeSuppliesDetailService.java new file mode 100644 index 0000000000..97e63f5ac4 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesdetail/AdOfficeSuppliesDetailService.java @@ -0,0 +1,87 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.oa.biz.adofficesuppliesdetail; + +import com.yxt.anrui.oa.biz.oaform.FormCommon; +import com.yxt.common.base.service.MybatisBaseService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.Collections; +import java.util.List; +import java.util.Map; + +@Service +public class AdOfficeSuppliesDetailService extends MybatisBaseService { + + public void saveDetails(List list, String sid) { + //根据sid查询明细并删除 + List list2 = baseMapper.selectByMainSid(sid); + list2.removeAll(Collections.singleton(null)); + if (!list2.isEmpty()) { + list2.stream().forEach(v -> { + deleteBySid(v.getSid()); + }); + } + list.removeAll(Collections.singleton(null)); + if (!list.isEmpty()) { + list.stream().forEach(f -> { + AdOfficeSuppliesDetail detail = new AdOfficeSuppliesDetail(); + detail.setMainSid(sid); + detail.setInventorySid(f.getId()); + detail.setGoodsSpuName(f.getDictValue()); + if (null != f.getExtra()) { + Map e = f.getExtra(); + for (Map.Entry entry : e.entrySet()) { + if (StringUtils.isNotBlank((String)entry.getValue())) { + if (entry.getKey().equals("count")) { + detail.setCount(new BigDecimal((String)entry.getValue())); + } + if (entry.getKey().equals("goodsSkuOwnSpec")) { + detail.setGoodsSkuOwnSpec((String)entry.getValue()); + } + if (entry.getKey().equals("goodsSkuSid")) { + detail.setGoodsSkuSid((String)entry.getValue()); + } + if (entry.getKey().equals("goodsSpuSid")) { + detail.setGoodsSpuSid((String)entry.getValue()); + } + if (entry.getKey().equals("unit")) { + detail.setUnit((String)entry.getValue()); + } + } + } + } + baseMapper.insert(detail); + }); + } + } + + public List getUpdateInit(String sid) { + return baseMapper.getUpdateInit(sid); + } +} \ No newline at end of file diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesdetail/AdOfficeSuppliesDetailVo.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesdetail/AdOfficeSuppliesDetailVo.java new file mode 100644 index 0000000000..0754415071 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesdetail/AdOfficeSuppliesDetailVo.java @@ -0,0 +1,67 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.oa.biz.adofficesuppliesdetail; + + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: yxt-oa(认定人员)
+ * File: AdExpatriatesDetailVo.java
+ * Class: com.yxt.anrui.oa.api.adexpatriatesdetail.AdExpatriatesDetailVo
+ * Description: 驻外人员认定列表 视图数据对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2025-01-20 15:35:08
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "驻外人员认定列表 视图数据对象", description = "驻外人员认定列表 视图数据对象") +public class AdOfficeSuppliesDetailVo implements Vo { + + private String sid; + + @ApiModelProperty("物品基础信息Sid") + private String goodsSpuSid; // 物品基础信息Sid + @ApiModelProperty("商品名称") + private String goodsSpuName; // 商品名称 + @ApiModelProperty("物品Skusid") + private String goodsSkuSid; // 物品Skusid + @ApiModelProperty("规格型号") + private String goodsSkuOwnSpec; // 规格型号 + @ApiModelProperty("计量单位") + private String unit; // 计量单位 + @ApiModelProperty("库存数量") + private String count; // 库存数量 + @ApiModelProperty("库存sid") + private String inventorySid; // 库存sid +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow/ProcDefEnum.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow/ProcDefEnum.java index f759713d59..6b989b5a5a 100644 --- a/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow/ProcDefEnum.java +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow/ProcDefEnum.java @@ -10,6 +10,7 @@ public enum ProcDefEnum { OALEAVEAPPLY("请假申请", "process_su0yph7n:1:15957504"), OAMENDAPPLY("补卡申请", "process_9suucr96:1:16072504"), HIHIREAPPLY("招聘需求", "process_zy0m4jrp:1:16802504"), + BGYPLYAPPLY("办公用品领用", ""), ; diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryRest.java b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryRest.java index 702eef0ba2..242b5938ac 100644 --- a/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryRest.java +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryRest.java @@ -312,4 +312,15 @@ public class WmsInventoryRest { PagerVo pv = wmsInventoryService.inventoryStockList(pq); return rb.success().setData(pv); } + + //------------------------------ 行政类审批查询库存 --------------------------------------- + @ApiOperation("行政类审批查询库存") + @PostMapping("/oaInventoryList") + public ResultBean> oaInventoryList(@RequestParam("orgPath") String orgPath,@RequestParam("warehouseTypeValue") String warehouseTypeValue) { + ResultBean> rb = ResultBean.fireFail(); + List list = wmsInventoryService.oaInventoryList(orgPath,warehouseTypeValue); + return rb.success().setData(list); + } + + } diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/FormCommon.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/FormCommon.java new file mode 100644 index 0000000000..1f824ad512 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/FormCommon.java @@ -0,0 +1,27 @@ +package com.yxt.wms.biz.inventory.wmsinventory; + +import lombok.Data; + +import java.util.Map; + +/** + * @description: + * @author: dimengzhe + * @date: 2025/1/16 + **/ +@Data +public class FormCommon { + + private String id; + private String dictValue; + + private Map extra; + + // 静态方法,直接通过方法创建对象并赋值 + public static FormCommon of(String id, String dictValue) { + FormCommon formCommon = new FormCommon(); + formCommon.setId(id); + formCommon.setDictValue(dictValue); + return formCommon; + } +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryMapper.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryMapper.java index 37a9eb45ac..7587fd0dfb 100644 --- a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryMapper.java +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryMapper.java @@ -102,4 +102,6 @@ public interface WmsInventoryMapper extends BaseMapper { List selCJByDeptSid(String deptSid); IPage inventoryStockList(IPage page, @Param(Constants.WRAPPER)QueryWrapper qw); + + List selOaInventoryList(@Param("useOrgSid")String useOrgSid, @Param("warehouseTypeValue")String warehouseTypeValue); } diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryMapper.xml b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryMapper.xml index 048d1ecf67..feff5df0c7 100644 --- a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryMapper.xml +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryMapper.xml @@ -765,4 +765,9 @@ ${ew.sqlSegment} + diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryService.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryService.java index a149717e6d..3f60528a01 100644 --- a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryService.java +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryService.java @@ -23,6 +23,7 @@ import com.yxt.wms.biz.inventory.wmsinventory.report.InventoryStockListQuery; import com.yxt.wms.biz.inventory.wmsinventory.report.InventoryStockListVo; import com.yxt.wms.feign.base.basegoodssku.BaseGoodsSkuDetailsVo; import com.yxt.wms.feign.base.basegoodssku.BaseGoodsSkuFeign; +import com.yxt.wms.feign.base.basegoodsskuextend.BaseGoodsSkuExtendFeign; import com.yxt.wms.feign.pms.PmsPurchasebackDetailFeign; import com.yxt.wms.feign.portal.privilege.PrivilegeQuery; import com.yxt.wms.feign.portal.sysorganization.SysOrganizationFeign; @@ -56,7 +57,8 @@ public class WmsInventoryService extends MybatisBaseService listPage(PagerQuery pq) { WmsInventoryQuery query = pq.getParams(); QueryWrapper qw = new QueryWrapper<>(); @@ -1283,4 +1285,55 @@ public class WmsInventoryService extends MybatisBaseService p = PagerUtil.pageToVo(pagging, null); return p; } + + public List oaInventoryList(String orgPath, String warehouseTypeValue) { + List list = new ArrayList<>(); + String useOrgSid = ""; + if (StringUtils.isNotBlank(orgPath)) { + List split = Arrays.asList(orgPath.split("/")); + if (split.size() > 1) { + //获取本级sid获取本级部门信息 + SysOrganizationVo sysOrganization1 = sysOrganizationFeign.fetchBySid(split.get(split.size() - 1)).getData(); + useOrgSid = sysOrganization1.getSid(); + } else { + SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(split.get(0)).getData(); + useOrgSid = sysOrganization.getSid(); + } + } + List inventories = baseMapper.selOaInventoryList(useOrgSid,warehouseTypeValue); + if (!inventories.isEmpty()) { + for (WmsInventory d : inventories) { + FormCommon f = new FormCommon(); + f.setId(d.getSid()); + f.setDictValue(d.getGoodsSpuName()); + Map extra = new HashMap<>(); + if (null != d.getCount()) { + extra.put("count",d.getCount().toString()); + } + if (StringUtils.isNotBlank(d.getGoodsSkuOwnSpec())) { + extra.put("goodsSkuOwnSpec",d.getGoodsSkuOwnSpec()); + } + if (StringUtils.isNotBlank(d.getGoodsSkuSid())) { + extra.put("goodsSkuSid",d.getGoodsSkuSid()); + } + if (StringUtils.isNotBlank(d.getGoodsSpuSid())) { + extra.put("goodsSpuSid",d.getGoodsSpuSid()); + } + if (StringUtils.isNotBlank(d.getUnit())) { + extra.put("unit",d.getUnit()); + } + if (warehouseTypeValue.equals("招待库")) { + String price = baseGoodsSkuExtendFeign.selSalesPrice(d.getGoodsSkuSid()).getData(); + if (StringUtils.isNotBlank(price)) { + extra.put("price",price); + } else { + extra.put("price",""); + } + } + f.setExtra(extra); + list.add(f); + } + } + return list; + } } diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryMapper.xml b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryMapper.xml index 17709fca42..5e1651b4e0 100644 --- a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryMapper.xml +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryMapper.xml @@ -115,7 +115,7 @@ wir.busTypeValue, wir.count, wir.currentCount, - wir.billObjName as manufacturerName, + wir.manufacturerName, abbv.vinNo from wms_inventory_record wir LEFT JOIN wms_inventory_batch wib diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryService.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryService.java index a9169f329a..734fce4f7e 100644 --- a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryService.java +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryService.java @@ -314,7 +314,7 @@ public class WmsOldInventoryService extends MybatisBaseService selSalesPrice(@RequestParam("skuSid") String skuSid); } From ada1e2a2d68796c525732548f4d65520ad4566d6 Mon Sep 17 00:00:00 2001 From: yunuo970428 <405378304@qq.com> Date: Mon, 10 Feb 2025 17:37:45 +0800 Subject: [PATCH 5/7] =?UTF-8?q?=E5=AE=8C=E5=96=84=E5=87=BA=E7=BA=B3?= =?UTF-8?q?=E4=BB=98=E6=AC=BE=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chunafukuan/chunafukuanguanli/cashier.vue | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/anrui-buscenter/anrui-finmanage-ui/src/views/anruifinmanagement/chunafukuan/chunafukuanguanli/cashier.vue b/anrui-buscenter/anrui-finmanage-ui/src/views/anruifinmanagement/chunafukuan/chunafukuanguanli/cashier.vue index 9467f9c125..b041672495 100644 --- a/anrui-buscenter/anrui-finmanage-ui/src/views/anruifinmanagement/chunafukuan/chunafukuanguanli/cashier.vue +++ b/anrui-buscenter/anrui-finmanage-ui/src/views/anruifinmanagement/chunafukuan/chunafukuanguanli/cashier.vue @@ -578,8 +578,6 @@ export default { }) } else { this.formobj.payCode = '' - this.formobj.receiveBankAccount = '' - this.formobj.receiveBank = '' this.receiveBankAccount_list = [] } }, @@ -656,7 +654,7 @@ export default { this.formobj.receiveCompany = row.receiveCompany this.formobj.receiveBankAccount = row.receiveBankAccount this.formobj.receiveBank = row.receiveBank - this.changerRceiveCompany(this.formobj.receiveCompany) + this.formobj.payCode = row.payCode this.formobj.payWayValue = row.payWayValue this.changePayWay(row.payWayValue) const aa = [] @@ -689,8 +687,10 @@ export default { }, handlePayment() { if (this.formobj.payCode === '' || this.formobj.payCode === null || this.formobj.payCode === undefined) { - this.$message({ showClose: true, type: 'error', message: '请先刷新浏览器页面后再进行操作' }) - return + const choose = this.receiveCompany_list.filter((item) => item.name === this.formobj.receiveCompany) + if (choose !== null && choose.length > 0) { + this.formobj.payCode = choose[0].payCode + } } this.formobj.sids = this.sids this.submitdisabled = true @@ -709,8 +709,10 @@ export default { }, handlePass() { if (this.formobj.payCode === '' || this.formobj.payCode === null || this.formobj.payCode === undefined) { - this.$message({ showClose: true, type: 'error', message: '请先刷新浏览器页面后再进行操作' }) - return + const choose = this.receiveCompany_list.filter((item) => item.name === this.formobj.receiveCompany) + if (choose !== null && choose.length > 0) { + this.formobj.payCode = choose[0].payCode + } } this.formobj.sids = this.sids this.formobj.name = window.sessionStorage.getItem('name') From 960566a2b193b6268723146293cc47e1bffdc4b7 Mon Sep 17 00:00:00 2001 From: ligaode Date: Mon, 10 Feb 2025 18:20:01 +0800 Subject: [PATCH 6/7] =?UTF-8?q?=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../firstshelves/AppFirstShelvesService.java | 42 +++++++++++---- .../fegin/wmsgoodstag/WmsGoodsTagFeign.java | 5 ++ ...ialDetailVo.java => WmsInitialDetail.java} | 53 ++++++++++++------- .../WmsInitialDetailFeign.java | 6 +-- .../inventroy/WmsInitialDetailRest.java | 10 ++++ .../apiadmin/inventroy/WmsInitialRest.java | 9 ---- .../wmsgoodstag/WmsGoodsTagService.java | 4 +- .../WmsInitialDetailMapper.java | 3 -- .../WmsInitialDetailService.java | 6 --- .../wmsshelfbill/WmsShelfBillService.java | 4 +- 10 files changed, 89 insertions(+), 53 deletions(-) rename anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/wmsinitialdetail/{WmsInitialDetailVo.java => WmsInitialDetail.java} (61%) diff --git a/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/as/firstshelves/AppFirstShelvesService.java b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/as/firstshelves/AppFirstShelvesService.java index cc4e56b342..f638d7ac9e 100644 --- a/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/as/firstshelves/AppFirstShelvesService.java +++ b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/as/firstshelves/AppFirstShelvesService.java @@ -33,8 +33,8 @@ import com.yxt.anrui.terminal.fegin.wmsInventory.WmsInventorySaveDto; import com.yxt.anrui.terminal.fegin.wmsgoodstag.GoodsTagListQuery; import com.yxt.anrui.terminal.fegin.wmsgoodstag.WmsGoodsTag; import com.yxt.anrui.terminal.fegin.wmsgoodstag.WmsGoodsTagFeign; +import com.yxt.anrui.terminal.fegin.wmsinitialdetail.WmsInitialDetail; import com.yxt.anrui.terminal.fegin.wmsinitialdetail.WmsInitialDetailFeign; -import com.yxt.anrui.terminal.fegin.wmsinitialdetail.WmsInitialDetailVo; import com.yxt.anrui.terminal.fegin.wmswarehouserack.WmsHouseInfoVo; import com.yxt.anrui.terminal.fegin.wmswarehouserack.WmsWarehouseRackFeign; import com.yxt.common.core.query.PagerQuery; @@ -54,11 +54,11 @@ public class AppFirstShelvesService { @Resource private WmsGoodsTagFeign wmsGoodsTagFeign; @Resource - private WmsInitialDetailFeign wmsInitialDetailFeign; - @Resource private WmsWarehouseRackFeign wmsWarehouseRackFeign; @Resource private WmsInventoryFeign wmsInventoryFeign; + @Resource + private WmsInitialDetailFeign wmsInitialDetailFeign; @Autowired private SysStaffOrgFeign sysStaffOrgFeign; @@ -98,15 +98,21 @@ public class AppFirstShelvesService { if (content.contains("#")) { return rb.setMsg("请扫描商品码"); } - WmsInitialDetailVo wmsInitialDetailVo = wmsInitialDetailFeign.selByGoodsID(content).getData(); - if (wmsInitialDetailVo == null){ - return rb.setMsg("该商品不属于期初上架"); + String count = wmsInventoryFeign.selCountByGoodsID(content).getData(); + BigDecimal num = null; + if (StringUtils.isNotBlank(count)){ + num = new BigDecimal(count); + }else { + num = new BigDecimal("0"); + } + WmsGoodsTag wmsGoodsTag = wmsGoodsTagFeign.selectByGoodsId(content).getData(); + BigDecimal chae = wmsGoodsTag.getGoodsCount().subtract(num); + if (chae.compareTo(BigDecimal.ZERO) == 0){ + return rb.setMsg("该商品已全部入库"); } - BigDecimal count = new BigDecimal(wmsInventoryFeign.selCountByGoodsID(content).getData()); - BigDecimal chae = wmsInitialDetailVo.getNum().subtract(count); appFirstShelvesScanVo.setType(type); appFirstShelvesScanVo.setGoodsID(content); - appFirstShelvesScanVo.setGoodsName(wmsInitialDetailVo.getGoodsSpuName()); + appFirstShelvesScanVo.setGoodsName(wmsGoodsTag.getGoodsSkuTitle()); appFirstShelvesScanVo.setGoodsMax(chae.setScale(0,BigDecimal.ROUND_DOWN).toString()); } else if ("1".equals(type)) {//库位码 if (!content.contains("#")) { @@ -156,9 +162,25 @@ public class AppFirstShelvesService { wmsInventorySaveDto.setUseOrgSid(useOrgSid); wmsInventorySaveDto.setFirstInDate(DateUtil.today()); for (AppFirstShelvesGoodsDto appFirstShelvesGoodsDto : goodsList) { + WmsGoodsTag wmsGoodsTag = wmsGoodsTagFeign.selectByGoodsId(appFirstShelvesGoodsDto.getGoodsID()).getData(); + WmsInitialDetail wmsInitialDetail = wmsInitialDetailFeign.selBySid(wmsGoodsTag.getBillDetailSid()).getData(); + WmsHouseInfoVo wmsHouseInfoVo = wmsWarehouseRackFeign.selHouseInfoByFullCode(appFirstShelvesGoodsDto.getHouseCode()).getData(); + wmsInventorySaveDto.setGoodsSpuSid(wmsGoodsTag.getGoodsSpuSid()); + wmsInventorySaveDto.setGoodsSpuName(wmsGoodsTag.getGoodsSpuName()); + wmsInventorySaveDto.setGoodsSkuSid(wmsGoodsTag.getGoodsSkuSid()); + wmsInventorySaveDto.setGoodsSkuTitle(wmsGoodsTag.getGoodsSkuTitle()); + wmsInventorySaveDto.setGoodsSkuCode(wmsGoodsTag.getGoodsSkuCode()); + wmsInventorySaveDto.setGoodsSkuOwnSpec(wmsGoodsTag.getGoodsSkuOwnSpec()); + wmsInventorySaveDto.setUnit(wmsGoodsTag.getUnit()); + wmsInventorySaveDto.setCount(appFirstShelvesGoodsDto.getCount()); wmsInventorySaveDto.setGoodsID(appFirstShelvesGoodsDto.getGoodsID()); + wmsInventorySaveDto.setManufacturerSid(wmsInitialDetail.getManufacturerSid()); + wmsInventorySaveDto.setManufacturerName(wmsInitialDetail.getManufacturerName()); + wmsInventorySaveDto.setFirstInDate(DateUtil.formatDate(wmsInitialDetail.getFirstInDate())); + wmsInventorySaveDto.setWarehouseSid(wmsHouseInfoVo.getWarehouseSid()); + wmsInventorySaveDto.setWarehouseName(wmsHouseInfoVo.getWarehouseName()); + wmsInventorySaveDto.setWarehouseRackSid(wmsHouseInfoVo.getWarehouseRackSid()); wmsInventorySaveDto.setWarehouseRackCode(appFirstShelvesGoodsDto.getHouseCode()); - wmsInventorySaveDto.setCount(appFirstShelvesGoodsDto.getCount()); wmsInventoryFeign.saveWmsInventory(wmsInventorySaveDto).getData(); } return rb.success(); diff --git a/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/wmsgoodstag/WmsGoodsTagFeign.java b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/wmsgoodstag/WmsGoodsTagFeign.java index 194112801b..ba01bafb41 100644 --- a/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/wmsgoodstag/WmsGoodsTagFeign.java +++ b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/wmsgoodstag/WmsGoodsTagFeign.java @@ -7,6 +7,7 @@ import io.swagger.annotations.ApiOperation; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestParam; /** * @Author @@ -22,4 +23,8 @@ public interface WmsGoodsTagFeign { @PostMapping("goodsTagList") @ApiOperation("商品标签列表") ResultBean> goodsTagList(@RequestBody PagerQuery pagerQuery); + + @ApiOperation("根据商品ID查询标签信息") + @PostMapping("/selectByGoodsId") + public ResultBean selectByGoodsId(@RequestParam("oldGoodsId") String oldGoodsId); } diff --git a/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/wmsinitialdetail/WmsInitialDetailVo.java b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/wmsinitialdetail/WmsInitialDetail.java similarity index 61% rename from anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/wmsinitialdetail/WmsInitialDetailVo.java rename to anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/wmsinitialdetail/WmsInitialDetail.java index 2c010cf23b..a1b5afcb4c 100644 --- a/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/wmsinitialdetail/WmsInitialDetailVo.java +++ b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/wmsinitialdetail/WmsInitialDetail.java @@ -26,7 +26,7 @@ package com.yxt.anrui.terminal.fegin.wmsinitialdetail; import com.fasterxml.jackson.annotation.JsonFormat; -import com.yxt.common.core.vo.Vo; +import com.yxt.common.core.domain.BaseEntity; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -35,40 +35,55 @@ import java.math.BigDecimal; import java.util.Date; @Data -@ApiModel(value = "期初上架-明细 视图数据对象", description = "期初上架-明细 视图数据对象") -public class WmsInitialDetailVo implements Vo { - - private String sid; +@ApiModel(value = "期初上架-明细", description = "期初上架-明细") +public class WmsInitialDetail extends BaseEntity { + private static final long serialVersionUID = 1L; + @ApiModelProperty("单据sid") + private String billSid; // 单据sid + @ApiModelProperty("商品spuSid") + private String goodsSpuSid; // 商品spuSid @ApiModelProperty("商品spu名称") - private String goodsSpuName; + private String goodsSpuName; // 商品spu名称 + @ApiModelProperty("商品skuSid") + private String goodsSkuSid; // 商品skuSid + @ApiModelProperty("商品sku名称") + private String goodsSkuTitle; // 商品Sku名称 @ApiModelProperty("图号") - private String goodsSkuCode; + private String goodsSkuCode; // 图号 @ApiModelProperty("规格型号") - private String goodsSkuOwnSpec; + private String goodsSkuOwnSpec; // 规格型号 @ApiModelProperty("单位") - private String unit; + private String unit; // 单位 @ApiModelProperty("数量") - private BigDecimal num; + private BigDecimal num; // 数量 + @ApiModelProperty("品牌sid") + private String brandSid; // 品牌sid @ApiModelProperty("品牌名称") - private String brandName; + private String brandName; // 品牌名称 + @ApiModelProperty("厂家sid") + private String manufacturerSid; // 厂家sid @ApiModelProperty("厂家名称") - private String manufacturerName; + private String manufacturerName; // 厂家名称 @ApiModelProperty("供应商名称") - private String supplierName; + private String supplierName; // 供应商名称 @ApiModelProperty("销售指导价") - private BigDecimal saleGuidePrice; + private BigDecimal saleGuidePrice; // 销售指导价 @ApiModelProperty("入库单价") - private BigDecimal inCost; + private BigDecimal inCost; // 入库单价 @ApiModelProperty("税率") - private String taxRate; + private String taxRate; // 税率 @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") @ApiModelProperty("首次入库日期") - private Date firstInDate; + private Date firstInDate; // 首次入库日期 + @ApiModelProperty("商品类别sid") + private String goodsTypeSid; // 商品类别sid + @ApiModelProperty("商品类别编码") + private String goodsTypeCode; // 商品类别编码 @ApiModelProperty("商品类别名称") - private String goodsTypeName; + private String goodsTypeName; // 商品类别名称 @ApiModelProperty("已上架数量") - private BigDecimal listNum; + private BigDecimal listNum; // 已上架数量 @ApiModelProperty("是否为一物一码") private Integer isYwym; @ApiModelProperty("是否已上传商品标签") diff --git a/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/wmsinitialdetail/WmsInitialDetailFeign.java b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/wmsinitialdetail/WmsInitialDetailFeign.java index 1128dafbda..2a85754d4e 100644 --- a/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/wmsinitialdetail/WmsInitialDetailFeign.java +++ b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/wmsinitialdetail/WmsInitialDetailFeign.java @@ -20,8 +20,8 @@ import org.springframework.web.bind.annotation.ResponseBody; path = "v1/wmsinitialdetail") public interface WmsInitialDetailFeign { - @PostMapping("/selByGoodsID") + @PostMapping("/selBySid") @ResponseBody - @ApiOperation(value = "根据商品ID查询") - public ResultBean selByGoodsID(@RequestParam("goodsID") String goodsID); + @ApiOperation(value = "根据sid查询") + public ResultBean selBySid(@RequestParam("sid") String sid); } diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInitialDetailRest.java b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInitialDetailRest.java index be4f7388bc..e8089cb019 100644 --- a/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInitialDetailRest.java +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInitialDetailRest.java @@ -28,6 +28,7 @@ package com.yxt.wms.apiadmin.inventroy; import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.vo.PagerVo; +import com.yxt.wms.biz.inventory.wmsinitialdetail.WmsInitialDetail; import com.yxt.wms.biz.inventory.wmsinitialdetail.WmsInitialDetailQuery; import com.yxt.wms.biz.inventory.wmsinitialdetail.WmsInitialDetailService; import com.yxt.wms.biz.inventory.wmsinitialdetail.WmsInitialDetailVo; @@ -51,4 +52,13 @@ public class WmsInitialDetailRest { PagerVo pv = wmsInitialDetailService.listPageVo(pq); return rb.success().setData(pv); } + + @PostMapping("/selBySid") + @ResponseBody + @ApiOperation(value = "根据sid查询") + public ResultBean selBySid(@RequestParam("sid") String sid){ + ResultBean rb = ResultBean.fireFail(); + WmsInitialDetail wmsInitialDetail = wmsInitialDetailService.fetchBySid(sid); + return rb.success().setData(wmsInitialDetail); + } } diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInitialRest.java b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInitialRest.java index 07a11c6238..3697ac5aa0 100644 --- a/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInitialRest.java +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInitialRest.java @@ -35,7 +35,6 @@ import com.yxt.wms.biz.inventory.wmsinitialdetail.WmsInitialDetail; import com.yxt.wms.biz.inventory.wmsinitialdetail.WmsInitialDetailService; import com.yxt.wms.biz.inventory.wmsinitialdetail.WmsInitialDetailVo; import com.yxt.wms.feign.base.basegoodspu.BaseGoodsSpuFeign; -import com.yxt.wms.feign.base.basegoodssku.BaseGoodsSkuFeign; import com.yxt.wms.feign.portal.sysorganization.SysOrganizationFeign; import com.yxt.wms.feign.portal.sysorganization.SysOrganizationVo; import com.yxt.wms.feign.portal.sysstafforg.SysStaffOrgFeign; @@ -54,7 +53,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.annotation.Resource; import java.io.IOException; import java.io.InputStream; import java.math.BigDecimal; @@ -191,13 +189,6 @@ public class WmsInitialRest { return wmsInitialDetailService.generateGoodsTag(sids); } - @PostMapping("/selByGoodsID") - @ResponseBody - @ApiOperation(value = "根据商品ID查询") - public ResultBean selByGoodsID(@RequestParam("goodsID") String goodsID) { - return wmsInitialDetailService.selByGoodsID(goodsID); - } - private ReturnExcelInfo getSheetVal(Sheet sheet, int[] resultCell, String deptSid) { ReturnExcelInfo importReturn = new ReturnExcelInfo(); List importVoList = new ArrayList<>(); diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsgoodstag/WmsGoodsTagService.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsgoodstag/WmsGoodsTagService.java index 8cfdb91f6a..f9380f3d79 100644 --- a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsgoodstag/WmsGoodsTagService.java +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsgoodstag/WmsGoodsTagService.java @@ -92,7 +92,9 @@ public class WmsGoodsTagService extends MybatisBaseService wrapper.like("t.goodsSkuTitle", query.getName()) + .or().like("t.goodsSkuCode", query.getName()) + ); } qw.orderByDesc("t.createTime"); IPage page = PagerUtil.queryToPage(pagerQuery); diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinitialdetail/WmsInitialDetailMapper.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinitialdetail/WmsInitialDetailMapper.java index 8ab17ecc9a..cbeff898bf 100644 --- a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinitialdetail/WmsInitialDetailMapper.java +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinitialdetail/WmsInitialDetailMapper.java @@ -43,7 +43,4 @@ public interface WmsInitialDetailMapper extends BaseMapper { @Update("update wms_initial_detail set isScbq = 1 where sid = #{sid}") void updateIsScbq(String sid); - - @Select("select * from wms_initial_detail where goodsID = #{goodsID}") - WmsInitialDetailVo selByGoodsID(String goodsID); } \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinitialdetail/WmsInitialDetailService.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinitialdetail/WmsInitialDetailService.java index 8b0f822fe8..2a56ae8276 100644 --- a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinitialdetail/WmsInitialDetailService.java +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinitialdetail/WmsInitialDetailService.java @@ -199,10 +199,4 @@ public class WmsInitialDetailService extends MybatisBaseService selByGoodsID(String goodsID) { - ResultBean rb = ResultBean.fireFail(); - WmsInitialDetailVo wmsInitialDetailVo = baseMapper.selByGoodsID(goodsID); - return rb.success().setData(wmsInitialDetailVo); - } } \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/WmsShelfBillService.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/WmsShelfBillService.java index 72419281bc..cd30fbebed 100644 --- a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/WmsShelfBillService.java +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/WmsShelfBillService.java @@ -1321,8 +1321,8 @@ public class WmsShelfBillService extends MybatisBaseService list = new ArrayList<>(); for (String sid : sids) { GoodsTag goodsTag = new GoodsTag(); - WmsGoodsTag wmsGoodsTag = wmsGoodsTagService.selectByGoodsId(sid); - goodsTag.setQrText(sid); + WmsGoodsTag wmsGoodsTag = wmsGoodsTagService.fetchBySid(sid); + goodsTag.setQrText(wmsGoodsTag.getGoodsID()); goodsTag.setText1(wmsGoodsTag.getGoodsSkuTitle()); goodsTag.setText2(wmsGoodsTag.getGoodsSkuCode()); goodsTag.setText3(DateUtil.formatDate(wmsGoodsTag.getCreateTime())); From a7eae503f2a30a75ff4d7215c68fd34574466565 Mon Sep 17 00:00:00 2001 From: dimengzhe Date: Tue, 11 Feb 2025 08:41:49 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../biz/flowtask/FlowTaskService.java | 128 +++++++++++++++++- .../anrui/portal/biz/flow/FlowableRest.java | 107 ++++++++++++++- 2 files changed, 233 insertions(+), 2 deletions(-) diff --git a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskService.java b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskService.java index 79f61f5c9e..cf22c64048 100644 --- a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskService.java +++ b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskService.java @@ -302,6 +302,131 @@ public class FlowTaskService extends MybatisBaseService businessFlowRecord(String procInsId) { + long startTimes = System.currentTimeMillis(); // 记录开始时间 + ResultBean rb = ResultBean.fireFail(); + FlowRecordVo flowRecordVo = new FlowRecordVo(); + if (StringUtils.isNotBlank(procInsId)) { + // 批量获取所有历史任务实例 + List list = historyService + .createHistoricActivityInstanceQuery() + .processInstanceId(procInsId) + .list(); + // 批量获取所有历史任务实例的变量 + List historicTasks = historyService.createHistoricTaskInstanceQuery() + .processInstanceId(procInsId) + .includeProcessVariables() + .list(); + Map taskInstanceMap = historicTasks.stream() + .collect(Collectors.toMap(HistoricTaskInstance::getId, task -> task)); + + // 获取流程实例信息 + Map processInstance = processService.getProcessInstanceById(procInsId); + + // 预收集所有审批人的 ID,避免多个网络请求 + Set assigneeIds = list.stream() + .map(HistoricActivityInstance::getAssignee) + .filter(StringUtils::isNotBlank) + .collect(Collectors.toSet()); + + // 将 Set 转换为以逗号分隔的字符串 + String assigneeIdsStr = String.join(",", assigneeIds); + + // 远程调用批量查询用户信息 + Map userMap = sysUserFeign.fetchBySids(assigneeIdsStr).getData().stream() + .collect(Collectors.toMap(SysUserVo::getSid, user -> user)); + + // 直接查询所有流程实例评论 + List commentList = taskService.getProcessInstanceComments(procInsId); + commentList.sort(Comparator.comparing(Comment::getTime)); + + // 预初始化 hisFlowList,确保它始终为非 null + List hisFlowList = new ArrayList<>(); + // 使用一个线程安全的集合来存储结果 + List finalHisFlowList = Collections.synchronizedList(hisFlowList); + + // 使用 parallelStream 前先进行 null 检查和过滤 + hisFlowList = list.parallelStream() + .filter(histIns -> histIns != null && histIns.getTaskId() != null) // 过滤掉 histIns 或 histIns.getTaskId() 为 null 的元素 + .map(histIns -> { + FlowTask flowTask = new FlowTask(); + flowTask.setTaskId(histIns.getTaskId()); + flowTask.setTaskName(histIns.getActivityName()); + flowTask.setTaskDefKey(histIns.getActivityId()); + flowTask.setProcDefId(histIns.getProcessDefinitionId()); + + // 获取任务变量 + HistoricTaskInstance historicTaskInstance = taskInstanceMap.get(histIns.getTaskId()); + flowTask.setProcVars(historicTaskInstance != null ? historicTaskInstance.getProcessVariables() : Collections.emptyMap()); + + // 设置开始和结束时间 + flowTask.setCreateTime(histIns.getStartTime()); + flowTask.setFinishTime(histIns.getEndTime()); + + // 判断流程是否结束 + flowTask.setProcessEndTime(processInstance.get("END_TIME_") == null ? "" : "end"); + + // 处理审批人员 + if (StringUtils.isNotBlank(histIns.getAssignee()) && userMap.containsKey(histIns.getAssignee())) { + SysUserVo user = userMap.get(histIns.getAssignee()); + if (user != null) { + TaskUserInfo taskUserInfo = new TaskUserInfo(); + taskUserInfo.setAssigneeName(user.getName()); + taskUserInfo.setAssigneeSid(user.getSid()); + taskUserInfo.setAssigneeHeadImage(fileUploadComponent.getUrlPrefix() + user.getHeadImage()); + flowTask.setTaskUserInfos(Collections.singletonList(taskUserInfo)); + } + } + // 处理意见评论内容 + if (commentList != null && !commentList.isEmpty()) { + commentList.stream() + .filter(comment -> histIns.getTaskId().equals(comment.getTaskId())) + .forEach(comment -> { + String type = comment.getType(); + FlowCommentDto build = flowableService.selectComment(type, histIns.getTaskId(), histIns.getProcessInstanceId(), comment.getId()); + if ("4".equals(type)) { // 加签审批意见 + FlowTask flowTask1 = new FlowTask(); + String userSid = comment.getUserId(); + SysUserVo user = userMap.get(userSid); + + TaskUserInfo taskUserInfo = new TaskUserInfo(); + taskUserInfo.setAssigneeName(user != null ? user.getName() : ""); + taskUserInfo.setAssigneeSid(userSid); + taskUserInfo.setAssigneeHeadImage(user != null ? fileUploadComponent.getUrlPrefix() + user.getHeadImage() : ""); + + flowTask1.setTaskName("加签审批意见"); + flowTask1.setFinishTime(comment.getTime()); + flowTask1.setCreateTime(comment.getTime()); + flowTask1.setTaskUserInfos(Collections.singletonList(taskUserInfo)); + flowTask1.setComment(build); + flowTask1.setProcDefId(flowTask.getProcDefId()); + flowTask1.setProcVars(flowTask.getProcVars()); + flowTask1.setTaskDefKey(histIns.getActivityId()); + finalHisFlowList.add(flowTask1); + } else { + flowTask.setComment(build); + } + }); + } + return flowTask; + + }).collect(Collectors.toList()); + + + flowRecordVo.setFlowList(hisFlowList); + } + log.info("flowRecordVo:{}", JSONObject.toJSONString(flowRecordVo)); + long endTime = System.currentTimeMillis(); + log.info("流程记录接口耗时 {} ms", endTime - startTimes); + return rb.success().setData(flowRecordVo); + } + + /** + * 流程历史流转记录 + * + * @param procInsId 流程实例Id + * @return + */ + public ResultBean businessFlowRecordOld(String procInsId) { ResultBean rb = ResultBean.fireFail(); FlowRecordVo flowRecordVo = new FlowRecordVo(); if (StringUtils.isNotBlank(procInsId)) { @@ -418,6 +543,7 @@ public class FlowTaskService extends MybatisBaseService> flowRecordAndComment(String procInsId, String deployId) { + // 并行调用外部服务 + CompletableFuture> flowRecordFuture = + CompletableFuture.supplyAsync(() -> flowableService.flowRecord(procInsId, deployId)); + + CompletableFuture>> commentListFuture = + CompletableFuture.supplyAsync(() -> getCommentList(procInsId, deployId)); + + // 并行执行 flowTaskFeign.yuyanTest 查询 + CompletableFuture>>> flowTaskFuture = + CompletableFuture.supplyAsync(() -> { + ResultBean>> listResultBean = ResultBean.fireFail(); + // 获取流转记录和查询条件 + ResultBean flowRecordVoResultBean = flowRecordFuture.join(); + List flowList1 = flowRecordVoResultBean.getData().getFlowList(); + + if (!flowList1.isEmpty()) { + com.yxt.anrui.flowable.api.flowtask.FlowTask appFlowableRecordVo = flowList1.get(flowList1.size() - 1); + if (!"Event_end".equals(appFlowableRecordVo.getTaskDefKey())) { + String proDefId = appFlowableRecordVo.getProcDefId(); + Map map = (Map) appFlowableRecordVo.getProcVars(); + + FlowableQuery flowableQuery = new FlowableQuery(); + flowableQuery.setModelId(proDefId); + flowableQuery.setTaskDefKey(appFlowableRecordVo.getTaskDefKey()); + flowableQuery.setMap(map); + + return flowTaskFeign.yuyanTest(flowableQuery); + } + } + return listResultBean.success().setData(new ArrayList<>()); + }); + + // 等待外部服务调用完成 + ResultBean flowRecordVoResultBean = flowRecordFuture.join(); + ResultBean> commentList = commentListFuture.join(); + ResultBean>> flowTaskResultBean = flowTaskFuture.join(); + + List flowList = new ArrayList<>(); + List flowList1 = flowRecordVoResultBean.getData().getFlowList(); + + // 处理流转记录 + flowList1.forEach(f -> { + PCHistTaskListAndCommentList a = new PCHistTaskListAndCommentList(); + a.setTime(f.getFinishTime() == null ? new Date() : f.getFinishTime()); + + Map stringObjectMap = BeanUtil.beanToMap(f); + stringObjectMap.put("finishTime", DateUtil.format(f.getFinishTime(), "yyyy-MM-dd HH:mm:ss")); + stringObjectMap.put("createTime", DateUtil.format(f.getCreateTime(), "yyyy-MM-dd HH:mm:ss")); + + a.setFlowableRecordVo(stringObjectMap); + a.setState("0"); + + List taskUserInfos = f.getTaskUserInfos(); + if (taskUserInfos != null) { + taskUserInfos.removeAll(Collections.singleton(null)); + if (!taskUserInfos.isEmpty()) { + if (taskUserInfos.size() == 1) { + com.yxt.anrui.flowable.api.flowtask.TaskUserInfo appUserVo = taskUserInfos.get(0); + if ("admin".equals(appUserVo.getAssigneeName())) { + return; // 如果是admin,跳过该条记录 + } + } + } + } + flowList.add(a); + }); + + // 处理评论记录 + commentList.getData().forEach(f -> { + PCHistTaskListAndCommentList a = new PCHistTaskListAndCommentList(); + a.setTime(f.getCreateTime()); + f.setTitle(f.getTaskUserInfo().getAssigneeName() + "添加了评论"); + + Map stringObjectMap = BeanUtil.beanToMap(f); + a.setProcessCommentVo(stringObjectMap); + a.setState("1"); + + flowList.add(a); + }); + + // 处理额外的流转记录 + flowTaskResultBean.getData().forEach(f -> { + PCHistTaskListAndCommentList a = new PCHistTaskListAndCommentList(); + Map stringObjectMap = BeanUtil.beanToMap(f); + stringObjectMap.put("taskName", f.get("nodeName").toString()); + stringObjectMap.put("finishTime", null); + stringObjectMap.put("createTime", ""); + stringObjectMap.put("taskUserInfos", new ArrayList<>()); + a.setFlowableRecordVo(stringObjectMap); + a.setState("3"); + + flowList.add(a); + }); + + // 合并排序:先按时间排序 + flowList.sort(Comparator.nullsLast(Comparator.comparing(PCHistTaskListAndCommentList::getTime, Comparator.nullsLast(Comparator.naturalOrder())))); + + // 返回结果 + ResultBean> resultBean = new ResultBean>().success(); + resultBean.setData(flowList); + return resultBean; + } + + public ResultBean> flowRecordAndCommentOld(String procInsId, String deployId) { ResultBean flowRecordVoResultBean = flowableService.flowRecord(procInsId, deployId); com.yxt.anrui.flowable.api.flowtask.FlowRecordVo flowRecordVo = flowRecordVoResultBean.getData(); List flowList = new ArrayList<>(); - //流转记录 + //流转记录 List flowList1 = flowRecordVo.getFlowList(); flowList1.forEach(f->{ PCHistTaskListAndCommentList a=new PCHistTaskListAndCommentList();