Browse Source

2023年8月11日17:27:02

纪新园 2 years ago
parent
commit
60293cfe6f
27 changed files with 1208 additions and 475 deletions
  1. 31 0
      blade-service-api/blade-client-api/src/main/java/org/springblade/client/dto/GoodsDescDto.java
  2. 7 1
      blade-service-api/blade-client-api/src/main/java/org/springblade/client/entity/CorpEquipmentArchives.java
  3. 2 0
      blade-service-api/blade-client-api/src/main/java/org/springblade/client/entity/GoodsDesc.java
  4. 34 0
      blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/maintenance/dto/MaintenanceLogDTO.java
  5. 83 0
      blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/maintenance/entity/MaintenanceLog.java
  6. 36 0
      blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/maintenance/vo/MaintenanceLogVO.java
  7. 19 0
      blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/controller/TradingBoxFeesController.java
  8. 342 12
      blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/controller/TradingBoxItemController.java
  9. 28 0
      blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/controller/TransportItemController.java
  10. 15 0
      blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/controller/TransportItemFeesController.java
  11. 2 0
      blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/service/IArchivesService.java
  12. 5 0
      blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/service/impl/ArchivesServiceImpl.java
  13. 6 403
      blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/service/impl/TradingBoxServiceImpl.java
  14. 1 1
      blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/service/impl/TransferServiceImpl.java
  15. 3 55
      blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/service/impl/TransportServiceImpl.java
  16. 1 0
      blade-service/blade-client/src/main/java/org/springblade/client/equipment/controller/CorpEquipmentArchivesController.java
  17. 20 1
      blade-service/blade-client/src/main/java/org/springblade/client/equipment/service/impl/CorpEquipmentArchivesServiceImpl.java
  18. 1 0
      blade-service/blade-client/src/main/java/org/springblade/client/project/controller/ProjectGoodsController.java
  19. 10 2
      blade-service/blade-client/src/main/java/org/springblade/client/serial/service/impl/SerialServiceImpl.java
  20. 50 0
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/maintenance/controller/MaintenanceController.java
  21. 126 0
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/maintenance/controller/MaintenanceLogController.java
  22. 42 0
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/maintenance/mapper/MaintenanceLogMapper.java
  23. 23 0
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/maintenance/mapper/MaintenanceLogMapper.xml
  24. 41 0
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/maintenance/service/IMaintenanceLogService.java
  25. 10 0
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/maintenance/service/IMaintenanceService.java
  26. 41 0
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/maintenance/service/impl/MaintenanceLogServiceImpl.java
  27. 229 0
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/maintenance/service/impl/MaintenanceServiceImpl.java

+ 31 - 0
blade-service-api/blade-client-api/src/main/java/org/springblade/client/dto/GoodsDescDto.java

@@ -188,5 +188,36 @@ public class GoodsDescDto implements Serializable {
 	@ApiModelProperty(value = "兑换积分")
 	private BigDecimal integral;
 
+	/**
+	 * 出场日期
+	 */
+	@ApiModelProperty("出场日期")
+	private Date exitDate;
+	/**
+	 * 维修日期
+	 */
+	@ApiModelProperty("维修日期")
+	private Date maintenanceDate;
+
+	/**
+	 * 供应商
+	 */
+	@ApiModelProperty(value = "供应商")
+	private Long corpId;
+	/**
+	 * 供应商名称
+	 */
+	@ApiModelProperty(value = "供应商名称")
+	private String corpName;
+
+	//品牌
+	private String brand;
+
+	//品牌
+	private Long brandId;
+
+	//规格尺寸
+	private String specs;
+
 
 }

+ 7 - 1
blade-service-api/blade-client-api/src/main/java/org/springblade/client/entity/CorpEquipmentArchives.java

@@ -18,9 +18,11 @@ package org.springblade.client.entity;
 
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.io.Serializable;
 import java.util.Date;
@@ -69,11 +71,15 @@ public class CorpEquipmentArchives implements Serializable {
 	 * 签约开始时间
 	 */
 	@ApiModelProperty(value = "签约开始时间")
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+	@DateTimeFormat(pattern = "yyyy-MM-dd")
 	private Date signingDateStart;
-	/**
+	/**R
 	 * 签约结束时间
 	 */
 	@ApiModelProperty(value = "签约结束时间")
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+	@DateTimeFormat(pattern = "yyyy-MM-dd")
 	private Date signingDateEnd;
 	/**
 	 * 备注(收费指示)

+ 2 - 0
blade-service-api/blade-client-api/src/main/java/org/springblade/client/entity/GoodsDesc.java

@@ -77,6 +77,8 @@ public class GoodsDesc implements Serializable {
 	private String unit;
 	//品牌
 	private String brand;
+	//品牌
+	private Long brandId;
 	//花纹
 	private String brandItem;
 	//规格尺寸

+ 34 - 0
blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/maintenance/dto/MaintenanceLogDTO.java

@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.purchase.sales.maintenance.dto;
+
+import org.springblade.purchase.sales.maintenance.entity.MaintenanceLog;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 配件汽保维修操作记录表数据传输对象实体类
+ *
+ * @author BladeX
+ * @since 2023-08-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class MaintenanceLogDTO extends MaintenanceLog {
+	private static final long serialVersionUID = 1L;
+
+}

+ 83 - 0
blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/maintenance/entity/MaintenanceLog.java

@@ -0,0 +1,83 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.purchase.sales.maintenance.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 配件汽保维修操作记录表实体类
+ *
+ * @author BladeX
+ * @since 2023-08-11
+ */
+@Data
+@TableName("business_maintenance_log")
+@ApiModel(value = "MaintenanceLog对象", description = "配件汽保维修操作记录表")
+public class MaintenanceLog implements Serializable {
+
+	private static final long serialVersionUID = 1L;
+
+	private Long id;
+	/**
+	 * 来源id
+	 */
+	@ApiModelProperty(value = "来源id")
+	private Long srcId;
+	/**
+	 * 业务编号
+	 */
+	@ApiModelProperty(value = "业务编号")
+	private String sysNo;
+	/**
+	 * 操作类型
+	 */
+	@ApiModelProperty(value = "操作类型")
+	private String type;
+	/**
+	 * 备注(收费指示)
+	 */
+	@ApiModelProperty(value = "备注(收费指示)")
+	private String remarks;
+	/**
+	 * 创建人
+	 */
+	@ApiModelProperty(value = "创建人")
+	private Long createUser;
+	/**
+	 * 创建时间
+	 */
+	@ApiModelProperty(value = "创建时间")
+	private Date createTime;
+	/**
+	 * 是否已删除(0 否 1是)
+	 */
+	@ApiModelProperty(value = "是否已删除(0 否 1是)")
+	private Integer isDeleted;
+	/**
+	 * 创建人
+	 */
+	@ApiModelProperty(value = "创建人")
+	private String createUserName;
+
+
+}

+ 36 - 0
blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/maintenance/vo/MaintenanceLogVO.java

@@ -0,0 +1,36 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.purchase.sales.maintenance.vo;
+
+import org.springblade.purchase.sales.maintenance.entity.MaintenanceLog;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import io.swagger.annotations.ApiModel;
+
+/**
+ * 配件汽保维修操作记录表视图实体类
+ *
+ * @author BladeX
+ * @since 2023-08-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "MaintenanceLogVO对象", description = "配件汽保维修操作记录表")
+public class MaintenanceLogVO extends MaintenanceLog {
+	private static final long serialVersionUID = 1L;
+
+}

+ 19 - 0
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/controller/TradingBoxFeesController.java

@@ -23,8 +23,10 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import lombok.AllArgsConstructor;
+import org.springblade.box.tube.entity.TradingBox;
 import org.springblade.box.tube.entity.TradingBoxFees;
 import org.springblade.box.tube.service.ITradingBoxFeesService;
+import org.springblade.box.tube.service.ITradingBoxService;
 import org.springblade.box.tube.vo.TradingBoxFeesVO;
 import org.springblade.client.entity.FeesDesc;
 import org.springblade.client.feign.IFeesDescClient;
@@ -59,6 +61,8 @@ public class TradingBoxFeesController extends BladeController {
 
 	private final IFeesDescClient feesDescClient;
 
+	private final ITradingBoxService tradingBoxService;
+
 	/**
 	 * 详情
 	 */
@@ -132,7 +136,22 @@ public class TradingBoxFeesController extends BladeController {
 	@ApiOperation(value = "新增或修改", notes = "传入tradingBoxFees")
 	@RepeatSubmit
 	public R submit(@Valid @RequestBody TradingBoxFees tradingBoxFees) {
+		TradingBox tradingBox = new TradingBox();
+		if (ObjectUtils.isNotNull(tradingBoxFees.getPid())) {
+			tradingBox = tradingBoxService.getById(tradingBoxFees.getPid());
+		}
 		if (tradingBoxFees.getId() == null) {
+			if (ObjectUtils.isNotNull(tradingBox)) {
+				if ("BUY".equals(tradingBox.getType())) {
+					tradingBoxFees.setBillType("买箱");
+				} else if ("ZR".equals(tradingBox.getType())) {
+					tradingBoxFees.setBillType("租入");
+				} else if ("ZC".equals(tradingBox.getType())) {
+					tradingBoxFees.setBillType("租出");
+				} else {
+					tradingBoxFees.setBillType("卖箱");
+				}
+			}
 			tradingBoxFees.setCreateUser(AuthUtil.getUserId());
 			tradingBoxFees.setCreateTime(new Date());
 		} else {

+ 342 - 12
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/controller/TradingBoxItemController.java

@@ -23,22 +23,21 @@ import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import lombok.AllArgsConstructor;
+
 import javax.validation.Valid;
 
-import org.springblade.box.tube.entity.TradingBox;
-import org.springblade.box.tube.entity.TradingBoxFiles;
-import org.springblade.box.tube.service.ITradingBoxFilesService;
+import org.springblade.box.tube.entity.*;
+import org.springblade.box.tube.service.*;
 import org.springblade.common.annotation.RepeatSubmit;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.Func;
 import org.springframework.web.bind.annotation.*;
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import org.springblade.box.tube.entity.TradingBoxItem;
 import org.springblade.box.tube.vo.TradingBoxItemVO;
-import org.springblade.box.tube.service.ITradingBoxItemService;
 import org.springblade.core.boot.ctrl.BladeController;
 
 import java.util.ArrayList;
@@ -61,6 +60,16 @@ public class TradingBoxItemController extends BladeController {
 
 	private final ITradingBoxFilesService tradingBoxFilesService;
 
+	private final ITradingBoxService tradingBoxService;
+
+	private final IArchivesService archivesService;
+
+	private final IArchivesFilesService archivesFilesService;
+
+	private final IArchivesTrajectoryService archivesTrajectoryService;
+
+	private final ITransferService transferService;
+
 	/**
 	 * 详情
 	 */
@@ -79,7 +88,7 @@ public class TradingBoxItemController extends BladeController {
 	@ApiOperationSupport(order = 2)
 	@ApiOperation(value = "分页", notes = "传入tradingBoxItem")
 	public R<IPage<TradingBoxItem>> list(TradingBoxItem tradingBoxItem, Query query) {
-		if (ObjectUtils.isNull(tradingBoxItem.getPid())){
+		if (ObjectUtils.isNull(tradingBoxItem.getPid())) {
 			return R.data(null);
 		}
 		LambdaQueryWrapper<TradingBoxItem> lambdaQueryWrapper = new LambdaQueryWrapper<>();
@@ -113,7 +122,7 @@ public class TradingBoxItemController extends BladeController {
 	@ApiOperationSupport(order = 2)
 	@ApiOperation(value = "分页", notes = "传入tradingBoxItem")
 	public R<List<TradingBoxItem>> list(TradingBoxItem tradingBoxItem) {
-		if (ObjectUtils.isNull(tradingBoxItem.getPid())){
+		if (ObjectUtils.isNull(tradingBoxItem.getPid())) {
 			return R.data(new ArrayList<>());
 		}
 		LambdaQueryWrapper<TradingBoxItem> lambdaQueryWrapper = new LambdaQueryWrapper<>();
@@ -179,11 +188,332 @@ public class TradingBoxItemController extends BladeController {
 	@ApiOperation(value = "新增或修改", notes = "传入tradingBoxItem")
 	@RepeatSubmit
 	public R submit(@Valid @RequestBody TradingBoxItem tradingBoxItem) {
-		if (tradingBoxItem.getId() == null){
-			tradingBoxItem.setCreateUser(AuthUtil.getUserId());
-			tradingBoxItem.setCreateUserName(AuthUtil.getUserName());
-			tradingBoxItem.setCreateTime(new Date());
-		}else{
+		TradingBox tradingBox = new TradingBox();
+		if (ObjectUtils.isNotNull(tradingBoxItem.getPid())) {
+			tradingBox = tradingBoxService.getById(tradingBoxItem.getPid());
+		}
+		if (tradingBoxItem.getId() == null) {
+			if (ObjectUtils.isNotNull(tradingBox)) {
+				if ("BUY".equals(tradingBox.getType())) {
+					tradingBoxItem.setBoxSource("购买");
+					tradingBoxItem.setStatus("待使用");
+				} else {
+					if (tradingBoxItem.getBoxSource().equals("购买")) {
+						tradingBoxItem.setStatus("卖出");
+					} else {
+						tradingBoxItem.setStatus("退租");
+					}
+				}
+				tradingBoxItem.setCreateUser(AuthUtil.getUserId());
+				tradingBoxItem.setCreateTime(new Date());
+				tradingBoxItem.setCreateUserName(AuthUtil.getUserName());
+				tradingBoxItem.setTenantId(AuthUtil.getTenantId());
+				tradingBoxItem.setPid(tradingBox.getId());
+				tradingBoxItem.setStackingStatus("未堆存");
+				tradingBoxItemService.save(tradingBoxItem);
+				String updateChar = tradingBoxItem.getCode() + tradingBoxItem.getBoxType() + tradingBoxItem.getAddress() + tradingBoxItem.getNewDate() + tradingBoxItem.getStatus();
+				if (ObjectUtils.isNull(tradingBoxItem.getUpdateChar()) || !updateChar.equals(tradingBoxItem.getUpdateChar())) {
+					tradingBoxItem.setUpdateChar(updateChar);
+					tradingBoxItemService.updateById(tradingBoxItem);
+					if (ObjectUtils.isNotNull(tradingBoxItem.getCode())) {
+						//更新箱档案信息
+						Archives archivesR = archivesService.getOne(new LambdaQueryWrapper<Archives>().eq(Archives::getIsDeleted, 0).eq(Archives::getTenantId, AuthUtil.getTenantId()).eq(Archives::getCode, tradingBoxItem.getCode()));
+						Archives archives = new Archives();
+						if (ObjectUtils.isNotNull(archivesR)) {
+							BeanUtil.copy(archivesR, archives);
+						} else {
+							archives.setCode(tradingBoxItem.getCode());
+							archives.setName(tradingBoxItem.getBoxType());
+							archives.setVolume(tradingBoxItem.getVolume());
+							archives.setGorssWeight(tradingBoxItem.getGrossWeight());
+							archives.setTypeId(tradingBoxItem.getBoxTypeId());
+							archives.setAddressId(tradingBoxItem.getAddressId());
+							archives.setAddress(tradingBoxItem.getAddress());
+							archives.setNewDate(tradingBoxItem.getNewDate());
+							archives.setLeasingCompanyId(tradingBox.getPurchaseCompanyId());
+							archives.setLeasingCompany(tradingBox.getPurchaseCompanyName());
+							archives.setBoxSource(tradingBoxItem.getBoxSource());
+							archives.setBoxStatus(tradingBoxItem.getBoxStatus());
+							archives.setEmptyWeight(tradingBoxItem.getEmptyWeight());
+							archives.setTare(tradingBoxItem.getTare());
+							archives.setLoadingWeight(tradingBoxItem.getLoadingWeight());
+							archives.setBoxMakingCompany(tradingBoxItem.getBoxMakingCompany());
+							archives.setBoxMakingCompanyId(tradingBoxItem.getBoxMakingCompanyId());
+							archives.setBoxMakingDate(tradingBoxItem.getBoxMakingDate());
+							archives.setLeaseCommencementDate(tradingBoxItem.getLeaseCommencementDate());
+							archives.setBoxAge(tradingBoxItem.getBoxAge());
+							archives.setPurchaseDate(tradingBox.getPurchaseDate());
+							archives.setContractNo(tradingBox.getContractNo());
+							archives.setBoxAccessStatus("");
+						}
+						archives.setStatus(tradingBoxItem.getStatus());
+						if (ObjectUtils.isNotNull(archivesR)) {
+							archives.setUpdateTime(new Date());
+							archives.setUpdateUserName(AuthUtil.getUserName());
+							archives.setUpdateUser(AuthUtil.getUserId());
+							archivesService.updateById(archives);
+
+						} else {
+							archives.setCreateUser(AuthUtil.getUserId());
+							archives.setCreateTime(new Date());
+							archives.setCreateUserName(AuthUtil.getUserName());
+							archives.setTenantId(AuthUtil.getTenantId());
+							archivesService.save(archives);
+							List<ArchivesFiles> archivesFilesList = BeanUtil.copy(tradingBoxItem.getTradingBoxFilesList(), ArchivesFiles.class);
+							for (ArchivesFiles archivesFiles : archivesFilesList) {
+								archivesFiles.setId(null);
+								archivesFiles.setPid(archives.getId());
+								archivesFiles.setFileName(archivesFiles.getLabel());
+								archivesFiles.setUrl(archivesFiles.getValue());
+								archivesFiles.setCreateUser(AuthUtil.getUserId());
+								archivesFiles.setCreateTime(new Date());
+								archivesFilesService.save(archivesFiles);
+							}
+						}
+						//记录箱轨迹信息
+						ArchivesTrajectory archivesTrajectory = new ArchivesTrajectory();
+						if ("BUY".equals(tradingBox.getType())) {
+							archivesTrajectory.setStatus("买箱");
+						} else if ("SELL".equals(tradingBox.getType())) {
+							archivesTrajectory.setStatus("卖箱");
+						}
+						archivesTrajectory.setCorpId(tradingBox.getPurchaseCompanyId());
+						archivesTrajectory.setCorpName(tradingBox.getPurchaseCompanyName());
+						archivesTrajectory.setContractNo(tradingBox.getContractNo());
+						archivesTrajectory.setBillType(tradingBox.getType());
+						archivesTrajectory.setCode(tradingBoxItem.getCode());
+						archivesTrajectory.setAddress(tradingBoxItem.getAddress());
+						archivesTrajectory.setNewDate(tradingBoxItem.getNewDate());
+						archivesTrajectory.setCreateTime(new Date());
+						archivesTrajectory.setCreateUser(AuthUtil.getUserId());
+						archivesTrajectory.setCreateUserName(AuthUtil.getUserName());
+						archivesTrajectory.setTenantId(AuthUtil.getTenantId());
+						archivesTrajectory.setSrcId(tradingBox.getId());
+						archivesTrajectoryService.save(archivesTrajectory);
+					} else {
+						throw new RuntimeException("箱号不能为空");
+					}
+				}
+			}
+		} else {
+			tradingBoxItem.setUpdateTime(new Date());
+			tradingBoxItem.setUpdateUser(AuthUtil.getUserId());
+			tradingBoxItem.setUpdateUserName(AuthUtil.getUserName());
+		}
+		//明细图片
+		List<TradingBoxFiles> tradingBoxItemFilesList = tradingBoxItem.getTradingBoxFilesList();
+		if (ObjectUtils.isNotNull(tradingBoxItemFilesList) && tradingBoxItemFilesList.size() > 0) {
+			for (TradingBoxFiles tradingBoxFiles : tradingBoxItemFilesList) {
+				if (tradingBoxFiles.getId() == null) {
+					tradingBoxFiles.setCreateUser(AuthUtil.getUserId());
+					tradingBoxFiles.setCreateTime(new Date());
+					tradingBoxFiles.setTenantId(AuthUtil.getTenantId());
+					tradingBoxFiles.setPid(tradingBoxItem.getId());
+					tradingBoxFiles.setType("2");
+					tradingBoxFiles.setFileName(tradingBoxFiles.getLabel());
+					tradingBoxFiles.setUrl(tradingBoxFiles.getValue());
+				} else {
+					tradingBoxFiles.setUpdateUser(AuthUtil.getUserId());
+					tradingBoxFiles.setUpdateTime(new Date());
+					tradingBoxFiles.setPid(tradingBoxItem.getId());
+					tradingBoxFiles.setType("2");
+					tradingBoxFiles.setFileName(tradingBoxFiles.getLabel());
+					tradingBoxFiles.setUrl(tradingBoxFiles.getValue());
+				}
+			}
+			tradingBoxFilesService.saveOrUpdateBatch(tradingBoxItemFilesList);
+			tradingBoxItem.setTradingBoxFilesList(tradingBoxItemFilesList);
+		}
+		return R.status(tradingBoxItemService.saveOrUpdate(tradingBoxItem));
+	}
+
+	/**
+	 * 新增或修改 买(卖)箱明细表
+	 */
+	@PostMapping("/submitRent")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入tradingBoxItem")
+	@RepeatSubmit
+	public R submitRent(@Valid @RequestBody TradingBoxItem tradingBoxItem) {
+		TradingBox tradingBox = new TradingBox();
+		if (ObjectUtils.isNotNull(tradingBoxItem.getPid())) {
+			tradingBox = tradingBoxService.getById(tradingBoxItem.getPid());
+		}
+		if (tradingBoxItem.getId() == null) {
+			if (ObjectUtils.isNotNull(tradingBox)) {
+				if (tradingBox.getType().equals("ZR")) {
+					tradingBoxItem.setBoxSource("租入");
+				} else if (tradingBox.getType().equals("ZC")) {
+				}
+				if (ObjectUtils.isNull(tradingBoxItem.getRentEndDate()) && ObjectUtils.isNull(tradingBoxItem.getRentStartDate())) {
+					tradingBoxItem.setRentEndDate(tradingBoxItem.getLeaseCommencementDate());
+					tradingBoxItem.setRentStartDate(tradingBoxItem.getLeaseCommencementDate());
+				}
+				if (tradingBoxItem.getId() == null) {
+
+					LambdaQueryWrapper<TradingBoxItem> tradingBoxItemLambdaQueryWrapper = new LambdaQueryWrapper<>();
+					tradingBoxItemLambdaQueryWrapper.eq(TradingBoxItem::getIsDeleted, 0)
+						.eq(TradingBoxItem::getTenantId, AuthUtil.getTenantId())
+						.eq(TradingBoxItem::getPid, tradingBox.getId())
+						.eq(TradingBoxItem::getCode, tradingBoxItem.getCode());
+					List<TradingBoxItem> tradingBoxItemList1 = tradingBoxItemService.list(tradingBoxItemLambdaQueryWrapper);
+					if (ObjectUtils.isNotNull(tradingBoxItemList1) && tradingBoxItemList1.size() > 0) {
+						throw new RuntimeException("箱号:" + tradingBoxItem.getCode() + "已存在,保存失败");
+					}
+					if (tradingBox.getType().equals("ZR")) {
+						if (ObjectUtils.isNotNull(tradingBoxItem.getLeaseCommencementDate())) {
+							tradingBoxItem.setStatus("待使用");
+						} else {
+							tradingBoxItem.setStatus("录入");
+						}
+					} else if (tradingBox.getType().equals("ZC")) {
+//						tradingBoxItem.setStatus("使用");
+						if (ObjectUtils.isNotNull(tradingBoxItem.getLeaseCommencementDate())) {
+							tradingBoxItem.setStatus("使用");
+						} else {
+							tradingBoxItem.setStatus("录入");
+						}
+						List<String> codeList = new ArrayList<>();
+						codeList.add(tradingBoxItem.getCode());
+						transferService.stockpilingFee(codeList);
+					}
+					tradingBoxItem.setCreateUser(AuthUtil.getUserId());
+					tradingBoxItem.setCreateTime(new Date());
+					tradingBoxItem.setCreateUserName(AuthUtil.getUserName());
+					tradingBoxItem.setTenantId(AuthUtil.getTenantId());
+					tradingBoxItem.setPid(tradingBox.getId());
+					tradingBoxItemService.save(tradingBoxItem);
+				} else {
+					if (tradingBox.getType().equals("ZR") && "录入".equals(tradingBoxItem.getStatus())) {
+						if (ObjectUtils.isNotNull(tradingBoxItem.getLeaseCommencementDate())) {
+							tradingBoxItem.setStatus("待使用");
+						} else {
+							tradingBoxItem.setStatus("录入");
+						}
+					} else if (tradingBox.getType().equals("ZC") && "录入".equals(tradingBoxItem.getStatus())) {
+//						tradingBoxItem.setStatus("使用");
+						if (ObjectUtils.isNotNull(tradingBoxItem.getLeaseCommencementDate())) {
+							tradingBoxItem.setStatus("使用");
+						} else {
+							tradingBoxItem.setStatus("录入");
+						}
+					}
+					tradingBoxItem.setUpdateUser(AuthUtil.getUserId());
+					tradingBoxItem.setUpdateTime(new Date());
+					tradingBoxItem.setUpdateUserName(AuthUtil.getUserName());
+					tradingBoxItem.setPid(tradingBox.getId());
+					tradingBoxItemService.updateById(tradingBoxItem);
+				}
+				//明细图片
+				List<TradingBoxFiles> tradingBoxItemFilesList = tradingBoxItem.getTradingBoxFilesList();
+				if (ObjectUtils.isNotNull(tradingBoxItemFilesList) && tradingBoxItemFilesList.size() > 0) {
+					for (TradingBoxFiles tradingBoxFiles : tradingBoxItemFilesList) {
+						if (tradingBoxFiles.getId() == null) {
+							tradingBoxFiles.setCreateUser(AuthUtil.getUserId());
+							tradingBoxFiles.setCreateTime(new Date());
+							tradingBoxFiles.setTenantId(AuthUtil.getTenantId());
+							tradingBoxFiles.setPid(tradingBoxItem.getId());
+							tradingBoxFiles.setType("2");
+							tradingBoxFiles.setFileName(tradingBoxFiles.getLabel());
+							tradingBoxFiles.setUrl(tradingBoxFiles.getValue());
+							tradingBoxFilesService.save(tradingBoxFiles);
+						} else {
+							tradingBoxFiles.setUpdateUser(AuthUtil.getUserId());
+							tradingBoxFiles.setUpdateTime(new Date());
+							tradingBoxFiles.setPid(tradingBoxItem.getId());
+							tradingBoxFiles.setType("2");
+							tradingBoxFiles.setFileName(tradingBoxFiles.getLabel());
+							tradingBoxFiles.setUrl(tradingBoxFiles.getValue());
+							tradingBoxFilesService.updateById(tradingBoxFiles);
+						}
+					}
+					tradingBoxItem.setTradingBoxFilesList(tradingBoxItemFilesList);
+				}
+				String updateChar = tradingBoxItem.getCode() + tradingBoxItem.getBoxType() + tradingBoxItem.getAddress() + tradingBoxItem.getNewDate() + tradingBoxItem.getStatus();
+				if (ObjectUtils.isNull(tradingBoxItem.getUpdateChar()) || !updateChar.equals(tradingBoxItem.getUpdateChar())) {
+					tradingBoxItem.setUpdateChar(updateChar);
+					tradingBoxItemService.updateById(tradingBoxItem);
+					if (ObjectUtils.isNotNull(tradingBoxItem.getCode())) {
+						//更新箱档案信息
+						Archives archivesR = archivesService.getOne(new LambdaQueryWrapper<Archives>().eq(Archives::getIsDeleted, 0).eq(Archives::getTenantId, AuthUtil.getTenantId()).eq(Archives::getCode, tradingBoxItem.getCode()));
+						Archives archives = new Archives();
+						if (ObjectUtils.isNotNull(archivesR)) {
+							BeanUtil.copy(archivesR, archives);
+						}
+						archives.setCode(tradingBoxItem.getCode());
+						archives.setName(tradingBoxItem.getBoxType());
+						archives.setVolume(tradingBoxItem.getVolume());
+						archives.setGorssWeight(tradingBoxItem.getGrossWeight());
+						archives.setStatus(tradingBoxItem.getStatus());
+						archives.setTypeId(tradingBoxItem.getBoxTypeId());
+						archives.setAddressId(tradingBoxItem.getAddressId());
+						archives.setAddress(tradingBoxItem.getAddress());
+						archives.setNewDate(tradingBoxItem.getNewDate());
+						archives.setLeasingCompanyId(tradingBox.getPurchaseCompanyId());
+						archives.setLeasingCompany(tradingBox.getPurchaseCompanyName());
+						archives.setBoxSource(tradingBoxItem.getBoxSource());
+						archives.setBoxStatus(tradingBoxItem.getBoxStatus());
+						archives.setEmptyWeight(tradingBoxItem.getEmptyWeight());
+						archives.setTare(tradingBoxItem.getTare());
+						archives.setLoadingWeight(tradingBoxItem.getLoadingWeight());
+						archives.setBoxMakingCompany(tradingBoxItem.getBoxMakingCompany());
+						archives.setBoxMakingCompanyId(tradingBoxItem.getBoxMakingCompanyId());
+						archives.setBoxMakingDate(tradingBoxItem.getBoxMakingDate());
+						archives.setLeaseCommencementDate(tradingBoxItem.getLeaseCommencementDate());
+						archives.setBoxAge(tradingBoxItem.getBoxAge());
+						archives.setPurchaseDate(tradingBoxItem.getLeaseCommencementDate());
+						archives.setContractNo(tradingBox.getContractNo());
+						archives.setBoxAccessStatus("");
+						if (ObjectUtils.isNotNull(archivesR)) {
+							archives.setUpdateTime(new Date());
+							archives.setUpdateUserName(AuthUtil.getUserName());
+							archives.setUpdateUser(AuthUtil.getUserId());
+							archivesService.updateById(archives);
+
+						} else {
+							archives.setCreateUser(AuthUtil.getUserId());
+							archives.setCreateTime(new Date());
+							archives.setCreateUserName(AuthUtil.getUserName());
+							archives.setTenantId(AuthUtil.getTenantId());
+							archivesService.save(archives);
+							List<ArchivesFiles> archivesFilesList = BeanUtil.copy(tradingBoxItem.getTradingBoxFilesList(), ArchivesFiles.class);
+							for (ArchivesFiles archivesFiles : archivesFilesList) {
+								archivesFiles.setId(null);
+								archivesFiles.setPid(archives.getId());
+								archivesFiles.setFileName(archivesFiles.getLabel());
+								archivesFiles.setUrl(archivesFiles.getValue());
+								archivesFiles.setCreateUser(AuthUtil.getUserId());
+								archivesFiles.setCreateTime(new Date());
+								archivesFilesService.save(archivesFiles);
+							}
+						}
+
+						//记录箱轨迹信息
+						ArchivesTrajectory archivesTrajectory = new ArchivesTrajectory();
+						if ("ZR".equals(tradingBox.getType())) {
+							archivesTrajectory.setStatus("租入");
+						} else if ("ZC".equals(tradingBox.getType())) {
+							archivesTrajectory.setStatus("租出");
+						}
+						archivesTrajectory.setCorpId(tradingBox.getPurchaseCompanyId());
+						archivesTrajectory.setCorpName(tradingBox.getPurchaseCompanyName());
+						archivesTrajectory.setContractNo(tradingBox.getContractNo());
+						archivesTrajectory.setBillType(tradingBox.getType());
+						archivesTrajectory.setCode(tradingBoxItem.getCode());
+						archivesTrajectory.setAddress(tradingBoxItem.getAddress());
+						archivesTrajectory.setNewDate(tradingBoxItem.getNewDate());
+						archivesTrajectory.setCreateTime(new Date());
+						archivesTrajectory.setCreateUser(AuthUtil.getUserId());
+						archivesTrajectory.setCreateUserName(AuthUtil.getUserName());
+						archivesTrajectory.setTenantId(AuthUtil.getTenantId());
+						archivesTrajectory.setSrcId(tradingBox.getId());
+						archivesTrajectoryService.save(archivesTrajectory);
+					} else {
+						throw new RuntimeException("箱号不能为空");
+					}
+				}
+			}
+		} else {
 			tradingBoxItem.setUpdateTime(new Date());
 			tradingBoxItem.setUpdateUser(AuthUtil.getUserId());
 			tradingBoxItem.setUpdateUserName(AuthUtil.getUserName());

+ 28 - 0
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/controller/TransportItemController.java

@@ -16,6 +16,7 @@
  */
 package org.springblade.box.tube.controller;
 
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -23,6 +24,9 @@ import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import lombok.AllArgsConstructor;
 import javax.validation.Valid;
 
+import org.springblade.box.tube.entity.Archives;
+import org.springblade.box.tube.service.IArchivesService;
+import org.springblade.box.tube.service.ITransferService;
 import org.springblade.common.annotation.RepeatSubmit;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
@@ -36,7 +40,9 @@ import org.springblade.box.tube.vo.TransportItemVO;
 import org.springblade.box.tube.service.ITransportItemService;
 import org.springblade.core.boot.ctrl.BladeController;
 
+import java.util.ArrayList;
 import java.util.Date;
+import java.util.List;
 
 /**
  * 进出口返程明细表 控制器
@@ -52,6 +58,10 @@ public class TransportItemController extends BladeController {
 
 	private final ITransportItemService transportItemService;
 
+	private final ITransferService transferService;
+
+	private final IArchivesService archivesService;
+
 	/**
 	 * 详情
 	 */
@@ -117,11 +127,29 @@ public class TransportItemController extends BladeController {
 			transportItem.setCreateUser(AuthUtil.getUserId());
 			transportItem.setCreateUserName(AuthUtil.getUserName());
 			transportItem.setCreateTime(new Date());
+			transportItem.setStatus("录入");
+			transportItem.setStockpilingStatus("1");
 		}else{
 			transportItem.setUpdateTime(new Date());
 			transportItem.setUpdateUser(AuthUtil.getUserId());
 			transportItem.setUpdateUserName(AuthUtil.getUserName());
 		}
+		List<String> codeList = new ArrayList<>();
+		codeList.add(transportItem.getCode());
+		transferService.stockpilingFee(codeList);
+		//更新箱档案信息
+		if (ObjectUtils.isNotNull(transportItem.getCode())) {
+			Archives archives = new Archives();
+			archives.setStatus("使用");
+			archives.setCode(transportItem.getCode());
+			archives.setAddress(transportItem.getAddress());
+			archives.setAddressId(transportItem.getAddressId());
+			archives.setNewDate(transportItem.getNewDate());
+			archives.setBoxAccessStatus("");
+			archivesService.updateCode(archives);
+		} else {
+			throw new RuntimeException("箱号不能为空");
+		}
 		return R.status(transportItemService.saveOrUpdate(transportItem));
 	}
 

+ 15 - 0
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/controller/TransportItemFeesController.java

@@ -25,6 +25,8 @@ import lombok.AllArgsConstructor;
 import javax.validation.Valid;
 
 import org.springblade.box.tube.entity.TradingBoxFees;
+import org.springblade.box.tube.entity.Transport;
+import org.springblade.box.tube.service.ITransportService;
 import org.springblade.client.entity.CorpsDesc;
 import org.springblade.client.entity.FeesDesc;
 import org.springblade.client.feign.ICorpsDescClient;
@@ -65,6 +67,8 @@ public class TransportItemFeesController extends BladeController {
 
 	private final ICorpsDescClient corpsDescClient;
 
+	private final ITransportService transportService;
+
 	/**
 	 * 详情
 	 */
@@ -143,7 +147,18 @@ public class TransportItemFeesController extends BladeController {
 	@ApiOperation(value = "新增或修改", notes = "传入transportItemFees")
 	@RepeatSubmit
 	public R submit(@Valid @RequestBody TransportItemFees transportItemFees) {
+		Transport transport = new Transport();
+		if (ObjectUtils.isNotNull(transportItemFees.getPid())){
+			transport = transportService.getById(transportItemFees.getPid());
+		}
 		if (transportItemFees.getId() == null){
+			if (ObjectUtils.isNotNull(transport)){
+				if ("CKZY".equals(transport.getBillType())) {
+					transportItemFees.setBillType("出口装运");
+				} else {
+					transportItemFees.setBillType("进口返程");
+				}
+			}
 			transportItemFees.setCreateUser(AuthUtil.getUserId());
 			transportItemFees.setCreateTime(new Date());
 		}else{

+ 2 - 0
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/service/IArchivesService.java

@@ -74,4 +74,6 @@ public interface IArchivesService extends IService<Archives> {
 	 * 箱分布(分组)
 	 */
 	Map<String, Object> distributionGrouping(Archives archives);
+
+    void updateCode(Archives archives);
 }

+ 5 - 0
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/service/impl/ArchivesServiceImpl.java

@@ -307,4 +307,9 @@ public class ArchivesServiceImpl extends ServiceImpl<ArchivesMapper, Archives> i
 		return map;
 	}
 
+	@Override
+	public void updateCode(Archives archives) {
+		baseMapper.updateCode(archives);
+	}
+
 }

+ 6 - 403
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/service/impl/TradingBoxServiceImpl.java

@@ -204,134 +204,10 @@ public class TradingBoxServiceImpl extends ServiceImpl<TradingBoxMapper, Trading
 			if (ObjectUtils.isNotNull(boxTypeNumber)) {
 				tradingBox.setBoxTypeNumber(boxTypeNumber.substring(0, boxTypeNumber.length() - 1));
 			}
-			for (TradingBoxItem tradingBoxItem : tradingBoxItemList) {
-				if ("BUY".equals(tradingBox.getType())) {
-					tradingBoxItem.setBoxSource("购买");
-					tradingBoxItem.setStatus("待使用");
-				} else {
-					if (tradingBoxItem.getBoxSource().equals("购买")) {
-						tradingBoxItem.setStatus("卖出");
-					} else {
-						tradingBoxItem.setStatus("退租");
-					}
-				}
-				tradingBoxItem.setCreateUser(AuthUtil.getUserId());
-				tradingBoxItem.setCreateTime(new Date());
-				tradingBoxItem.setCreateUserName(AuthUtil.getUserName());
-				tradingBoxItem.setTenantId(AuthUtil.getTenantId());
-				tradingBoxItem.setPid(tradingBox.getId());
-				tradingBoxItem.setStackingStatus("未堆存");
-				tradingBoxItemService.updateById(tradingBoxItem);
-				String updateChar = tradingBoxItem.getCode() + tradingBoxItem.getBoxType() + tradingBoxItem.getAddress() + tradingBoxItem.getNewDate() + tradingBoxItem.getStatus();
-				if (ObjectUtils.isNull(tradingBoxItem.getUpdateChar()) || !updateChar.equals(tradingBoxItem.getUpdateChar())) {
-					tradingBoxItem.setUpdateChar(updateChar);
-					tradingBoxItemService.updateById(tradingBoxItem);
-					if (ObjectUtils.isNotNull(tradingBoxItem.getCode())) {
-						//更新箱档案信息
-						Archives archivesR = archivesMapper.selectOne(new LambdaQueryWrapper<Archives>().eq(Archives::getIsDeleted, 0).eq(Archives::getTenantId, AuthUtil.getTenantId()).eq(Archives::getCode, tradingBoxItem.getCode()));
-						Archives archives = new Archives();
-						if (ObjectUtils.isNotNull(archivesR)) {
-							BeanUtil.copy(archivesR, archives);
-						} else {
-							archives.setCode(tradingBoxItem.getCode());
-							archives.setName(tradingBoxItem.getBoxType());
-							archives.setVolume(tradingBoxItem.getVolume());
-							archives.setGorssWeight(tradingBoxItem.getGrossWeight());
-							archives.setTypeId(tradingBoxItem.getBoxTypeId());
-							archives.setAddressId(tradingBoxItem.getAddressId());
-							archives.setAddress(tradingBoxItem.getAddress());
-							archives.setNewDate(tradingBoxItem.getNewDate());
-							archives.setLeasingCompanyId(tradingBox.getPurchaseCompanyId());
-							archives.setLeasingCompany(tradingBox.getPurchaseCompanyName());
-							archives.setBoxSource(tradingBoxItem.getBoxSource());
-							archives.setBoxStatus(tradingBoxItem.getBoxStatus());
-							archives.setEmptyWeight(tradingBoxItem.getEmptyWeight());
-							archives.setTare(tradingBoxItem.getTare());
-							archives.setLoadingWeight(tradingBoxItem.getLoadingWeight());
-							archives.setBoxMakingCompany(tradingBoxItem.getBoxMakingCompany());
-							archives.setBoxMakingCompanyId(tradingBoxItem.getBoxMakingCompanyId());
-							archives.setBoxMakingDate(tradingBoxItem.getBoxMakingDate());
-							archives.setLeaseCommencementDate(tradingBoxItem.getLeaseCommencementDate());
-							archives.setBoxAge(tradingBoxItem.getBoxAge());
-							archives.setPurchaseDate(tradingBox.getPurchaseDate());
-							archives.setContractNo(tradingBox.getContractNo());
-							archives.setBoxAccessStatus("");
-						}
-						archives.setStatus(tradingBoxItem.getStatus());
-						if (ObjectUtils.isNotNull(archivesR)) {
-							archives.setUpdateTime(new Date());
-							archives.setUpdateUserName(AuthUtil.getUserName());
-							archives.setUpdateUser(AuthUtil.getUserId());
-							archivesMapper.updateById(archives);
-
-						} else {
-							archives.setCreateUser(AuthUtil.getUserId());
-							archives.setCreateTime(new Date());
-							archives.setCreateUserName(AuthUtil.getUserName());
-							archives.setTenantId(AuthUtil.getTenantId());
-							archivesMapper.insert(archives);
-							List<ArchivesFiles> archivesFilesList = BeanUtil.copy(tradingBoxItem.getTradingBoxFilesList(), ArchivesFiles.class);
-							for (ArchivesFiles archivesFiles : archivesFilesList) {
-								archivesFiles.setId(null);
-								archivesFiles.setPid(archives.getId());
-								archivesFiles.setFileName(archivesFiles.getLabel());
-								archivesFiles.setUrl(archivesFiles.getValue());
-								archivesFiles.setCreateUser(AuthUtil.getUserId());
-								archivesFiles.setCreateTime(new Date());
-								archivesFilesMapper.insert(archivesFiles);
-							}
-						}
-						//记录箱轨迹信息
-						ArchivesTrajectory archivesTrajectory = new ArchivesTrajectory();
-						if ("BUY".equals(tradingBox.getType())) {
-							archivesTrajectory.setStatus("买箱");
-						} else if ("SELL".equals(tradingBox.getType())) {
-							archivesTrajectory.setStatus("卖箱");
-						}
-						archivesTrajectory.setCorpId(tradingBox.getPurchaseCompanyId());
-						archivesTrajectory.setCorpName(tradingBox.getPurchaseCompanyName());
-						archivesTrajectory.setContractNo(tradingBox.getContractNo());
-						archivesTrajectory.setBillType(tradingBox.getType());
-						archivesTrajectory.setCode(tradingBoxItem.getCode());
-						archivesTrajectory.setAddress(tradingBoxItem.getAddress());
-						archivesTrajectory.setNewDate(tradingBoxItem.getNewDate());
-						archivesTrajectory.setCreateTime(new Date());
-						archivesTrajectory.setCreateUser(AuthUtil.getUserId());
-						archivesTrajectory.setCreateUserName(AuthUtil.getUserName());
-						archivesTrajectory.setTenantId(AuthUtil.getTenantId());
-						archivesTrajectory.setSrcId(tradingBox.getId());
-						archivesTrajectoryMapper.insert(archivesTrajectory);
-					} else {
-						throw new RuntimeException("箱号不能为空");
-					}
-				}
-			}
 			tradingBox.setTradingBoxItemsList(tradingBoxItemList);
 			tradingBox.setBoxNumber(tradingBoxItemList.size());
 		}
 		baseMapper.updateById(tradingBox);
-		//费用明细
-		LambdaQueryWrapper<TradingBoxFees> tradingBoxFeesLambdaQueryWrapper = new LambdaQueryWrapper<>();
-		tradingBoxFeesLambdaQueryWrapper.eq(TradingBoxFees::getIsDeleted, 0)
-			.eq(TradingBoxFees::getTenantId, AuthUtil.getTenantId())
-			.eq(TradingBoxFees::getPid, tradingBox.getId())
-			.orderByDesc(TradingBoxFees::getCreateTime);
-		List<TradingBoxFees> tradingBoxFeesList = tradingBoxFeesService.list(tradingBoxFeesLambdaQueryWrapper);
-		if (ObjectUtils.isNotNull(tradingBoxFeesList) && tradingBoxFeesList.size() > 0) {
-			for (TradingBoxFees tradingBoxFees : tradingBoxFeesList) {
-				if ("BUY".equals(tradingBox.getType())) {
-					tradingBoxFees.setBillType("买箱");
-				} else {
-					tradingBoxFees.setBillType("卖箱");
-				}
-				tradingBoxFees.setCreateUser(AuthUtil.getUserId());
-				tradingBoxFees.setCreateTime(new Date());
-				tradingBoxFees.setTenantId(AuthUtil.getTenantId());
-				tradingBoxFees.setPid(tradingBox.getId());
-			}
-			tradingBox.setTradingBoxFeesList(tradingBoxFeesList);
-			tradingBoxFeesService.updateBatchById(tradingBoxFeesList);
-		}
 		//主表附件
 		List<TradingBoxFiles> tradingBoxFilesList = tradingBox.getTradingBoxFilesList();
 		if (ObjectUtils.isNotNull(tradingBoxFilesList) && tradingBoxFilesList.size() > 0) {
@@ -397,7 +273,12 @@ public class TradingBoxServiceImpl extends ServiceImpl<TradingBoxMapper, Trading
 			baseMapper.updateById(tradingBox);
 		}
 		//明细数据
-		List<TradingBoxItem> tradingBoxItemList = tradingBox.getTradingBoxItemsList();
+		LambdaQueryWrapper<TradingBoxItem> tradingBoxItemLambdaQueryWrapper = new LambdaQueryWrapper<>();
+		tradingBoxItemLambdaQueryWrapper.eq(TradingBoxItem::getIsDeleted, 0)
+			.eq(TradingBoxItem::getTenantId, AuthUtil.getTenantId())
+			.eq(TradingBoxItem::getPid, tradingBox.getId())
+			.orderByDesc(TradingBoxItem::getCreateTime);
+		List<TradingBoxItem> tradingBoxItemList = tradingBoxItemService.list(tradingBoxItemLambdaQueryWrapper);
 		if (ObjectUtils.isNotNull(tradingBoxItemList) && tradingBoxItemList.size() > 0) {
 			//箱号拼接字符串
 			List<String> codes = tradingBoxItemList.stream().map(TradingBoxItem::getCode).distinct().collect(Collectors.toList());
@@ -418,206 +299,10 @@ public class TradingBoxServiceImpl extends ServiceImpl<TradingBoxMapper, Trading
 			if (ObjectUtils.isNotNull(boxTypeNumber)) {
 				tradingBox.setBoxTypeNumber(boxTypeNumber.substring(0, boxTypeNumber.length() - 1));
 			}
-			for (TradingBoxItem tradingBoxItem : tradingBoxItemList) {
-				if (tradingBox.getType().equals("ZR")) {
-					tradingBoxItem.setBoxSource("租入");
-				} else if (tradingBox.getType().equals("ZC")) {
-				}
-				if (ObjectUtils.isNull(tradingBoxItem.getRentEndDate()) && ObjectUtils.isNull(tradingBoxItem.getRentStartDate())) {
-					tradingBoxItem.setRentEndDate(tradingBoxItem.getLeaseCommencementDate());
-					tradingBoxItem.setRentStartDate(tradingBoxItem.getLeaseCommencementDate());
-				}
-				if (tradingBoxItem.getId() == null) {
-
-					LambdaQueryWrapper<TradingBoxItem> tradingBoxItemLambdaQueryWrapper = new LambdaQueryWrapper<>();
-					tradingBoxItemLambdaQueryWrapper.eq(TradingBoxItem::getIsDeleted, 0)
-						.eq(TradingBoxItem::getTenantId, AuthUtil.getTenantId())
-						.eq(TradingBoxItem::getPid, tradingBox.getId())
-						.eq(TradingBoxItem::getCode, tradingBoxItem.getCode());
-					List<TradingBoxItem> tradingBoxItemList1 = tradingBoxItemService.list(tradingBoxItemLambdaQueryWrapper);
-					if (ObjectUtils.isNotNull(tradingBoxItemList1) && tradingBoxItemList1.size() > 0) {
-						throw new RuntimeException("箱号:" + tradingBoxItem.getCode() + "已存在,保存失败");
-					}
-					if (tradingBox.getType().equals("ZR")) {
-						if (ObjectUtils.isNotNull(tradingBoxItem.getLeaseCommencementDate())) {
-							tradingBoxItem.setStatus("待使用");
-						} else {
-							tradingBoxItem.setStatus("录入");
-						}
-					} else if (tradingBox.getType().equals("ZC")) {
-//						tradingBoxItem.setStatus("使用");
-						if (ObjectUtils.isNotNull(tradingBoxItem.getLeaseCommencementDate())) {
-							tradingBoxItem.setStatus("使用");
-						} else {
-							tradingBoxItem.setStatus("录入");
-						}
-						List<String> codeList = new ArrayList<>();
-						codeList.add(tradingBoxItem.getCode());
-						transferService.stockpilingFee(codeList);
-					}
-					tradingBoxItem.setCreateUser(AuthUtil.getUserId());
-					tradingBoxItem.setCreateTime(new Date());
-					tradingBoxItem.setCreateUserName(AuthUtil.getUserName());
-					tradingBoxItem.setTenantId(AuthUtil.getTenantId());
-					tradingBoxItem.setPid(tradingBox.getId());
-					tradingBoxItemService.save(tradingBoxItem);
-				} else {
-					if (tradingBox.getType().equals("ZR") && "录入".equals(tradingBoxItem.getStatus())) {
-						if (ObjectUtils.isNotNull(tradingBoxItem.getLeaseCommencementDate())) {
-							tradingBoxItem.setStatus("待使用");
-						} else {
-							tradingBoxItem.setStatus("录入");
-						}
-					} else if (tradingBox.getType().equals("ZC") && "录入".equals(tradingBoxItem.getStatus())) {
-//						tradingBoxItem.setStatus("使用");
-						if (ObjectUtils.isNotNull(tradingBoxItem.getLeaseCommencementDate())) {
-							tradingBoxItem.setStatus("使用");
-						} else {
-							tradingBoxItem.setStatus("录入");
-						}
-					}
-					tradingBoxItem.setUpdateUser(AuthUtil.getUserId());
-					tradingBoxItem.setUpdateTime(new Date());
-					tradingBoxItem.setUpdateUserName(AuthUtil.getUserName());
-					tradingBoxItem.setPid(tradingBox.getId());
-					tradingBoxItemService.updateById(tradingBoxItem);
-				}
-				//明细图片
-				List<TradingBoxFiles> tradingBoxItemFilesList = tradingBoxItem.getTradingBoxFilesList();
-				if (ObjectUtils.isNotNull(tradingBoxItemFilesList) && tradingBoxItemFilesList.size() > 0) {
-					for (TradingBoxFiles tradingBoxFiles : tradingBoxItemFilesList) {
-						if (tradingBoxFiles.getId() == null) {
-							tradingBoxFiles.setCreateUser(AuthUtil.getUserId());
-							tradingBoxFiles.setCreateTime(new Date());
-							tradingBoxFiles.setTenantId(AuthUtil.getTenantId());
-							tradingBoxFiles.setPid(tradingBoxItem.getId());
-							tradingBoxFiles.setType("2");
-							tradingBoxFiles.setFileName(tradingBoxFiles.getLabel());
-							tradingBoxFiles.setUrl(tradingBoxFiles.getValue());
-							tradingBoxFilesMapper.insert(tradingBoxFiles);
-						} else {
-							tradingBoxFiles.setUpdateUser(AuthUtil.getUserId());
-							tradingBoxFiles.setUpdateTime(new Date());
-							tradingBoxFiles.setPid(tradingBoxItem.getId());
-							tradingBoxFiles.setType("2");
-							tradingBoxFiles.setFileName(tradingBoxFiles.getLabel());
-							tradingBoxFiles.setUrl(tradingBoxFiles.getValue());
-							tradingBoxFilesMapper.updateById(tradingBoxFiles);
-						}
-					}
-					tradingBoxItem.setTradingBoxFilesList(tradingBoxItemFilesList);
-				}
-				String updateChar = tradingBoxItem.getCode() + tradingBoxItem.getBoxType() + tradingBoxItem.getAddress() + tradingBoxItem.getNewDate() + tradingBoxItem.getStatus();
-				if (ObjectUtils.isNull(tradingBoxItem.getUpdateChar()) || !updateChar.equals(tradingBoxItem.getUpdateChar())) {
-					tradingBoxItem.setUpdateChar(updateChar);
-					tradingBoxItemService.updateById(tradingBoxItem);
-					if (ObjectUtils.isNotNull(tradingBoxItem.getCode())) {
-						//更新箱档案信息
-						Archives archivesR = archivesMapper.selectOne(new LambdaQueryWrapper<Archives>().eq(Archives::getIsDeleted, 0).eq(Archives::getTenantId, AuthUtil.getTenantId()).eq(Archives::getCode, tradingBoxItem.getCode()));
-						Archives archives = new Archives();
-						if (ObjectUtils.isNotNull(archivesR)) {
-							BeanUtil.copy(archivesR, archives);
-						}
-						archives.setCode(tradingBoxItem.getCode());
-						archives.setName(tradingBoxItem.getBoxType());
-						archives.setVolume(tradingBoxItem.getVolume());
-						archives.setGorssWeight(tradingBoxItem.getGrossWeight());
-						archives.setStatus(tradingBoxItem.getStatus());
-						archives.setTypeId(tradingBoxItem.getBoxTypeId());
-						archives.setAddressId(tradingBoxItem.getAddressId());
-						archives.setAddress(tradingBoxItem.getAddress());
-						archives.setNewDate(tradingBoxItem.getNewDate());
-						archives.setLeasingCompanyId(tradingBox.getPurchaseCompanyId());
-						archives.setLeasingCompany(tradingBox.getPurchaseCompanyName());
-						archives.setBoxSource(tradingBoxItem.getBoxSource());
-						archives.setBoxStatus(tradingBoxItem.getBoxStatus());
-						archives.setEmptyWeight(tradingBoxItem.getEmptyWeight());
-						archives.setTare(tradingBoxItem.getTare());
-						archives.setLoadingWeight(tradingBoxItem.getLoadingWeight());
-						archives.setBoxMakingCompany(tradingBoxItem.getBoxMakingCompany());
-						archives.setBoxMakingCompanyId(tradingBoxItem.getBoxMakingCompanyId());
-						archives.setBoxMakingDate(tradingBoxItem.getBoxMakingDate());
-						archives.setLeaseCommencementDate(tradingBoxItem.getLeaseCommencementDate());
-						archives.setBoxAge(tradingBoxItem.getBoxAge());
-						archives.setPurchaseDate(tradingBoxItem.getLeaseCommencementDate());
-						archives.setContractNo(tradingBox.getContractNo());
-						archives.setBoxAccessStatus("");
-						if (ObjectUtils.isNotNull(archivesR)) {
-							archives.setUpdateTime(new Date());
-							archives.setUpdateUserName(AuthUtil.getUserName());
-							archives.setUpdateUser(AuthUtil.getUserId());
-							archivesMapper.updateById(archives);
-
-						} else {
-							archives.setCreateUser(AuthUtil.getUserId());
-							archives.setCreateTime(new Date());
-							archives.setCreateUserName(AuthUtil.getUserName());
-							archives.setTenantId(AuthUtil.getTenantId());
-							archivesMapper.insert(archives);
-							List<ArchivesFiles> archivesFilesList = BeanUtil.copy(tradingBoxItem.getTradingBoxFilesList(), ArchivesFiles.class);
-							for (ArchivesFiles archivesFiles : archivesFilesList) {
-								archivesFiles.setId(null);
-								archivesFiles.setPid(archives.getId());
-								archivesFiles.setFileName(archivesFiles.getLabel());
-								archivesFiles.setUrl(archivesFiles.getValue());
-								archivesFiles.setCreateUser(AuthUtil.getUserId());
-								archivesFiles.setCreateTime(new Date());
-								archivesFilesMapper.insert(archivesFiles);
-							}
-						}
-
-						//记录箱轨迹信息
-						ArchivesTrajectory archivesTrajectory = new ArchivesTrajectory();
-						if ("ZR".equals(tradingBox.getType())) {
-							archivesTrajectory.setStatus("租入");
-						} else if ("ZC".equals(tradingBox.getType())) {
-							archivesTrajectory.setStatus("租出");
-						}
-						archivesTrajectory.setCorpId(tradingBox.getPurchaseCompanyId());
-						archivesTrajectory.setCorpName(tradingBox.getPurchaseCompanyName());
-						archivesTrajectory.setContractNo(tradingBox.getContractNo());
-						archivesTrajectory.setBillType(tradingBox.getType());
-						archivesTrajectory.setCode(tradingBoxItem.getCode());
-						archivesTrajectory.setAddress(tradingBoxItem.getAddress());
-						archivesTrajectory.setNewDate(tradingBoxItem.getNewDate());
-						archivesTrajectory.setCreateTime(new Date());
-						archivesTrajectory.setCreateUser(AuthUtil.getUserId());
-						archivesTrajectory.setCreateUserName(AuthUtil.getUserName());
-						archivesTrajectory.setTenantId(AuthUtil.getTenantId());
-						archivesTrajectory.setSrcId(tradingBox.getId());
-						archivesTrajectoryMapper.insert(archivesTrajectory);
-					} else {
-						throw new RuntimeException("箱号不能为空");
-					}
-				}
-			}
 			tradingBox.setTradingBoxItemsList(tradingBoxItemList);
 			tradingBox.setBoxNumber(tradingBoxItemList.size());
 		}
 		baseMapper.updateById(tradingBox);
-		//费用明细
-		List<TradingBoxFees> tradingBoxFeesList = tradingBox.getTradingBoxFeesList();
-		if (ObjectUtils.isNotNull(tradingBoxFeesList) && tradingBoxFeesList.size() > 0) {
-			for (TradingBoxFees tradingBoxFees : tradingBoxFeesList) {
-				if (tradingBoxFees.getId() == null) {
-					if ("ZR".equals(tradingBox.getType())) {
-						tradingBoxFees.setBillType("租入");
-					} else {
-						tradingBoxFees.setBillType("租出");
-					}
-					tradingBoxFees.setCreateUser(AuthUtil.getUserId());
-					tradingBoxFees.setCreateTime(new Date());
-					tradingBoxFees.setTenantId(AuthUtil.getTenantId());
-					tradingBoxFees.setPid(tradingBox.getId());
-				} else {
-					tradingBoxFees.setUpdateUser(AuthUtil.getUserId());
-					tradingBoxFees.setUpdateTime(new Date());
-					tradingBoxFees.setPid(tradingBox.getId());
-				}
-			}
-			tradingBox.setTradingBoxFeesList(tradingBoxFeesList);
-			tradingBoxFeesService.saveOrUpdateBatch(tradingBoxFeesList);
-		}
 		//主表附件
 		List<TradingBoxFiles> tradingBoxFilesList = tradingBox.getTradingBoxFilesList();
 		if (ObjectUtils.isNotNull(tradingBoxFilesList) && tradingBoxFilesList.size() > 0) {
@@ -1238,19 +923,7 @@ public class TradingBoxServiceImpl extends ServiceImpl<TradingBoxMapper, Trading
 		if (ObjectUtils.isNotNull(tradingBox.getRentCalculationDate()) && ObjectUtils.isNotNull(tradingBox.getRentStartDate())) {
 			days = (int) ((tradingBox.getRentCalculationDate().getTime() - tradingBox.getRentStartDate().getTime()) / (1000 * 3600 * 24)) + 1;
 		}
-		/*Long pid = tradingBox.getId();
 
-		//账单数据
-		ApplyDTO applyDTO = new ApplyDTO();
-		if ("ZR".equals(tradingBox.getType())) {
-			applyDTO.setBillType("申请");
-		} else {
-			applyDTO.setBillType("收费");
-		}
-		applyDTO.setTradeType("BOX");
-		applyDTO.setBelongCompany(tradingBox.getPurchaseCompanyName());
-		//账单明细
-		List<Items> itemsList = new ArrayList<>();*/
 		List<TradingBoxFees> tradingBoxFeesList = new ArrayList<>();
 		for (TradingBoxItem tradingBoxItem : tradingBoxItemList) {
 			TradingBoxFees tradingBoxFees = new TradingBoxFees();
@@ -1294,77 +967,7 @@ public class TradingBoxServiceImpl extends ServiceImpl<TradingBoxMapper, Trading
 			tradingBoxItem.setRentStartDate(tradingBox.getRentStartDate());
 			tradingBoxItem.setCount(tradingBoxItem.getCount() + 1);
 			tradingBoxItemService.updateById(tradingBoxItem);
-
-			/*Items items = new Items();
-			if (1 == tradingBoxFees.getFeesType()) {
-				items.setSrcFeesType("收费");
-			} else {
-				items.setSrcFeesType("申请");
-			}
-			items.setSrcBoxBillType(tradingBoxFees.getBillType());
-			items.setItemType(tradingBox.getType());
-			items.setPrice(tradingBoxFees.getPrice());
-			//账单数据
-			items.setAmount(tradingBoxFees.getAmount());
-			items.setQuantity(tradingBoxFees.getQuantity());
-			items.setSrcOrderno(tradingBox.getContractNo());
-			items.setCorpId(tradingBoxFees.getCorpId());
-			items.setSrcParentId(pid);
-			items.setCurrency(tradingBoxFees.getCurrency());
-			items.setSrcType(5);
-			items.setTradeType("BOX");
-			items.setUnit(tradingBoxFees.getUnit());
-			items.setSrcSysNo(tradingBoxFees.getCode());
-			items.setRemarks(tradingBoxFees.getRemarks());
-			items.setSrcBillNo(tradingBox.getSysNo());
-			items.setStatusJT(0);
-			items.setBillNo(tradingBox.getSysNo());
-			items.setStockTime(tradingBox.getPurchaseDate());
-			items.setRentStartDate(tradingBox.getRentStartDate());
-			items.setRentEndDate(tradingBox.getRentCalculationDate());
-			//获取费用id
-			if (ObjectUtils.isNotNull(tradingBoxFees.getItemId())) {
-				items.setCostType(tradingBoxFees.getItemId().toString());
-			}
-			items.setSrcFeesId(tradingBoxFees.getId());
-			itemsList.add(items);
-			applyDTO.setItemsList(itemsList);*/
 		}
-		/*if (CollectionUtils.isNotEmpty(itemsList)) {
-			//生成账单
-			R paymentApply = financeClient.paymentApplyBoxTube(applyDTO);
-			if (!paymentApply.isSuccess()) {
-				throw new RuntimeException(paymentApply.getMsg());
-			}
-			//给角色为财务的人发送消息
-			R<String> clientDeptIds = sysClient.getRoleIds(SecureUtil.getTenantId(), "财务");
-			if (clientDeptIds.isSuccess() && StringUtils.isNotBlank(clientDeptIds.getData())) {
-				R<List<User>> userList = userClient.listUserByRoleId(Long.valueOf(clientDeptIds.getData()));
-				if (userList.isSuccess() && CollectionUtils.isNotEmpty(userList.getData())) {
-					for (User datum : userList.getData()) {
-						//循环发送消息
-						Message sendMessage = new Message();
-						sendMessage.setParameter(String.valueOf(pid));
-						sendMessage.setUserName(AuthUtil.getUserName());
-						sendMessage.setUserId(AuthUtil.getUserId());
-						sendMessage.setToUserId(datum.getId());
-						sendMessage.setToUserName(datum.getName());
-						sendMessage.setMessageType(1);
-						sendMessage.setTenantId(AuthUtil.getTenantId());
-						sendMessage.setCreateUser(AuthUtil.getUserId());
-						sendMessage.setCreateTime(new Date());
-						sendMessage.setUrl(tradingBox.getUrl());
-						sendMessage.setPageLabel(tradingBox.getPageLabel());
-						sendMessage.setPageStatus(tradingBox.getPageStatus());
-						sendMessage.setMessageBody("您订单" + tradingBox.getSysNo() + "审核通过,请查看");
-						R save = messageClient.save(sendMessage);
-						if (!save.isSuccess()) {
-							throw new SecurityException("发送消息失败");
-						}
-					}
-				}
-			}
-		}*/
 		tradingBox.setTradingBoxFeesList(tradingBoxFeesList);
 		return tradingBox;
 	}

+ 1 - 1
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/service/impl/TransferServiceImpl.java

@@ -197,8 +197,8 @@ public class TransferServiceImpl implements ITransferService {
 				}
 			}
 			tradingBox.setTradingBoxItemsList(tradingBoxItemList);
+			tradingBox.setBoxNumber(tradingBoxItemList.size());
 		}
-		tradingBox.setBoxNumber(tradingBoxItemList.size());
 		tradingBoxMapper.updateById(tradingBox);
 		//费用明细
 		List<TradingBoxFees> tradingBoxFeesList = tradingBox.getTradingBoxFeesList();

+ 3 - 55
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/service/impl/TransportServiceImpl.java

@@ -102,9 +102,6 @@ public class TransportServiceImpl extends ServiceImpl<TransportMapper, Transport
 
 	private final IPortClient portClient;
 
-	private final ITransferService transferService;
-
-
 	@Override
 	public IPage<TransportVO> selectTransportPage(IPage<TransportVO> page, TransportVO transport) {
 		return page.setRecords(baseMapper.selectTransportPage(page, transport));
@@ -200,60 +197,11 @@ public class TransportServiceImpl extends ServiceImpl<TransportMapper, Transport
 			if (ObjectUtils.isNotNull(boxTypeNumber)) {
 				transport.setBoxTypeNumber(boxTypeNumber.substring(0, boxTypeNumber.length() - 1));
 			}
-			for (TransportItem transportItem : transportItemList) {
-				//明细数据修改添加
-					transportItem.setCreateUser(AuthUtil.getUserId());
-					transportItem.setCreateTime(new Date());
-					transportItem.setCreateUserName(AuthUtil.getUserName());
-					transportItem.setTenantId(AuthUtil.getTenantId());
-					transportItem.setPid(transport.getId());
-					transportItem.setStatus("录入");
-					transportItem.setStockpilingStatus("1");
-					List<String> codeList = new ArrayList<>();
-					codeList.add(transportItem.getCode());
-					transferService.stockpilingFee(codeList);
-				//更新箱档案信息
-				if (ObjectUtils.isNotNull(transportItem.getCode())) {
-					Archives archives = new Archives();
-					archives.setStatus("使用");
-					archives.setCode(transportItem.getCode());
-					archives.setAddress(transportItem.getAddress());
-					archives.setAddressId(transportItem.getAddressId());
-					archives.setNewDate(transportItem.getNewDate());
-					archives.setBoxAccessStatus("");
-					archivesMapper.updateCode(archives);
-				} else {
-					throw new RuntimeException("箱号不能为空");
-				}
-			}
 			transport.setTransportItemList(transportItemList);
 			transport.setBoxNumber(transportItemList.size());
 			transportItemService.updateBatchById(transportItemList);
 		}
 		baseMapper.updateById(transport);
-		//费用明细
-		LambdaQueryWrapper<TransportItemFees> transportItemFeesLambdaQueryWrapper = new LambdaQueryWrapper<>();
-		transportItemFeesLambdaQueryWrapper.eq(TransportItemFees::getIsDeleted, 0)
-			.eq(TransportItemFees::getTenantId, AuthUtil.getTenantId())
-			.eq(TransportItemFees::getPid, transport.getId())
-			.orderByDesc(TransportItemFees::getCreateTime);
-		List<TransportItemFees> transportItemFeesList = transportItemFeesService.list(transportItemFeesLambdaQueryWrapper);
-		if (ObjectUtils.isNotNull(transportItemFeesList) && transportItemFeesList.size() > 0) {
-			for (TransportItemFees transportItemFees : transportItemFeesList) {
-					if ("CKZY".equals(transport.getBillType())) {
-						transportItemFees.setBillType("出口装运");
-					} else {
-						transportItemFees.setBillType("进口返程");
-					}
-					transportItemFees.setCreateUser(AuthUtil.getUserId());
-					transportItemFees.setCreateTime(new Date());
-					transportItemFees.setTenantId(AuthUtil.getTenantId());
-					transportItemFees.setPid(transport.getId());
-
-			}
-			transport.setTransportItemFeesList(transportItemFeesList);
-			transportItemFeesService.updateBatchById(transportItemFeesList);
-		}
 		//主表附件
 		List<TransportFiles> transportFilesList = transport.getTransportFilesList();
 		if (ObjectUtils.isNotNull(transportFilesList) && transportFilesList.size() > 0) {
@@ -331,7 +279,7 @@ public class TransportServiceImpl extends ServiceImpl<TransportMapper, Transport
 				if (transport.getExpiryDate().compareTo(newDate) < 0) {
 					//计算超期金额 并增加一条费用明细
 					BigDecimal amount = new BigDecimal("0.00");
-					if (ObjectUtils.isEmpty(transportItem.getPrice()) || transportItem.getPrice().compareTo(BigDecimal.ZERO) <= 0){
+					if (ObjectUtils.isEmpty(transportItem.getPrice()) || transportItem.getPrice().compareTo(BigDecimal.ZERO) <= 0) {
 						throw new SecurityException("请维护超期单价/天 和 租金收入");
 					}
 					if (!transportItem.getPrice().equals(new BigDecimal("0"))) {
@@ -917,7 +865,7 @@ public class TransportServiceImpl extends ServiceImpl<TransportMapper, Transport
 				//给角色为财务的人发送消息
 				R<String> clientDeptIds = sysClient.getRoleIds(SecureUtil.getTenantId(), "财务");
 				if (clientDeptIds.isSuccess() && StringUtils.isNotBlank(clientDeptIds.getData())) {
-					R<List<User>> userList = userClient.listUserByRoleId(Long.valueOf(clientDeptIds.getData()),null,null);
+					R<List<User>> userList = userClient.listUserByRoleId(Long.valueOf(clientDeptIds.getData()), null, null);
 					if (userList.isSuccess() && CollectionUtils.isNotEmpty(userList.getData())) {
 						for (User datum : userList.getData()) {
 							//循环发送消息
@@ -1068,7 +1016,7 @@ public class TransportServiceImpl extends ServiceImpl<TransportMapper, Transport
 				//给角色为财务的人发送消息
 				R<String> clientDeptIds = sysClient.getRoleIds(SecureUtil.getTenantId(), "财务");
 				if (clientDeptIds.isSuccess() && StringUtils.isNotBlank(clientDeptIds.getData())) {
-					R<List<User>> userList = userClient.listUserByRoleId(Long.valueOf(clientDeptIds.getData()),null,null);
+					R<List<User>> userList = userClient.listUserByRoleId(Long.valueOf(clientDeptIds.getData()), null, null);
 					if (userList.isSuccess() && CollectionUtils.isNotEmpty(userList.getData())) {
 						for (User datum : userList.getData()) {
 							//循环发送消息

+ 1 - 0
blade-service/blade-client/src/main/java/org/springblade/client/equipment/controller/CorpEquipmentArchivesController.java

@@ -72,6 +72,7 @@ public class CorpEquipmentArchivesController extends BladeController {
 		LambdaQueryWrapper<CorpEquipmentArchives> lambdaQueryWrapper = new LambdaQueryWrapper<>();
 		lambdaQueryWrapper.eq(CorpEquipmentArchives::getTenantId, AuthUtil.getTenantId())
 			.eq(CorpEquipmentArchives::getIsDeleted, 0)
+			.like(ObjectUtils.isNotNull(corpEquipmentArchives.getSysNo()), CorpEquipmentArchives::getSysNo, corpEquipmentArchives.getSysNo())
 			.eq(ObjectUtils.isNotNull(corpEquipmentArchives.getCorpId()), CorpEquipmentArchives::getCorpId, corpEquipmentArchives.getCorpId())
 			.orderByDesc(CorpEquipmentArchives::getCreateTime);
 		IPage<CorpEquipmentArchives> pages = corpEquipmentArchivesService.page(Condition.getPage(query), lambdaQueryWrapper);

+ 20 - 1
blade-service/blade-client/src/main/java/org/springblade/client/equipment/service/impl/CorpEquipmentArchivesServiceImpl.java

@@ -28,6 +28,7 @@ import org.springblade.client.entity.CorpEquipmentArchivesItem;
 import org.springblade.client.equipment.mapper.CorpEquipmentArchivesMapper;
 import org.springblade.client.equipment.service.ICorpEquipmentArchivesItemService;
 import org.springblade.client.equipment.service.ICorpEquipmentArchivesService;
+import org.springblade.client.feign.ISerialClient;
 import org.springblade.client.vo.CorpEquipmentArchivesVO;
 import org.springblade.common.utils.BarCodeTest;
 import org.springblade.common.utils.QRCodeTest;
@@ -35,11 +36,13 @@ import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
 import java.io.File;
 import java.io.IOException;
 import java.util.Date;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 客户设备档案 服务实现类
@@ -55,6 +58,11 @@ public class CorpEquipmentArchivesServiceImpl extends ServiceImpl<CorpEquipmentA
 
 	private final ICorpEquipmentArchivesItemService corpEquipmentArchivesItemService;
 
+	/**
+	 * 生成系统编号
+	 */
+	private ISerialClient serialClient;
+
 	@Override
 	public IPage<CorpEquipmentArchivesVO> selectCorpEquipmentArchivesPage(IPage<CorpEquipmentArchivesVO> page, CorpEquipmentArchivesVO corpEquipmentArchives) {
 		return page.setRecords(baseMapper.selectCorpEquipmentArchivesPage(page, corpEquipmentArchives));
@@ -62,7 +70,7 @@ public class CorpEquipmentArchivesServiceImpl extends ServiceImpl<CorpEquipmentA
 
 	@Override
 	public CorpEquipmentArchives detail(CorpEquipmentArchives corpEquipmentArchives) {
-		CorpEquipmentArchives detail = baseMapper.selectById(corpEquipmentArchives.getCorpId());
+		CorpEquipmentArchives detail = baseMapper.selectById(corpEquipmentArchives.getId());
 		if (ObjectUtils.isNotNull(detail)) {
 			List<CorpEquipmentArchivesItem> itemList = corpEquipmentArchivesItemService.list(new LambdaQueryWrapper<CorpEquipmentArchivesItem>()
 				.eq(CorpEquipmentArchivesItem::getTenantId, AuthUtil.getTenantId())
@@ -78,6 +86,13 @@ public class CorpEquipmentArchivesServiceImpl extends ServiceImpl<CorpEquipmentA
 	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
 	public R submit(CorpEquipmentArchives corpEquipmentArchives) {
 		if (corpEquipmentArchives.getId() == null) {
+			// 获取系统编号
+			R billNo = serialClient.getBillNo("DA", "YPJ", "DA");
+			if (billNo.getCode() != 200) {
+				TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+				return R.fail(500, "生成系统编号失败");
+			}
+			corpEquipmentArchives.setSysNo(billNo.getData().toString());
 			corpEquipmentArchives.setCreateTime(new Date());
 			corpEquipmentArchives.setCreateUser(AuthUtil.getUserId());
 			corpEquipmentArchives.setTenantId(AuthUtil.getTenantId());
@@ -88,6 +103,10 @@ public class CorpEquipmentArchivesServiceImpl extends ServiceImpl<CorpEquipmentA
 			baseMapper.updateById(corpEquipmentArchives);
 		}
 		if (ObjectUtils.isNotNull(corpEquipmentArchives.getCorpEquipmentArchivesItemList())) {
+			List<String> code = corpEquipmentArchives.getCorpEquipmentArchivesItemList().stream().map(CorpEquipmentArchivesItem::getCode).distinct().collect(Collectors.toList());
+			if (corpEquipmentArchives.getCorpEquipmentArchivesItemList().size() != code.size()){
+				throw new RuntimeException("设备明细重复,保存失败");
+			}
 			for (CorpEquipmentArchivesItem item : corpEquipmentArchives.getCorpEquipmentArchivesItemList()) {
 				if (item.getId() == null) {
 					item.setCreateTime(new Date());

+ 1 - 0
blade-service/blade-client/src/main/java/org/springblade/client/project/controller/ProjectGoodsController.java

@@ -90,6 +90,7 @@ public class ProjectGoodsController extends BladeController {
 			.eq(ProjectGoods::getIsDeleted, 0)
 			.like(StringUtils.isNotBlank(projectGoods.getBrand()), ProjectGoods::getBrand, projectGoods.getBrand())//花纹
 			.eq(ObjectUtils.isNotEmpty(projectGoods.getSpecs()), ProjectGoods::getSpecs, projectGoods.getSpecs())//品牌
+			.like(ObjectUtils.isNotEmpty(projectGoods.getRemarks()), ProjectGoods::getRemarks, projectGoods.getRemarks())//品牌
 			.like(ObjectUtils.isNotEmpty(projectGoods.getCnameInt()), ProjectGoods::getCnameInt, projectGoods.getCnameInt());//
 		if (ObjectUtil.isNotEmpty(projectGoods.getCname())) {
 			lambdaQueryWrapper.and(i -> i.like(ProjectGoods::getCname, projectGoods.getCname()).or().like(ProjectGoods::getCnameInt, projectGoods.getCname()));

+ 10 - 2
blade-service/blade-client/src/main/java/org/springblade/client/serial/service/impl/SerialServiceImpl.java

@@ -59,7 +59,11 @@ public class SerialServiceImpl extends ServiceImpl<SerialMapper, Serial> impleme
 		if (tradeType.equals("CK")){
 			yyyyMM = DateFormatUtils.format(date, "yy");
 		}else if (tradeType.equals("YPJ")){
-			yyyyMM = DateFormatUtils.format(date, "yyyyMMddHHmmss");
+			if ("DA".equals(type)){
+				yyyyMM = DateFormatUtils.format(date, "yyyyMMdd");
+			}else{
+				yyyyMM = DateFormatUtils.format(date, "yyyyMMddHHmmss");
+			}
 		}else {
 			yyyyMM = DateFormatUtils.format(date, "yyyyMM");
 		}
@@ -89,7 +93,11 @@ public class SerialServiceImpl extends ServiceImpl<SerialMapper, Serial> impleme
 				baseMapper.insert(billNoSerial);
 			}
 		}else if (tradeType.equals("YPJ")){
-			yyyyMM = DateFormatUtils.format(date, "yyyyMMddHHmmss");
+			if ("DA".equals(type)){
+				yyyyMM = DateFormatUtils.format(date, "yyyyMMdd");
+			}else{
+				yyyyMM = DateFormatUtils.format(date, "yyyyMMddHHmmss");
+			}
 			if (serial != null) {
 				serial.setSerial(serial.getSerial() + 1);
 				baseMapper.updateById(serial);

+ 50 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/maintenance/controller/MaintenanceController.java

@@ -144,5 +144,55 @@ public class MaintenanceController extends BladeController {
 		return R.status(maintenanceService.removeByIds(Func.toLongList(ids)));
 	}
 
+	/**
+	 * 确认派工
+	 */
+	@PostMapping("/dispatchingWorkers")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "确认派工", notes = "传入maintenance")
+	public R dispatchingWorkers(@Valid @RequestBody Maintenance maintenance) {
+		return maintenanceService.dispatchingWorkers(maintenance);
+	}
+
+	/**
+	 * 撤销派工
+	 */
+	@PostMapping("/revokeDispatchingWorkers")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "撤销派工", notes = "传入maintenance")
+	public R revokeDispatchingWorkers(@Valid @RequestBody Maintenance maintenance) {
+		return maintenanceService.revokeDispatchingWorkers(maintenance);
+	}
+
+	/**
+	 * 确认接单
+	 */
+	@PostMapping("/receivingOrders")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "确认接单", notes = "传入maintenance")
+	public R receivingOrders(@Valid @RequestBody Maintenance maintenance) {
+		return maintenanceService.receivingOrders(maintenance);
+	}
+
+	/**
+	 * 确认费用并生成支付二维码
+	 */
+	@PostMapping("/confirmExpenses")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "确认接单", notes = "传入maintenance")
+	public R confirmExpenses(@Valid @RequestBody Maintenance maintenance) {
+		return maintenanceService.confirmExpenses(maintenance);
+	}
+
+	/**
+	 * 小程序提交
+	 */
+	@PostMapping("/submitWX")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "确认接单", notes = "传入maintenance")
+	public R submitWX(@Valid @RequestBody Maintenance maintenance) {
+		return maintenanceService.submitWX(maintenance);
+	}
+
 
 }

+ 126 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/maintenance/controller/MaintenanceLogController.java

@@ -0,0 +1,126 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.purchase.sales.maintenance.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import lombok.AllArgsConstructor;
+import javax.validation.Valid;
+
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.purchase.sales.maintenance.entity.MaintenanceLog;
+import org.springblade.purchase.sales.maintenance.vo.MaintenanceLogVO;
+import org.springblade.purchase.sales.maintenance.service.IMaintenanceLogService;
+import org.springblade.core.boot.ctrl.BladeController;
+
+/**
+ * 配件汽保维修操作记录表 控制器
+ *
+ * @author BladeX
+ * @since 2023-08-11
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/maintenancelog")
+@Api(value = "配件汽保维修操作记录表", tags = "配件汽保维修操作记录表接口")
+public class MaintenanceLogController extends BladeController {
+
+	private final IMaintenanceLogService maintenanceLogService;
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入maintenanceLog")
+	public R<MaintenanceLog> detail(MaintenanceLog maintenanceLog) {
+		MaintenanceLog detail = maintenanceLogService.getOne(Condition.getQueryWrapper(maintenanceLog));
+		return R.data(detail);
+	}
+
+	/**
+	 * 分页 配件汽保维修操作记录表
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入maintenanceLog")
+	public R<IPage<MaintenanceLog>> list(MaintenanceLog maintenanceLog, Query query) {
+		IPage<MaintenanceLog> pages = maintenanceLogService.page(Condition.getPage(query), Condition.getQueryWrapper(maintenanceLog));
+		return R.data(pages);
+	}
+
+	/**
+	 * 自定义分页 配件汽保维修操作记录表
+	 */
+	@GetMapping("/page")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "分页", notes = "传入maintenanceLog")
+	public R<IPage<MaintenanceLogVO>> page(MaintenanceLogVO maintenanceLog, Query query) {
+		IPage<MaintenanceLogVO> pages = maintenanceLogService.selectMaintenanceLogPage(Condition.getPage(query), maintenanceLog);
+		return R.data(pages);
+	}
+
+	/**
+	 * 新增 配件汽保维修操作记录表
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "新增", notes = "传入maintenanceLog")
+	public R save(@Valid @RequestBody MaintenanceLog maintenanceLog) {
+		return R.status(maintenanceLogService.save(maintenanceLog));
+	}
+
+	/**
+	 * 修改 配件汽保维修操作记录表
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "修改", notes = "传入maintenanceLog")
+	public R update(@Valid @RequestBody MaintenanceLog maintenanceLog) {
+		return R.status(maintenanceLogService.updateById(maintenanceLog));
+	}
+
+	/**
+	 * 新增或修改 配件汽保维修操作记录表
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入maintenanceLog")
+	public R submit(@Valid @RequestBody MaintenanceLog maintenanceLog) {
+		return R.status(maintenanceLogService.saveOrUpdate(maintenanceLog));
+	}
+
+	
+	/**
+	 * 删除 配件汽保维修操作记录表
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 8)
+	@ApiOperation(value = "删除", notes = "传入ids")
+	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		return R.status(maintenanceLogService.removeByIds(Func.toLongList(ids)));
+	}
+
+	
+}

+ 42 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/maintenance/mapper/MaintenanceLogMapper.java

@@ -0,0 +1,42 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.purchase.sales.maintenance.mapper;
+
+import org.springblade.purchase.sales.maintenance.entity.MaintenanceLog;
+import org.springblade.purchase.sales.maintenance.vo.MaintenanceLogVO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import java.util.List;
+
+/**
+ * 配件汽保维修操作记录表 Mapper 接口
+ *
+ * @author BladeX
+ * @since 2023-08-11
+ */
+public interface MaintenanceLogMapper extends BaseMapper<MaintenanceLog> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param maintenanceLog
+	 * @return
+	 */
+	List<MaintenanceLogVO> selectMaintenanceLogPage(IPage page, MaintenanceLogVO maintenanceLog);
+
+}

+ 23 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/maintenance/mapper/MaintenanceLogMapper.xml

@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.springblade.purchase.sales.maintenance.mapper.MaintenanceLogMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="maintenanceLogResultMap" type="org.springblade.purchase.sales.maintenance.entity.MaintenanceLog">
+        <id column="id" property="id"/>
+        <result column="src_id" property="srcId"/>
+        <result column="sys_no" property="sysNo"/>
+        <result column="type" property="type"/>
+        <result column="remarks" property="remarks"/>
+        <result column="create_user" property="createUser"/>
+        <result column="create_time" property="createTime"/>
+        <result column="is_deleted" property="isDeleted"/>
+        <result column="create_user_name" property="createUserName"/>
+    </resultMap>
+
+
+    <select id="selectMaintenanceLogPage" resultMap="maintenanceLogResultMap">
+        select * from business_maintenance_log where is_deleted = 0
+    </select>
+
+</mapper>

+ 41 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/maintenance/service/IMaintenanceLogService.java

@@ -0,0 +1,41 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.purchase.sales.maintenance.service;
+
+import org.springblade.purchase.sales.maintenance.entity.MaintenanceLog;
+import org.springblade.purchase.sales.maintenance.vo.MaintenanceLogVO;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
+/**
+ * 配件汽保维修操作记录表 服务类
+ *
+ * @author BladeX
+ * @since 2023-08-11
+ */
+public interface IMaintenanceLogService extends IService<MaintenanceLog> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param maintenanceLog
+	 * @return
+	 */
+	IPage<MaintenanceLogVO> selectMaintenanceLogPage(IPage<MaintenanceLogVO> page, MaintenanceLogVO maintenanceLog);
+
+}

+ 10 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/maintenance/service/IMaintenanceService.java

@@ -42,4 +42,14 @@ public interface IMaintenanceService extends IService<Maintenance> {
     Maintenance detail(Maintenance maintenance);
 
 	R submit(Maintenance maintenance);
+
+    R dispatchingWorkers(Maintenance maintenance);
+
+	R revokeDispatchingWorkers(Maintenance maintenance);
+
+	R receivingOrders(Maintenance maintenance);
+
+	R confirmExpenses(Maintenance maintenance);
+
+	R submitWX(Maintenance maintenance);
 }

+ 41 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/maintenance/service/impl/MaintenanceLogServiceImpl.java

@@ -0,0 +1,41 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.purchase.sales.maintenance.service.impl;
+
+import org.springblade.purchase.sales.maintenance.entity.MaintenanceLog;
+import org.springblade.purchase.sales.maintenance.vo.MaintenanceLogVO;
+import org.springblade.purchase.sales.maintenance.mapper.MaintenanceLogMapper;
+import org.springblade.purchase.sales.maintenance.service.IMaintenanceLogService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
+/**
+ * 配件汽保维修操作记录表 服务实现类
+ *
+ * @author BladeX
+ * @since 2023-08-11
+ */
+@Service
+public class MaintenanceLogServiceImpl extends ServiceImpl<MaintenanceLogMapper, MaintenanceLog> implements IMaintenanceLogService {
+
+	@Override
+	public IPage<MaintenanceLogVO> selectMaintenanceLogPage(IPage<MaintenanceLogVO> page, MaintenanceLogVO maintenanceLog) {
+		return page.setRecords(baseMapper.selectMaintenanceLogPage(page, maintenanceLog));
+	}
+
+}

+ 229 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/maintenance/service/impl/MaintenanceServiceImpl.java

@@ -20,19 +20,25 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import io.seata.spring.annotation.GlobalTransactional;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.springblade.client.entity.Message;
+import org.springblade.client.feign.IMessageClient;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.purchase.sales.maintenance.entity.Maintenance;
 import org.springblade.purchase.sales.maintenance.entity.MaintenanceFees;
 import org.springblade.purchase.sales.maintenance.entity.MaintenanceFiles;
+import org.springblade.purchase.sales.maintenance.entity.MaintenanceLog;
 import org.springblade.purchase.sales.maintenance.mapper.MaintenanceMapper;
 import org.springblade.purchase.sales.maintenance.service.IMaintenanceFeesService;
 import org.springblade.purchase.sales.maintenance.service.IMaintenanceFilesService;
+import org.springblade.purchase.sales.maintenance.service.IMaintenanceLogService;
 import org.springblade.purchase.sales.maintenance.service.IMaintenanceService;
 import org.springblade.purchase.sales.maintenance.vo.MaintenanceVO;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
 import java.util.Date;
@@ -54,6 +60,11 @@ public class MaintenanceServiceImpl extends ServiceImpl<MaintenanceMapper, Maint
 
 	private final IMaintenanceFilesService maintenanceFilesService;
 
+	//消息
+	private final IMessageClient messageClient;
+
+	private final IMaintenanceLogService maintenanceLogService;
+
 	@Override
 	public IPage<MaintenanceVO> selectMaintenancePage(IPage<MaintenanceVO> page, MaintenanceVO maintenance) {
 		return page.setRecords(baseMapper.selectMaintenancePage(page, maintenance));
@@ -79,6 +90,8 @@ public class MaintenanceServiceImpl extends ServiceImpl<MaintenanceMapper, Maint
 	}
 
 	@Override
+	@Transactional(rollbackFor = Exception.class)
+	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
 	public R submit(Maintenance maintenance) {
 		if (maintenance.getId() == null) {
 			maintenance.setCreateTime(new Date());
@@ -124,6 +137,222 @@ public class MaintenanceServiceImpl extends ServiceImpl<MaintenanceMapper, Maint
 			}
 			maintenanceFilesService.saveOrUpdateBatch(maintenance.getMaintenanceFiles());
 		}
+		MaintenanceLog maintenanceLog = new MaintenanceLog();
+		maintenanceLog.setSysNo(maintenance.getSysNo());
+		maintenanceLog.setSrcId(maintenance.getId());
+		maintenanceLog.setCreateTime(new Date());
+		maintenanceLog.setCreateUser(AuthUtil.getUserId());
+		maintenanceLog.setCreateUserName(AuthUtil.getUserName());
+		maintenanceLog.setType("设备报修");
+		maintenanceLogService.save(maintenanceLog);
+		return R.data(maintenance);
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
+	public R dispatchingWorkers(Maintenance maintenance) {
+		if (maintenance.getId() == null) {
+			throw new RuntimeException("缺少必要参数");
+		}
+		if (ObjectUtils.isNotNull(maintenance.getMaintenanceWorkerId())) {
+			maintenance.setDispatchingWorkers("2");
+			maintenance.setUpdateTime(new Date());
+			maintenance.setUpdateUser(AuthUtil.getUserId());
+			maintenance.setUpdateUserName(AuthUtil.getUserName());
+			baseMapper.updateById(maintenance);
+			//循环发送消息
+			Message sendMessage = new Message();
+			sendMessage.setParameter(String.valueOf(maintenance.getId()));
+			sendMessage.setUserName(AuthUtil.getUserName());
+			sendMessage.setUserId(AuthUtil.getUserId());
+			sendMessage.setMessageType(1);
+			sendMessage.setTenantId(AuthUtil.getTenantId());
+			sendMessage.setCreateUser(AuthUtil.getUserId());
+			sendMessage.setCreateTime(new Date());
+			sendMessage.setUrl("");
+			sendMessage.setPageLabel("");
+			sendMessage.setPageStatus("");
+			sendMessage.setToUserId(maintenance.getMaintenanceWorkerId());
+			sendMessage.setToUserName(maintenance.getMaintenanceWorkerName());
+			sendMessage.setMessageBody("您有新工单" + maintenance.getSysNo() + "请及时处理");
+			R save = messageClient.save(sendMessage);
+			if (!save.isSuccess()) {
+				throw new SecurityException("发送消息失败");
+			}
+		} else {
+			throw new RuntimeException("请选择维修工");
+		}
+		MaintenanceLog maintenanceLog = new MaintenanceLog();
+		maintenanceLog.setSysNo(maintenance.getSysNo());
+		maintenanceLog.setSrcId(maintenance.getId());
+		maintenanceLog.setCreateTime(new Date());
+		maintenanceLog.setCreateUser(AuthUtil.getUserId());
+		maintenanceLog.setCreateUserName(AuthUtil.getUserName());
+		maintenanceLog.setType("已派工");
+		maintenanceLogService.save(maintenanceLog);
+		return R.data(maintenance);
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
+	public R revokeDispatchingWorkers(Maintenance maintenance) {
+		if (maintenance.getId() == null) {
+			throw new RuntimeException("缺少必要参数");
+		}
+		if (maintenance.getStatus() <= 1) {
+			maintenance.setDispatchingWorkers("1");
+			maintenance.setUpdateTime(new Date());
+			maintenance.setUpdateUser(AuthUtil.getUserId());
+			maintenance.setUpdateUserName(AuthUtil.getUserName());
+			baseMapper.updateById(maintenance);
+			//循环发送消息
+			Message sendMessage = new Message();
+			sendMessage.setParameter(String.valueOf(maintenance.getId()));
+			sendMessage.setUserName(AuthUtil.getUserName());
+			sendMessage.setUserId(AuthUtil.getUserId());
+			sendMessage.setMessageType(1);
+			sendMessage.setTenantId(AuthUtil.getTenantId());
+			sendMessage.setCreateUser(AuthUtil.getUserId());
+			sendMessage.setCreateTime(new Date());
+			sendMessage.setUrl("");
+			sendMessage.setPageLabel("");
+			sendMessage.setPageStatus("");
+			sendMessage.setToUserId(maintenance.getMaintenanceWorkerId());
+			sendMessage.setToUserName(maintenance.getMaintenanceWorkerName());
+			sendMessage.setMessageBody("您的工单" + maintenance.getSysNo() + "已撤销");
+			R save = messageClient.save(sendMessage);
+			if (!save.isSuccess()) {
+				throw new SecurityException("发送消息失败");
+			}
+		} else {
+			throw new RuntimeException("待维修中撤销失败");
+		}
+		MaintenanceLog maintenanceLog = new MaintenanceLog();
+		maintenanceLog.setSysNo(maintenance.getSysNo());
+		maintenanceLog.setSrcId(maintenance.getId());
+		maintenanceLog.setCreateTime(new Date());
+		maintenanceLog.setCreateUser(AuthUtil.getUserId());
+		maintenanceLog.setCreateUserName(AuthUtil.getUserName());
+		maintenanceLog.setType("已撤销");
+		maintenanceLogService.save(maintenanceLog);
+		return R.data(maintenance);
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
+	public R receivingOrders(Maintenance maintenance) {
+		if (maintenance.getId() == null) {
+			throw new RuntimeException("缺少必要参数");
+		}
+		maintenance.setStatus(3);
+		maintenance.setUpdateTime(new Date());
+		maintenance.setUpdateUser(AuthUtil.getUserId());
+		maintenance.setUpdateUserName(AuthUtil.getUserName());
+		baseMapper.updateById(maintenance);
+		//循环发送消息
+		Message sendMessage = new Message();
+		sendMessage.setParameter(String.valueOf(maintenance.getId()));
+		sendMessage.setUserName(AuthUtil.getUserName());
+		sendMessage.setUserId(AuthUtil.getUserId());
+		sendMessage.setMessageType(1);
+		sendMessage.setTenantId(AuthUtil.getTenantId());
+		sendMessage.setCreateUser(AuthUtil.getUserId());
+		sendMessage.setCreateTime(new Date());
+		sendMessage.setUrl("");
+		sendMessage.setPageLabel("");
+		sendMessage.setPageStatus("");
+		sendMessage.setToUserId(maintenance.getCreateUser());
+		sendMessage.setToUserName(maintenance.getCreateUserName());
+		sendMessage.setMessageBody("您的订单" + maintenance.getSysNo() + "已派工,请保持电话通畅,维修人员会与您联系!");
+		R save = messageClient.save(sendMessage);
+		if (!save.isSuccess()) {
+			throw new SecurityException("发送消息失败");
+		}
+		MaintenanceLog maintenanceLog = new MaintenanceLog();
+		maintenanceLog.setSysNo(maintenance.getSysNo());
+		maintenanceLog.setSrcId(maintenance.getId());
+		maintenanceLog.setCreateTime(new Date());
+		maintenanceLog.setCreateUser(AuthUtil.getUserId());
+		maintenanceLog.setCreateUserName(AuthUtil.getUserName());
+		maintenanceLog.setType("确认接单");
+		maintenanceLogService.save(maintenanceLog);
+		return R.data(maintenance);
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
+	public R confirmExpenses(Maintenance maintenance) {
+		if (maintenance.getId() == null) {
+			throw new RuntimeException("缺少必要参数");
+		}
+		if (ObjectUtils.isNotNull(maintenance.getMaintenanceFees()) && maintenance.getMaintenanceFees().size() > 0) {
+			BigDecimal amount = new BigDecimal("0.00");
+			for (MaintenanceFees item : maintenance.getMaintenanceFees()) {
+				if (item.getId() == null) {
+					item.setCreateTime(new Date());
+					item.setCreateUser(AuthUtil.getUserId());
+					item.setTenantId(AuthUtil.getTenantId());
+					item.setPid(maintenance.getId());
+				} else {
+					item.setUpdateTime(new Date());
+					item.setUpdateUser(AuthUtil.getUserId());
+				}
+				amount = amount.add(item.getAmount());
+			}
+			maintenance.setMaintenanceAmount(amount);
+			maintenanceFeesService.saveOrUpdateBatch(maintenance.getMaintenanceFees());
+		}
+		maintenance.setStatus(4);
+		maintenance.setUpdateTime(new Date());
+		maintenance.setUpdateUser(AuthUtil.getUserId());
+		maintenance.setUpdateUserName(AuthUtil.getUserName());
+		baseMapper.updateById(maintenance);
+		MaintenanceLog maintenanceLog = new MaintenanceLog();
+		maintenanceLog.setSysNo(maintenance.getSysNo());
+		maintenanceLog.setSrcId(maintenance.getId());
+		maintenanceLog.setCreateTime(new Date());
+		maintenanceLog.setCreateUser(AuthUtil.getUserId());
+		maintenanceLog.setCreateUserName(AuthUtil.getUserName());
+		maintenanceLog.setType("费用确认");
+		maintenanceLogService.save(maintenanceLog);
+		return R.data(maintenance);
+	}
+
+	@Override
+	public R submitWX(Maintenance maintenance) {
+		maintenance.setCreateTime(new Date());
+		maintenance.setCreateUserName(AuthUtil.getUserName());
+		maintenance.setCreateUser(AuthUtil.getUserId());
+		maintenance.setTenantId(AuthUtil.getTenantId());
+		maintenance.setStatus(1);
+		maintenance.setDispatchingWorkers("1");
+		baseMapper.insert(maintenance);
+		if (ObjectUtils.isNotNull(maintenance.getMaintenanceFiles()) && maintenance.getMaintenanceFiles().size() > 0) {
+			for (MaintenanceFiles item : maintenance.getMaintenanceFiles()) {
+				if (item.getId() == null) {
+					item.setCreateTime(new Date());
+					item.setCreateUser(AuthUtil.getUserId());
+					item.setTenantId(AuthUtil.getTenantId());
+					item.setPid(maintenance.getId());
+				} else {
+					item.setUpdateTime(new Date());
+					item.setUpdateUser(AuthUtil.getUserId());
+				}
+			}
+			maintenanceFilesService.saveOrUpdateBatch(maintenance.getMaintenanceFiles());
+		}
+		MaintenanceLog maintenanceLog = new MaintenanceLog();
+		maintenanceLog.setSysNo(maintenance.getSysNo());
+		maintenanceLog.setSrcId(maintenance.getId());
+		maintenanceLog.setCreateTime(new Date());
+		maintenanceLog.setCreateUser(AuthUtil.getUserId());
+		maintenanceLog.setCreateUserName(AuthUtil.getUserName());
+		maintenanceLog.setType("设备报修");
+		maintenanceLogService.save(maintenanceLog);
 		return R.data(maintenance);
 	}