Browse Source

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	yxt-oa/src/main/java/com/yxt/anrui/oa/feign/file/OaFileEnum.java
zhanglei
wangpengfei 3 months ago
parent
commit
8d220f7c30
  1. 12
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/baseaccadjapply/BaseAccadjApplyService.java
  2. 32
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basemanufacturerretware/BaseManufacturerRetwareService.java
  3. 8
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehiclecertificate/BaseVehicleCertificateMapper.java
  4. 4
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehiclecertificate/BaseVehicleCertificateService.java
  5. 42
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesorder/BusSalesOrderService.java
  6. 34
      anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flow3/Flow3Feign.java
  7. 12
      anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flow3/Flow3Feignback.java
  8. 6
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow3/Flow3Rest.java
  9. 25
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow3/Flow3Service.java
  10. 2
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskMapper.java
  11. 4
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskMapper.xml
  12. 116
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskService.java
  13. 181
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/processcomment/ProcessCommentService.java
  14. 366
      anrui-management/anrui-management-ui/src/api/Common/dictcommons.js
  15. 75
      anrui-management/anrui-management-ui/src/api/commodity/commodity.js
  16. 231
      anrui-management/anrui-management-ui/src/components/uploadFile/uploadImg.vue
  17. 14
      anrui-management/anrui-management-ui/src/main.js
  18. 30
      anrui-management/anrui-management-ui/src/router/index.js
  19. 65
      anrui-management/anrui-management-ui/src/styles/index.scss
  20. 8
      anrui-management/anrui-management-ui/src/utils/auth.js
  21. 377
      anrui-management/anrui-management-ui/src/views/commodity/commodity.vue
  22. 392
      anrui-management/anrui-management-ui/src/views/commodity/commodityAdd.vue
  23. 203
      anrui-management/anrui-management-ui/src/views/commodity/commodityInfo.vue
  24. 2
      anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysuser/SysUserFeign.java
  25. 2
      anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysuser/SysUserFeignFallback.java
  26. 7
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/flow/FlowableRest.java
  27. 2
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysstaffinfo/SysStaffinfoMapper.xml
  28. 2
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuser/SysUserMapper.java
  29. 5
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuser/SysUserMapper.xml
  30. 4
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuser/SysUserRest.java
  31. 4
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuser/SysUserService.java
  32. 2
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyService.java
  33. 6
      anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmspecialrebate/OneExcelVo.java
  34. 11
      anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmspecialrebate/ScmSpecialRebateFeign.java
  35. 11
      anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmspecialrebate/ScmSpecialRebateFeignFallback.java
  36. 6
      anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmspecialrebate/TwoExcelVo.java
  37. 8
      anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/OneExcelVo.java
  38. 10
      anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/ScmVehRebateFeign.java
  39. 10
      anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/ScmVehRebateFeignFallback.java
  40. 8
      anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/TwoExcelVo.java
  41. 4
      anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmspecialrebate/ScmSpecialRebateMapper.java
  42. 22
      anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmspecialrebate/ScmSpecialRebateMapper.xml
  43. 14
      anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmspecialrebate/ScmSpecialRebateRest.java
  44. 172
      anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmspecialrebate/ScmSpecialRebateService.java
  45. 4
      anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmspecialrebatecheckapply/ScmSpecialrebateCheckapplyService.java
  46. 4
      anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehrebate/ScmVehRebateMapper.java
  47. 28
      anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehrebate/ScmVehRebateMapper.xml
  48. 14
      anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehrebate/ScmVehRebateRest.java
  49. 223
      anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehrebate/ScmVehRebateService.java
  50. 27
      anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehrebatewithapply/ScmVehRebateWithApplyService.java
  51. 9
      anrui-scm/anrui-scm-ui/src/api/bikerebate/bicyclerebatecheck.js
  52. 9
      anrui-scm/anrui-scm-ui/src/api/bikerebate/bicyclerebatemanagement.js
  53. 11
      anrui-scm/anrui-scm-ui/src/api/specialrebate/specialrebatecheck.js
  54. 9
      anrui-scm/anrui-scm-ui/src/api/specialrebate/specialrebatemanagement.js
  55. 41
      anrui-scm/anrui-scm-ui/src/views/bikerebate/bicyclerebatecheck/bicyclerebatetobechecked.vue
  56. 9
      anrui-scm/anrui-scm-ui/src/views/bikerebate/bikerebatemanagement/bicyclerebatemanagement.vue
  57. 41
      anrui-scm/anrui-scm-ui/src/views/specialrebate/specialrebatecheck/specialrebatetobechecked.vue
  58. 9
      anrui-scm/anrui-scm-ui/src/views/specialrebate/specialrebatemanagement/specialrebatemanagement.vue
  59. 18
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/as/storechange/AppStoreChangeDto.java
  60. 30
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/as/storechange/AppStoreChangeFeign.java
  61. 24
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/as/storechange/AppStoreChangeScanVo.java
  62. 2
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/oa/common/OaCommonFeign.java
  63. 33
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/as/firstshelves/AppFirstShelvesService.java
  64. 54
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/as/storechange/AppStoreChangeRest.java
  65. 191
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/as/storechange/AppStoreChangeService.java
  66. 4
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/oa/common/OaCommonRest.java
  67. 4
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/oa/common/OaCommonService.java
  68. 66
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/wmsInventory/WmsInventory.java
  69. 15
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/wmsInventory/WmsInventoryFeign.java
  70. 18
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/wmsInventory/WmsStoreChangeDto.java
  71. 4
      yxt-as-ui/src/api/client/customermanagement.js
  72. 2
      yxt-as-ui/src/router/index.js
  73. 5
      yxt-as-ui/src/views/basicinformation/technicalTitle/technicalTitle.vue
  74. 4
      yxt-as-ui/src/views/client/customermanagement/customermanagement.vue
  75. 1
      yxt-as-ui/src/views/client/customermanagement/relation/person.vue
  76. 2
      yxt-as-ui/src/views/operation/repairbill/repairbillAdd.vue
  77. 2
      yxt-as-ui/src/views/purchase/procurement/procurementAdd.vue
  78. 20
      yxt-as-ui/src/views/storage/inventory/inventory.vue
  79. 6
      yxt-as-ui/src/views/storage/inventory/inventoryRecord.vue
  80. 2
      yxt-as-ui/src/views/workFlow/caigouFlow/procurementEdit.vue
  81. 2
      yxt-as-ui/src/views/workFlow/jishizhichengFlow/technicalTitleFilingDaiBan.vue
  82. 3
      yxt-as-ui/src/views/workFlow/jishizhichengFlow/technicalTitleFilingYiBan.vue
  83. 2
      yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbill/AsBusrepairBillMapper.java
  84. 1
      yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbill/AsBusrepairBillMapper.xml
  85. 7
      yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbill/AsBusrepairBillService.java
  86. 10
      yxt-as/src/main/java/com/yxt/anrui/as/biz/ascustomervehicle/AsCustomerVehicleService.java
  87. 35
      yxt-base-biz/src/main/java/com/yxt/base/apiadmin/base/BaseGoodsSpuRest.java
  88. 6
      yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsspu/BaseGoodsDetailsDto.java
  89. 4
      yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsspu/BaseGoodsDetailsVo.java
  90. 4
      yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsspu/BaseGoodsSpu.java
  91. 6
      yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsspu/BaseGoodsSpuListQuery.java
  92. 5
      yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsspu/BaseGoodsSpuListVo.java
  93. 4
      yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsspu/BaseGoodsSpuMapper.java
  94. 14
      yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsspu/BaseGoodsSpuMapper.xml
  95. 84
      yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsspu/BaseGoodsSpuService.java
  96. 27
      yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsspu/YxtBaseFormCommon.java
  97. 21
      yxt-crm-biz/src/main/java/com/yxt/crm/biz/crmcustomer/CrmCustomerService.java
  98. 8
      yxt-crm-biz/src/main/java/com/yxt/crm/biz/crmdockingpeople/CrmDockingPeopleMapper.xml
  99. 1
      yxt-crm-biz/src/main/java/com/yxt/crm/biz/crmdockingpeople/PeopleList.java
  100. 91
      yxt-oa/src/main/java/com/yxt/anrui/oa/api/AdAllocateAssetApplyRest.java

12
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/baseaccadjapply/BaseAccadjApplyService.java

@ -67,7 +67,6 @@ import com.yxt.anrui.base.common.enums.VehicleState;
import com.yxt.anrui.base.common.utils.Rule;
import com.yxt.anrui.base.common.utils.domain.BillNo;
import com.yxt.anrui.fin.api.kingdee.FinKingDeeFeign;
import com.yxt.anrui.fin.api.kingdee.KingDeeResult;
import com.yxt.anrui.fin.api.kingdee.bdcustomer.BdCustomer;
import com.yxt.anrui.fin.api.kingdee.bdsupplier.BdSupplier;
import com.yxt.anrui.fin.api.kingdee.saloutstock.SalOutStock;
@ -154,27 +153,16 @@ public class BaseAccadjApplyService extends MybatisBaseService<BaseAccadjApplyMa
@Autowired
private BaseVehicleBrandService baseVehicleBrandService;
@Autowired
private BaseManufacturerService baseManufacturerService;
@Autowired
private BaseManufacturerBankService baseManufacturerBankService;
@Autowired
private BasePurchaseSystemService basePurchaseSystemService;
@Autowired
private BaseInternalPurchaseService baseInternalPurchaseService;
@Autowired
BaseVehicleModelService baseVehicleModelService;
@Autowired
private ScmApplyInboundQueryFeign scmApplyInboundQueryFeign;
@Autowired
private FlowFeign flowFeign;
private QueryWrapper<BaseAccadjApply> createQueryWrapper(BaseAccadjApplyQuery query) {
// todo: 这里根据具体业务调整查询条件
// 多字段Like示例:qw.and(wrapper -> wrapper.like("name", query.getName()).or().like("remark", query.getName()));
QueryWrapper<BaseAccadjApply> qw = new QueryWrapper<>();
return qw;
}
public PagerVo<BaseAccadjApplyVo> listPageVo(PagerQuery<BaseAccadjApplyQuery> pq) {
BaseAccadjApplyQuery query = pq.getParams();
QueryWrapper<BaseAccadjApply> qw = new QueryWrapper<>();

32
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basemanufacturerretware/BaseManufacturerRetwareService.java

@ -39,6 +39,7 @@ import com.yxt.anrui.base.api.basevehicle.ExiCarConfigDetailVo;
import com.yxt.anrui.base.biz.basemanufacturerretwareveh.BaseManufacturerRetwareVehService;
import com.yxt.anrui.base.biz.basepurchasesystem.BasePurchaseSystemService;
import com.yxt.anrui.base.biz.basevehicle.BaseVehicleService;
import com.yxt.anrui.base.biz.basevehiclecertificate.BaseVehicleCertificateService;
import com.yxt.anrui.base.common.enums.BillTypeEnum;
import com.yxt.anrui.base.common.enums.VehicleState;
import com.yxt.anrui.base.common.utils.Rule;
@ -48,7 +49,6 @@ import com.yxt.anrui.fin.api.kingdee.push.STKInStockPushPurmrb;
import com.yxt.anrui.portal.api.sysorganization.SysOrganization;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign;
import com.yxt.anrui.scm.api.scmapplyinboundquery.ScmApplyInboundQueryDetailsVo;
import com.yxt.anrui.scm.api.scmapplyinboundquery.ScmApplyInboundQueryFeign;
import com.yxt.anrui.scm.api.scmapplyinboundvehquery.ScmApplyInboundVehQueryDetailsVo;
@ -64,34 +64,17 @@ import com.yxt.common.base.utils.PagerUtil;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.io.File;
import java.io.InputStream;
import java.math.BigDecimal;
import java.util.*;
/**
* Project: anrui-base(厂家退库) <br/>
* File: BaseManufacturerRetwareService.java <br/>
* Class: com.yxt.anrui.base.biz.basemanufacturerretware.BaseManufacturerRetwareService <br/>
* Description: 厂家退库表 业务逻辑. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2022-07-05 17:02:32 <br/>
*
* @author liupopo
* @version 1.0
* @since 1.0
*/
@Service
public class BaseManufacturerRetwareService extends MybatisBaseService<BaseManufacturerRetwareMapper, BaseManufacturerRetware> {
@Autowired
private SysStaffOrgFeign sysStaffOrgFeign;
@Autowired
private SysOrganizationFeign sysOrganizationFeign;
@Autowired
@ -104,23 +87,15 @@ public class BaseManufacturerRetwareService extends MybatisBaseService<BaseManuf
private FinKingDeeFeign finKingDeeFeign;
@Autowired
private BasePurchaseSystemService basePurchaseSystemService;
@Autowired
private BaseVehicleCertificateService baseVehicleCertificateService;
@Autowired
private ScmApplyInboundQueryFeign scmApplyInboundQueryFeign;
@Autowired
private ScmApplyInboundVehQueryFeign scmApplyInboundVehQueryFeign;
@Autowired
private DocPdfComponent docPdfComponent;
private QueryWrapper<BaseManufacturerRetware> createQueryWrapper(BaseManufacturerRetwareQuery query) {
// todo: 这里根据具体业务调整查询条件
// 多字段Like示例:qw.and(wrapper -> wrapper.like("name", query.getName()).or().like("remark", query.getName()));
QueryWrapper<BaseManufacturerRetware> qw = new QueryWrapper<>();
return qw;
}
public PagerVo<BaseManufacturerRetwareVo> listPageVo(PagerQuery<BaseManufacturerRetwareQuery> pq) {
BaseManufacturerRetwareQuery query = pq.getParams();
QueryWrapper<BaseManufacturerRetware> qw = new QueryWrapper<>();
@ -273,6 +248,7 @@ public class BaseManufacturerRetwareService extends MybatisBaseService<BaseManuf
baseVehicle.setReturnDate(DateUtil.parseDate(DateUtil.today()));
baseVehicleService.updateVeh(baseVehicle);
baseManufacturerRetwareVehService.updateByVinNo(manApprovalType, refundMoney, vinNo, dto.getManDeduRemarks());
baseVehicleCertificateService.delByVehSid(baseVehicle.getSid());
} else if (manApprovalType.equals("失败")) {
baseVehicle.setVehicleState(VehicleState.StockEnum.STOCK.getCode());
baseVehicle.setVehicleStateValue(VehicleState.StockEnum.STOCK.getRemarks());

8
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehiclecertificate/BaseVehicleCertificateMapper.java

@ -7,10 +7,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.yxt.anrui.base.api.basevehiclebrand.BaseVehicleBrandExportVo;
import com.yxt.anrui.base.api.basevehiclecertificate.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import org.apache.ibatis.annotations.*;
import java.util.List;
@ -115,4 +112,7 @@ public interface BaseVehicleCertificateMapper extends BaseMapper<BaseVehicleCert
@Update("update base_vehicle_certificate set certificateState = #{cerStateKey},certificateStateValue = #{cerState} where sid = #{sid}")
void updateCertificateStateNew(@Param("cerStateKey") String cerStateKey, @Param("cerState") String cerState, @Param("sid") String sid);
@Delete("delete from base_vehicle_certificate where vehicleSid = #{vehSid}")
void delByVehSid(String vehSid);
}

4
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehiclecertificate/BaseVehicleCertificateService.java

@ -385,4 +385,8 @@ public class BaseVehicleCertificateService extends MybatisBaseService<BaseVehicl
public void updateCertificateStateNew(String cerStateKey,String cerState, String sid) {
baseMapper.updateCertificateStateNew(cerStateKey,cerState,sid);
}
public void delByVehSid(String vehSid) {
baseMapper.delByVehSid(vehSid);
}
}

42
anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesorder/BusSalesOrderService.java

@ -5940,34 +5940,44 @@ public class BusSalesOrderService extends MybatisBaseService<BusSalesOrderMapper
asyncPushMessage(busSalesOrder, variables, ufVo);
} else {
try {
//查询销售订单详情
ResultBean<AppOrderDetailsVo> details = getSaleOrderDetails(bv.getBusinessSid());
AppOrderDetailsVo vo = details.getData();
// 锁定车辆的状态
if (BusSalesOrderConstantUtils.TypeEnum.EXISTING_CAR.getRemarks().equals(vo.getOrderType())) {
handleVehicleLock(bv, busSalesOrder);
}
// 合同处理
handleContract(bv, busSalesOrder);
busSalesOrder = fetchBySid(bv.getBusinessSid());
// 处理车辆的状态更新
updateVehicleState(bv, busSalesOrder);
// 贷款相关操作
handleLoan(bv, busSalesOrder, vo);
// 采购渠道推送
handlePurchaseChannelPush(busSalesOrder);
// 更新办结日期
updateClosingDate(bv, busSalesOrder);
// 异步消息推送
asyncPushMessage(busSalesOrder);
} catch (Exception e) {
log.error("销售订单处理失败,错误信息:", e);
log.error("销售订单处理失败1,错误信息:", e);
}
try {
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
.setNameFormat("demo-pool-%d").build();
ExecutorService pool = new ThreadPoolExecutor(1, 10,
1000, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy());
BusSalesOrder finalBusSalesOrder = busSalesOrder;
Future future1 = pool.submit(() -> {
//查询销售订单详情
ResultBean<AppOrderDetailsVo> details = getSaleOrderDetails(bv.getBusinessSid());
AppOrderDetailsVo vo = details.getData();
// 锁定车辆的状态
if (BusSalesOrderConstantUtils.TypeEnum.EXISTING_CAR.getRemarks().equals(vo.getOrderType())) {
handleVehicleLock(bv, finalBusSalesOrder);
}
// 贷款相关操作
handleLoan(bv, finalBusSalesOrder, vo);
});
} catch (Exception e) {
e.printStackTrace();
log.error("销售订单处理失败2,错误信息:", e);
}
}

34
anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flow3/Flow3Feign.java

@ -0,0 +1,34 @@
package com.yxt.anrui.flowable.api.flow3;
import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo;
import com.yxt.anrui.flowable.api.flow2.FlowFeignback;
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.common.core.result.ResultBean;
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.ResponseBody;
/**
* @description:
* @author: dimengzhe
* @date: 2025/2/12
**/
@FeignClient(
contextId = "anrui-flowable-Flow3",
name = "anrui-flowable",
path = "v3/flow",
fallback = Flow3Feignback.class)
public interface Flow3Feign {
@ApiOperation(value = "启动流程")
@PostMapping(value = "/startProcess")
@ResponseBody
ResultBean<UpdateFlowFieldVo> startProcess(@RequestBody BusinessVariables dto);
@ApiOperation(value = "处理流程")
@PostMapping(value = "/handleProsess")
@ResponseBody
ResultBean<UpdateFlowFieldVo> handleProsess(@RequestBody BusinessVariables bv);
}

12
anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flow3/Flow3Feignback.java

@ -0,0 +1,12 @@
package com.yxt.anrui.flowable.api.flow3;
import org.springframework.stereotype.Component;
/**
* @description:
* @author: dimengzhe
* @date: 2025/2/12
**/
@Component
public class Flow3Feignback {
}

6
anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow3/Flow3Rest.java

@ -3,6 +3,8 @@ package com.yxt.anrui.flowable.biz.flow3;
import com.alibaba.fastjson.JSONObject;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo;
import com.yxt.anrui.flowable.api.flow2.FlowFeign;
import com.yxt.anrui.flowable.api.flow3.Flow3Feign;
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.common.base.utils.StringUtils;
import com.yxt.common.core.result.ResultBean;
@ -26,13 +28,14 @@ import java.util.concurrent.*;
**/
@RestController
@RequestMapping("v3/flow")
public class Flow3Rest {
public class Flow3Rest implements Flow3Feign {
Logger log = LoggerFactory.getLogger(Flow3Rest.class);
@Autowired
private Flow3Service flowService;
@PostMapping("/startProcess")
@Override
public ResultBean<UpdateFlowFieldVo> startProcess(@RequestBody BusinessVariables bv) {
ResultBean<UpdateFlowFieldVo> rb = ResultBean.fireFail();
//获取表单中的参数
@ -54,6 +57,7 @@ public class Flow3Rest {
}
@PostMapping("/handleProsess")
@Override
public ResultBean<UpdateFlowFieldVo> handleProsess(@RequestBody BusinessVariables bv) {
ResultBean<UpdateFlowFieldVo> rb = ResultBean.fireFail();
ResultBean<UpdateFlowFieldVo> updateFlowFieldVoResultBean = flowService.handleProsess(bv, true);

25
anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow3/Flow3Service.java

@ -106,13 +106,11 @@ public class Flow3Service extends MybatisBaseService<FlowMapper, Flowable> {
// 获取传入的变量
Map<String, Object> variables = bv.getFormVariables();
Map<String, Object> variablesSeconds = bv.getFormVariables();
String nextNodeUserSids = "";
String nextNodeUserSids = bv.getNextNodeUserSids();
List<String> userSidForNextNode = new ArrayList<>();
if (StringUtils.isBlank(nextNodeUserSids)) {
userSidForNextNode = getNextNodeUser(bv).getData();
variables.put("approvers", userSidForNextNode);
} else {
nextNodeUserSids = bv.getNextNodeUserSids();
}
@ -155,21 +153,30 @@ public class Flow3Service extends MybatisBaseService<FlowMapper, Flowable> {
for (int i = 0; i < tasks.size(); i++) {
Task task2 = tasks.get(i);
String isMultiInstanceTask = isMultiInstanceTask(task2);
id_ = task2.getId();
task_def_key_ = task2.getTaskDefinitionKey();
name_ = task2.getName();
if ("会签任务".equals(isMultiInstanceTask) || "或签任务".equals(isMultiInstanceTask)) {
String approver = getApproverForTask(userSidForNextNode, i);
approver = change(approver, bv.getInstanceId());
taskService.claim(task2.getId(), approver);
} else {
nextNodeUserSids = userSidForNextNode.get(0);
//查询下一环节是否有转办并添加评论
nextNodeUserSids = change(nextNodeUserSids, processInstance.getProcessInstanceId());
taskService.setAssignee(id_, nextNodeUserSids);
taskService.setVariablesLocal(id_, variables);
}
id_ = task2.getId();
task_def_key_ = task2.getTaskDefinitionKey();
name_ = task2.getName();
}
} else {
Task task2 = tasks.get(0);
id_ = task2.getId();
task_def_key_ = task2.getTaskDefinitionKey();
name_ = task2.getName();
//查询下一环节是否有转办并添加评论
nextNodeUserSids = change(nextNodeUserSids, processInstance.getProcessInstanceId());
taskService.setAssignee(id_, nextNodeUserSids);
taskService.setVariablesLocal(id_, variables);
}
//提交前传入下一环节待办人
@ -234,7 +241,7 @@ public class Flow3Service extends MybatisBaseService<FlowMapper, Flowable> {
nextUserSid = ProcDefEnum.DEFAUL_TADMIN_SID.getProDefId();
adminContains = true;
} else {
if(!listResultBean.getData().isEmpty()){
if(listResultBean.getData() != null){
userSidForNextNode = listResultBean.getData();
formVariables.put("approvers", listResultBean.getData());
}
@ -277,7 +284,9 @@ public class Flow3Service extends MybatisBaseService<FlowMapper, Flowable> {
Task task2 = tasks.get(i);
isMultiInstanceTask = isMultiInstanceTask(task2);
if ("会签任务".equals(isMultiInstanceTask) || "或签任务".equals(isMultiInstanceTask)) {
taskService.claim(task2.getId(), userSidForNextNode.get(i)); // 由候选人认领任务
String nextUserSidNext = userSidForNextNode.get(i);
nextUserSidNext = change(nextUserSidNext, bv.getInstanceId());
taskService.claim(task2.getId(), nextUserSidNext); // 由候选人认领任务
isMultiInstanceTaskNext = true;
} else {

2
anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskMapper.java

@ -44,4 +44,6 @@ public interface FlowTaskMapper extends BaseMapper<FlowTask> {
Map<String, Object> getTaskByDefKey(@Param("procId")String processInstanceId, @Param("taskId")String id);
Map<String, Object> getActHiVarinstForOrgPath(@Param("taskId")String taskId);
List<String> selectAssignee(@Param("taskDefKey") String taskDefKey, @Param("procInsId") String procInsId);
}

4
anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskMapper.xml

@ -277,4 +277,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
WHERE
ahv.task_id_= #{taskId} and ahv.name_="orgPath" order by ahv.id_ desc limit 0,1
</select>
<select id="selectAssignee" resultType="java.lang.String">
SELECT ASSIGNEE_ FROM ACT_HI_TASKINST where PROC_INST_ID_ = #{procInsId} AND TASK_DEF_KEY_ = #{taskDefKey} and END_TIME_ is null ORDER BY START_TIME_ DESC
</select>
</mapper>

116
anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskService.java

@ -330,10 +330,12 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
// 将 Set<String> 转换为以逗号分隔的字符串
String assigneeIdsStr = String.join(",", assigneeIds);
// 远程调用批量查询用户信息
Map<String, SysUserVo> userMap = sysUserFeign.fetchBySids(assigneeIdsStr).getData().stream()
.collect(Collectors.toMap(SysUserVo::getSid, user -> user));
Map<String, SysUserVo> userMap = new HashMap<>();
if(StringUtils.isNotBlank(assigneeIdsStr)){
// 远程调用批量查询用户信息
userMap = sysUserFeign.fetchBySids(assigneeIdsStr).getData().stream()
.collect(Collectors.toMap(SysUserVo::getSid, user -> user));
}
// 直接查询所有流程实例评论
List<Comment> commentList = taskService.getProcessInstanceComments(procInsId);
@ -345,6 +347,7 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
List<FlowTask> finalHisFlowList = Collections.synchronizedList(hisFlowList);
// 使用 parallelStream 前先进行 null 检查和过滤
Map<String, SysUserVo> finalUserMap = userMap;
hisFlowList = list.parallelStream()
.filter(histIns -> histIns != null && histIns.getTaskId() != null) // 过滤掉 histIns 或 histIns.getTaskId() 为 null 的元素
.map(histIns -> {
@ -364,17 +367,32 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
// 判断流程是否结束
flowTask.setProcessEndTime(processInstance.get("END_TIME_") == null ? "" : "end");
List<TaskUserInfo> taskUserInfos = new ArrayList<>();
// 处理审批人员
if (StringUtils.isNotBlank(histIns.getAssignee()) && userMap.containsKey(histIns.getAssignee())) {
SysUserVo user = userMap.get(histIns.getAssignee());
if (StringUtils.isNotBlank(histIns.getAssignee())) {
/* SysUserVo user = finalUserMap.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));
}*/
List<String> stringList = Arrays.asList(histIns.getAssignee().split(","));
for (int i = 0; i < stringList.size(); i++) {
SysUserVo user = finalUserMap.get(stringList.get(i));
if (user != null) {
TaskUserInfo taskUserInfo = new TaskUserInfo();
taskUserInfo.setAssigneeName(user.getName());
taskUserInfo.setAssigneeSid(user.getSid());
taskUserInfo.setAssigneeHeadImage(fileUploadComponent.getUrlPrefix() + user.getHeadImage());
taskUserInfos.add(taskUserInfo);
}
}
flowTask.setTaskUserInfos(taskUserInfos);
}
// 处理意见评论内容
if (commentList != null && !commentList.isEmpty()) {
@ -386,7 +404,7 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
if ("4".equals(type)) { // 加签审批意见
FlowTask flowTask1 = new FlowTask();
String userSid = comment.getUserId();
SysUserVo user = userMap.get(userSid);
SysUserVo user = finalUserMap.get(userSid);
TaskUserInfo taskUserInfo = new TaskUserInfo();
taskUserInfo.setAssigneeName(user != null ? user.getName() : "");
@ -902,7 +920,7 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
long time = start_time_.getTime();
Date date = new Date(time);
flowTask.setCreateTime(date);
flowTask.setAssigneeSid(histTask.get("ASSIGNEE_") == null ? "" : histTask.get("ASSIGNEE_").toString());
/*flowTask.setAssigneeSid(histTask.get("ASSIGNEE_") == null ? "" : histTask.get("ASSIGNEE_").toString());
if (histTask.get("ASSIGNEE_") != null && StringUtils.isNotBlank(histTask.get("ASSIGNEE_").toString())) {
ResultBean<List<SysUserVo>> assignee_ = sysUserFeign.fetchBySids(histTask.get("ASSIGNEE_").toString());
StringBuilder userName = new StringBuilder();
@ -913,7 +931,8 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
String userName_str = "";
userName_str = userName.substring(0, userName.length() - 1);
flowTask.setAssigneeName(userName_str);
}
}*/
flowTask.setHasRevokeButton(userSid.equals(flowTask.getAssigneeSid()) ? true : false);
flowTask.setProcDefId(histTask.get("PROC_DEF_ID_") == null ? "" : histTask.get("PROC_DEF_ID_").toString());
flowTask.setTaskDefKey(histTask.get("taskDefKey") == null ? "" : histTask.get("taskDefKey").toString());
@ -923,6 +942,22 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
flowTask.setProcDefVersion(histTask.get("PROC_DEF_VERSION_") == null ? 0 : Integer.parseInt(histTask.get("PROC_DEF_VERSION_").toString()));
flowTask.setProcInsId(histTask.get("PROC_INST_ID_").toString());
flowTask.setHisProcInsId(histTask.get("PROC_INST_ID_").toString());
//--2025-02-12添加开始
List<String> ASSIGNEE_List = baseMapper.selectAssignee(flowTask.getTaskDefKey(),flowTask.getProcInsId());
if(!ASSIGNEE_List.isEmpty()){
StringBuilder userName = new StringBuilder();
for (String assignee : ASSIGNEE_List) {
ResultBean<List<SysUserVo>> assignee_ = sysUserFeign.fetchBySids(assignee);
List<SysUserVo> data1 = assignee_.getData();
for (SysUserVo data : data1) {
userName.append(data.getName()).append(",");
}
}
String userName_str = "";
userName_str = userName.substring(0, userName.length() - 1);
flowTask.setAssigneeName(userName_str);
}
//===2025-02-12添加结束
ResultBean<SysUserVo> sysUserVoResultBean = sysUserFeign.fetchBySid(histTask.get("START_USER_ID_").toString());
flowTask.setStartUserSid(sysUserVoResultBean.getData().getSid());
flowTask.setStartUserName(sysUserVoResultBean.getData().getName());
@ -1035,7 +1070,7 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
Date date = new Date(time);
flowTask.setCreateTime(date);
flowTask.setProcessCreateTime(new Date(processCreateTime1));
flowTask.setAssigneeSid(histTask.get("ASSIGNEE_") == null ? "" : histTask.get("ASSIGNEE_").toString());
/* flowTask.setAssigneeSid(histTask.get("ASSIGNEE_") == null ? "" : histTask.get("ASSIGNEE_").toString());
if (histTask.get("ASSIGNEE_") != null && StringUtils.isNotBlank(histTask.get("ASSIGNEE_").toString())) {
ResultBean<List<SysUserVo>> assignee_ = sysUserFeign.fetchBySids(histTask.get("ASSIGNEE_").toString());
StringBuilder userName = new StringBuilder();
@ -1046,7 +1081,7 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
String userName_str = "";
userName_str = userName.substring(0, userName.length() - 1);
flowTask.setAssigneeName(userName_str);
}
}*/
flowTask.setHasRevokeButton(userSid.equals(flowTask.getAssigneeSid()) ? true : false);
flowTask.setProcDefId(histTask.get("PROC_DEF_ID_") == null ? "" : histTask.get("PROC_DEF_ID_").toString());
@ -1058,6 +1093,22 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
flowTask.setProcDefVersion(histTask.get("PROC_DEF_VERSION_") == null ? 0 : Integer.parseInt(histTask.get("PROC_DEF_VERSION_").toString()));
flowTask.setProcInsId(histTask.get("PROC_INST_ID_").toString());
flowTask.setHisProcInsId(histTask.get("PROC_INST_ID_").toString());
//--2025-02-12添加开始
List<String> ASSIGNEE_List = baseMapper.selectAssignee(flowTask.getTaskDefKey(),flowTask.getProcInsId());
if(!ASSIGNEE_List.isEmpty()){
StringBuilder userName = new StringBuilder();
for (String assignee : ASSIGNEE_List) {
ResultBean<List<SysUserVo>> assignee_ = sysUserFeign.fetchBySids(assignee);
List<SysUserVo> data1 = assignee_.getData();
for (SysUserVo data : data1) {
userName.append(data.getName()).append(",");
}
}
String userName_str = "";
userName_str = userName.substring(0, userName.length() - 1);
flowTask.setAssigneeName(userName_str);
}
//===2025-02-12添加结束
ResultBean<SysUserVo> sysUserVoResultBean = sysUserFeign.fetchBySid(histTask.get("START_USER_ID_").toString());
flowTask.setStartUserSid(sysUserVoResultBean.getData().getSid());
flowTask.setStartUserName(sysUserVoResultBean.getData().getName());
@ -1157,7 +1208,7 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
Date date = new Date(time);
flowTask.setCreateTime(date);
flowTask.setProcessCreateTime(new Date(processCreateTime1));
flowTask.setAssigneeSid(histTask.get("ASSIGNEE_") == null ? "" : histTask.get("ASSIGNEE_").toString());
/*flowTask.setAssigneeSid(histTask.get("ASSIGNEE_") == null ? "" : histTask.get("ASSIGNEE_").toString());
if (histTask.get("ASSIGNEE_") != null && StringUtils.isNotBlank(histTask.get("ASSIGNEE_").toString())) {
ResultBean<List<SysUserVo>> assignee_ = sysUserFeign.fetchBySids(histTask.get("ASSIGNEE_").toString());
StringBuilder userName = new StringBuilder();
@ -1168,7 +1219,7 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
String userName_str = "";
userName_str = userName.substring(0, userName.length() - 1);
flowTask.setAssigneeName(userName_str);
}
}*/
flowTask.setHasRevokeButton(userSid.equals(flowTask.getAssigneeSid()) ? true : false);
flowTask.setProcDefId(histTask.get("PROC_DEF_ID_") == null ? "" : histTask.get("PROC_DEF_ID_").toString());
@ -1180,6 +1231,22 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
flowTask.setProcDefVersion(histTask.get("PROC_DEF_VERSION_") == null ? 0 : Integer.parseInt(histTask.get("PROC_DEF_VERSION_").toString()));
flowTask.setProcInsId(histTask.get("PROC_INST_ID_").toString());
flowTask.setHisProcInsId(histTask.get("PROC_INST_ID_").toString());
//--2025-02-12添加开始
List<String> ASSIGNEE_List = baseMapper.selectAssignee(flowTask.getTaskDefKey(),flowTask.getProcInsId());
if(!ASSIGNEE_List.isEmpty()){
StringBuilder userName = new StringBuilder();
for (String assignee : ASSIGNEE_List) {
ResultBean<List<SysUserVo>> assignee_ = sysUserFeign.fetchBySids(assignee);
List<SysUserVo> data1 = assignee_.getData();
for (SysUserVo data : data1) {
userName.append(data.getName()).append(",");
}
}
String userName_str = "";
userName_str = userName.substring(0, userName.length() - 1);
flowTask.setAssigneeName(userName_str);
}
//===2025-02-12添加结束
ResultBean<SysUserVo> sysUserVoResultBean = sysUserFeign.fetchBySid(histTask.get("START_USER_ID_").toString());
flowTask.setStartUserSid(sysUserVoResultBean.getData().getSid());
flowTask.setStartUserName(sysUserVoResultBean.getData().getName());
@ -2418,17 +2485,18 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
Map<String, Object> map = flowableQuery.getMap();
boolean taskKeyTrue = false;
List<FlowElement> flowElements = processService.calApprovePath("", modelId, map);
// 过滤空的节点ID
List<FlowElement> collect = flowElements.stream().filter(item -> item.getId().length() > 0).collect(Collectors.toList());
for (int i = 0; i < collect.size(); i++) {
Map<String, Object> itemMap = new HashMap<>();
FlowElement item = collect.get(i);
if (StringUtils.isBlank(flowableQuery.getTaskDefKey())) {
log.info("flowElement:{}", item);
log.info("nodeName:{}", item.getName());
// log.info("flowElement:{}", item);
// log.info("nodeName:{}", item.getName());
itemMap.put("nodeName", item.getName());
log.info("nodeId:{}", item.getId());
// log.info("nodeId:{}", item.getId());
itemMap.put("nodeId", item.getId());
String s = JSON.toJSONString(item);
/* String s = JSON.toJSONString(item);
JSONObject jsonObject = JSONObject.parseObject(s);
log.info("item:{}", jsonObject);
Object candidateGroups = jsonObject.get("candidateGroups");
@ -2439,7 +2507,7 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
if (candidateGroups_arr.size() > 0) {
log.info("candidateGroups_sid:{}", candidateGroups_arr.get(0));
}
log.info("candidateGroups:{}", candidateGroups_arr);
log.info("candidateGroups:{}", candidateGroups_arr);*/
list.add(itemMap);
} else {
if (flowableQuery.getTaskDefKey().equals(item.getId())) {
@ -2447,12 +2515,12 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
continue;
}
if (taskKeyTrue) {
log.info("flowElement:{}", item);
log.info("nodeName:{}", item.getName());
// log.info("flowElement:{}", item);
// log.info("nodeName:{}", item.getName());
itemMap.put("nodeName", item.getName());
log.info("nodeId:{}", item.getId());
// log.info("nodeId:{}", item.getId());
itemMap.put("nodeId", item.getId());
String s = JSON.toJSONString(item);
/* String s = JSON.toJSONString(item);
JSONObject jsonObject = JSONObject.parseObject(s);
log.info("item:{}", jsonObject);
Object candidateGroups = jsonObject.get("candidateGroups");
@ -2463,7 +2531,7 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
if (candidateGroups_arr.size() > 0) {
log.info("candidateGroups_sid:{}", candidateGroups_arr.get(0));
}
log.info("candidateGroups:{}", candidateGroups_arr);
log.info("candidateGroups:{}", candidateGroups_arr);*/
list.add(itemMap);
}
}

181
anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/processcomment/ProcessCommentService.java

@ -42,9 +42,7 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Arrays;
import java.util.List;
import java.util.UUID;
import java.util.*;
import java.util.stream.Collectors;
/**
@ -62,81 +60,122 @@ import java.util.stream.Collectors;
*/
@Service
public class ProcessCommentService extends MybatisBaseService<ProcessCommentMapper, ProcessComment> {
@Resource
private SysUserFeign sysUserFeign;
@Resource
private FileUploadComponent fileUploadComponent;
private QueryWrapper<ProcessComment> createQueryWrapper(ProcessCommentQuery query) {
// todo: 这里根据具体业务调整查询条件
// 多字段Like示例:qw.and(wrapper -> wrapper.like("name", query.getName()).or().like("remark", query.getName()));
QueryWrapper<ProcessComment> qw = new QueryWrapper<>();
return qw;
}
public PagerVo<ProcessCommentVo> listPageVo(PagerQuery<ProcessCommentQuery> pq) {
ProcessCommentQuery query = pq.getParams();
QueryWrapper<ProcessComment> qw = createQueryWrapper(query);
IPage<ProcessComment> page = PagerUtil.queryToPage(pq);
IPage<ProcessCommentVo> pagging = baseMapper.selectPageVo(page, qw);
PagerVo<ProcessCommentVo> p = PagerUtil.pageToVo(pagging, null);
return p;
}
public void saveOrUpdateDto(ProcessCommentDto dto){
@Resource
private SysUserFeign sysUserFeign;
@Resource
private FileUploadComponent fileUploadComponent;
private QueryWrapper<ProcessComment> createQueryWrapper(ProcessCommentQuery query) {
// todo: 这里根据具体业务调整查询条件
// 多字段Like示例:qw.and(wrapper -> wrapper.like("name", query.getName()).or().like("remark", query.getName()));
QueryWrapper<ProcessComment> qw = new QueryWrapper<>();
return qw;
}
public PagerVo<ProcessCommentVo> listPageVo(PagerQuery<ProcessCommentQuery> pq) {
ProcessCommentQuery query = pq.getParams();
QueryWrapper<ProcessComment> qw = createQueryWrapper(query);
IPage<ProcessComment> page = PagerUtil.queryToPage(pq);
IPage<ProcessCommentVo> pagging = baseMapper.selectPageVo(page, qw);
PagerVo<ProcessCommentVo> p = PagerUtil.pageToVo(pagging, null);
return p;
}
public void saveOrUpdateDto(ProcessCommentDto dto) {
String dtoSid = dto.getSid();
if (StringUtils.isBlank(dtoSid)) {
dto.setSid(UUID.randomUUID().toString());
baseMapper.insertByDto(dto);
dto.setSid(UUID.randomUUID().toString());
baseMapper.insertByDto(dto);
return;
}
this.updateByDto(dto);
}
this.updateByDto(dto);
}
public void insertByDto(ProcessCommentDto dto){
ProcessComment entity = new ProcessComment();
BeanUtil.copyProperties(dto, entity, "id", "sid");
baseMapper.insert(entity);
}
public void insertByDto(ProcessCommentDto dto) {
ProcessComment entity = new ProcessComment();
BeanUtil.copyProperties(dto, entity, "id", "sid");
baseMapper.insert(entity);
}
public void updateByDto(ProcessCommentDto dto){
String dtoSid = dto.getSid();
public void updateByDto(ProcessCommentDto dto) {
String dtoSid = dto.getSid();
if (StringUtils.isBlank(dtoSid)) {
return;
}
ProcessComment entity = fetchBySid(dtoSid);
BeanUtil.copyProperties(dto, entity, "id", "sid");
baseMapper.updateById(entity);
}
public ProcessCommentDetailsVo fetchDetailsVoBySid(String sid){
ProcessComment entity = fetchBySid(sid);
ProcessCommentDetailsVo vo = new ProcessCommentDetailsVo();
BeanUtil.copyProperties(entity, vo);
return vo;
}
public List<ProcessCommentVo> getCommentList(String processId) {
List<ProcessCommentVo> commentList = baseMapper.getCommentList(processId);
for(ProcessCommentVo histIns:commentList){
if(StringUtils.isNotBlank(histIns.getProcessFile())){
List<String> processFile = Arrays.asList(histIns.getProcessFile().split(",")).stream().map(c -> fileUploadComponent.getUrlPrefix() + c).collect(Collectors.toList());
histIns.setFileList(processFile);
}
ResultBean<List<SysUserVo>> sysUserVoResultBean = sysUserFeign.fetchBySids(histIns.getReviewerSid());// sysUserService.selectUserById(Long.parseLong(histIns.getAssignee()));
List<SysUserVo> data1 = sysUserVoResultBean.getData();
for( SysUserVo data:data1){
AppUserVo taskUserInfo=new AppUserVo();
taskUserInfo.setAssigneeName(data.getName());
if(!com.yxt.common.base.utils.StringUtils.isBlank(data.getHeadImage())){
taskUserInfo.setAssigneeHeadImage(fileUploadComponent.getUrlPrefix() +data.getHeadImage());
}
histIns.setTaskUserInfo(taskUserInfo);
}
}
return commentList;
}
public List<String> selectByIdAndComment(String comment, String instanceId) {
return baseMapper.selectByIdAndComment(comment, instanceId);
}
ProcessComment entity = fetchBySid(dtoSid);
BeanUtil.copyProperties(dto, entity, "id", "sid");
baseMapper.updateById(entity);
}
public ProcessCommentDetailsVo fetchDetailsVoBySid(String sid) {
ProcessComment entity = fetchBySid(sid);
ProcessCommentDetailsVo vo = new ProcessCommentDetailsVo();
BeanUtil.copyProperties(entity, vo);
return vo;
}
public List<ProcessCommentVo> getCommentList(String processId) {
List<ProcessCommentVo> commentList = baseMapper.getCommentList(processId);
// 2. 获取所有 reviewerSid 批量查询用户信息
Set<String> reviewerSids = commentList.stream()
.filter(c -> StringUtils.isNotBlank(c.getReviewerSid()))
.map(ProcessCommentVo::getReviewerSid)
.collect(Collectors.toSet());
// 批量查询所有评论中的 reviewerSid 对应的用户信息
Map<String, SysUserVo> userMap = new HashMap<>();
// 将 Set<String> 转换为以逗号分隔的字符串
String assigneeIdsStr = String.join(",", reviewerSids);
if (StringUtils.isNotBlank(assigneeIdsStr)) {
userMap = sysUserFeign.fetchBySids(assigneeIdsStr).getData().stream()
.collect(Collectors.toMap(SysUserVo::getSid, user -> user));
}
// 3. 遍历 commentList,填充文件列表和用户信息
for (ProcessCommentVo histIns : commentList) {
// 处理文件列表
if (StringUtils.isNotBlank(histIns.getProcessFile())) {
List<String> processFile = Arrays.asList(histIns.getProcessFile().split(",")).stream().map(c -> fileUploadComponent.getUrlPrefix() + c).collect(Collectors.toList());
histIns.setFileList(processFile);
}
// 处理用户信息
SysUserVo user = userMap.get(histIns.getReviewerSid());
if (user != null) {
AppUserVo taskUserInfo = new AppUserVo();
taskUserInfo.setAssigneeName(user.getName());
if (StringUtils.isNotBlank(user.getHeadImage())) {
taskUserInfo.setAssigneeHeadImage(fileUploadComponent.getUrlPrefix() + user.getHeadImage());
}
histIns.setTaskUserInfo(taskUserInfo);
}
}
return commentList;
}
public List<ProcessCommentVo> getCommentListOld(String processId) {
List<ProcessCommentVo> commentList = baseMapper.getCommentList(processId);
for (ProcessCommentVo histIns : commentList) {
if (StringUtils.isNotBlank(histIns.getProcessFile())) {
List<String> processFile = Arrays.asList(histIns.getProcessFile().split(",")).stream().map(c -> fileUploadComponent.getUrlPrefix() + c).collect(Collectors.toList());
histIns.setFileList(processFile);
}
ResultBean<List<SysUserVo>> sysUserVoResultBean = sysUserFeign.fetchBySids(histIns.getReviewerSid());// sysUserService.selectUserById(Long.parseLong(histIns.getAssignee()));
List<SysUserVo> data1 = sysUserVoResultBean.getData();
for (SysUserVo data : data1) {
AppUserVo taskUserInfo = new AppUserVo();
taskUserInfo.setAssigneeName(data.getName());
if (!com.yxt.common.base.utils.StringUtils.isBlank(data.getHeadImage())) {
taskUserInfo.setAssigneeHeadImage(fileUploadComponent.getUrlPrefix() + data.getHeadImage());
}
histIns.setTaskUserInfo(taskUserInfo);
}
}
return commentList;
}
public List<String> selectByIdAndComment(String comment, String instanceId) {
return baseMapper.selectByIdAndComment(comment, instanceId);
}
}

366
anrui-management/anrui-management-ui/src/api/Common/dictcommons.js

@ -0,0 +1,366 @@
import request from '@/utils/request'
export function typeValues(data) {
return request({
url: '/portal/v1/dictcommons/typeValues',
method: 'get',
params: data
})
}
// 获取数据字典(根据分组)
export function getTypeValueList(data) {
return request({
url: '/portal/v1/dictcommons/getTypeValueList',
method: 'get',
params: data
})
}
// 获取所有分公司
export function selectOrgSidList(data) {
return request({
url: '/portal/v1/sysorganization/selectOrgSidList',
method: 'get',
params: data
})
}
// 根据当前登录人orgSidPath(全路径sid)查询分公司
export function getOrgSidByPath(data) {
return request({
url: '/portal/v1/sysstafforg/getOrgSidByPath',
method: 'get',
params: data
})
}
// 根据分公司sid查询分公司
export function fetchBySid(sid) {
return request({
url: '/portal/v1/sysorganization/fetchBySid/' + sid,
method: 'get'
})
}
// 根据分公司全路径Sid获取分公司下开票信息(采购系统不能为空)
// 开票单位
export function getInvoicingList(data) {
return request({
url: '/fin/v1/fincompanyinvoicing/getInvoicingList',
method: 'GET',
params: data
})
}
// 根据分公司Sid获取分公司下所有的部门
export function getListDeptByOrgSid(data) {
return request({
url: '/portal/v1/sysorganization/getListDeptByOrgSid/' + data,
method: 'GET'
})
}
// 根据分公司Sid获取分公司下部门对应的采购系统
export function fetchDetailsByUseOrgSid(data) {
return request({
url: '/base/v1/basepurchasesystem/fetchDetailsByUseOrgSid/' + data,
method: 'GET'
})
}
// 根据部门sid查询部门信息
export function fetchByDepSid(data) {
return request({
url: '/portal/v1/sysorganization/selectBySid',
method: 'get',
params: data
})
}
// 查当前部门所属一级站内的所有合作二级站
export function tranFive(data) {
return request({
url: '/portal/v1/sysorganization//tranFive/' + data,
method: 'GET'
})
}
// 调出一级站-调入当前一级站内所有二级站
export function tranOne(data) {
return request({
// baseURL: "http://127.0.0.1:4523/m1/4061550-0-default",
url: '/portal/v1/sysorganization/tranOne/' + data,
method: 'GET'
})
}
// 调出一级站-调入当前分公司内所有一级站,不包含自身
export function tranTwo(data) {
return request({
// baseURL: "http://127.0.0.1:4523/m1/4061550-0-default",
url: '/portal/v1/sysorganization/tranTwo/' + data,
method: 'GET'
})
}
// 调出一级站-调入当前选择分公司内所有一级站,不包含自身
export function tranThree(data) {
return request({
// baseURL: "http://127.0.0.1:4523/m1/4061550-0-default",
url: '/portal/v1/sysorganization/tranThree/' + data.sid + "/" + data.deptSid,
method: 'GET',
})
}
// 调出二级站-调入上级一级站内所有二级站,不包含自身
export function tranfour(data) {
return request({
// baseURL: "http://127.0.0.1:4523/m1/4061550-0-default",
url: '/portal/v1/sysorganization/tranfour/' + data,
method: 'GET'
})
}
// 获取所有岗位
export function postName(data) {
return request({
url: '/portal/v1/syspost/selectList',
method: 'get',
params: data
})
}
// 根据当前登录用户sid获取本分公司下的销售部门和销售专员
export function selectOrgList(data) {
return request({
url: '/portal/v1/sysorganization/selectOrgList',
method: 'get',
params: data
})
}
// 根据当前登录用户的全路径查询财务部门下的所有人
export function selFianceByOrgSidPath(data) {
return request({
// baseURL: "http://127.0.0.1:4523/m1/4061550-0-default",
url: '/portal/v1/sysstafforg/selFianceByOrgSidPath',
method: 'post',
params: data
})
}
// 根据当前登录用户部门sid获取本部门下角色为维修技师的人员
export function getUserByDeptSid(data) {
return request({
url: '/portal/v1/sysuser/getUserByDeptSid',
method: 'get',
params: data
})
}
// 当前用户创建申请时判断该用户是否有该菜单的操作权限
export function selectHaveMessage(data) {
return request({
url: '/portal/v1/sysuser/selectHaveMessage ',
method: 'post',
data: data,
headers: {
'Content-Type': 'application/json'
}
})
}
// 根据当前登录用户的角色获取菜单分页列表页面右上角按钮的隐藏
export function getButtonPermissions(data) {
return request({
url: '/portal/v1/sysfunction/getButtonPermissions',
method: 'post',
data: data,
headers: {
'Content-Type': 'application/json'
}
})
}
// 获取集团所有在职人员
export function selectStaffListss() {
return request({
url: '/portal/v1/sysstaffinfo/selectStaffListss',
method: 'get'
})
}
// 根据当前登录用户的全路径查询相应部门下的所有人
export function selAllByOrgSidPath(data) {
return request({
url: '/portal/v1/sysstafforg/selAllByOrgSidPath',
method: 'post',
params: data
})
}
// 分公司全路径sid获取工种
export function getServiceType(data) {
return request({
url: '/as/v1/AsServiceItem/getServiceType',
method: 'get',
params: data
})
}
// 分公司全路径sid获取科目
export function selSubjectInfo(data) {
return request({
url: '/as/v1/asservicepackage/selSubjectInfo',
method: 'get',
params: data
})
}
// 分公司全路径sid获取班组
export function getGroupList(data) {
return request({
url: '/as/v1/asservicegroup/getGroupList',
method: 'post',
params: data
})
}
// 部门sid获取索赔厂家
export function getListByUseOrgSid(data) {
return request({
url: '/as/v1/asserviceclaimanu/getListByUseOrgSid',
method: 'get',
params: data
})
}
// 部门sid获取维修项目(已备案且已启用的)
export function getServiceItemListPage(data) {
return request({
url: '/as/v1/AsServiceItem/getServiceItemListPage',
method: 'post',
data: data,
headers: {
'Content-Type': 'application/json'
}
})
}
// 查询分页列表 -- 客户列表
export function customerList(params) {
return request({
url: '/as/v1/ascustomervehicle/customerList',
method: 'post',
data: params,
headers: {
'Content-Type': 'application/json'
}
})
}
// 获取省
export function getProvince() {
return request({
url: '/portal/v1/regions/getProvince',
method: 'get'
})
}
// 根据省sid获取该省的所有市
export function getCity(data) {
return request({
url: '/portal/v1/regions/getCity',
method: 'get',
params: data
})
}
// 根据市sid获取该市的所有县区
export function getCounty(data) {
return request({
url: '/portal/v1/regions/getCounty',
method: 'get',
params: data
})
}
// 获取售后服务--基础信息--供应商信息
// 开票名称
export function choiceSupplierInfo(data) {
return request({
url: '/pms/v1/pmssupplierinfo/choiceSupplierInfo',
method: 'post',
params: data
})
}
// 查询分页列表 -- 商品列表 -- 从商品管理中获取数据
export function chooseproducts(params) {
return request({
url: '/yxtbase/apiadmin/base/basegoodssku/getGoodsListPage',
method: 'post',
data: params,
headers: {
'Content-Type': 'application/json'
}
})
}
// 查询分页列表 -- 商品列表 -- 从商品售价列表中获取数据
export function listPageSales(params) {
return request({
url: '/sms/apiadmin/v1/smssalesbill/listPageSales',
method: 'post',
data: params,
headers: {
'Content-Type': 'application/json'
}
})
}
// 查询分页列表 -- 商品列表 -- 根据部门sid从库存商品中获取
export function selInvenGoodsByUseOrgSid(params) {
return request({
url: '/wms/apiadmin/inventory/wmsinventory/selInvenGoodsByUseOrgSid',
method: 'post',
data: params,
headers: {
'Content-Type': 'application/json'
}
})
}
// 查询分页列表 -- 商品列表
export function getInventoryList(params) {
return request({
url: '/wms/apiadmin/WmsOutBill/getInventoryList',
method: 'post',
data: params,
headers: {
'Content-Type': 'application/json'
}
})
}
// 查询分页列表 -- 维修工单列表
export function getAsBusrepairBill(params) {
return request({
url: '/as/v1/AsBusrepairBill/listPage',
method: 'post',
data: params,
headers: {
'Content-Type': 'application/json'
}
})
}
// 查询分页列表 --商品类别列表
export function getGoodsCategory(params) {
return request({
url: '/yxtbase/apiadmin/base/basegoodstype/selectByUseOrgSid',
method: 'post',
data: params,
headers: {
'Content-Type': 'application/json'
}
})
}

75
anrui-management/anrui-management-ui/src/api/commodity/commodity.js

@ -0,0 +1,75 @@
import request from '@/utils/request'
export default {
// 查询分页列表
listPage: function(data) {
return request({
url: '/yxtbase/apiadmin/base/basegoodsspu/oaGoodsListPage',
method: 'post',
data: data,
headers: {
'Content-Type': 'application/json'
}
})
},
// 商品-- 删除
deleteBySids: function(data) {
return request({
url: '/yxtbase/apiadmin/base/basegoodsspu/delGoodsBySids',
method: 'DELETE',
data: data,
headers: {
'Content-Type': 'application/json'
}
})
},
// 初始化
initGoods: function(data) {
return request({
url: '/yxtbase/apiadmin/base/basegoodsspu/goodsDetails/' + data,
method: 'get'
})
},
saveOrUpdate: function(data) {
return request({
url: '/yxtbase/apiadmin/base/basegoodsspu/saveOrUpdateOaGoods',
method: 'post',
data: data,
headers: {
'Content-Type': 'application/json'
}
})
},
// 计量单位查询
getUnit: function(params) {
return request({
url: '/yxtbase/apiadmin/base/basegoodsunit/listAll',
method: 'get',
params: params
})
},
// 厂家查询
getFacturer: function(params) {
return request({
url: '/yxtbase/apiadmin/base/basemanufacturer/listAll',
method: 'get',
params: params
})
},
// 商品类别查询
getType: function(params) {
return request({
url: '/yxtbase/apiadmin/base/basegoodstype/listAll',
method: 'get',
params: params
})
},
// 商品品牌查询
getBrand: function(params) {
return request({
url: '/yxtbase/apiadmin/base/basegoodsbrand/listAll',
method: 'get',
params: params
})
},
}

231
anrui-management/anrui-management-ui/src/components/uploadFile/uploadImg.vue

@ -0,0 +1,231 @@
<template>
<div>
<el-upload ref="imgUpload" v-loading="loadding" class="avatar-uploader" :headers="accessToken"
:action="uploadFile" :accept="accept" list-type="picture-card"
:file-list="files" :on-remove="removeImage" :on-preview="handlePictureCardPreview"
:on-progress="uploadProgrees"
:on-error="uploadError" :on-success="uploadImgSuccess_FuJian">
<i class="el-icon-plus avatar-uploader-icon"/>
</el-upload>
<el-dialog :visible.sync="dialogVisible" :append-to-body="true" title="查看图片">
<img width="100%" :src="dialogImageUrl" alt="">
</el-dialog>
</div>
</template>
<script>
import { uploadFile } from '@/api/Common/Upload'
import { getStorage } from '@/utils/auth.js'
export default {
model: {
prop: 'name',
event: 'change'
},
props: {
placeholder: {
type: String,
default: ''
},
bucket: {
type: String,
default: 'abc'
},
//
width: {
type: String,
default: '270px'
},
limit: {
type: Number,
default: 1
},
accept: {
type: String,
default:
'.jpg,.jpeg,.png,'
},
//
name: {
type: Array,
required: true
},
uploadData: {
type: Object,
default: {}
}
},
data() {
return {
dialogImageUrl: '',
dialogVisible: false,
accessToken: null,
uploadFile: uploadFile,
fileList_FuJian: [],
enclosure: '',
file_add: '',
file_catch: '',
files: [],
files_list: [],
filedUrl: '',
// fileUrl: fileUrl,
// showpicture:false,
isview: false,
nameArr: '',
loadding: false,
stateName: ''
}
},
watch: {
name: {
deep: true,
immediate: true,
handler(newVal, oldVal) {
console.log('aaaa1', newVal)
console.log('aaaa2', oldVal)
this.files = newVal
console.log('aaaa2this.files', this.files)
}
}
},
mounted() {
this.$nextTick(() => {
this.Init()
})
},
created() {
this.uploadFile = uploadFile //
this.accessToken = {
token: getStorage()
}
},
methods: {
//
Init() {
if (this.name !== undefined) {
this.files = []
for (var i = 0; i < this.name.length; i++) {
if (this.name[i].url !== null && this.name[i].url !== undefined) {
this.files.push({
name: this.name[i].name,
url: this.name[i].url
})
} else {
this.files.push({
name: this.name[i],
url: this.name[i]
})
}
}
}
},
// --
uploadImgSuccess_FuJian(response, file, fileList) {
console.log('您选择的file:', file)
if (file.response.code === '200') {
this.loadding = false
//
this.filedUrl = this.fileUrl + file.response.data
// var uid = file.response.data
this.files.push({
name: file.response.data.sourceFileName,
url: file.response.data.fullUrl,
filePath: file.response.data.filePath,
size: file.response.data.size
})
this.$emit('change', this.files)
this.$emit('eett', this.files)
}
},
removeImage(file, ImageFileList) {
this.files.splice(this.files.indexOf(file), 1)
const imgFiles = []
this.files.forEach((o) => {
imgFiles.push(o.url)
})
this.$emit('fileChange', this.files)
this.$emit('change', this.files)
},
handleRemove(file, fileList) {
console.log('file:' + JSON.stringify(file))
console.log('fileList:' + JSON.stringify(fileList))
this.enclosure = ''
// 1. id(this.file_add)
this.getNewFileId(fileList)
// 2. id(this.file_catch)
this.getCatchFileId(file)
// 3. id
this.getFileId()
// 4. id
this.$emit('change', this.enclosure)
},
// this.file_add(id)
getNewFileId(fileList) {
// debugger
this.file_add = ''
for (var i = 0; i < fileList.length; i++) {
if (fileList[i].response && fileList[i].response.code === '200') {
this.file_add = this.file_add + fileList[i].response.data + ','
}
}
if (this.file_add !== '') {
this.file_add = this.file_add.substring(0, this.file_add.length - 1)
}
// console.log('1. this.file_add: ' + this.file_add)
},
// this.file_catchid
getCatchFileId(file) {
for (var i = 0; i < this.files_list.length; i++) {
if (this.file_catch !== '') {
// 1. id
if (this.files_list[i].name === file.name) {
// 2. file_catchfils_arry
var fils_arry = this.file_catch.split(',')
// 3. fils_arry this.files_list[i].id
var arry = []
fils_arry.forEach((element) => {
//
if (element !== this.files_list[i].id) {
arry.push(element)
}
})
// 4. file_catch
this.file_catch = arry.join(',')
}
}
}
// console.log('2. this.file_catch:' + this.file_catch)
},
// id
getFileId() {
// console.log('3. this.file_catch:' + this.file_catch + ',this.file_add:' + this.file_add)
if (this.file_catch !== '') {
if (this.file_add !== '') {
this.enclosure = this.file_catch + ',' + this.file_add
} else {
this.enclosure = this.file_catch
}
} else {
this.enclosure = this.file_add
}
},
handlePictureCardPreview(file) {
this.dialogVisible = true
this.dialogImageUrl = file.url
},
//
uploadError() {
this.loadding = false
},
uploadProgrees(event, file, fileList) {
if (Number(event.percent) > 0) {
this.loadding = true
}
}
}
}
</script>
<style lang="scss" scoped></style>

14
anrui-management/anrui-management-ui/src/main.js

@ -11,7 +11,7 @@ import '@/styles/index.scss' // global css
import App from './App'
import store from './store'
import router from './router'
import { setStorage, setDefaultOrgPathName, setDefaultOrgPath } from './utils/auth.js'
import '@/icons' // icon
import request from '@/utils/request'
// import '@/permission' //权限控制
@ -28,7 +28,6 @@ Vue.component('eimage', eimage)
import Print from '@/utils/print' // 引入附件的js文件
Vue.use(Print) // 注册
import { setStorage, getStorage } from './utils/auth.js'
let token = null
token = GetQueryString('token')
@ -39,6 +38,17 @@ let href = window.location.href
// window.location.href = href.slice(0, href.length - 1)
}
var one = window.location.href.indexOf('&organizationData') + 18
if (parseInt(one) > 18) {
const data = window.location.href.substr(one) // url解码unescape()已从web中移除,尽量不使用
var data1 = decodeURIComponent(data)
if (data1 !== undefined) {
const obj = JSON.parse(data1)
setDefaultOrgPath(obj.defaultOrgPath)
setDefaultOrgPathName(obj.defaultOrgPathName)
}
}
// 获取登录用户信息
function getUserInfo() {
return request({

30
anrui-management/anrui-management-ui/src/router/index.js

@ -21,16 +21,6 @@ export const constantRoutes = [
path: '/',
redirect: 'index'
},
/*{
path: '/login',
component: () => import('@/views/login/login.vue')
},*/
/* {
path: '/home',
component: () => import('@/views/Home/Home.vue'),
name: 'home'
},*/
{
path: '/index',
component: Layout,
@ -59,8 +49,24 @@ export const constantRoutes = [
path: '/yuangongguanli',
component: () => import('@/views/sysstaffinfo/yuangongguanli.vue'),
name: 'yuangongguanli',
meta: { title: '员工信息管理',noCache:false }
},
meta: { title: '员工信息管理', noCache: false }
}
]
},
{
path: '/commodity',
component: Layout,
redirect: '/commodity',
meta: {
title: '商品管理'
},
children: [
{
path: '/commodity/commodity',
component: () => import('@/views/commodity/commodity.vue'),
name: 'Commodity',
meta: { title: '商品管理', noCache: false }
}
]
},
{

65
anrui-management/anrui-management-ui/src/styles/index.scss

@ -188,6 +188,71 @@ div:focus {
.footer{margin: 20px;}
}
.formaddcopy02 {
padding: 10px 40px 0 40px;
.title {
padding: 12px;
font-weight: bold;
font-size: 16px;
background-color: #0294d7;
color: #ffffff;
text-align: left;
}
.el-row {
display: flex;
flex-wrap: wrap;
border-left: 1px solid $table-border-color;
.el-col {
border-right: 1px solid $table-border-color;
border-bottom: 1px solid $table-border-color;
min-height: 42px;
padding: 0 15px;
line-height: 42px;
position: relative;
.span-sty {
position: absolute;
top: 0;
bottom: 0;
left: 0;
line-height: 42px;
text-align: right;
font-size: 14px;
color: #606266;
font-weight: 600;
width: 70px;
padding-right: 5px;
border-right: 1px solid #e0e3eb;
}
.el-form-item {
margin-bottom: 0;
line-height: 42px;
.addinputw {
//padding: 5px 0;
width: 65%;
margin-left: 80px;
line-height: 42px;
}
.addinputInfo {
margin-left: 80px;
line-height: 42px;
}
.el-input__inner {
height: 36px !important;
}
}
}
}
.footer {
margin: 20px;
}
}
.forminfo {
padding: 20px 0;

8
anrui-management/anrui-management-ui/src/utils/auth.js

@ -27,3 +27,11 @@ export function setStorage(session) {
export function removeStorage() {
return sessionStorage.removeItem('token')
}
export function setDefaultOrgPathName(data) {
return sessionStorage.setItem('defaultOrgPathName', data)
}
export function setDefaultOrgPath(data) {
return sessionStorage.setItem('defaultOrgPath', data)
}

377
anrui-management/anrui-management-ui/src/views/commodity/commodity.vue

@ -0,0 +1,377 @@
<template>
<div class="app-container">
<div v-show="viewState == 1">
<button-bar ref="btnbar" view-title="商品列表" :btndisabled="btndisabled" @btnhandle="btnHandle" />
<div class="main-content">
<div class="searchcon">
<el-button size="small" class="searchbtn" @click="clicksearchShow">
{{ searchxianshitit }}
</el-button>
<div v-show="isSearchShow" class="search">
<el-form :inline="true" class="tab-header">
<el-form-item label="所属组织">
<el-input v-model="queryParams.params.createOrgName" placeholder="" clearable />
</el-form-item>
<el-form-item label="商品名称">
<el-input v-model="queryParams.params.goodsName" placeholder="" clearable />
</el-form-item>
<el-form-item label="商品编码">
<el-input v-model="queryParams.params.goodsCode" placeholder="" clearable />
</el-form-item>
<el-form-item label="拼音缩写">
<el-input v-model="queryParams.params.goodsPY" placeholder="" clearable />
</el-form-item>
<el-form-item label="商品类别">
<el-select v-model="queryParams.params.goodsTypeName" placeholder="请选择" class="addinputw addinputInfo" @change="selectCateChange">
<el-option v-for="item in goodsTypeList" :key="item.sid" :label="item.goodsTypeName" :value="item.sid" />
</el-select>
</el-form-item>
<el-form-item label="品牌">
<el-select v-model="queryParams.params.brandName" placeholder="请选择" class="addinputw addinputInfo" @change="selectBrandChange">
<el-option v-for="item in brandList" :key="item.sid" :label="item.brandName" :value="item.sid" />
</el-select>
</el-form-item>
</el-form>
<div class="btn" style="text-align: center;">
<el-button type="primary" size="small" icon="el-icon-search" @click="dosearch">查询</el-button>
<el-button type="primary" size="small" icon="el-icon-refresh" @click="resetQuery">重置</el-button>
</div>
</div>
</div>
<!-- Start 项目列表头部 -->
<div class="listtop">
<div class="tit" :hidden="false">商品列表</div>
</div>
<!-- End 项目列表头部 -->
<!-- Start 项目列表 -->
<div class="">
<el-table v-loading="tableLoading" :data="dataList" border style="width: 100%" @selection-change="selectionLineChangeHandle">
<el-table-column fixed width="50" type="selection" align="center" />
<el-table-column fixed width="60" label="序号" type="index" :index="indexMethod" align="center" />
<el-table-column fixed label="操作" align="center" width="100">
<template slot-scope="scope">
<el-button type="primary" size="mini" @click="toRelevancy(scope.row)">详情</el-button>
</template>
</el-table-column>
<el-table-column fixed prop="goodsName" label="商品名称" width="120" align="center" />
<el-table-column fixed prop="goodsCode" label="商品编码" width="120" align="center" />
<el-table-column prop="goodsPY" label="拼音缩写" width="100" align="center" />
<el-table-column prop="barCode" label="条形码" width="100" align="center" />
<el-table-column prop="goodsLevelValue" label="商品等级" width="100" align="center" />
<el-table-column prop="goodsTypeName" label="商品类别" width="100" align="center" />
<el-table-column prop="brandName" label="品牌" width="100" align="center" />
<el-table-column prop="indexes" label="规格" width="100" align="center" />
<el-table-column prop="goodsUnitName" label="计量单位" width="100" align="center" />
<el-table-column prop="shelfLife" label="保质期(天)" width="100" align="center" />
<el-table-column prop="sortNo" label="排序号" width="100" align="center" />
<el-table-column prop="inventoryAlertUpperLimit" label="库存上限" width="100" align="center" />
<el-table-column prop="inventoryAlertLowerLimit" label="库存下限" width="100" align="center" />
<el-table-column label="商品图片" align="center" width="100">
<template slot-scope="scope">
<div style="color: #1890FF; text-decoration: underline ;" v-show="scope.row.picPath.length > 0" @click="showImage(scope.row.picPath)">查看
</div>
</template>
</el-table-column>
</el-table>
</div>
<!-- End 项目列表 -->
<div class="pages">
<div class="tit" />
<!-- 翻页 -->
<pagination v-show="dataList.length > 0" :total="queryParams.total" :page.sync="queryParams.current" :limit.sync="queryParams.size" class="pagination" @pagination="loadList" />
</div>
</div>
</div>
<!-- End 查询和其列表部分 -->
<!-- 新增修改部分组件 -->
<divAdd v-show="viewState == 2 || viewState == 3" ref="divadd" @doback="resetState" @reloadlist="loadList" />
<!-- 详情部分组件 -->
<divInfo v-show="viewState == 4" ref="divinfo" @doback="resetState" @reloadlist="loadList" />
<el-dialog title="商品图片" :visible.sync="dialogVisible" :before-close="handleClose">
<el-form ref="dataForm1" class="formadd" style="margin-top: -30px;">
<el-row class="first_row">
<el-col :span="24" class="trightb">
<el-image style="width: 120px;height: 120px; margin: 10px; background: #f0f;" v-for="(item,index) in fileList" :key="index" :src="item.url" :preview-src-list="[item.url]">
</el-image>
</el-col>
</el-row>
</el-form>
</el-dialog>
</div>
</template>
<script>
import req from '@/api/commodity/commodity'
import ButtonBar from '@/components/ButtonBar'
import Pagination from '@/components/pagination'
import divAdd from './commodityAdd.vue'
import divInfo from './commodityInfo.vue'
import { getOrgSidByPath } from '@/api/Common/dictcommons'
export default {
name: 'Commodity',
components: {
ButtonBar,
Pagination,
divAdd,
divInfo
},
data() {
return {
dialogVisible: false,
btndisabled: false,
viewState: 1, // 1 2 3 4
isSearchShow: false,
searchxianshitit: '显示查询条件',
tableLoading: false,
dataList: [],
btnList: [
{
type: 'primary',
size: 'small',
icon: 'plus',
btnKey: 'toAdd',
btnLabel: '新增'
},
{
type: 'primary',
size: 'small',
icon: 'edit',
btnKey: 'toEdit',
btnLabel: '编辑'
},
{
type: 'danger',
size: 'small',
icon: 'plus',
btnKey: 'doDel',
btnLabel: '删除'
},
{
type: 'info',
size: 'small',
icon: 'cross',
btnKey: 'doClose',
btnLabel: '关闭'
}
],
queryParams: {
current: 1,
size: 10,
total: 0,
params: {
useOrgName: '',
createOrgName: '',
goodsName: '',
goodsCode: '',
goodsPY: '',
goodsTypeSid: '',
goodsTypeName: '',
brandSid: '',
brandName: '',
userSid: '',
orgPath: '',
menuUrl: ''
}
},
sids: [],
selectionList: [],
brandList: [],
goodsTypeList: [],
fileList: []
}
},
mounted() {
this.$refs['btnbar'].setButtonList(this.btnList)
},
created() {
this.loadList()
this.initData()
},
methods: {
initData() {
var parpams = { useOrgSid: window.sessionStorage.getItem('defaultOrgPath').substring(window.sessionStorage.getItem('defaultOrgPath').lastIndexOf('/') + 1) }
//
req.getBrand(parpams).then(resp => {
if (resp.success) {
this.brandList = resp.data
}
})
//
req.getType(parpams).then(resp => {
if (resp.success) {
this.goodsTypeList = resp.data
}
})
},
selectBrandChange(val) {
const choose = this.brandList.filter((item) => item.sid === val)
this.queryParams.params.brandSid = choose[0].sid
this.queryParams.params.brandName = choose[0].brandName
},
selectCateChange(val) {
const choose = this.goodsTypeList.filter((item) => item.sid === val)
this.queryParams.params.goodsTypeSid = choose[0].sid
this.queryParams.params.goodsTypeName = choose[0].goodsTypeName
},
//
clicksearchShow() {
this.isSearchShow = !this.isSearchShow
if (this.isSearchShow) {
this.searchxianshitit = '隐藏查询条件'
} else {
this.searchxianshitit = '显示查询条件'
}
},
btnHandle(btnKey) {
switch (btnKey) {
case 'toAdd':
this.toAdd()
break
case 'toEdit':
this.toEdit()
break
case 'doDel':
this.doDel()
break
case 'doClose':
this.doClose()
break
default:
break
}
},
selectionLineChangeHandle(val) {
this.selectionList = val
const aa = []
val.forEach(element => {
aa.push(element.sid)
})
this.sids = aa
},
loadList() {
this.tableLoading = true
this.queryParams.params.userSid = window.sessionStorage.getItem('userSid')
this.queryParams.params.orgPath = window.sessionStorage.getItem('defaultOrgPath')
this.queryParams.params.menuUrl = this.$route.path
req.listPage(this.queryParams).then((resp) => {
this.tableLoading = false
if (resp.success) {
const data = resp.data
this.queryParams.total = data.total
this.dataList = data.records
} else {
// resp.code
this.dataList = []
this.queryParams.total = 0
}
}).catch(() => {
this.tableLoading = false
})
},
//
indexMethod(index) {
var pagestart = (this.queryParams.current - 1) * this.queryParams.size
var pageindex = index + 1 + pagestart
return pageindex
},
dosearch() {
this.queryParams.current = 1
this.loadList()
},
resetQuery() {
this.queryParams = {
current: 1,
size: 10,
total: 0,
params: {
useOrgName: '',
createOrgName: '',
goodsName: '',
goodsCode: '',
goodsPY: '',
goodsTypeSid: '',
goodsTypeName: '',
brandSid: '',
brandName: '',
userSid: '',
orgPath: '',
menuUrl: ''
}
}
this.loadList()
},
toAdd() {
this.viewState = 2
getOrgSidByPath({ orgPath: window.sessionStorage.getItem('defaultOrgPath') }).then((res) => {
if (res.success) {
this.$refs['divadd'].showAdd(res.data, window.sessionStorage.getItem('defaultOrgPath').substring(window.sessionStorage.getItem('defaultOrgPath').lastIndexOf('/') + 1))
}
})
},
toEdit() {
if (this.selectionList.length === 1) {
this.viewState = 3
this.$refs['divadd'].showEdit(this.selectionList[0])
} else {
this.$message({ type: 'warning', message: '请选择一条数据进行操作', showClose: true })
return
}
},
doClose() {
this.$store.dispatch('tagsView/delView', this.$route)
this.$router.go(-1)
},
toRelevancy(row) {
this.viewState = 4
this.$refs['divinfo'].showInfo(row)
},
doDel() {
if (this.sids.length > 0) {
const tip = '请确认是否删除所选 ' + this.sids.length + ' 条记录?'
this.$confirm(tip, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
const loading = this.$loading({
lock: true,
text: 'Loading',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
})
req.deleteBySids(this.sids).then((resp) => {
loading.close()
if (resp.success) {
this.$message({ type: 'success', message: resp.msg, showClose: true })
this.loadList()
} else {
// resp.code
}
}).catch(e => {
loading.close()
})
}).catch(() => {})
} else {
this.$message({
showClose: true,
message: '请至少选择一条记录进行删除操作'
})
}
},
resetState() {
this.viewState = 1
},
showImage(paths) {
this.fileList = paths
this.dialogVisible = true
},
handleClose() {
this.dialogVisible = false
}
}
}
</script>
<style scoped>
</style>

392
anrui-management/anrui-management-ui/src/views/commodity/commodityAdd.vue

@ -0,0 +1,392 @@
<template>
<div>
<div class="tab-header webtop">
<!-- 标题 -->
<div>商品信息</div>
<!-- start 添加修改按钮 -->
<div>
<el-button type="primary" size="small" :disabled="submitdisabled" @click="saveOrUpdate">保存</el-button>
<el-button type="info" size="small" @click="handleReturn()">关闭</el-button>
</div>
<!-- end 添加修改按钮 -->
<!-- end 详情按钮 -->
</div>
<div class="listconadd">
<el-form ref="form_obj" :model="formobj" :rules="rules" class="formaddcopy02">
<el-row style="border-top: 1px solid #e0e3eb">
<el-col :span="6">
<div class="span-sty"><span class="icon">*</span>商品名称</div>
<el-form-item prop="goodsName">
<el-input v-model="formobj.goodsName" placeholder="商品名称" class="addinputw addinputInfo" clearable />
</el-form-item>
</el-col>
<el-col :span="6">
<div class="span-sty"><span class="icon">*</span>商品编码</div>
<el-form-item prop="goodsCode">
<el-input v-model="formobj.goodsCode" placeholder="商品编码" class="addinputw addinputInfo" clearable />
</el-form-item>
</el-col>
<el-col :span="6">
<div class="span-sty">拼音缩写</div>
<el-form-item>
<el-input v-model="formobj.goodsPY" placeholder="由系统自动生成" :readonly="true" class="addinputw addinputInfo" clearable />
</el-form-item>
</el-col>
<el-col :span="6">
<div class="span-sty">条形码</div>
<el-form-item>
<el-input v-model="formobj.barCode" placeholder="由系统自动生成" :readonly="true" class="addinputw addinputInfo" clearable />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<div class="span-sty"><span class="icon">*</span>商品等级</div>
<el-form-item prop="goodsLevelKey">
<el-select v-model="formobj.goodsLevelKey" placeholder="请选择商品等级" class="addinputw" @change="levelChange">
<el-option v-for="item in goodsLevel_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<div class="span-sty"><span class="icon">*</span>商品类型</div>
<el-form-item prop="goodsClassKey">
<el-select v-model="formobj.goodsClassKey" placeholder="请选择商品等级" class="addinputw" @change="classChange">
<el-option v-for="item in goodsClass_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<div class="span-sty"><span class="icon">*</span>商品分类</div>
<el-form-item prop="goodsTypeName">
<el-select v-model="formobj.goodsTypeName" placeholder="请选择商品分类" class="addinputw" @change="selectCateChange">
<el-option v-for="item in cateList" :key="item.sid" :label="item.goodsTypeName" :value="item.sid" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<div class="span-sty"><span class="icon">*</span>品牌</div>
<el-form-item prop="brandName">
<el-select v-model="formobj.brandName" placeholder="请选择品牌" class="addinputw" @change="selectBrandChange">
<el-option v-for="item in brandList" :key="item.sid" :label="item.brandName" :value="item.sid" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<div class="span-sty">规格</div>
<el-form-item>
<el-input v-model="formobj.indexes" placeholder="规格" class="addinputw addinputInfo" clearable />
</el-form-item>
</el-col>
<el-col :span="6">
<div class="span-sty"><span class="icon">*</span>计量单位</div>
<el-form-item prop="goodsUnitName">
<el-select v-model="formobj.goodsUnitName" placeholder="请选择计量单位" class="addinputw" @change="selectunitNameChange">
<el-option v-for="item in unitNameList" :key="item.sid" :label="item.unitName" :value="item.sid" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<div class="span-sty">保质期()</div>
<el-form-item>
<el-input v-model="formobj.shelfLife" placeholder="保质期(天)" class="addinputw addinputInfo" clearable oninput="value=value.replace(/^(0+)|[^\d]+/g,'')" />
</el-form-item>
</el-col>
<el-col :span="6">
<div class="span-sty"><span class="icon">*</span> 厂家</div>
<el-form-item prop="manufacturerName">
<el-select v-model="formobj.manufacturerName" placeholder="请选择厂家" class="addinputw" @change="selectfacturerChange">
<el-option v-for="item in facturerList" :key="item.sid" :label="item.manufacturerName" :value="item.sid" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">备注</div>
<el-form-item>
<el-input v-model="formobj.skuRemarks" placeholder="备注" class="addinputw addinputInfo" clearable />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<div class="span-sty"><span class="icon">*</span>库存上限</div>
<el-form-item prop="inventoryAlertUpperLimit">
<el-input v-model="formobj.inventoryAlertUpperLimit" placeholder="库存上限" class="addinputw addinputInfo" clearable oninput="value=value.replace(/^(0+)|[^\d]+/g,'')" />
</el-form-item>
</el-col>
<el-col :span="6">
<div class="span-sty"><span class="icon">*</span>库存下限</div>
<el-form-item prop="inventoryAlertLowerLimit">
<el-input v-model="formobj.inventoryAlertLowerLimit" placeholder="库存下限" class="addinputw addinputInfo" clearable oninput="value=value.replace(/^(0+)|[^\d]+/g,'')" />
</el-form-item>
</el-col>
<el-col :span="12">
<div class="span-sty"><span class="icon">*</span>排序</div>
<el-form-item prop="sortNo">
<el-input v-model="formobj.sortNo" placeholder="排序" class="addinputw addinputInfo" clearable oninput="value=value.replace(/^(0+)|[^\d]+/g,'')" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">商品图片</div>
<el-form-item>
<upload-img ref="uploadImg" class="addinputw addinputInfo" v-model="imgList" :limit="50" bucket="map" :upload-data="{ type: '0001' }" @change="backData" />
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
</div>
</template>
<script>
import req from '@/api/commodity/commodity'
import { typeValues, getTypeValueList } from '@/api/Common/dictcommons'
import uploadImg from '@/components/uploadFile/uploadImg'
export default {
name: 'CommodityAdd',
components: {
uploadImg
},
data() {
return {
imgList: [],
submitdisabled: false,
formobj: {
sid: '',
userSid: '',
orgPath: '',
useOrgSid: '',
createOrgSid: '',
goodsName: '',
goodsCode: '',
goodsPY: '',
barCode: '',
goodsUnitSid: '',
goodsUnitName: '',
goodsTypeSid: '',
goodsTypeName: '',
indexes: '',
shelfLife: '',
brandSid: '',
brandName: '',
manufacturerSid: '',
manufacturerName: '',
sortNo: '',
skuRemarks: '',
inventoryAlertUpperLimit: '',
inventoryAlertLowerLimit: '',
goodsClassKey: '', // key
goodsClassValue: '', //
goodsLevelKey: '', // key
goodsLevelValue: '', //
picPath: []
},
brandList: [],
cateList: [],
facturerList: [],
unitNameList: [],
goodsLevel_list: [],
goodsClass_list: [],
rules: {
goodsName: [{ required: true, message: '商品名称不能为空', trigger: 'blur' }],
goodsCode: [{ required: true, message: '商品编码不能为空', trigger: 'blur' }],
goodsUnitName: [{ required: true, message: '请选择计量单位', trigger: 'change' }],
goodsLevelKey: [{ required: true, message: '请选择商品等级', trigger: 'change' }],
goodsClassKey: [{ required: true, message: '请选择商品类型', trigger: 'change' }],
goodsTypeName: [{ required: true, message: '请选择商品分类', trigger: 'change' }],
brandName: [{ required: true, message: '请选择商品品牌', trigger: 'change' }],
manufacturerName: [{ required: true, message: '请选择商品厂家', trigger: 'change' }],
sortNo: [{ required: true, message: '商品排序不能为空', trigger: 'blur' }],
inventoryAlertUpperLimit: [{ required: true, message: '商品上限不能为空', trigger: 'blur' }],
inventoryAlertLowerLimitt: [{ required: true, message: '商品下限不能为空', trigger: 'blur' }]
}
}
},
methods: {
initData() {
req.getBrand({ useOrgSid: window.sessionStorage.getItem('defaultOrgPath').substring(window.sessionStorage.getItem('defaultOrgPath').lastIndexOf('/') + 1) }).then(resp => {
this.brandList = resp.data
})
req.getType({ useOrgSid: window.sessionStorage.getItem('defaultOrgPath').substring(window.sessionStorage.getItem('defaultOrgPath').lastIndexOf('/') + 1) }).then(resp => {
this.cateList = resp.data
})
req.getFacturer({ useOrgSid: window.sessionStorage.getItem('defaultOrgPath').substring(window.sessionStorage.getItem('defaultOrgPath').lastIndexOf('/') + 1) }).then(resp => {
this.facturerList = resp.data
})
req.getUnit({ useOrgSid: window.sessionStorage.getItem('defaultOrgPath').substring(window.sessionStorage.getItem('defaultOrgPath').lastIndexOf('/') + 1) }).then(resp => {
this.unitNameList = resp.data
})
typeValues({ type: 'goodsLevel' }).then((res) => {
if (res.success) {
this.goodsLevel_list = res.data
}
})
getTypeValueList({ type: 'goodsClass', groupNum: 'xzgl' }).then((res) => {
if (res.success) {
this.goodsClass_list = res.data
}
})
},
showAdd(orgSid, deptSid) {
this.$nextTick(() => {
this.$refs['form_obj'].clearValidate()
})
this.formobj.userSid = window.sessionStorage.getItem('userSid')
this.formobj.useOrgSid = deptSid
this.formobj.createOrgSid = orgSid
this.initData()
},
showEdit(row) {
this.$nextTick(() => {
this.$refs['form_obj'].clearValidate()
})
req.initGoods(row.sid).then(resp => {
if (resp.success) {
this.formobj = resp.data
this.initData()
for (var i = 0; i < resp.data.picPath.length; i++) {
var item = resp.data.picPath[i]
this.imgList.push({
url: item.url
})
}
}
}).catch(e => {
this.formobj = row
})
},
selectBrandChange(val) {
const choose = this.brandList.filter((item) => item.sid === val)
if (choose !== null && choose.length > 0) {
this.formobj.brandSid = choose[0].sid
this.formobj.brandName = choose[0].brandName
} else {
this.formobj.brandSid = ''
this.formobj.brandName = ''
}
},
levelChange(val) {
const choose = this.goodsLevel_list.filter((item) => item.dictKey === val)
if (choose !== null && choose.length > 0) {
this.formobj.goodsLevelValue = choose[0].dictValue
} else {
this.formobj.goodsLevelValue = ''
}
},
classChange(val) {
const choose = this.goodsClass_list.filter((item) => item.dictKey === val)
if (choose !== null && choose.length > 0) {
this.formobj.goodsClassValue = choose[0].dictValue
} else {
this.formobj.goodsClassValue = ''
}
},
selectCateChange(val) {
const choose = this.cateList.filter((item) => item.sid === val)
if (choose !== null && choose.length > 0) {
this.formobj.goodsTypeSid = choose[0].sid
this.formobj.goodsTypeName = choose[0].goodsTypeName
} else {
this.formobj.goodsTypeSid = ''
this.formobj.goodsTypeName = ''
}
},
selectfacturerChange(val) {
const choose = this.facturerList.filter((item) => item.sid === val)
if (choose !== null && choose.length > 0) {
this.formobj.manufacturerSid = choose[0].sid
this.formobj.manufacturerName = choose[0].manufacturerName
} else {
this.formobj.manufacturerSid = ''
this.formobj.manufacturerName = ''
}
},
selectunitNameChange(val) {
const choose = this.unitNameList.filter((item) => item.sid === val)
if (choose !== null && choose.length > 0) {
this.formobj.goodsUnitSid = choose[0].sid
this.formobj.goodsUnitName = choose[0].unitName
} else {
this.formobj.goodsUnitSid = ''
this.formobj.goodsUnitName = ''
}
},
backData(value) {
console.log('backData》》》》', value)
console.log('imgList', this.imgList)
this.formobj.picPath = this.imgList
},
saveOrUpdate() {
this.$refs['form_obj'].validate((valid) => {
if (valid) {
req.saveOrUpdate(this.formobj).then(resp => {
if (resp.success) {
this.$message({ showClose: true, type: 'success', message: resp.msg })
this.handleReturn('true')
} else {
// resp.code
}
}).catch(() => {})
}
})
},
handleReturn(isreload) {
if (isreload === 'true') this.$emit('reloadlist')
this.formobj = {
sid: '',
userSid: '',
orgPath: '',
useOrgSid: '',
createOrgSid: '',
goodsName: '',
goodsCode: '',
goodsPY: '',
barCode: '',
goodsUnitSid: '',
goodsUnitName: '',
goodsTypeSid: '',
goodsTypeName: '',
indexes: '',
shelfLife: '',
brandSid: '',
brandName: '',
manufacturerSid: '',
manufacturerName: '',
sortNo: '',
skuRemarks: '',
inventoryAlertUpperLimit: '',
inventoryAlertLowerLimit: '',
goodsClassKey: '', // key
goodsClassValue: '', //
goodsLevelKey: '', // key
goodsLevelValue: '', //
picPath: []
}
this.imgList = []
this.$emit('doback')
}
}
}
</script>
<style scoped>
.span-sty {
width: 130px !important;
}
.addinputInfo {
margin-left: 120px !important;
}
.formaddcopy02 .el-row .el-col /deep/ .el-form-item .addinputw {
margin-left: 120px !important;
width: calc(100% - 115px);
}
/deep/ .el-form-item__error {
margin-left: 120px !important;
}
</style>

203
anrui-management/anrui-management-ui/src/views/commodity/commodityInfo.vue

@ -0,0 +1,203 @@
<template>
<div>
<div class="tab-header webtop">
<!-- 标题 -->
<div>商品信息</div>
<!-- start 添加修改按钮 -->
<div>
<el-button type="info" size="small" @click="handleReturn()">关闭</el-button>
</div>
<!-- end 添加修改按钮 -->
<!-- end 详情按钮 -->
</div>
<div class="listconadd">
<el-form ref="form_obj" :model="formobj" :rules="rules" class="formaddcopy02">
<el-row style="border-top: 1px solid #e0e3eb">
<el-col :span="6">
<div class="span-sty">商品名称</div>
<el-form-item><span class="addinputInfo">{{ formobj.goodsName }}</span></el-form-item>
</el-col>
<el-col :span="6">
<div class="span-sty">商品编码</div>
<el-form-item><span class="addinputInfo">{{ formobj.goodsCode }}</span></el-form-item>
</el-col>
<el-col :span="6">
<div class="span-sty">拼音缩写</div>
<el-form-item><span class="addinputInfo">{{ formobj.goodsPY }}</span></el-form-item>
</el-col>
<el-col :span="6">
<div class="span-sty">条形码</div>
<el-form-item><span class="addinputInfo">{{ formobj.barCode }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<div class="span-sty">商品等级</div>
<el-form-item><span class="addinputInfo">{{ formobj.goodsLevelValue }}</span></el-form-item>
</el-col>
<el-col :span="6">
<div class="span-sty">商品类型</div>
<el-form-item><span class="addinputInfo">{{ formobj.goodsClassValue }}</span></el-form-item>
</el-col>
<el-col :span="6">
<div class="span-sty">商品分类</div>
<el-form-item><span class="addinputInfo">{{ formobj.goodsTypeName }}</span></el-form-item>
</el-col>
<el-col :span="6">
<div class="span-sty">品牌</div>
<el-form-item><span class="addinputInfo">{{ formobj.brandName }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<div class="span-sty">规格</div>
<el-form-item><span class="addinputInfo">{{ formobj.indexes }}</span></el-form-item>
</el-col>
<el-col :span="6">
<div class="span-sty">计量单位</div>
<el-form-item><span class="addinputInfo">{{ formobj.goodsUnitName }}</span></el-form-item>
</el-col>
<el-col :span="6">
<div class="span-sty">保质期()</div>
<el-form-item><span class="addinputInfo">{{ formobj.shelfLife }}</span></el-form-item>
</el-col>
<el-col :span="6">
<div class="span-sty">厂家</div>
<el-form-item><span class="addinputInfo">{{ formobj.manufacturerName }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">备注</div>
<el-form-item><span class="addinputInfo">{{ formobj.skuRemarks }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<div class="span-sty">库存上限</div>
<el-form-item><span class="addinputInfo">{{ formobj.inventoryAlertUpperLimit }}</span></el-form-item>
</el-col>
<el-col :span="6">
<div class="span-sty">库存下限</div>
<el-form-item><span class="addinputInfo">{{ formobj.inventoryAlertLowerLimit }}</span></el-form-item>
</el-col>
<el-col :span="12">
<div class="span-sty">排序</div>
<el-form-item><span class="addinputInfo">{{ formobj.sortNo }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">商品图片</div>
<el-form-item><el-image class="addinputInfo" style="width: 150px;height: 150px" v-for="(item, index) in formobj.picPath" :key="index" :src="item" :preview-src-list="formobj.picPath" /></el-form-item>
</el-col>
</el-row>
</el-form>
</div>
</div>
</template>
<script>
import req from '@/api/commodity/commodity'
export default {
name: 'CommodityInfo',
data() {
return {
formobj: {
sid: '',
userSid: '',
orgPath: '',
useOrgSid: '',
createOrgSid: '',
goodsName: '',
goodsCode: '',
goodsPY: '',
barCode: '',
goodsUnitSid: '',
goodsUnitName: '',
goodsTypeSid: '',
goodsTypeName: '',
indexes: '',
shelfLife: '',
brandSid: '',
brandName: '',
manufacturerSid: '',
manufacturerName: '',
sortNo: '',
skuRemarks: '',
inventoryAlertUpperLimit: '',
inventoryAlertLowerLimit: '',
goodsClassKey: '', // key
goodsClassValue: '', //
goodsLevelKey: '', // key
goodsLevelValue: '', //
picPath: []
},
rules: {}
}
},
methods: {
showInfo(row) {
this.$nextTick(() => {
this.$refs['form_obj'].clearValidate()
})
req.initGoods(row.sid).then(resp => {
if (resp.success) {
this.formobj = resp.data
if (this.formobj.picPath.length > 0) {
const aa = []
this.formobj.picPath.forEach((e) => {
aa.push(e.url)
})
this.formobj.asTechTitleApplyFileList = aa
}
}
}).catch(e => {
this.formobj = row
})
},
handleReturn() {
this.formobj = {
sid: '',
userSid: '',
orgPath: '',
useOrgSid: '',
createOrgSid: '',
goodsName: '',
goodsCode: '',
goodsPY: '',
barCode: '',
goodsUnitSid: '',
goodsUnitName: '',
goodsTypeSid: '',
goodsTypeName: '',
indexes: '',
shelfLife: '',
brandSid: '',
brandName: '',
manufacturerSid: '',
manufacturerName: '',
sortNo: '',
skuRemarks: '',
inventoryAlertUpperLimit: '',
inventoryAlertLowerLimit: '',
goodsClassKey: '', // key
goodsClassValue: '', //
goodsLevelKey: '', // key
goodsLevelValue: '', //
picPath: []
}
this.$emit('doback')
}
}
}
</script>
<style scoped>
.span-sty {
width: 130px !important;
}
.addinputInfo {
margin-left: 120px !important;
}
</style>

2
anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysuser/SysUserFeign.java

@ -241,7 +241,7 @@ public interface SysUserFeign {
@ApiOperation(value = "获取本部门下人员")
@GetMapping(value = "getAllPeo")
ResultBean<List<DeptUserVo>> getAllPeo(@RequestParam("deptSid") String deptSid);
ResultBean<List<DeptUserVo>> getAllPeo(@RequestParam("deptSid") String deptSid, @RequestParam(value = "name", required = false) String name);
@ApiOperation(value = "根据用户sid获取用户id")
@PostMapping(value = "selectIdBySid")

2
anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysuser/SysUserFeignFallback.java

@ -222,7 +222,7 @@ public class SysUserFeignFallback implements SysUserFeign {
}
@Override
public ResultBean<List<DeptUserVo>> getAllPeo(String deptSid) {
public ResultBean<List<DeptUserVo>> getAllPeo(String deptSid, String name) {
return null;
}

7
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/flow/FlowableRest.java

@ -48,6 +48,7 @@ import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.comparators.NullComparator;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@ -75,6 +76,7 @@ import java.util.stream.Collectors;
@RestController
@RequestMapping("v1/flow")
@Api(tags = "业务系统中业务和工作流相关操作")
@Slf4j
public class FlowableRest implements FlowableFeign {
@Autowired
@ -166,6 +168,7 @@ public class FlowableRest implements FlowableFeign {
@Override
public ResultBean<List<PCHistTaskListAndCommentList>> flowRecordAndComment(String procInsId, String deployId) {
long startTimes = System.currentTimeMillis(); // 记录开始时间
// 并行调用外部服务
CompletableFuture<ResultBean<com.yxt.anrui.flowable.api.flowtask.FlowRecordVo>> flowRecordFuture =
CompletableFuture.supplyAsync(() -> flowableService.flowRecord(procInsId, deployId));
@ -253,7 +256,7 @@ public class FlowableRest implements FlowableFeign {
stringObjectMap.put("taskName", f.get("nodeName").toString());
stringObjectMap.put("finishTime", null);
stringObjectMap.put("createTime", "");
stringObjectMap.put("taskUserInfos", new ArrayList<>());
stringObjectMap.put("taskUserInfos", Collections.emptyList());
a.setFlowableRecordVo(stringObjectMap);
a.setState("3");
@ -266,6 +269,8 @@ public class FlowableRest implements FlowableFeign {
// 返回结果
ResultBean<List<PCHistTaskListAndCommentList>> resultBean = new ResultBean<List<PCHistTaskListAndCommentList>>().success();
resultBean.setData(flowList);
long endTime = System.currentTimeMillis();
log.info("流程记录接口耗时 {} ms", endTime - startTimes);
return resultBean;
}

2
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysstaffinfo/SysStaffinfoMapper.xml

@ -396,7 +396,7 @@
left join sys_staffinfo si on su.staffSid = si.sid where su.isAdmin is NULL and si.personTypeKey != '01'
</select>
<select id="getStaffNameByRoleCode" resultType="com.yxt.anrui.portal.api.sysstaffinfo.StaffByRole">
SELECT
SELECT DISTINCT
u.sid as managerSid,
sf.name as manager
FROM

2
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuser/SysUserMapper.java

@ -206,5 +206,5 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
List<Map<String, String>> getUserByDeptSid(String deptSid);
List<DeptUserVo> getAllPeo(String deptSid);
List<DeptUserVo> getAllPeo(@Param("deptSid") String deptSid,@Param("name") String name);
}

5
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuser/SysUserMapper.xml

@ -480,5 +480,10 @@
#{deptSid},
'%'
)
AND st.name LIKE CONCAT(
'%',
#{name},
'%'
)
</select>
</mapper>

4
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuser/SysUserRest.java

@ -665,8 +665,8 @@ public class SysUserRest implements SysUserFeign {
}
@Override
public ResultBean<List<DeptUserVo>> getAllPeo(String deptSid) {
return sysUserService.getAllPeo(deptSid);
public ResultBean<List<DeptUserVo>> getAllPeo(String deptSid, String name) {
return sysUserService.getAllPeo(deptSid, name);
}
@Override

4
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuser/SysUserService.java

@ -1718,9 +1718,9 @@ public class SysUserService extends MybatisBaseService<SysUserMapper, SysUser> {
}
public ResultBean<List<DeptUserVo>> getAllPeo(String deptSid) {
public ResultBean<List<DeptUserVo>> getAllPeo(String deptSid, String name) {
ResultBean rb = ResultBean.fireFail();
List<DeptUserVo> allPeo = baseMapper.getAllPeo(deptSid);
List<DeptUserVo> allPeo = baseMapper.getAllPeo(deptSid, name);
return rb.success().setData(allPeo);
}
}

2
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyService.java

@ -3566,7 +3566,7 @@ public class LoanSettleApplyService extends MybatisBaseService<LoanSettleApplyMa
String useOrgSid = sysStaffOrgFeign.getOrgSidByPath(query.getOrgPath()).getData();
qw.eq("bs.useOrgSid", useOrgSid);
}
qw.apply("bv.settleState = '0'OR (bv.settleState = '3' AND date_format (bv.settleApplyDate,'%Y-%m-%d') < CURDATE())");
qw.apply("(bv.settleState = '0'OR (bv.settleState = '3' AND date_format (bv.settleApplyDate,'%Y-%m-%d') < CURDATE()))");
//回购状态,回购申请
if (StringUtils.isNotBlank(query.getType())) {
if (query.getType().equals("1")) {

6
anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmspecialrebate/OneExcelVo.java

@ -20,12 +20,12 @@ public class OneExcelVo {
@ExportEntityMap(CnName = "创建日期*", EnName = "createTime")
private String createTime;
@ExportEntityMap(CnName = "返利名称*", EnName = "rebateName")
private String rebateName;
@ExportEntityMap(CnName = "返利类型*", EnName = "rebateTypeValue")
private String rebateTypeValue;
@ExportEntityMap(CnName = "返利名称*", EnName = "rebateName")
private String rebateName;
@ExportEntityMap(CnName = "预提返利*", EnName = "estimateRebate")
private String estimateRebate;

11
anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmspecialrebate/ScmSpecialRebateFeign.java

@ -37,6 +37,7 @@ import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.text.ParseException;
import java.util.List;
@Api(tags = "专项返利表")
@FeignClient(
@ -51,6 +52,11 @@ public interface ScmSpecialRebateFeign {
@ResponseBody
public ResultBean<PagerVo<ScmSpecialRebateVo>> listPage(@RequestBody PagerQuery<ScmSpecialRebateQuery> pq);
@ApiOperation("根据条件分页查询数据的列表")
@PostMapping("/listAll")
@ResponseBody
public ResultBean<List<ScmSpecialRebateVo>> listAll(@RequestBody ScmSpecialRebateQuery query);
@ApiOperation("新增或修改")
@PostMapping("/save")
@ResponseBody
@ -81,6 +87,11 @@ public interface ScmSpecialRebateFeign {
@ResponseBody
public ResultBean<PagerVo<ScmSpecialRebateVo>> checkApplyGetSpecialRebate(@RequestBody PagerQuery<ScmSpecialRebateQuery> pq);
@ApiOperation("专项返利核对申请选择待核对专项返利信息")
@PostMapping("/checkApplyGetSpecialRebateAll")
@ResponseBody
public ResultBean<List<ScmSpecialRebateVo>> checkApplyGetSpecialRebateAll(@RequestBody ScmSpecialRebateQuery query);
@ApiOperation("专项返利核对申请选择已上传专项返利信息")
@PostMapping("/checkApplyGetAlreadyUploadSpecialRebate")
@ResponseBody

11
anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmspecialrebate/ScmSpecialRebateFeignFallback.java

@ -34,6 +34,7 @@ import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.text.ParseException;
import java.util.List;
/**
* Project: anrui-scm(专项返利管理) <br/>
@ -57,6 +58,11 @@ public class ScmSpecialRebateFeignFallback implements ScmSpecialRebateFeign {
return rb.setMsg("接口anrui-scm/scmspecialrebate/listPage无法访问");
}
@Override
public ResultBean<List<ScmSpecialRebateVo>> listAll(ScmSpecialRebateQuery query) {
return null;
}
@Override
public ResultBean save(ScmSpecialRebateDto dto){
return ResultBean.fireFail().setMsg("接口anrui-scm/scmspecialrebate/save无法访问");
@ -88,6 +94,11 @@ public class ScmSpecialRebateFeignFallback implements ScmSpecialRebateFeign {
return null;
}
@Override
public ResultBean<List<ScmSpecialRebateVo>> checkApplyGetSpecialRebateAll(ScmSpecialRebateQuery query) {
return null;
}
@Override
public ResultBean<PagerVo<ScmSpecialRebateVo>> checkApplyGetAlreadyUploadSpecialRebate(PagerQuery<ScmSpecialRebateQuery> pq) {
return null;

6
anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmspecialrebate/TwoExcelVo.java

@ -20,12 +20,12 @@ public class TwoExcelVo {
@ExportEntityMap(CnName = "创建日期*", EnName = "createTime")
private String createTime;
@ExportEntityMap(CnName = "返利名称*", EnName = "rebateName")
private String rebateName;
@ExportEntityMap(CnName = "返利类型*", EnName = "rebateTypeValue")
private String rebateTypeValue;
@ExportEntityMap(CnName = "返利名称*", EnName = "rebateName")
private String rebateName;
@ExportEntityMap(CnName = "预提返利*", EnName = "estimateRebate")
private String estimateRebate;

8
anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/OneExcelVo.java

@ -30,14 +30,12 @@ public class OneExcelVo {
@ExportEntityMap(CnName = "创建日期*", EnName = "createTime")
private String createTime;
//返利名称
@ExportEntityMap(CnName = "返利名称*", EnName = "rebateName")
private String rebateName;
//返利类型
@ExportEntityMap(CnName = "返利类型*", EnName = "rebateTypeValue")
private String rebateTypeValue;
@ExportEntityMap(CnName = "返利名称*", EnName = "rebateName")
private String rebateName;
//预提返利
@ExportEntityMap(CnName = "预提返利*", EnName = "estimateRebate")
private String estimateRebate;

10
anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/ScmVehRebateFeign.java

@ -67,6 +67,11 @@ public interface ScmVehRebateFeign {
@ResponseBody
public ResultBean<PagerVo<ScmVehRebateVo>> listPage(@RequestBody PagerQuery<ScmVehRebateQuery> pq);
@ApiOperation("根据条件分页查询数据的列表")
@PostMapping("/listAll")
@ResponseBody
public ResultBean<List<ScmVehRebateVo>> listAll(@RequestBody ScmVehRebateQuery query);
@ApiOperation("单车返利未预提申请选择单车返利信息")
@PostMapping("/withApplyGetVehRebate")
@ResponseBody
@ -77,6 +82,11 @@ public interface ScmVehRebateFeign {
@ResponseBody
public ResultBean<PagerVo<ScmVehRebateVo>> checkApplyGetVehRebate(@RequestBody PagerQuery<ScmVehRebateQuery> pq);
@ApiOperation("单车返利核对申请选择待核对单车返利信息")
@PostMapping("/checkApplyGetVehRebateAll")
@ResponseBody
public ResultBean<List<ScmVehRebateVo>> checkApplyGetVehRebateAll(@RequestBody ScmVehRebateQuery query);
@ApiOperation("一次导出")
@PostMapping("/excelListOne")
public void excelListOne(@RequestBody ScmVehRebateQuery scmVehRebateQuery);

10
anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/ScmVehRebateFeignFallback.java

@ -58,6 +58,11 @@ public class ScmVehRebateFeignFallback implements ScmVehRebateFeign {
return rb.setMsg("接口anrui-scm/scmvehrebate/listPage无法访问");
}
@Override
public ResultBean<List<ScmVehRebateVo>> listAll(ScmVehRebateQuery query) {
return null;
}
@Override
public ResultBean<PagerVo<ScmVehRebateVo>> withApplyGetVehRebate(PagerQuery<ScmVehRebateQuery> pq) {
return null;
@ -68,6 +73,11 @@ public class ScmVehRebateFeignFallback implements ScmVehRebateFeign {
return null;
}
@Override
public ResultBean<List<ScmVehRebateVo>> checkApplyGetVehRebateAll(ScmVehRebateQuery query) {
return null;
}
@Override
public void excelListOne(ScmVehRebateQuery scmVehRebateQuery) {

8
anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/TwoExcelVo.java

@ -29,14 +29,12 @@ public class TwoExcelVo {
@ExportEntityMap(CnName = "创建日期*", EnName = "createTime")
private String createTime;
//返利名称
@ExportEntityMap(CnName = "返利名称*", EnName = "rebateName")
private String rebateName;
//返利类型
@ExportEntityMap(CnName = "返利类型*", EnName = "rebateTypeValue")
private String rebateTypeValue;
@ExportEntityMap(CnName = "返利名称*", EnName = "rebateName")
private String rebateName;
//预提返利
@ExportEntityMap(CnName = "预提返利*", EnName = "estimateRebate")
private String estimateRebate;

4
anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmspecialrebate/ScmSpecialRebateMapper.java

@ -85,4 +85,8 @@ public interface ScmSpecialRebateMapper extends BaseMapper<ScmSpecialRebate> {
void updateAdjustmentState(@Param("sid") String sid, @Param("adjustmentState") int adjustmentState);
List<ScmSpecialRebateExcelVo> excelList(@Param(Constants.WRAPPER) QueryWrapper<ScmSpecialRebate> qw);
List<ScmSpecialRebateVo> checkApplyGetSpecialRebateAll(@Param(Constants.WRAPPER) QueryWrapper<ScmSpecialRebate> qw);
List<ScmSpecialRebateVo> listAll(@Param(Constants.WRAPPER) QueryWrapper<ScmSpecialRebate> qw);
}

22
anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmspecialrebate/ScmSpecialRebateMapper.xml

@ -151,4 +151,26 @@
${ew.sqlSegment}
</where>
</select>
<select id="checkApplyGetSpecialRebateAll" resultType="com.yxt.anrui.scm.api.scmspecialrebate.ScmSpecialRebateVo">
SELECT *,
expectItureCost + expectTreatCost + expectSuppCost AS expectCost,
expectItureCost + expectTreatCost + expectSuppCost AS withholdCost,
onceItureCost + onceTreatCost + onceSuppCost + secondItureCost + secondTreatCost + secondSuppCost AS money
FROM scm_special_rebate
<where>
${ew.sqlSegment}
</where>
</select>
<select id="listAll" resultType="com.yxt.anrui.scm.api.scmspecialrebate.ScmSpecialRebateVo">
SELECT *,
expectItureCost + expectTreatCost + expectSuppCost AS expectCost,
expectItureCost + expectTreatCost + expectSuppCost AS withholdCost,
onceItureCost + onceTreatCost + onceSuppCost + secondItureCost + secondTreatCost + secondSuppCost AS money
FROM scm_special_rebate
<where>
${ew.sqlSegment}
</where>
</select>
</mapper>

14
anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmspecialrebate/ScmSpecialRebateRest.java

@ -73,6 +73,13 @@ public class ScmSpecialRebateRest implements ScmSpecialRebateFeign {
return rb.success().setData(pv);
}
@Override
public ResultBean<List<ScmSpecialRebateVo>> listAll(ScmSpecialRebateQuery query) {
ResultBean rb = ResultBean.fireFail();
List<ScmSpecialRebateVo> scmSpecialRebateVoList = scmSpecialRebateService.listAll(query);
return rb.success().setData(scmSpecialRebateVoList);
}
@ApiOperation("导出")
@PostMapping("/excelList")
public void excelList(@RequestBody ScmSpecialRebateQuery query) {
@ -147,6 +154,13 @@ public class ScmSpecialRebateRest implements ScmSpecialRebateFeign {
return rb.success().setData(pv);
}
@Override
public ResultBean<List<ScmSpecialRebateVo>> checkApplyGetSpecialRebateAll(ScmSpecialRebateQuery query) {
ResultBean rb = ResultBean.fireFail();
List<ScmSpecialRebateVo> scmSpecialRebateVoList = scmSpecialRebateService.checkApplyGetSpecialRebateAll(query);
return rb.success().setData(scmSpecialRebateVoList);
}
@Override
public ResultBean<PagerVo<ScmSpecialRebateVo>> checkApplyGetAlreadyUploadSpecialRebate(PagerQuery<ScmSpecialRebateQuery> pq) {
ResultBean rb = ResultBean.fireFail();

172
anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmspecialrebate/ScmSpecialRebateService.java

@ -150,6 +150,76 @@ public class ScmSpecialRebateService extends MybatisBaseService<ScmSpecialRebate
return p;
}
public List<ScmSpecialRebateVo> listAll(ScmSpecialRebateQuery query) {
QueryWrapper<ScmSpecialRebate> qw = new QueryWrapper<>();
//========================================数据授权开始
if (StringUtils.isNotBlank(query.getMenuUrl())) {
PrivilegeQuery privilegeQuery = new PrivilegeQuery();
privilegeQuery.setOrgPath(query.getOrgPath());
privilegeQuery.setMenuUrl(query.getMenuUrl());
privilegeQuery.setMenuSid(query.getMenuSid());
privilegeQuery.setUserSid(query.getUserSid());
ResultBean<String> 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("orgPath", orgSidPath);
} else if ("2".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i2);
qw.like("orgPath", orgSidPath);
} else if ("3".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i3);
qw.like("orgPath", orgSidPath);
} else if ("4".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i4);
qw.like("orgPath", orgSidPath);
} else if ("5".equals(orgLevelKey)) {
qw.eq("createBySid", query.getUserSid());
} else {
List<ScmSpecialRebateVo> p = new ArrayList<>();
return p;
}
} else {
List<ScmSpecialRebateVo> p = new ArrayList<>();
return p;
}
}
if (StringUtils.isNotBlank(query.getCreateOrgName())) {
qw.like("createOrgName", query.getCreateOrgName());
}
if (StringUtils.isNotBlank(query.getBrandName())) {
qw.like("brandName", query.getBrandName());
}
if (StringUtils.isNotBlank(query.getPurchaseSystemName())) {
qw.like("purchaseSystemName", query.getPurchaseSystemName());
}
if (StringUtils.isNotBlank(query.getRebateTypeKey())) {
qw.eq("rebateTypeKey", query.getRebateTypeKey());
}
if (StringUtils.isNotBlank(query.getRebateName())) {
qw.like("rebateName", query.getRebateName());
}
if (StringUtils.isNotBlank(query.getState())) {
qw.eq("state", query.getState());
}
String createStartTime = query.getCreateStartTime();
String createEndTime = query.getCreateEndTime();
qw.apply(StringUtils.isNotBlank(createStartTime), "date_format (createTime,'%Y-%m-%d') >= date_format('" + createStartTime + "','%Y-%m-%d')").
apply(StringUtils.isNotBlank(createEndTime), "date_format (createTime,'%Y-%m-%d') <= date_format('" + createEndTime + "','%Y-%m-%d')"
);
qw.orderByDesc("createTime");
List<ScmSpecialRebateVo> scmSpecialRebateVoList = baseMapper.listAll(qw);
return scmSpecialRebateVoList;
}
public ResultBean saveOrUpdateDto(ScmSpecialRebateDto dto) {
ResultBean rb = ResultBean.fireFail();
String dtoSid = dto.getSid();
@ -318,6 +388,86 @@ public class ScmSpecialRebateService extends MybatisBaseService<ScmSpecialRebate
return p;
}
public List<ScmSpecialRebateVo> checkApplyGetSpecialRebateAll(ScmSpecialRebateQuery query) {
QueryWrapper<ScmSpecialRebate> qw = new QueryWrapper<>();
//========================================数据授权开始
if (StringUtils.isNotBlank(query.getMenuUrl())) {
PrivilegeQuery privilegeQuery = new PrivilegeQuery();
privilegeQuery.setOrgPath(query.getOrgPath());
privilegeQuery.setMenuUrl(query.getMenuUrl());
privilegeQuery.setMenuSid(query.getMenuSid());
privilegeQuery.setUserSid(query.getUserSid());
ResultBean<String> 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("orgPath", orgSidPath);
} else if ("2".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i2);
qw.like("orgPath", orgSidPath);
} else if ("3".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i3);
qw.like("orgPath", orgSidPath);
} else if ("4".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i4);
qw.like("orgPath", orgSidPath);
} else if ("5".equals(orgLevelKey)) {
qw.eq("createBySid", query.getUserSid());
} else {
List<ScmSpecialRebateVo> p = new ArrayList<>();
return p;
}
} else {
List<ScmSpecialRebateVo> p = new ArrayList<>();
return p;
}
}
if (StringUtils.isNotBlank(query.getCreateOrgName())) {
qw.like("createOrgName", query.getCreateOrgName());
}
if (StringUtils.isNotBlank(query.getBrandName())) {
qw.like("brandName", query.getBrandName());
}
if (StringUtils.isNotBlank(query.getPurchaseSystemName())) {
qw.like("purchaseSystemName", query.getPurchaseSystemName());
}
if (StringUtils.isNotBlank(query.getRebateTypeKey())) {
qw.eq("rebateTypeKey", query.getRebateTypeKey());
}
if (StringUtils.isNotBlank(query.getRebateName())) {
qw.like("rebateName", query.getRebateName());
}
if (StringUtils.isNotBlank(query.getOnceCheckState())) {
qw.eq("onceCheckState", query.getOnceCheckState());
}
String createStartTime = query.getCreateStartTime();
String createEndTime = query.getCreateEndTime();
qw.apply(StringUtils.isNotBlank(createStartTime), "date_format (createTime,'%Y-%m-%d') >= date_format('" + createStartTime + "','%Y-%m-%d')").
apply(StringUtils.isNotBlank(createEndTime), "date_format (createTime,'%Y-%m-%d') <= date_format('" + createEndTime + "','%Y-%m-%d')"
);
qw.eq("state", 2);
qw.eq("adjustmentState", 0);
qw.orderByDesc("createTime");
List<ScmSpecialRebateVo> scmSpecialRebateVoList = baseMapper.checkApplyGetSpecialRebateAll(qw);
for (ScmSpecialRebateVo record : scmSpecialRebateVoList) {
//上传状态:未上传
if (StringUtils.isBlank(record.getUploadDate())) {
record.setUploadState("0");
} else {//上传状态:已上传
record.setUploadState("1");
}
}
return scmSpecialRebateVoList;
}
public PagerVo<ScmSpecialRebateVo> checkApplyGetAlreadyUploadSpecialRebate(PagerQuery<ScmSpecialRebateQuery> pq) {
ScmSpecialRebateQuery query = pq.getParams();
QueryWrapper<ScmSpecialRebate> qw = new QueryWrapper<>();
@ -552,10 +702,10 @@ public class ScmSpecialRebateService extends MybatisBaseService<ScmSpecialRebate
importVo.setCreateTime(temp);
break;
case 3:
importVo.setRebateName(temp);
importVo.setRebateTypeValue(temp);
break;
case 4:
importVo.setRebateTypeValue(temp);
importVo.setRebateName(temp);
break;
case 5:
importVo.setEstimateRebate(temp);
@ -611,10 +761,10 @@ public class ScmSpecialRebateService extends MybatisBaseService<ScmSpecialRebate
word = "创建日期";
break;
case 3:
word = "返利名称";
word = "返利类型";
break;
case 4:
word = "返利类型";
word = "返利名称";
break;
case 5:
word = "预提返利";
@ -1026,10 +1176,10 @@ public class ScmSpecialRebateService extends MybatisBaseService<ScmSpecialRebate
importVo.setCreateTime(temp);
break;
case 3:
importVo.setRebateName(temp);
importVo.setRebateTypeValue(temp);
break;
case 4:
importVo.setRebateTypeValue(temp);
importVo.setRebateName(temp);
break;
case 5:
importVo.setEstimateRebate(temp);
@ -1094,10 +1244,10 @@ public class ScmSpecialRebateService extends MybatisBaseService<ScmSpecialRebate
word = "创建日期";
break;
case 3:
word = "返利名称";
word = "返利类型";
break;
case 4:
word = "返利类型";
word = "返利名称";
break;
case 5:
word = "预提返利";
@ -1481,6 +1631,9 @@ public class ScmSpecialRebateService extends MybatisBaseService<ScmSpecialRebate
qw.eq("adjustmentState", 0);
qw.eq("state", 2);
qw.eq("onceCheckState", 0);
qw.and(wrapper -> wrapper.eq("uploadDate", "")
.or().isNull("uploadDate")
);
qw.orderByDesc("createTime");
List<OneExcelVo> oneExcelVos = baseMapper.excelListOne(qw);
for (OneExcelVo oneExcelVo : oneExcelVos) {
@ -1548,8 +1701,9 @@ public class ScmSpecialRebateService extends MybatisBaseService<ScmSpecialRebate
qw.apply(StringUtils.isNotBlank(createStartTime), "date_format (createTime,'%Y-%m-%d') >= date_format('" + createStartTime + "','%Y-%m-%d')").
apply(StringUtils.isNotBlank(createEndTime), "date_format (createTime,'%Y-%m-%d') <= date_format('" + createEndTime + "','%Y-%m-%d')"
);
qw.ne("adjustmentState", 0);
qw.eq("adjustmentState", 0);
qw.eq("state", 2);
qw.ne("uploadDate", "");
qw.isNotNull("uploadDate");
qw.orderByDesc("createTime");
List<TwoExcelVo> twoExcelVos = baseMapper.excelListTwo(qw);

4
anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmspecialrebatecheckapply/ScmSpecialrebateCheckapplyService.java

@ -49,11 +49,9 @@ import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.anrui.portal.api.flow.PCHistTaskListAndCommentList;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrg;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign;
import com.yxt.anrui.portal.api.sysuser.PrivilegeQuery;
import com.yxt.anrui.portal.api.sysuser.SysUserFeign;
import com.yxt.anrui.portal.api.sysuser.SysUserVo;
import com.yxt.anrui.scm.api.flow.FlowTaskVo;
import com.yxt.anrui.scm.api.scmspecialrebate.ScmSpecialRebate;
import com.yxt.anrui.scm.api.scmspecialrebatecheckapply.*;
@ -560,7 +558,7 @@ public class ScmSpecialrebateCheckapplyService extends MybatisBaseService<ScmSpe
}
}
}
if (!rebate.getRebateTypeValue().equals("行销政策")) {
if (!rebate.getRebateTypeValue().contains("行销政策")) {
if (onceState.intValue() == 0) {
//没有进行过核对申请
if (ysc.compareTo(BigDecimal.ZERO) != 0) {

4
anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehrebate/ScmVehRebateMapper.java

@ -83,4 +83,8 @@ public interface ScmVehRebateMapper extends BaseMapper<ScmVehRebate> {
void delByVehSid(String vehSid);
List<ScmVehRebateExcelVo> excelList(@Param(Constants.WRAPPER) QueryWrapper<ScmVehRebate> qw);
List<ScmVehRebateVo> checkApplyGetVehRebateAll(@Param(Constants.WRAPPER) QueryWrapper<ScmVehRebate> qw);
List<ScmVehRebateVo> listAll(@Param(Constants.WRAPPER) QueryWrapper<ScmVehRebate> qw);
}

28
anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehrebate/ScmVehRebateMapper.xml

@ -131,4 +131,32 @@
${ew.sqlSegment}
</where>
</select>
<select id="checkApplyGetVehRebateAll" resultType="com.yxt.anrui.scm.api.scmvehrebate.ScmVehRebateVo">
SELECT
*,
sid AS vehRebateSid,
expectTreatCost + expectSuppCost AS expectCost,
expectTreatCost + expectSuppCost AS withholdCost,
onceTreatCost + onceSuppCost + secondTreatCost + secondSuppCost AS money
FROM
scm_veh_rebate
<where>
${ew.sqlSegment}
</where>
</select>
<select id="listAll" resultType="com.yxt.anrui.scm.api.scmvehrebate.ScmVehRebateVo">
SELECT
*,
sid AS vehRebateSid,
expectTreatCost + expectSuppCost AS expectCost,
expectTreatCost + expectSuppCost AS withholdCost,
onceTreatCost + onceSuppCost + secondTreatCost + secondSuppCost AS money
FROM
scm_veh_rebate
<where>
${ew.sqlSegment}
</where>
</select>
</mapper>

14
anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehrebate/ScmVehRebateRest.java

@ -79,6 +79,13 @@ public class ScmVehRebateRest implements ScmVehRebateFeign {
return rb.success().setData(pv);
}
@Override
public ResultBean<List<ScmVehRebateVo>> listAll(ScmVehRebateQuery query) {
ResultBean rb = ResultBean.fireFail();
List<ScmVehRebateVo> scmVehRebateVoList = scmVehRebateService.listAll(query);
return rb.success().setData(scmVehRebateVoList);
}
@ApiOperation("导出")
@PostMapping("/excelList")
public void excelList(@RequestBody ScmVehRebateQuery query) {
@ -109,6 +116,13 @@ public class ScmVehRebateRest implements ScmVehRebateFeign {
return rb.success().setData(pv);
}
@Override
public ResultBean<List<ScmVehRebateVo>> checkApplyGetVehRebateAll(ScmVehRebateQuery query) {
ResultBean rb = ResultBean.fireFail();
List<ScmVehRebateVo> scmVehRebateVoList = scmVehRebateService.checkApplyGetVehRebateAll(query);
return rb.success().setData(scmVehRebateVoList);
}
@Override
public void excelListOne(ScmVehRebateQuery scmVehRebateQuery) {
//得到所有要导出的数据

223
anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehrebate/ScmVehRebateService.java

@ -66,19 +66,6 @@ import java.net.URLEncoder;
import java.util.*;
import java.util.regex.Pattern;
/**
* Project: anrui-scm(单车返利) <br/>
* File: ScmVehRebateService.java <br/>
* Class: com.yxt.anrui.scm.biz.scmvehrebate.ScmVehRebateService <br/>
* Description: 单车返利表 业务逻辑. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2022-08-24 09:01:54 <br/>
*
* @author liupopo
* @version 1.0
* @since 1.0
*/
@Service
public class ScmVehRebateService extends MybatisBaseService<ScmVehRebateMapper, ScmVehRebate> {
@ -171,7 +158,7 @@ public class ScmVehRebateService extends MybatisBaseService<ScmVehRebateMapper,
IPage<ScmVehRebate> page = PagerUtil.queryToPage(pq);
IPage<ScmVehRebateVo> pagging = baseMapper.selectPageVo(page, qw);
for (ScmVehRebateVo record : pagging.getRecords()) {
if ("001".equals(record.getCalculationModeKey())){
if ("001".equals(record.getCalculationModeKey())) {
record.setCalculationStandard(record.getCalculationStandard() + "%");
}
}
@ -179,6 +166,87 @@ public class ScmVehRebateService extends MybatisBaseService<ScmVehRebateMapper,
return p;
}
public List<ScmVehRebateVo> listAll(ScmVehRebateQuery query) {
QueryWrapper<ScmVehRebate> qw = new QueryWrapper<>();
//========================================数据授权开始
if (StringUtils.isNotBlank(query.getMenuUrl())) {
PrivilegeQuery privilegeQuery = new PrivilegeQuery();
privilegeQuery.setOrgPath(query.getOrgPath());
privilegeQuery.setMenuUrl(query.getMenuUrl());
privilegeQuery.setMenuSid(query.getMenuSid());
privilegeQuery.setUserSid(query.getUserSid());
ResultBean<String> 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("orgPath", orgSidPath);
} else if ("2".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i2);
qw.like("orgPath", orgSidPath);
} else if ("3".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i3);
qw.like("orgPath", orgSidPath);
} else if ("4".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i4);
qw.like("orgPath", orgSidPath);
} else if ("5".equals(orgLevelKey)) {
qw.eq("createBySid", query.getUserSid());
} else {
List<ScmVehRebateVo> p = new ArrayList<>();
return p;
}
} else {
List<ScmVehRebateVo> p = new ArrayList<>();
return p;
}
}
if (StringUtils.isNotBlank(query.getBrandName())) {
qw.like("brandName", query.getBrandName());
}
if (StringUtils.isNotBlank(query.getVehModelName())) {
qw.like("vehModelName", query.getVehModelName());
}
if (StringUtils.isNotBlank(query.getVinNo())) {
qw.like("vinNo", query.getVinNo());
}
if (StringUtils.isNotBlank(query.getRebateTypeKey())) {
qw.eq("rebateTypeKey", query.getRebateTypeKey());
}
if (StringUtils.isNotBlank(query.getRebateName())) {
qw.like("rebateName", query.getRebateName());
}
if (StringUtils.isNotBlank(query.getState())) {
qw.eq("state", query.getState());
}
if (StringUtils.isNotBlank(query.getUseOrgName())) {
qw.like("useOrgName", query.getUseOrgName());
}
if (StringUtils.isNotBlank(query.getPurchaseSystemName())) {
qw.like("purchaseSystemName", query.getPurchaseSystemName());
}
String createStartTime = query.getCreateStartTime();
String createEndTime = query.getCreateEndTime();
qw.apply(StringUtils.isNotBlank(createStartTime), "date_format (createTime,'%Y-%m-%d') >= date_format('" + createStartTime + "','%Y-%m-%d')").
apply(StringUtils.isNotBlank(createEndTime), "date_format (createTime,'%Y-%m-%d') <= date_format('" + createEndTime + "','%Y-%m-%d')"
);
qw.orderByDesc("createTime");
List<ScmVehRebateVo> scmVehRebateVoList = baseMapper.listAll(qw);
for (ScmVehRebateVo record : scmVehRebateVoList) {
if ("001".equals(record.getCalculationModeKey())) {
record.setCalculationStandard(record.getCalculationStandard() + "%");
}
}
return scmVehRebateVoList;
}
public PagerVo<ScmVehRebateVo> withApplyGetVehRebate(PagerQuery<ScmVehRebateQuery> pq) {
ScmVehRebateQuery query = pq.getParams();
QueryWrapper<ScmVehRebate> qw = new QueryWrapper<>();
@ -302,6 +370,89 @@ public class ScmVehRebateService extends MybatisBaseService<ScmVehRebateMapper,
return p;
}
public List<ScmVehRebateVo> checkApplyGetVehRebateAll(ScmVehRebateQuery query) {
QueryWrapper<ScmVehRebate> qw = new QueryWrapper<>();
//========================================数据授权开始
if (StringUtils.isNotBlank(query.getMenuUrl())) {
PrivilegeQuery privilegeQuery = new PrivilegeQuery();
privilegeQuery.setOrgPath(query.getOrgPath());
privilegeQuery.setMenuUrl(query.getMenuUrl());
privilegeQuery.setMenuSid(query.getMenuSid());
privilegeQuery.setUserSid(query.getUserSid());
ResultBean<String> 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("orgPath", orgSidPath);
} else if ("2".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i2);
qw.like("orgPath", orgSidPath);
} else if ("3".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i3);
qw.like("orgPath", orgSidPath);
} else if ("4".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i4);
qw.like("orgPath", orgSidPath);
} else if ("5".equals(orgLevelKey)) {
qw.eq("createBySid", query.getUserSid());
} else {
List<ScmVehRebateVo> p = new ArrayList<>();
return p;
}
} else {
List<ScmVehRebateVo> p = new ArrayList<>();
return p;
}
}
if (StringUtils.isNotBlank(query.getBrandName())) {
qw.like("brandName", query.getBrandName());
}
if (StringUtils.isNotBlank(query.getVehModelName())) {
qw.like("vehModelName", query.getVehModelName());
}
if (StringUtils.isNotBlank(query.getVinNo())) {
qw.like("vinNo", query.getVinNo());
}
if (StringUtils.isNotBlank(query.getRebateTypeValue())) {
qw.like("rebateTypeValue", query.getRebateTypeValue());
}
if (StringUtils.isNotBlank(query.getRebateName())) {
qw.like("rebateName", query.getRebateName());
}
if (StringUtils.isNotBlank(query.getPurchaseSystemName())) {
qw.like("purchaseSystemName", query.getPurchaseSystemName());
}
if (StringUtils.isNotBlank(query.getUseOrgName())) {
qw.like("useOrgName", query.getUseOrgName());
}
String createStartTime = query.getCreateStartTime();
String createEndTime = query.getCreateEndTime();
qw.apply(StringUtils.isNotBlank(createStartTime), "date_format (createTime,'%Y-%m-%d') >= date_format('" + createStartTime + "','%Y-%m-%d')").
apply(StringUtils.isNotBlank(createEndTime), "date_format (createTime,'%Y-%m-%d') <= date_format('" + createEndTime + "','%Y-%m-%d')"
);
qw.eq("state", 2);
qw.eq("adjustmentState", 0);
qw.orderByDesc("createTime");
List<ScmVehRebateVo> scmVehRebateVoList = baseMapper.checkApplyGetVehRebateAll(qw);
for (ScmVehRebateVo record : scmVehRebateVoList) {
//上传状态:未上传
if (StringUtils.isBlank(record.getUploadDate())) {
record.setUploadState("0");
} else {//上传状态:已上传
record.setUploadState("1");
}
}
return scmVehRebateVoList;
}
public List<OneExcelVo> excelListOne(ScmVehRebateQuery query) {
QueryWrapper<ScmVehRebate> qw = new QueryWrapper<>();
//========================================数据授权开始
@ -373,6 +524,9 @@ public class ScmVehRebateService extends MybatisBaseService<ScmVehRebateMapper,
qw.eq("adjustmentState", 0);
qw.eq("state", 2);
qw.eq("onceCheckState", 0);
qw.and(wrapper -> wrapper.eq("uploadDate", "")
.or().isNull("uploadDate")
);
qw.orderByDesc("createTime");
List<OneExcelVo> oneExcelVos = baseMapper.excelListOne(qw);
for (OneExcelVo oneExcelVo : oneExcelVos) {
@ -449,8 +603,9 @@ public class ScmVehRebateService extends MybatisBaseService<ScmVehRebateMapper,
qw.apply(StringUtils.isNotBlank(createStartTime), "date_format (createTime,'%Y-%m-%d') >= date_format('" + createStartTime + "','%Y-%m-%d')").
apply(StringUtils.isNotBlank(createEndTime), "date_format (createTime,'%Y-%m-%d') <= date_format('" + createEndTime + "','%Y-%m-%d')"
);
qw.ne("adjustmentState", 0);
qw.eq("adjustmentState", 0);
qw.eq("state", 2);
qw.ne("uploadDate", "");
qw.isNotNull("uploadDate");
qw.orderByDesc("createTime");
List<TwoExcelVo> twoExcelVos = baseMapper.excelListTwo(qw);
@ -541,7 +696,7 @@ public class ScmVehRebateService extends MybatisBaseService<ScmVehRebateMapper,
scmVehRebate.setUseOrgName(sysOrganizationVo.getName());
scmVehRebate.setOrgPath(dto.getOrgPath());
scmVehRebate.setCreateBySid(dto.getCreateBySid());
if (!"2".equals(scmVehRebateVeh.getState())){
if (!"2".equals(scmVehRebateVeh.getState())) {
scmVehRebate.setState(0);
}
scmVehRebate.setPurchaseSystemSid(scmVehRebateVeh.getPurchaseSystemSid());
@ -1091,10 +1246,10 @@ public class ScmVehRebateService extends MybatisBaseService<ScmVehRebateMapper,
importVo.setCreateTime(temp);
break;
case 4:
importVo.setRebateName(temp);
importVo.setRebateTypeValue(temp);
break;
case 5:
importVo.setRebateTypeValue(temp);
importVo.setRebateName(temp);
break;
case 6:
importVo.setEstimateRebate(temp);
@ -1150,10 +1305,10 @@ public class ScmVehRebateService extends MybatisBaseService<ScmVehRebateMapper,
word = "创建日期";
break;
case 4:
word = "返利名称";
word = "返利类型";
break;
case 5:
word = "返利类型";
word = "返利名称";
break;
case 6:
word = "预提返利";
@ -1531,10 +1686,10 @@ public class ScmVehRebateService extends MybatisBaseService<ScmVehRebateMapper,
importVo.setCreateTime(temp);
break;
case 4:
importVo.setRebateName(temp);
importVo.setRebateTypeValue(temp);
break;
case 5:
importVo.setRebateTypeValue(temp);
importVo.setRebateName(temp);
break;
case 6:
importVo.setEstimateRebate(temp);
@ -1599,10 +1754,10 @@ public class ScmVehRebateService extends MybatisBaseService<ScmVehRebateMapper,
word = "创建日期";
break;
case 4:
word = "返利名称";
word = "返利类型";
break;
case 5:
word = "返利类型";
word = "返利名称";
break;
case 6:
word = "预提返利";
@ -2034,29 +2189,29 @@ public class ScmVehRebateService extends MybatisBaseService<ScmVehRebateMapper,
qw.orderByDesc("createTime");
List<ScmVehRebateExcelVo> scmVehRebateExcelVos = baseMapper.excelList(qw);
for (ScmVehRebateExcelVo scmVehRebateExcelVo : scmVehRebateExcelVos) {
if (scmVehRebateExcelVo.getState().equals("0")){
if (scmVehRebateExcelVo.getState().equals("0")) {
scmVehRebateExcelVo.setState("未预提");
}else if (scmVehRebateExcelVo.getState().equals("1")){
} else if (scmVehRebateExcelVo.getState().equals("1")) {
scmVehRebateExcelVo.setState("预提中");
}else if (scmVehRebateExcelVo.getState().equals("2")){
} else if (scmVehRebateExcelVo.getState().equals("2")) {
scmVehRebateExcelVo.setState("待核对");
}else if (scmVehRebateExcelVo.getState().equals("3")){
} else if (scmVehRebateExcelVo.getState().equals("3")) {
scmVehRebateExcelVo.setState("核对中");
}else if (scmVehRebateExcelVo.getState().equals("4")){
} else if (scmVehRebateExcelVo.getState().equals("4")) {
scmVehRebateExcelVo.setState("已核对");
}
if (scmVehRebateExcelVo.getOnceCheckState().equals("0")){
if (scmVehRebateExcelVo.getOnceCheckState().equals("0")) {
scmVehRebateExcelVo.setOnceCheckState("否");
}else if (scmVehRebateExcelVo.getOnceCheckState().equals("1")){
} else if (scmVehRebateExcelVo.getOnceCheckState().equals("1")) {
scmVehRebateExcelVo.setOnceCheckState("是");
}else if (scmVehRebateExcelVo.getOnceCheckState().equals("2")){
} else if (scmVehRebateExcelVo.getOnceCheckState().equals("2")) {
scmVehRebateExcelVo.setOnceCheckState("一次核对中");
}
scmVehRebateExcelVo.setCreateTime(DateUtil.formatDate(DateUtil.parse(scmVehRebateExcelVo.getCreateTime())));
if ("是".equals(scmVehRebateExcelVo.getIsAdjustment())){
if ("是".equals(scmVehRebateExcelVo.getIsAdjustment())) {
scmVehRebateExcelVo.setTreatAdjustmentMoney(scmVehRebateExcelVo.getOnceTreatCost().add(scmVehRebateExcelVo.getSecondTreatCost()).subtract(scmVehRebateExcelVo.getExpectTreatCost()));
scmVehRebateExcelVo.setSuppAdjustmentMoney(scmVehRebateExcelVo.getOnceSuppCost().add(scmVehRebateExcelVo.getSecondSuppCost()).subtract(scmVehRebateExcelVo.getExpectSuppCost()));
}else {
} else {
scmVehRebateExcelVo.setTreatAdjustmentMoney(BigDecimal.ZERO);
scmVehRebateExcelVo.setSuppAdjustmentMoney(BigDecimal.ZERO);
}

27
anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehrebatewithapply/ScmVehRebateWithApplyService.java

@ -30,13 +30,17 @@ import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import com.yxt.anrui.base.api.basevehicle.BaseVehicle;
import com.yxt.anrui.base.api.basevehicle.BaseVehicleFeign;
import com.yxt.anrui.base.api.basevehicleout.BaseVehicleOutFeign;
import com.yxt.anrui.base.common.utils.Rule;
import com.yxt.anrui.buscenter.api.busdeliveredapply.BusDeliveredApplyFeign;
import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrder;
import com.yxt.anrui.buscenter.api.bussalesorder.app.order.AppOrderDetailsVo;
import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusOrderAndVehInfo;
import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicleFeign;
import com.yxt.anrui.buscenter.api.common.BusSalesOrderConstantUtils;
import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempFeign;
import com.yxt.anrui.fin.api.finpaymentrecord.FinPaymentrecordSourceLCVo;
import com.yxt.anrui.fin.api.kingdee.FinKingDeeFeign;
@ -86,6 +90,7 @@ import com.yxt.messagecenter.api.message.MessageFlowableQuery;
import com.yxt.messagecenter.api.messagelist.MessageList;
import com.yxt.messagecenter.api.messagelist.MessageListFeign;
import org.apache.commons.lang3.StringUtils;
import org.apache.tomcat.util.threads.ThreadPoolExecutor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -93,6 +98,7 @@ import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.*;
import java.util.stream.Collectors;
import static java.util.Comparator.comparing;
@ -675,12 +681,33 @@ public class ScmVehRebateWithApplyService extends MybatisBaseService<ScmVehRebat
UpdateFlowFieldVo ufVo = resultBean.getData();
updateFlowFiled(BeanUtil.beanToMap(resultBean.getData()));
if ("Event_end".equals(resultBean.getData().getTaskDefKey())) {
/*
for (String vehRebateSid : vehRebateSids) {
scmVehRebateService.updateState(vehRebateSid, 2);
scmVehRebateService.updateWithholdingDateBySid(vehRebateSid, scmVehRebateWithApply.getWithApply());
}
//推送单车返利预提凭证
pushVehRebateWithVoucher(bv.getBusinessSid());
*/
try {
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
.setNameFormat("demo-pool-%d").build();
ExecutorService pool = new ThreadPoolExecutor(1, 10,
1000, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy());
ScmVehRebateWithApply finalScmVehRebateWithApply = scmVehRebateWithApply;
Future future1 = pool.submit(() -> {
for (String vehRebateSid : vehRebateSids) {
scmVehRebateService.updateState(vehRebateSid, 2);
scmVehRebateService.updateWithholdingDateBySid(vehRebateSid, finalScmVehRebateWithApply.getWithApply());
}
//推送单车返利预提凭证
pushVehRebateWithVoucher(bv.getBusinessSid());
});
} catch (Exception e) {
e.printStackTrace();
}
} else {
//极光推送
scmVehRebateWithApply = fetchBySid(bv.getBusinessSid());

9
anrui-scm/anrui-scm-ui/src/api/bikerebate/bicyclerebatecheck.js

@ -10,6 +10,15 @@ export default {
headers: { 'Content-Type': 'application/json' }
})
},
// 单车返利核对(待核对)查询不分页数据
checkApplyGetVehRebateAll: function(data) {
return request({
url: '/scm/v1/scmvehrebate/checkApplyGetVehRebateAll',
method: 'post',
data: data,
headers: { 'Content-Type': 'application/json' }
})
},
// 一次导出
excelListOne: function(data) {
return request({

9
anrui-scm/anrui-scm-ui/src/api/bikerebate/bicyclerebatemanagement.js

@ -10,6 +10,15 @@ export default {
headers: { 'Content-Type': 'application/json' }
})
},
// 查询不分页
listAll: function(data) {
return request({
url: '/scm/v1/scmvehrebate/listAll',
method: 'post',
data: data,
headers: { 'Content-Type': 'application/json' }
})
},
// 选择车辆信息--查询分页列表
pageList: function(data) {
return request({

11
anrui-scm/anrui-scm-ui/src/api/specialrebate/specialrebatecheck.js

@ -1,7 +1,7 @@
import request from '@/utils/request'
export default {
// 单车返利核对(待核对)查询分页列表
// 专项返利核对(待核对)查询分页列表
listPage: function(data) {
return request({
url: '/scm/v1/scmspecialrebate/checkApplyGetSpecialRebate',
@ -10,6 +10,15 @@ export default {
headers: { 'Content-Type': 'application/json' }
})
},
// 专项返利核对(待核对)查询不分页
checkApplyGetSpecialRebateAll: function(data) {
return request({
url: '/scm/v1/scmspecialrebate/checkApplyGetSpecialRebateAll',
method: 'post',
data: data,
headers: { 'Content-Type': 'application/json' }
})
},
// 一次导出
excelListOne: function(data) {
return request({

9
anrui-scm/anrui-scm-ui/src/api/specialrebate/specialrebatemanagement.js

@ -10,6 +10,15 @@ export default {
headers: { 'Content-Type': 'application/json' }
})
},
// 查询不分页
listAll: function(data) {
return request({
url: '/scm/v1/scmspecialrebate/listAll',
method: 'post',
data: data,
headers: { 'Content-Type': 'application/json' }
})
},
// 删除
delete: function(params) {
return request({

41
anrui-scm/anrui-scm-ui/src/views/bikerebate/bicyclerebatecheck/bicyclerebatetobechecked.vue

@ -57,8 +57,8 @@
</div>
</div>
<div class="">
<el-table :key="tableKey" v-loading="listLoading" :data="list" border style="width: 100%;" @selection-change="handleSelectionChange">
<el-table-column fixed type="selection" align="center" width="50"/>
<el-table :key="tableKey" v-loading="listLoading" :data="list" border style="width: 100%;" @selection-change="handleSelectionChange" show-summary :summary-method="getSummaries">
<el-table-column fixed type="selection" align="center" width="60"/>
<el-table-column fixed label="序号" type="index" :index="indexMethod" align="center" width="80"/>
<el-table-column label="操作" align="center" width="180">
<template slot-scope="scope">
@ -84,8 +84,8 @@
<el-table-column prop="manufactorSettlementPrice" label="车辆入库价" align="center" width="140" />
<el-table-column prop="freight" label="其中运费" align="center" width="120" />
<el-table-column prop="createTime" label="创建日期" align="center" width="120" />
<el-table-column prop="rebateName" label="返利名称" align="center" min-width="150" />
<el-table-column prop="rebateTypeValue" label="返利类型" align="center" width="120" />
<el-table-column prop="rebateName" label="返利名称" align="center" min-width="150" />
<el-table-column prop="estimateRebate" label="预计返利" align="center" width="120" />
<el-table-column prop="withholdCost" label="其中预提费用" align="center" width="140" />
<el-table-column prop="palceGenDate" label="所属年月" align="center" width="120" />
@ -410,6 +410,7 @@ export default {
// -----------
tableKey: 0,
list: [],
listAll: [],
sids: [],
FormLoading: false,
state_list: [
@ -549,6 +550,13 @@ export default {
this.listQuery.total = 0
}
})
req.checkApplyGetVehRebateAll(this.listQuery.params).then((res) => {
if (res.success) {
this.listAll = res.data
} else {
this.listAll = []
}
})
},
//
handleFilter() {
@ -783,6 +791,33 @@ export default {
this.uploadData.orgPath = ''
this.getList()
}
},
//
getSummaries(param) {
param.data = this.listAll
const { columns, data } = param
const sums = []
columns.forEach((column, index) => {
if (index === 0) {
sums[index] = '合计'
return
}
const values = data.map(item => Number(item[column.property]))
if (column.property === 'manufactorSettlementPrice' || column.property === 'freight' || column.property === 'estimateRebate' || column.property === 'expectCost' || column.property === 'uploadMoney' || column.property === 'secondaryUploadMoney' || column.property === 'stayDetermineMoney' || column.property === 'money' || column.property === 'diffAmount' || column.property === 'adjustmentMoney') {
sums[index] = values.reduce((prev, curr) => {
const value = Number(curr)
if (!isNaN(value)) {
return Math.round((parseFloat(prev) + parseFloat(curr)) * 100) / 100
} else {
return Math.round((parseFloat(prev)) * 100) / 100
}
}, 0)
sums[index] += ''
} else {
sums[index] = ''
}
})
return sums
}
}
}

9
anrui-scm/anrui-scm-ui/src/views/bikerebate/bikerebatemanagement/bicyclerebatemanagement.vue

@ -222,6 +222,7 @@ export default {
// -----------
tableKey: 0,
list: [],
listAll: [],
sids: [],
FormLoading: false,
listLoading: false,
@ -361,6 +362,13 @@ export default {
this.listQuery.total = 0
}
})
req.listAll(this.listQuery.params).then((res) => {
if (res.success) {
this.listAll = res.data
} else {
this.listAll = []
}
})
},
//
handleFilter() {
@ -515,6 +523,7 @@ export default {
},
//
getSummaries(param) {
param.data = this.listAll
const { columns, data } = param
const sums = []
columns.forEach((column, index) => {

41
anrui-scm/anrui-scm-ui/src/views/specialrebate/specialrebatecheck/specialrebatetobechecked.vue

@ -56,8 +56,8 @@
</div>
</div>
<div class="">
<el-table :key="tableKey" v-loading="listLoading" :data="list" border style="width: 100%;" @selection-change="handleSelectionChange">
<el-table-column fixed type="selection" align="center" width="50"/>
<el-table :key="tableKey" v-loading="listLoading" :data="list" border style="width: 100%;" @selection-change="handleSelectionChange" show-summary :summary-method="getSummaries">
<el-table-column fixed type="selection" align="center" width="60"/>
<el-table-column fixed label="序号" type="index" :index="indexMethod" align="center" width="80"/>
<el-table-column label="操作" align="center" width="180">
<template slot-scope="scope">
@ -79,8 +79,8 @@
<el-table-column prop="purchaseSystemName" label="采购系统" align="center" width="140" />
<el-table-column prop="brandName" label="品牌" align="center" width="120" />
<el-table-column prop="createTime" label="创建日期" align="center" width="120" />
<el-table-column prop="rebateName" label="返利名称" align="center" min-width="150" />
<el-table-column prop="rebateTypeValue" label="返利类型" align="center" width="120" />
<el-table-column prop="rebateName" label="返利名称" align="center" min-width="150" />
<el-table-column prop="estimateRebate" label="预计返利" align="center" width="120" />
<el-table-column prop="withholdCost" label="其中预提费用" align="center" width="140" />
<el-table-column prop="palceGenDate" label="所属年月" align="center" width="120" />
@ -395,6 +395,7 @@ export default {
// -----------
tableKey: 0,
list: [],
listAll: [],
sids: [],
FormLoading: false,
rebateType_list: [],
@ -546,6 +547,13 @@ export default {
this.listQuery.total = 0
}
})
req.checkApplyGetSpecialRebateAll(this.listQuery.params).then((res) => {
if (res.success) {
this.listAll = res.data
} else {
this.listAll = []
}
})
},
//
handleFilter() {
@ -779,6 +787,33 @@ export default {
this.uploadData.orgPath = ''
this.getList()
}
},
//
getSummaries(param) {
param.data = this.listAll
const { columns, data } = param
const sums = []
columns.forEach((column, index) => {
if (index === 0) {
sums[index] = '合计'
return
}
const values = data.map(item => Number(item[column.property]))
if (column.property === 'estimateRebate' || column.property === 'expectCost' || column.property === 'uploadMoney' || column.property === 'secondaryUploadMoney' || column.property === 'stayDetermineMoney' || column.property === 'money' || column.property === 'diffAmount' || column.property === 'adjustmentMoney') {
sums[index] = values.reduce((prev, curr) => {
const value = Number(curr)
if (!isNaN(value)) {
return Math.round((parseFloat(prev) + parseFloat(curr)) * 100) / 100
} else {
return Math.round((parseFloat(prev)) * 100) / 100
}
}, 0)
sums[index] += ''
} else {
sums[index] = ''
}
})
return sums
}
}
}

9
anrui-scm/anrui-scm-ui/src/views/specialrebate/specialrebatemanagement/specialrebatemanagement.vue

@ -157,6 +157,7 @@ export default {
// -----------
tableKey: 0,
list: [],
listAll: [],
sids: [],
FormLoading: false,
listLoading: false,
@ -293,6 +294,13 @@ export default {
this.listQuery.total = 0
}
})
req.listAll(this.listQuery.params).then((res) => {
if (res.success) {
this.listAll = res.data
} else {
this.listAll = []
}
})
},
//
handleFilter() {
@ -389,6 +397,7 @@ export default {
},
//
getSummaries(param) {
param.data = this.listAll
const { columns, data } = param
const sums = []
columns.forEach((column, index) => {

18
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/as/storechange/AppStoreChangeDto.java

@ -0,0 +1,18 @@
package com.yxt.anrui.terminal.api.as.storechange;
import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class AppStoreChangeDto implements Dto {
@ApiModelProperty("库存sid")
private String sid;
@ApiModelProperty("移位数量")
private String count;
@ApiModelProperty("最大移位数量")
private String maxCount;
@ApiModelProperty("移位库位sid")
private String houseCode2;
}

30
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/as/storechange/AppStoreChangeFeign.java

@ -0,0 +1,30 @@
package com.yxt.anrui.terminal.api.as.storechange;
import com.yxt.common.core.result.ResultBean;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @Author
* @Date
* @Description
*/
@FeignClient(
contextId = "terminal-AppStoreChange",
name = "anrui-terminal",
path = "v1/storeChange")
public interface AppStoreChangeFeign {
@ApiOperation("标签扫描")
@GetMapping("/scan")
@ResponseBody
public ResultBean<AppStoreChangeScanVo> scan(@RequestParam("content") String content, @RequestParam("type") String type, @RequestParam("orgPath") String orgPath, @RequestParam(value = "storeSid", required = false) String storeSid);
@ApiOperation("保存")
@PostMapping("/save")
@ResponseBody
public ResultBean save(@RequestBody List<AppStoreChangeDto> dto);
}

24
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/as/storechange/AppStoreChangeScanVo.java

@ -0,0 +1,24 @@
package com.yxt.anrui.terminal.api.as.storechange;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
public class AppStoreChangeScanVo implements Vo {
@ApiModelProperty("0商品码,1库位码")
private String type;
@ApiModelProperty("商品sid")
private String sid;
@ApiModelProperty("商品下的库存表里的sid集合")
private List<String> storeSids;
@ApiModelProperty("库位码")
private String houseCode;
@ApiModelProperty("库区名+库位名")
private String houseName;
@ApiModelProperty("仓库地址")
private String houseAddress;
}

2
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/oa/common/OaCommonFeign.java

@ -32,5 +32,5 @@ public interface OaCommonFeign {
@ApiOperation("查询部门人员")
@GetMapping("/getAllPeoByDept/{deptSid}")
ResultBean<List<OaCommonDictVo>> getAllPeoByDept(@PathVariable("deptSid") String deptSid);
ResultBean<List<OaCommonDictVo>> getAllPeoByDept(@PathVariable("deptSid") String deptSid, @RequestParam(value = "name", required = false) String name);
}

33
anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/as/firstshelves/AppFirstShelvesService.java

@ -26,6 +26,8 @@
package com.yxt.anrui.terminal.biz.as.firstshelves;
import cn.hutool.core.date.DateUtil;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign;
import com.yxt.anrui.terminal.api.as.firstshelves.*;
import com.yxt.anrui.terminal.fegin.wmsInventory.WmsInventoryFeign;
@ -43,9 +45,11 @@ import com.yxt.common.core.vo.PagerVo;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@Service
@ -61,6 +65,8 @@ public class AppFirstShelvesService {
private WmsInitialDetailFeign wmsInitialDetailFeign;
@Autowired
private SysStaffOrgFeign sysStaffOrgFeign;
@Autowired
private SysOrganizationFeign sysOrganizationFeign;
public ResultBean<AppFirstShelvesVo> list(PagerQuery<AppFirstShelvesQuery> pagerQuery) {
ResultBean rb = ResultBean.fireFail();
@ -100,20 +106,20 @@ public class AppFirstShelvesService {
}
String count = wmsInventoryFeign.selCountByGoodsID(content).getData();
BigDecimal num = null;
if (StringUtils.isNotBlank(count)){
if (StringUtils.isNotBlank(count)) {
num = new BigDecimal(count);
}else {
} else {
num = new BigDecimal("0");
}
WmsGoodsTag wmsGoodsTag = wmsGoodsTagFeign.selectByGoodsId(content).getData();
BigDecimal chae = wmsGoodsTag.getGoodsCount().subtract(num);
if (chae.compareTo(BigDecimal.ZERO) == 0){
if (chae.compareTo(BigDecimal.ZERO) == 0) {
return rb.setMsg("该商品已全部入库");
}
appFirstShelvesScanVo.setType(type);
appFirstShelvesScanVo.setGoodsID(content);
appFirstShelvesScanVo.setGoodsName(wmsGoodsTag.getGoodsSkuTitle());
appFirstShelvesScanVo.setGoodsMax(chae.setScale(0,BigDecimal.ROUND_DOWN).toString());
appFirstShelvesScanVo.setGoodsMax(chae.setScale(0, BigDecimal.ROUND_DOWN).toString());
} else if ("1".equals(type)) {//库位码
if (!content.contains("#")) {
return rb.setMsg("请扫描库位码");
@ -157,10 +163,19 @@ public class AppFirstShelvesService {
List<AppFirstShelvesGoodsDto> goodsList = dto.getGoodsList();
WmsInventorySaveDto wmsInventorySaveDto = new WmsInventorySaveDto();
wmsInventorySaveDto.setCreateBySid(dto.getUserSid());
String useOrgSid = sysStaffOrgFeign.getOrgSidByPath(dto.getOrgPath()).getData();
wmsInventorySaveDto.setCreateOrgSid(useOrgSid);
wmsInventorySaveDto.setUseOrgSid(useOrgSid);
wmsInventorySaveDto.setFirstInDate(DateUtil.today());
String createOrgSid = sysStaffOrgFeign.getOrgSidByPath(dto.getOrgPath()).getData();
wmsInventorySaveDto.setCreateOrgSid(createOrgSid);
String deptSid = "";
List<String> split = Arrays.asList(dto.getOrgPath().split("/"));
if (split.size() > 1) {
//获取本级sid获取本级部门信息
SysOrganizationVo sysOrganization1 = sysOrganizationFeign.fetchBySid(split.get(split.size() - 1)).getData();
deptSid = sysOrganization1.getSid();
} else {
SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(split.get(0)).getData();
deptSid = sysOrganization.getSid();
}
wmsInventorySaveDto.setUseOrgSid(deptSid);
for (AppFirstShelvesGoodsDto appFirstShelvesGoodsDto : goodsList) {
WmsGoodsTag wmsGoodsTag = wmsGoodsTagFeign.selectByGoodsId(appFirstShelvesGoodsDto.getGoodsID()).getData();
WmsInitialDetail wmsInitialDetail = wmsInitialDetailFeign.selBySid(wmsGoodsTag.getBillDetailSid()).getData();
@ -180,7 +195,7 @@ public class AppFirstShelvesService {
wmsInventorySaveDto.setWarehouseSid(wmsHouseInfoVo.getWarehouseSid());
wmsInventorySaveDto.setWarehouseName(wmsHouseInfoVo.getWarehouseName());
wmsInventorySaveDto.setWarehouseRackSid(wmsHouseInfoVo.getWarehouseRackSid());
wmsInventorySaveDto.setWarehouseRackCode(appFirstShelvesGoodsDto.getHouseCode());
wmsInventorySaveDto.setWarehouseRackCode(wmsHouseInfoVo.getWarehouseRackCode());
wmsInventoryFeign.saveWmsInventory(wmsInventorySaveDto).getData();
}
return rb.success();

54
anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/as/storechange/AppStoreChangeRest.java

@ -0,0 +1,54 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.terminal.biz.as.storechange;
import com.yxt.anrui.terminal.api.as.storechange.AppStoreChangeDto;
import com.yxt.anrui.terminal.api.as.storechange.AppStoreChangeFeign;
import com.yxt.anrui.terminal.api.as.storechange.AppStoreChangeScanVo;
import com.yxt.common.core.result.ResultBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping("v1/storeChange")
public class AppStoreChangeRest implements AppStoreChangeFeign {
@Autowired
private AppStoreChangeService appStoreChangeService;
@Override
public ResultBean<AppStoreChangeScanVo> scan(String content, String type, String orgPath, String storeSid) {
return appStoreChangeService.scan(content, type, orgPath, storeSid);
}
@Override
public ResultBean save(List<AppStoreChangeDto> dto) {
return appStoreChangeService.save(dto);
}
}

191
anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/as/storechange/AppStoreChangeService.java

@ -0,0 +1,191 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.terminal.biz.as.storechange;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign;
import com.yxt.anrui.terminal.api.as.firstshelves.*;
import com.yxt.anrui.terminal.api.as.storechange.AppStoreChangeDto;
import com.yxt.anrui.terminal.api.as.storechange.AppStoreChangeScanVo;
import com.yxt.anrui.terminal.fegin.wmsInventory.WmsInventory;
import com.yxt.anrui.terminal.fegin.wmsInventory.WmsInventoryFeign;
import com.yxt.anrui.terminal.fegin.wmsInventory.WmsInventorySaveDto;
import com.yxt.anrui.terminal.fegin.wmsInventory.WmsStoreChangeDto;
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.wmswarehouserack.WmsHouseInfoVo;
import com.yxt.anrui.terminal.fegin.wmswarehouserack.WmsWarehouseRackFeign;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
@Service
public class AppStoreChangeService {
@Resource
private WmsGoodsTagFeign wmsGoodsTagFeign;
@Resource
private WmsWarehouseRackFeign wmsWarehouseRackFeign;
@Resource
private WmsInventoryFeign wmsInventoryFeign;
@Resource
private WmsInitialDetailFeign wmsInitialDetailFeign;
@Autowired
private SysStaffOrgFeign sysStaffOrgFeign;
@Autowired
private SysOrganizationFeign sysOrganizationFeign;
public ResultBean<AppFirstShelvesVo> list(PagerQuery<AppFirstShelvesQuery> pagerQuery) {
ResultBean rb = ResultBean.fireFail();
PagerQuery<GoodsTagListQuery> pagerQuery1 = new PagerQuery<>();
GoodsTagListQuery params = new GoodsTagListQuery();
AppFirstShelvesQuery params1 = pagerQuery.getParams();
params.setUserSid(params1.getUserSid());
params.setOrgPath(params1.getOrgPath());
params.setMenuSid(params1.getMenuSid());
params.setName(params1.getName());
pagerQuery1.setParams(params);
pagerQuery1.setSize(1000);
PagerVo<WmsGoodsTag> data = wmsGoodsTagFeign.goodsTagList(pagerQuery1).getData();
AppFirstShelvesVo appFirstShelvesVo = new AppFirstShelvesVo();
List<AppFirstShelvesGoodsVo> goods = new ArrayList<>();
List<WmsGoodsTag> list = data.getRecords();
for (WmsGoodsTag wmsGoodsTag : list) {
AppFirstShelvesGoodsVo appFirstShelvesGoodsVo = new AppFirstShelvesGoodsVo();
appFirstShelvesGoodsVo.setSid(wmsGoodsTag.getSid());
appFirstShelvesGoodsVo.setName(wmsGoodsTag.getGoodsSkuTitle());
appFirstShelvesGoodsVo.set_id(wmsGoodsTag.getGoodsID());
appFirstShelvesGoodsVo.setNum(wmsGoodsTag.getGoodsCount());
appFirstShelvesGoodsVo.setUnit(wmsGoodsTag.getUnit());
appFirstShelvesGoodsVo.setSpecs(wmsGoodsTag.getGoodsSkuOwnSpec());
goods.add(appFirstShelvesGoodsVo);
}
appFirstShelvesVo.setGoods(goods);
return rb.success().setData(appFirstShelvesVo);
}
public ResultBean<AppStoreChangeScanVo> scan(String content, String type, String orgPath, String storeSid) {
ResultBean rb = ResultBean.fireFail();
String deptSid = "";
if (StringUtils.isNotBlank(orgPath)) {
List<String> split = Arrays.asList(orgPath.split("/"));
if (split.size() > 1) {
//获取本级sid获取本级部门信息
SysOrganizationVo sysOrganization1 = sysOrganizationFeign.fetchBySid(split.get(split.size() - 1)).getData();
deptSid = sysOrganization1.getSid();
} else {
SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(split.get(0)).getData();
deptSid = sysOrganization.getSid();
}
}
AppStoreChangeScanVo appStoreChangeScanVo = new AppStoreChangeScanVo();
if ("0".equals(type)) {//商品码
if (content.contains("#")) {
return rb.setMsg("请扫描商品码");
}
if (StringUtils.isBlank(storeSid)) {
List<WmsInventory> wmsInventoryList = wmsInventoryFeign.selByGoodsIDAndUseOrgSid(content, deptSid).getData();
if (wmsInventoryList == null) {
return rb.setMsg("当前商品不可移位");
}
appStoreChangeScanVo.setType(type);
appStoreChangeScanVo.setSid(wmsInventoryList.get(0).getGoodsSpuSid());
appStoreChangeScanVo.setStoreSids(wmsInventoryList.stream().map(WmsInventory::getSid).collect(Collectors.toList()));
} else {
List<WmsInventory> wmsInventoryList = wmsInventoryFeign.selByGoodsIDAndUseOrgSidAndWarehouseSid(content, deptSid, storeSid).getData();
if (wmsInventoryList == null) {
return rb.setMsg("当前商品不可移位");
}
appStoreChangeScanVo.setType(type);
appStoreChangeScanVo.setSid(wmsInventoryList.get(0).getGoodsSpuSid());
appStoreChangeScanVo.setStoreSids(wmsInventoryList.stream().map(WmsInventory::getSid).collect(Collectors.toList()));
}
} else if ("1".equals(type)) {//库位码
if (!content.contains("#")) {
return rb.setMsg("请扫描库位码");
}
String[] split = content.split("#");
String houseCode = split[0];
ResultBean<WmsHouseInfoVo> wmsHouseInfoVoResultBean = wmsWarehouseRackFeign.selHouseInfoByFullCode(houseCode);
if (wmsHouseInfoVoResultBean.getSuccess()) {
WmsHouseInfoVo houseInfoVo = wmsHouseInfoVoResultBean.getData();
if (null != houseInfoVo) {
String houseName = "";
String areaName = "";
String rackName = "";
String zoneName = "";
if (StringUtils.isNotBlank(houseInfoVo.getWarehouseName())) {
houseName = houseInfoVo.getWarehouseName();
}
if (StringUtils.isNotBlank(houseInfoVo.getWareAreaName())) {
areaName = houseInfoVo.getWareAreaName();
}
if (StringUtils.isNotBlank(houseInfoVo.getWarehouseRackName())) {
rackName = houseInfoVo.getWarehouseRackName();
}
if (StringUtils.isNotBlank(houseInfoVo.getWarehouseZoneName())) {
zoneName = houseInfoVo.getWarehouseZoneName();
}
appStoreChangeScanVo.setHouseName(houseName + "-" + zoneName + "-" + areaName);
appStoreChangeScanVo.setHouseAddress(houseInfoVo.getWarehouseRackCode());
appStoreChangeScanVo.setHouseCode(houseCode);
appStoreChangeScanVo.setType(type);
} else {
return rb.setMsg("扫描库位码为空");
}
}
}
return rb.success().setData(appStoreChangeScanVo);
}
public ResultBean save(List<AppStoreChangeDto> dto) {
ResultBean rb = ResultBean.fireFail();
List<WmsStoreChangeDto> wmsStoreChangeDtos = new ArrayList<>();
for (AppStoreChangeDto appStoreChangeDto : dto) {
WmsStoreChangeDto wmsStoreChangeDto = new WmsStoreChangeDto();
BeanUtil.copyProperties(appStoreChangeDto,wmsStoreChangeDto);
wmsStoreChangeDtos.add(wmsStoreChangeDto);
}
wmsInventoryFeign.saveKnyw(wmsStoreChangeDtos);
return rb.success();
}
}

4
anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/oa/common/OaCommonRest.java

@ -32,7 +32,7 @@ public class OaCommonRest implements OaCommonFeign {
}
@Override
public ResultBean<List<OaCommonDictVo>> getAllPeoByDept(String deptSid) {
return oaCommonService.getAllPeoByDept(deptSid);
public ResultBean<List<OaCommonDictVo>> getAllPeoByDept(String deptSid, String name) {
return oaCommonService.getAllPeoByDept(deptSid, name);
}
}

4
anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/oa/common/OaCommonService.java

@ -65,9 +65,9 @@ public class OaCommonService {
return rb.success().setData(voList);
}
public ResultBean<List<OaCommonDictVo>> getAllPeoByDept(String deptSid) {
public ResultBean<List<OaCommonDictVo>> getAllPeoByDept(String deptSid, String name) {
ResultBean<List<OaCommonDictVo>> rb = ResultBean.fireFail();
ResultBean<List<DeptUserVo>> allPeo = sysUserFeign.getAllPeo(deptSid);
ResultBean<List<DeptUserVo>> allPeo = sysUserFeign.getAllPeo(deptSid, name);
List<OaCommonDictVo> voList = Optional.ofNullable(allPeo.getData())
.orElse(Collections.emptyList()) // 如果为 null,则返回一个空列表
.stream()

66
anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/wmsInventory/WmsInventory.java

@ -0,0 +1,66 @@
package com.yxt.anrui.terminal.fegin.wmsInventory;
import com.yxt.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class WmsInventory extends BaseEntity {
@ApiModelProperty("批次号")
private String batchNumber;
@ApiModelProperty("商品ID(唯一编码,入库时生成,生成规则为商品编码+YYMMdd+4位流水)")
private String goodsID;
@ApiModelProperty("商品基础信息sid")
private String goodsSpuSid;
@ApiModelProperty("商品名称")
private String goodsSpuName;
@ApiModelProperty("商品Skusid")
private String goodsSkuSid;
@ApiModelProperty("商品Sku名称")
private String goodsSkuTitle;
@ApiModelProperty("商品编码(图号)")
private String goodsSkuCode;
@ApiModelProperty("规格型号")
private String goodsSkuOwnSpec;
@ApiModelProperty("计量单位")
private String unit;
@ApiModelProperty("现有量")
private BigDecimal count;
@ApiModelProperty("分配量(锁定数量,出库申请通过,但未实际出库)")
private BigDecimal allocateCount;
@ApiModelProperty("拣货量")
private BigDecimal pickCount;
@ApiModelProperty("冻结量")
private BigDecimal freezeCount;
@ApiModelProperty("入库单价")
private BigDecimal cost;
@ApiModelProperty("税率")
private BigDecimal taxRate;
@ApiModelProperty("仓库sid")
private String warehouseSid;
@ApiModelProperty("仓库名称")
private String warehouseName;
@ApiModelProperty("库位sid")
private String warehouseRackSid;
@ApiModelProperty("库位编码")
private String warehouseRackCode;
@ApiModelProperty("首次入库日期-计算库龄的依据")
private Date firstInDate;
@ApiModelProperty("创建组织sid")
private String createOrgSid;
@ApiModelProperty("使用组织sid")
private String useOrgSid;
@ApiModelProperty("厂家订单号")
private String manufactorBillNo;
@ApiModelProperty("厂家sid")
private String manufacturerSid; // 库位sid
@ApiModelProperty("厂家名称")
private String manufacturerName; // 库位编号
@ApiModelProperty("客户/供应商sid,出库是为客户,入库时为供应商")
private String supplierSid;
@ApiModelProperty("客户/供应商名称")
private String supplierName;
}

15
anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/wmsInventory/WmsInventoryFeign.java

@ -1,5 +1,6 @@
package com.yxt.anrui.terminal.fegin.wmsInventory;
import com.yxt.anrui.terminal.api.as.storechange.AppStoreChangeDto;
import com.yxt.anrui.terminal.api.wms.inventorySearch.InventorySearchQuery;
import com.yxt.anrui.terminal.api.wms.inventorySearch.OldStorageVo;
import com.yxt.anrui.terminal.api.wms.inventorySearch.StorageVo;
@ -12,6 +13,8 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
/**
* @description: 商品基础信息
* @author: fzz
@ -39,4 +42,16 @@ public interface WmsInventoryFeign {
@ApiOperation("保存商品库存")
@PostMapping("/saveWmsInventory")
ResultBean saveWmsInventory(@RequestBody WmsInventorySaveDto dto);
@ApiOperation("根据商品ID和部门sid查询")
@PostMapping("/selByGoodsIDAndUseOrgSid")
ResultBean<List<WmsInventory>> selByGoodsIDAndUseOrgSid(@RequestParam("goodsID") String goodsID, @RequestParam("useOrgSid") String useOrgSid);
@ApiOperation("根据商品ID和部门sid和仓库sid查询")
@PostMapping("/selByGoodsIDAndUseOrgSidAndWarehouseSid")
ResultBean<List<WmsInventory>> selByGoodsIDAndUseOrgSidAndWarehouseSid(@RequestParam("goodsID") String goodsID, @RequestParam("useOrgSid") String useOrgSid, @RequestParam("warehouseSid") String warehouseSid);
@ApiOperation("库内移位保存")
@PostMapping("/saveKnyw")
ResultBean saveKnyw(@RequestBody List<WmsStoreChangeDto> dto);
}

18
anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/wmsInventory/WmsStoreChangeDto.java

@ -0,0 +1,18 @@
package com.yxt.anrui.terminal.fegin.wmsInventory;
import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class WmsStoreChangeDto implements Dto {
@ApiModelProperty("库存sid")
private String sid;
@ApiModelProperty("移位数量")
private String count;
@ApiModelProperty("最大移位数量")
private String maxCount;
@ApiModelProperty("移位库位sid")
private String houseCode2;
}

4
yxt-as-ui/src/api/client/customermanagement.js

@ -139,7 +139,7 @@ export default {
disableStateByPerson: function(data) {
return request({
url: '/yxtcrm/v1/crmdockingpeople/disableState',
method: 'DELETE',
method: 'post',
data: data,
headers: { 'Content-Type': 'application/json' }
})
@ -148,7 +148,7 @@ export default {
enableByPerson: function(data) {
return request({
url: '/yxtcrm/v1/crmdockingpeople/enable',
method: 'DELETE',
method: 'post',
data: data,
headers: { 'Content-Type': 'application/json' }
})

2
yxt-as-ui/src/router/index.js

@ -1491,7 +1491,7 @@ export const constantRoutes = [{
},
// 欠款月结客户备案 -- 已办
{
path: '/workFlow/maintenanceEnterpriseYiBan',
path: '/qiankuanyuejieFlow/maintenanceEnterpriseYiBan',
component: () =>
import('@/views/workFlow/qiankuanyuejieFlow/maintenanceEnterpriseYiBan.vue'),
name: 'MaintenanceEnterpriseYiBan'

5
yxt-as-ui/src/views/basicinformation/technicalTitle/technicalTitle.vue

@ -32,6 +32,11 @@
<el-table-column type="selection" align="center" width="50"/>
<el-table-column label="序号" type="index" width="80" :index="indexMethod" align="center"/>
<el-table-column prop="state" label="备案状态" align="center" width="150" />
<el-table-column prop="state" label="是否曾备案状态" align="center" width="160">
<template slot-scope="scope">
<span>{{ scope.row.isBa == '1' ? '是' : scope.row.isBa == '0' ? '否' : '' }}</span>
</template>
</el-table-column>
<el-table-column prop="titleNameValue" label="职称名称" align="center" width="150" />
<el-table-column prop="weight" label="权重" align="center" width="80" />
<el-table-column prop="useOrgName" label="隶属服务站" align="center" width="150"/>

4
yxt-as-ui/src/views/client/customermanagement/customermanagement.vue

@ -433,7 +433,7 @@ export default {
if (this.sids.length === 1) {
for (var i = 0; i < this.multipleSelection.length; i++) {
if (this.multipleSelection[i].isDesignatedEnterprise === '1' && this.multipleSelection[i].isFilingIndate !== '1') {
this.$message({ showClose: true, type: 'error', message: '因该条记录中是否为定点企业为是且备案有效期仍在有效期内,需要进行补充备案操作' })
this.$message({ showClose: true, type: 'error', message: '因该欠款月结客户仍在有效期内,需要进行补充备案操作' })
return
}
}
@ -559,7 +559,7 @@ export default {
addVehicle() {
if (this.sids.length === 1) {
if (this.multipleSelection[0].isDesignatedEnterprise === '1' && this.multipleSelection[0].isFilingIndate !== '1') {
this.$message({ showClose: true, type: 'error', message: '因该条记录中是否为定点企业为是且备案有效期仍在有效期内,需要进行补充备案操作' })
this.$message({ showClose: true, type: 'error', message: '因该欠款月结客户仍在有效期内,需要进行补充备案操作' })
return
}
this.viewState = 6

1
yxt-as-ui/src/views/client/customermanagement/relation/person.vue

@ -17,6 +17,7 @@
<el-table-column fixed width="60" label="序号" type="index" :index="index + 1" align="center"/>
<el-table-column prop="name" label="姓名" align="center" width="120" />
<el-table-column prop="mobile" label="手机号" align="center" width="130" />
<el-table-column prop="isEnable" label="是否已禁用" align="center" width="130" />
<el-table-column prop="remarks" label="备注" align="center" min-width="200" />
</el-table>
</el-form>

2
yxt-as-ui/src/views/operation/repairbill/repairbillAdd.vue

@ -1002,8 +1002,10 @@ export default {
const choose = this.subject_list.filter((item) => item.dictValue === value)
if (choose.length > 0 && choose !== null) {
this.formobj.subjectSid = choose[0].dictKey
this.serviceData = []
} else {
this.formobj.subjectSid = ''
this.serviceData = []
}
},
changeClaimManufacturer(value) {

2
yxt-as-ui/src/views/purchase/procurement/procurementAdd.vue

@ -33,7 +33,7 @@
<el-select v-model="formobj.purchaseTypeValue" placeholder="请选择" @change="purchaseTypeChange" clearable filterable>
<el-option v-for="item in procurementType_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue"></el-option>
</el-select>
<el-select style="margin-left: 5px" v-model="formobj.operateBrandValue" placeholder="选择经营品牌" @change="operateBrandChange" clearable filterable>
<el-select style="margin-left: 5px" v-model="formobj.operateBrandValue" placeholder="选择所属品牌" @change="operateBrandChange" clearable filterable>
<el-option v-for="item in operateBrand_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue"></el-option>
</el-select>
</div>

20
yxt-as-ui/src/views/storage/inventory/inventory.vue

@ -47,7 +47,7 @@
</div>
<!--End查询列表部分-->
<div class="listtop">
<div class="tit">商品信息列表</div>
<div class="tit">商品库存列表</div>
<pageye v-show="list.length > 0" :total="listQuery.total" :page.sync="listQuery.current" :limit.sync="listQuery.size" class="pagination" @pagination="getList"/>
</div>
<!--Start 主页面主要部分 -->
@ -65,8 +65,8 @@
<el-table-column prop="goodsSkuCode" label="图号" align="center" width="100" />
<el-table-column prop="goodsSkuOwnSpec" label="规格" align="center" width="100" />
<el-table-column prop="unit" label="单位" align="center" width="80" />
<el-table-column prop="supplierName" label="供应商" align="center" min-width="100" />
<el-table-column prop="manufacturerName" label="厂家" align="center" min-width="100" />
<el-table-column prop="supplierName" label="供应商" align="center" min-width="100" />
<el-table-column prop="warehouseName" label="仓库" min-width="100" />
<el-table-column prop="warehouseRackCode" label="库位" width="100" />
<el-table-column prop="count" label="现有库存" align="center" width="100" />
@ -109,13 +109,13 @@ export default {
return {
btndisabled: false,
btnList: [
{
type: 'primary',
size: 'small',
icon: '',
btnKey: 'toCarry',
btnLabel: '结转'
},
// {
// type: 'primary',
// size: 'small',
// icon: '',
// btnKey: 'toCarry',
// btnLabel: ''
// },
{
type: 'danger',
size: 'small',
@ -285,7 +285,7 @@ export default {
const fileName = '库存表' + '.xls'
const elink = document.createElement('a')
elink.download = fileName
elink.style.display = 'nonde'
elink.style.display = 'none'
elink.href = URL.createObjectURL(blob)
document.body.appendChild(elink)
elink.click()

6
yxt-as-ui/src/views/storage/inventory/inventoryRecord.vue

@ -11,11 +11,7 @@
<el-table :key="tableKey" :data="formobj.list" :index="index" border style="width: 100%">
<el-table-column fixed width="80" label="序号" type="index" :index="index + 1" align="center" />
<el-table-column prop="billNo" label="来源单号" align="center" width="100" />
<el-table-column label="单据类型" align="center" width="100">
<template slot-scope="scope">
<span>{{ scope.row.billType == '1' ? '入库' : scope.row.billType == '0' ? '出库' : '' }}</span>
</template>
</el-table-column>
<el-table-column prop="billType" label="单据类型" align="center" width="100" />
<el-table-column prop="createTime" label="发生时间" align="center" width="100" />
<el-table-column prop="busTypeValue" label="业务类型" align="center" width="100" />
<el-table-column prop="supplierName" label="供应商" align="center" min-width="150" />

2
yxt-as-ui/src/views/workFlow/caigouFlow/procurementEdit.vue

@ -32,7 +32,7 @@
<el-select v-model="formobj.purchaseTypeValue" placeholder="请选择" @change="purchaseTypeChange" clearable filterable>
<el-option v-for="item in procurementType_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue"></el-option>
</el-select>
<el-select style="margin-left: 5px" v-model="formobj.operateBrandValue" placeholder="选择经营品牌" @change="operateBrandChange" clearable filterable>
<el-select style="margin-left: 5px" v-model="formobj.operateBrandValue" placeholder="选择所属品牌" @change="operateBrandChange" clearable filterable>
<el-option v-for="item in operateBrand_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue"></el-option>
</el-select>
</div>

2
yxt-as-ui/src/views/workFlow/jishizhichengFlow/technicalTitleFilingDaiBan.vue

@ -199,7 +199,7 @@ export default {
this.formobj = res.data
this.formobj.asTechTitleDetailDetailsList.forEach((e) => {
if (e.techNames.length > 0) {
e.techNames = e.techNames.split(',')
e.techNames = e.techNames.join(',')
}
})
if (this.formobj.asTechTitleApplyFileList.length > 0) {

3
yxt-as-ui/src/views/workFlow/jishizhichengFlow/technicalTitleFilingYiBan.vue

@ -128,7 +128,7 @@ export default {
this.formobj = res.data
this.formobj.asTechTitleDetailDetailsList.forEach((e) => {
if (e.techNames.length > 0) {
e.techNames = e.techNames.split(',')
e.techNames = e.techNames.join(',')
}
})
if (this.formobj.asTechTitleApplyFileList.length > 0) {
@ -137,6 +137,7 @@ export default {
aa.push(e.url)
})
this.formobj.asTechTitleApplyFileList = aa
console.log(99, this.formobj.asTechTitleApplyFileList)
}
}
})

2
yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbill/AsBusrepairBillMapper.java

@ -54,7 +54,7 @@ public interface AsBusrepairBillMapper extends BaseMapper<AsBusrepairBill> {
IPage<GoodsReceiveVo> notConfirmList(IPage<AsBusrepairBill> page, @Param(Constants.WRAPPER) QueryWrapper<AsBusrepairBill> qw);
List<GoodsReceiveListVo> selGoodsReceiveByBillSid(@Param("sid") String sid);
List<GoodsReceiveListVo> selGoodsReceiveByBillSid(@Param("sid") String sid,@Param("userSid")String userSid);
IPage<GoodsConfrimListVo> notConfirmList2(IPage<AsBusrepairBill> page,@Param(Constants.WRAPPER) QueryWrapper<AsBusrepairBill> qw);

1
yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbill/AsBusrepairBillMapper.xml

@ -264,6 +264,7 @@
LEFT JOIN as_busrepair_inventorybill as i ON d.billSid = i.sid
WHERE d.state = 1
and i.sourceBillSid = #{sid}
and d.operUserSid =#{userSid}
</select>
<select id="notConfirmList2" resultType="com.yxt.anrui.as.api.asbusrepairbill.app.GoodsConfrimListVo">
SELECT

7
yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbill/AsBusrepairBillService.java

@ -535,9 +535,13 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
List<String> partsSellers = goodsVo.getPartsSellers();
if (!partsSellersSids.isEmpty()) {
goods.setPartsSellersSid(String.join(",", partsSellersSids));
} else {
goods.setPartsSellersSid("");
}
if (!partsSellers.isEmpty()) {
goods.setPartsSellers(String.join(",", partsSellers));
} else {
goods.setPartsSellers("");
}
asBusrepairInventorybillDetailService.updateById(goods);
}
@ -2100,6 +2104,7 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
public PagerVo<GoodsReceiveVo> notConfirmList(PagerQuery<GoodsReceiveQuery> pagerQuery) {
GoodsReceiveQuery query = pagerQuery.getParams();
QueryWrapper<AsBusrepairBill> qw = new QueryWrapper<>();
String userSid = query.getUserSid();
if (query != null) {
//工单编号
if (StringUtils.isNotBlank(query.getUserSid())) {
@ -2121,7 +2126,7 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
for (GoodsReceiveVo record : records) {
if (null != record) {
if (StringUtils.isNotBlank(record.getSid())) {
List<GoodsReceiveListVo> list = baseMapper.selGoodsReceiveByBillSid(record.getSid());
List<GoodsReceiveListVo> list = baseMapper.selGoodsReceiveByBillSid(record.getSid(),userSid);
if (!list.isEmpty()) {
record.setList(list);
}

10
yxt-as/src/main/java/com/yxt/anrui/as/biz/ascustomervehicle/AsCustomerVehicleService.java

@ -31,17 +31,15 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yxt.anrui.as.api.ascustomervehicle.*;
import com.yxt.anrui.as.api.ascustomervehmaintenance.AsCustomervehMaintenance;
import com.yxt.anrui.as.biz.ascustomervehmaintenance.AsCustomervehMaintenanceService;
import com.yxt.anrui.as.feign.crm.CrmCustomerTempDto;
import com.yxt.anrui.as.feign.crm.CrmCustomerTempFeign;
import com.yxt.anrui.as.feign.yxtcrm.CrmCustomerDto;
import com.yxt.anrui.as.feign.yxtcrm.YxtCrmCustomerTempFeign;
import com.yxt.common.core.result.ResultBean;
import org.apache.commons.lang3.StringUtils;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.PagerUtil;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -263,9 +261,9 @@ public class AsCustomerVehicleService extends MybatisBaseService<AsCustomerVehic
ResultBean rb = ResultBean.fireFail();
CrmCustomerDto tempDto = new CrmCustomerDto();
BeanUtil.copyProperties(dto, tempDto);
ResultBean save = yxtCrmCustomerTempFeign.saveForQuickVeh(tempDto);
ResultBean<String> save = yxtCrmCustomerTempFeign.saveForQuickVeh(tempDto);
if (save.getSuccess()) {
String sid = (String) save.getData();
String sid = save.getData();
dto.setCustomerSid(sid);
AsCustomerVehicleDetails vehicleDetails = new AsCustomerVehicleDetails();
BeanUtil.copyProperties(dto, vehicleDetails);

35
yxt-base-biz/src/main/java/com/yxt/base/apiadmin/base/BaseGoodsSpuRest.java

@ -9,6 +9,8 @@ import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @author wangpengfei
* @date 2024/3/7 16:58
@ -30,12 +32,18 @@ public class BaseGoodsSpuRest {
@ApiOperation("商品管理分页列表")
@PostMapping("/goodsListPage")
public ResultBean<PagerVo<BaseGoodsSpuListVo>> goodsListPage(@RequestBody PagerQuery<BaseGoodsSpuListQuery> pq) {
BaseGoodsSpuListQuery query = pq.getParams();
query.setType("0");
return baseGoodsSpuService.goodsListPage(pq);
}
@ApiOperation("保存修改商品信息")
@PostMapping("/saveOrUpdateGoods")
public ResultBean<String> saveOrUpdateGoods(@RequestBody BaseGoodsDetailsDto dto) {
dto.setGoodsClassKey("004");
dto.setGoodsClassValue("售后类");
dto.setGoodsLevelKey("001");
dto.setGoodsLevelValue("一级");
return baseGoodsSpuService.saveOrUpdateGoods(dto);
}
@ -95,5 +103,30 @@ public class BaseGoodsSpuRest {
@GetMapping("/selByCodeAndDept")
ResultBean<Integer> selByCodeAndDept(@RequestParam("code") String code,@RequestParam("deptSid") String deptSid){
return baseGoodsSpuService.selByCodeAndDept(code,deptSid);
};
}
//------------------------------- 行政类商品管理 --------------------------------
@ApiOperation("保存修改行政商品信息")
@PostMapping("/saveOrUpdateOaGoods")
public ResultBean<String> saveOrUpdateOaGoods(@RequestBody BaseGoodsDetailsDto dto) {
return baseGoodsSpuService.saveOrUpdateGoods(dto);
}
@ApiOperation("行政商品管理分页列表")
@PostMapping("/oaGoodsListPage")
public ResultBean<PagerVo<BaseGoodsSpuListVo>> oaGoodsListPage(@RequestBody PagerQuery<BaseGoodsSpuListQuery> pq) {
BaseGoodsSpuListQuery query = pq.getParams();
query.setType("1");
return baseGoodsSpuService.goodsListPage(pq);
}
@ApiOperation("固定资产采购查询行政商品信息")
@GetMapping("/selPurchaseAssetInfo")
public ResultBean<List<YxtBaseFormCommon>> selPurchaseAssetInfo(@RequestParam(value = "orgPath", required = false) String orgPath,
@RequestParam(value = "userSid", required = false) String userSid,
@RequestParam(value = "name", required = false) String name) {
return baseGoodsSpuService.selPurchaseAssetInfo(orgPath,name);
}
}

6
yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsspu/BaseGoodsDetailsDto.java

@ -1,6 +1,5 @@
package com.yxt.base.biz.base.basegoodsspu;
import com.baomidou.mybatisplus.annotation.TableField;
import com.yxt.common.core.dto.Dto;
import lombok.Data;
@ -48,4 +47,9 @@ public class BaseGoodsDetailsDto implements Dto {
private String agencyPrice;//首保价格
private List<UrlQuery> picPath = new ArrayList<>();//商品图片
private String goodsClassKey;//商品类型key
private String goodsClassValue;//商品类型
private String goodsLevelKey;//商品等级key
private String goodsLevelValue;//商品等级
}

4
yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsspu/BaseGoodsDetailsVo.java

@ -46,4 +46,8 @@ public class BaseGoodsDetailsVo implements Vo {
private String agencyPrice;//首保价格
private List<UrlQuery> picPath = new ArrayList<>();//商品图片
private String goodsClassKey;//商品类型key
private String goodsClassValue;//商品类型
private String goodsLevelKey;//商品等级key
private String goodsLevelValue;//商品等级
}

4
yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsspu/BaseGoodsSpu.java

@ -30,4 +30,8 @@ public class BaseGoodsSpu extends BaseEntity {
private String isListed;//是否上架
private String useOrgSid;//使用组织sid
private String createOrgSid;//创建组织sid
private String goodsClassKey;//商品类型key
private String goodsClassValue;//商品类型
private String goodsLevelKey;//商品等级key
private String goodsLevelValue;//商品等级
}

6
yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsspu/BaseGoodsSpuListQuery.java

@ -25,5 +25,9 @@ public class BaseGoodsSpuListQuery implements Query {
private String goodsTypeName;//商品类别
private String brandName;//品牌
private String manufacturerName;//厂家
private String goodsClassKey;//商品类型key
private String goodsClassValue;//商品类型
private String goodsLevelKey;//商品等级key
private String goodsLevelValue;//商品等级
private String type;// 0售后商品 1行政商品
}

5
yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsspu/BaseGoodsSpuListVo.java

@ -34,6 +34,9 @@ public class BaseGoodsSpuListVo implements Vo {
private String agencyPrice;//首保价格
private String picUrl;
private List<UrlQuery> picPath = new ArrayList<>();//商品图片
private String goodsClassKey;//商品类型key
private String goodsClassValue;//商品类型
private String goodsLevelKey;//商品等级key
private String goodsLevelValue;//商品等级
}

4
yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsspu/BaseGoodsSpuMapper.java

@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.core.toolkit.Constants;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @author wangpengfei
* @date 2024/2/26 13:40
@ -26,4 +28,6 @@ public interface BaseGoodsSpuMapper extends BaseMapper<BaseGoodsSpu> {
BaseGoodsSpu checkForUpdate(@Param("goodsCode")String goodsCode,@Param("useOrgSid") String useOrgSid, @Param("sid")String sid);
int selByCodeAndDept(@Param("code") String code,@Param("deptSid") String deptSid);
List<BaseGoodsSpu> selPurchaseAssetInfo(@Param("useOrgSid") String useOrgSid,@Param("name") String name);
}

14
yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsspu/BaseGoodsSpuMapper.xml

@ -41,6 +41,10 @@ WHERE
<select id="goodsListPage" resultType="com.yxt.base.biz.base.basegoodsspu.BaseGoodsSpuListVo">
SELECT
p.sid,
p.goodsClassKey,
p.goodsClassValue,
p.goodsLevelKey,
p.goodsLevelValue,
p.goodsName,
p.goodsCode,
p.goodsPY,
@ -95,4 +99,14 @@ WHERE
WHERE goodsCode = #{code}
AND useOrgSid = #{deptSid}
</select>
<select id="selPurchaseAssetInfo" resultType="com.yxt.base.biz.base.basegoodsspu.BaseGoodsSpu">
SELECT *
FROM base_goods_spu
WHERE useOrgSid = #{useOrgSid}
and goodsClassKey = '003'
and isDelete = 0
<if test="name != null and name != ''">
and goodsCode like concat('%',#{name},'%')
</if>
</select>
</mapper>

84
yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsspu/BaseGoodsSpuService.java

@ -4,15 +4,23 @@ 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.basebrandinfo.BaseBrandInfo;
import com.yxt.base.biz.base.basebrandinfo.BaseBrandInfoService;
import com.yxt.base.biz.base.basegoodssku.BaseGoodsSku;
import com.yxt.base.biz.base.basegoodssku.BaseGoodsSkuService;
import com.yxt.base.biz.base.basegoodssku.BaseGoodsSkuVo;
import com.yxt.base.biz.base.basegoodsskuextend.BaseGoodsSkuExtend;
import com.yxt.base.biz.base.basegoodsskuextend.BaseGoodsSkuExtendService;
import com.yxt.base.biz.base.basegoodsskuextend.BaseGoodsSkuExtendVo;
import com.yxt.base.biz.base.basegoodsskuextend.UrlsVo;
import com.yxt.base.biz.base.basegoodsspudetail.BaseGoodsSpuDetailService;
import com.yxt.base.biz.base.basegoodsspudetail.BaseGoodsSpuDetailVo;
import com.yxt.base.biz.base.basegoodstype.BaseGoodsType;
import com.yxt.base.biz.base.basegoodstype.BaseGoodsTypeService;
import com.yxt.base.biz.base.basegoodsunit.BaseGoodsUnit;
import com.yxt.base.biz.base.basegoodsunit.BaseGoodsUnitService;
import com.yxt.base.biz.base.basemanufacturer.BaseManufacturer;
import com.yxt.base.biz.base.basemanufacturer.BaseManufacturerService;
import com.yxt.base.feign.portal.privilege.PrivilegeQuery;
import com.yxt.base.feign.portal.sysorganization.SysOrganizationFeign;
import com.yxt.base.feign.portal.sysorganization.SysOrganizationVo;
@ -26,19 +34,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.BaseBrandInfo;
import com.yxt.base.biz.base.basebrandinfo.BaseBrandInfoService;
import com.yxt.base.biz.base.basegoodssku.BaseGoodsSkuService;
import com.yxt.base.biz.base.basegoodsspudetail.BaseGoodsSpuDetailService;
import com.yxt.base.biz.base.basegoodstype.BaseGoodsType;
import com.yxt.base.biz.base.basegoodstype.BaseGoodsTypeService;
import com.yxt.base.biz.base.basemanufacturer.BaseManufacturer;
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.*;
/**
@ -254,6 +253,23 @@ public class BaseGoodsSpuService extends MybatisBaseService<BaseGoodsSpuMapper,
if (StringUtils.isNotBlank(query.getManufacturerName())) {
qw.like("m.manufacturerName", query.getManufacturerName());
}
if (StringUtils.isNotBlank(query.getGoodsClassKey())) {
qw.like("p.goodsClassKey", query.getGoodsClassKey());
}
if (StringUtils.isNotBlank(query.getGoodsClassValue())) {
qw.like("p.goodsClassValue", query.getGoodsClassValue());
}
if (StringUtils.isNotBlank(query.getGoodsLevelKey())) {
qw.like("p.goodsLevelKey", query.getGoodsLevelKey());
}
if (StringUtils.isNotBlank(query.getGoodsLevelValue())) {
qw.like("p.goodsLevelValue", query.getGoodsLevelValue());
}
if (query.getType().equals("0")) {
qw.eq("p.goodsClassKey", "004");
} else {
qw.ne("p.goodsClassKey", "004");
}
IPage<BaseGoodsSpu> page = PagerUtil.queryToPage(pq);
IPage<BaseGoodsSpuListVo> pagging = baseMapper.goodsListPage(page, qw);
PagerVo<BaseGoodsSpuListVo> p = PagerUtil.pageToVo(pagging, null);
@ -310,7 +326,7 @@ public class BaseGoodsSpuService extends MybatisBaseService<BaseGoodsSpuMapper,
baseGoodsSkuService.updateById(skuUpdate);
BaseGoodsSkuExtend skuExtendUpdate = baseGoodsSkuExtendService.getOneBySKuSid(skuUpdate.getSid());
if (null != skuExtendUpdate) {
BeanUtil.copyProperties(dto, skuExtendUpdate, "id", "sid");
BeanUtil.copyProperties(dto, skuExtendUpdate, "id", "sid", "isOriginalFactory", "isOriginalFactoryValue");
if (StringUtils.isNotBlank(dto.getSkuRemarks())) {
skuExtendUpdate.setRemarks(dto.getSkuRemarks());
}
@ -566,7 +582,53 @@ public class BaseGoodsSpuService extends MybatisBaseService<BaseGoodsSpuMapper,
public ResultBean<Integer> selByCodeAndDept(String code, String deptSid) {
ResultBean rb = ResultBean.fireFail();
int i = baseMapper.selByCodeAndDept(code,deptSid);
int i = baseMapper.selByCodeAndDept(code, deptSid);
return rb.success().setData(i);
}
public ResultBean<List<YxtBaseFormCommon>> selPurchaseAssetInfo(String orgPath,String name) {
ResultBean rb = ResultBean.fireFail();
List<YxtBaseFormCommon> list = new ArrayList<>();
String useOrgSid = "";
if (StringUtils.isNotBlank(orgPath)) {
List<String> 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<BaseGoodsSpu> goodsSpus = baseMapper.selPurchaseAssetInfo(useOrgSid,name);
if (!goodsSpus.isEmpty()) {
goodsSpus.stream().forEach(details -> {
YxtBaseFormCommon formCommon = new YxtBaseFormCommon();
formCommon.setId(details.getSid());
formCommon.setDictValue(details.getGoodsCode());
Map<String, Object> extra = new HashMap<>();
if (StringUtils.isNotBlank(details.getSid())) {
extra.put("goodsSpuSid", details.getSid());
}
if (StringUtils.isNotBlank(details.getGoodsName())) {
extra.put("goodsSpuName", details.getGoodsName());
}
//商品sku
BaseGoodsSku skuUpdate = baseGoodsSkuService.getOneBySpuSid(details.getSid());
if (null != skuUpdate) {
if (StringUtils.isNotBlank(skuUpdate.getIndexes())) {
extra.put("goodsSkuOwnSpec", skuUpdate.getIndexes());
}
}
if (StringUtils.isNotBlank(details.getGoodsUnitName())) {
extra.put("unit", details.getGoodsUnitName());
}
formCommon.setExtra(extra);
list.add(formCommon);
});
}
return rb.success().setData(list);
}
}

27
yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsspu/YxtBaseFormCommon.java

@ -0,0 +1,27 @@
package com.yxt.base.biz.base.basegoodsspu;
import lombok.Data;
import java.util.Map;
/**
* @description:
* @author: dimengzhe
* @date: 2025/1/16
**/
@Data
public class YxtBaseFormCommon {
private String id;
private String dictValue;
private Map<String, Object> extra;
// 静态方法,直接通过方法创建对象并赋值
public static YxtBaseFormCommon of(String id, String dictValue) {
YxtBaseFormCommon formCommon = new YxtBaseFormCommon();
formCommon.setId(id);
formCommon.setDictValue(dictValue);
return formCommon;
}
}

21
yxt-crm-biz/src/main/java/com/yxt/crm/biz/crmcustomer/CrmCustomerService.java

@ -29,9 +29,13 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.HanZiConverterPinYin;
import com.yxt.common.base.utils.HttpStatusEnum;
import com.yxt.crm.biz.crmcustomerorg.CrmCustomerOrg;
import com.yxt.common.base.utils.PagerUtil;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import com.yxt.crm.feign.anruicrm.crmcustomertemp.CrmCustomerTemp;
import com.yxt.crm.feign.anruicrm.crmcustomertemp.CrmCustomerTempFeign;
import com.yxt.crm.feign.as.ascustomervehicle.AsCustomerCrmVehVo;
@ -51,21 +55,15 @@ import com.yxt.crm.feign.portal.sysuser.SysUserDto;
import com.yxt.crm.feign.portal.sysuser.SysUserFeign;
import com.yxt.crm.feign.portal.sysuser.SysUserVo;
import org.apache.commons.lang3.StringUtils;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.PagerUtil;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
/**
@ -659,6 +657,7 @@ public class CrmCustomerService extends MybatisBaseService<CrmCustomerMapper, Cr
String sid = "";
if (dto.getVehState().equals("0")) {
CrmCustomer crmCustomerTemp = new CrmCustomer();
sid = crmCustomerTemp.getSid();
BeanUtil.copyProperties(dto,crmCustomerTemp,"sid");
String orgSid = "";
if (StringUtils.isNotBlank(dto.getOrgPath())) {

8
yxt-crm-biz/src/main/java/com/yxt/crm/biz/crmdockingpeople/CrmDockingPeopleMapper.xml

@ -11,6 +11,12 @@
SELECT * FROM crm_docking_people <where> ${ew.sqlSegment} </where>
</select>
<select id="getListByCustomerSid" resultType="com.yxt.crm.biz.crmdockingpeople.PeopleList">
SELECT * FROM crm_docking_people where customerSid =#{customerSid}
SELECT
sid,
`name`,
mobile,
remarks,
IF(isEnable = 0, '禁用', '启用') isEnable
FROM crm_docking_people where customerSid =#{customerSid}
</select>
</mapper>

1
yxt-crm-biz/src/main/java/com/yxt/crm/biz/crmdockingpeople/PeopleList.java

@ -17,4 +17,5 @@ public class PeopleList {
@ApiModelProperty("手机号码")
private String mobile; // 手机号码
private String remarks;
private String isEnable;
}

91
yxt-oa/src/main/java/com/yxt/anrui/oa/api/AdAllocateAssetApplyRest.java

@ -0,0 +1,91 @@
package com.yxt.anrui.oa.api;
import com.yxt.anrui.oa.biz.adallocateassetapply.AdAllocateAssetApplyDetailVo;
import com.yxt.anrui.oa.biz.adallocateassetapply.AdAllocateAssetApplyDto;
import com.yxt.anrui.oa.biz.adallocateassetapply.AdAllocateAssetApplyService;
import com.yxt.anrui.oa.biz.adallocateassetapply.AdAllocateAssetApplyVo;
import com.yxt.anrui.oa.biz.oaform.flowable.CompleteDto;
import com.yxt.anrui.oa.biz.oaform.flowable.NodeQuery;
import com.yxt.anrui.oa.biz.oaform.flowable.TaskDto;
import com.yxt.common.core.result.ResultBean;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
@RestController
@RequestMapping("v1/AdAllocateAssetApply")
public class AdAllocateAssetApplyRest {
@Autowired
private AdAllocateAssetApplyService adAllocateAssetApplyService;
@ApiOperation("初始化(新增或修改)")
@GetMapping({"/getInit", "/getInit/{sid}"})
public ResultBean<AdAllocateAssetApplyVo> getInit(
@PathVariable(value = "sid", required = false) String sid,
@RequestParam(value = "userSid", required = false) String userSid,
@RequestParam(value = "orgPath", required = false) String orgPath) {
ResultBean<AdAllocateAssetApplyVo> rb = ResultBean.fireFail();
if (sid == null || sid.isEmpty()) {
// 执行新增初始化
if (userSid == null || orgPath == null) {
return rb.setMsg("userSid和orgPath不能为空");
}
return adAllocateAssetApplyService.getSaveInit(userSid, orgPath);
} else {
// 执行修改初始化
return adAllocateAssetApplyService.getUpdateInit(sid);
}
}
@ApiOperation("新增或修改")
@PostMapping("/save")
public ResultBean save(@RequestBody AdAllocateAssetApplyDto dto) {
return adAllocateAssetApplyService.saveOrUpdateDto(dto);
}
@ApiOperation("根据sid批量删除")
@DeleteMapping("/delBySids")
public ResultBean delBySids(@RequestBody String[] sids) {
ResultBean rb = ResultBean.fireFail();
adAllocateAssetApplyService.delAll(sids);
return rb.success();
}
@ApiOperation("详情")
@GetMapping("/details/{sid}")
ResultBean<AdAllocateAssetApplyDetailVo> details(@PathVariable("sid") String sid
, @RequestParam(value = "application", required = false) String application) {
return adAllocateAssetApplyService.details(sid,application);
}
@ApiOperation("提交审批流程")
@PostMapping("/submit")
public ResultBean submit(@RequestBody @Valid AdAllocateAssetApplyDto dto) {
return adAllocateAssetApplyService.submit(dto);
}
@ApiOperation(value = "办理(同意)")
@PutMapping("/complete")
public ResultBean complete(@Valid @RequestBody CompleteDto dto) {
return adAllocateAssetApplyService.complete(dto);
}
@ApiOperation(value = "驳回任务")
@PutMapping(value = "/reject")
public ResultBean reject(@Valid @RequestBody TaskDto dto) {
return adAllocateAssetApplyService.reject(dto);
}
@ApiOperation("获取流程操作标题")
@GetMapping("/getFlowOperateTitle")
@ResponseBody
ResultBean<String> getFlowOperateTitle(@SpringQueryMap NodeQuery query) {
return adAllocateAssetApplyService.getFlowOperateTitle(query);
}
}

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save