diff --git a/anrui-riskcenter-ui/src/views/settle/settleAdd.vue b/anrui-riskcenter-ui/src/views/settle/settleAdd.vue index cc96dacd83..5dc1aa297c 100644 --- a/anrui-riskcenter-ui/src/views/settle/settleAdd.vue +++ b/anrui-riskcenter-ui/src/views/settle/settleAdd.vue @@ -308,7 +308,7 @@ -
减免依据
+
减免依据(资方未到期利息减免)
diff --git a/anrui-riskcenter-ui/src/views/workFlow/jieqingFlow/settleEdit.vue b/anrui-riskcenter-ui/src/views/workFlow/jieqingFlow/settleEdit.vue index f2655b14d8..5189f6ad7a 100644 --- a/anrui-riskcenter-ui/src/views/workFlow/jieqingFlow/settleEdit.vue +++ b/anrui-riskcenter-ui/src/views/workFlow/jieqingFlow/settleEdit.vue @@ -307,7 +307,7 @@ -
减免依据
+
减免依据(资方未到期利息减免)
diff --git a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/OneExcelInfo.java b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/OneExcelInfo.java new file mode 100644 index 0000000000..cb0e90b3ae --- /dev/null +++ b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/OneExcelInfo.java @@ -0,0 +1,40 @@ +package com.yxt.anrui.scm.api.scmvehrebate; + +import com.yxt.common.core.utils.ExportEntityMap; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/28 + **/ +@Data +public class OneExcelInfo { + + //车架号 + private String vinNo; + //厂家结算价 + private String manufactorSettlementPrice; + //其中运费金额 + private String freight; + //创建日期 + private String createTime; + //返利名称 + private String rebateName; + //返利类型 + private String rebateTypeValue; + //预提返利 + private String estimateRebate; + //所属年月 + private String palceGenDate; + //上传日期 + private String uploadDate; + //上传金额 + private String uploadMoney; + //待确定金额 + private String stayDetermineMoney; + //费用 + private String money; + //调整说明 + private String adjustmentRemarks; +} diff --git a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/OneExcelVo.java b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/OneExcelVo.java new file mode 100644 index 0000000000..e7eb781a96 --- /dev/null +++ b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/OneExcelVo.java @@ -0,0 +1,68 @@ +package com.yxt.anrui.scm.api.scmvehrebate; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.yxt.common.core.utils.ExportEntityMap; +import lombok.Data; + +import java.util.Date; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/28 + **/ +@Data +public class OneExcelVo { + + //车架号 + @ExportEntityMap(CnName = "车架号", EnName = "vinNo") + private String vinNo; + + //厂家结算价 + @ExportEntityMap(CnName = "厂家结算价", EnName = "manufactorSettlementPrice") + private String manufactorSettlementPrice; + + //其中运费金额 + @ExportEntityMap(CnName = "其中运费金额", EnName = "freight") + private String freight; + + //创建日期 + @ExportEntityMap(CnName = "创建日期", EnName = "createTime") + private String createTime; + + //返利名称 + @ExportEntityMap(CnName = "返利名称", EnName = "rebateName") + private String rebateName; + + //返利类型 + @ExportEntityMap(CnName = "返利类型", EnName = "rebateTypeValue") + private String rebateTypeValue; + + //预提返利 + @ExportEntityMap(CnName = "预提返利", EnName = "estimateRebate") + private String estimateRebate; + + //所属年月 + @ExportEntityMap(CnName = "所属年月", EnName = "palceGenDate") + private String palceGenDate; + + //上传日期 + @ExportEntityMap(CnName = "上传日期", EnName = "uploadDate") + private String uploadDate; + + //上传金额 + @ExportEntityMap(CnName = "上传金额", EnName = "uploadMoney") + private String uploadMoney; + + //待确定金额 + @ExportEntityMap(CnName = "待确定金额", EnName = "stayDetermineMoney") + private String stayDetermineMoney; + + //费用 + @ExportEntityMap(CnName = "费用", EnName = "money") + private String money; + + //调整说明 + @ExportEntityMap(CnName = "调整说明", EnName = "adjustmentRemarks") + private String adjustmentRemarks; +} diff --git a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/ScmVehRebate.java b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/ScmVehRebate.java index 43582f63d8..143cba925f 100644 --- a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/ScmVehRebate.java +++ b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/ScmVehRebate.java @@ -105,7 +105,7 @@ public class ScmVehRebate extends BaseEntity { private String calculationModeKey; // 计算方式key @ApiModelProperty("计算方式Value") private String calculationModeValue; // 计算方式Value - @ApiModelProperty("调整状态(1已调整0未调整)") + @ApiModelProperty("调整状态(0未调整1待核对2核对中3已调整)") private Integer adjustmentState; @ApiModelProperty("使用组织sid") private String useOrgSid; // 使用组织sid diff --git a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/ScmVehRebateDetailsVo.java b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/ScmVehRebateDetailsVo.java index 692e5420f3..440c9272f5 100644 --- a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/ScmVehRebateDetailsVo.java +++ b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/ScmVehRebateDetailsVo.java @@ -113,7 +113,7 @@ public class ScmVehRebateDetailsVo implements Vo { private String calculationModeKey; // 计算方式key @ApiModelProperty("计算方式Value") private String calculationModeValue; // 计算方式Value - @ApiModelProperty("调整状态(1已调整0未调整)") + @ApiModelProperty("调整状态(0未调整1待核对2核对中3已调整)") private Integer adjustmentState; @ApiModelProperty("使用组织sid") private String useOrgSid; // 使用组织sid diff --git a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/ScmVehRebateDto.java b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/ScmVehRebateDto.java index 1d832c90d9..f8c1c22e54 100644 --- a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/ScmVehRebateDto.java +++ b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/ScmVehRebateDto.java @@ -67,7 +67,7 @@ public class ScmVehRebateDto implements Dto { private String calculationModeKey; @ApiModelProperty("计算方式Value") private String calculationModeValue; - @ApiModelProperty("调整状态(1已调整0未调整)") + @ApiModelProperty("调整状态(0未调整1待核对2核对中3已调整)") private Integer adjustmentState; @ApiModelProperty("组织全路径") private String orgPath; diff --git a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/ScmVehRebateFeign.java b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/ScmVehRebateFeign.java index 6f06fd290d..b9e13c3f87 100644 --- a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/ScmVehRebateFeign.java +++ b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/ScmVehRebateFeign.java @@ -77,6 +77,24 @@ public interface ScmVehRebateFeign { @ResponseBody public ResultBean> checkApplyGetVehRebate(@RequestBody PagerQuery pq); + @ApiOperation("一次导出") + @PostMapping("/excelListOne") + public void excelListOne(@RequestBody ScmVehRebateQuery scmVehRebateQuery); + + @ApiOperation(value = "一次导入") + @PostMapping("/getExcelOneInfo") + @ResponseBody + public ResultBean getExcelOneInfo(@RequestParam(value = "file") MultipartFile file, HttpServletRequest request,@RequestParam("userSid") String userSid,@RequestParam("orgPath") String orgPath) throws IOException, ParseException; + + @ApiOperation("二次导出") + @PostMapping("/excelListTwo") + public void excelListTwo(@RequestBody ScmVehRebateQuery scmVehRebateQuery); + + @ApiOperation(value = "二次导入") + @PostMapping("/getExcelTwoInfo") + @ResponseBody + public ResultBean getExcelTwoInfo(@RequestParam(value = "file") MultipartFile file, HttpServletRequest request,@RequestParam("userSid") String userSid,@RequestParam("orgPath") String orgPath) throws IOException, ParseException; + @ApiOperation("单车返利核对申请选择已上传单车返利信息") @PostMapping("/checkApplyGetAlreadyUploadVehRebate") @ResponseBody diff --git a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/ScmVehRebateFeignFallback.java b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/ScmVehRebateFeignFallback.java index d43e076c42..32db060bbc 100644 --- a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/ScmVehRebateFeignFallback.java +++ b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/ScmVehRebateFeignFallback.java @@ -68,6 +68,26 @@ public class ScmVehRebateFeignFallback implements ScmVehRebateFeign { return null; } + @Override + public void excelListOne(ScmVehRebateQuery scmVehRebateQuery) { + + } + + @Override + public ResultBean getExcelOneInfo(MultipartFile file, HttpServletRequest request, String userSid, String orgPath) throws IOException, ParseException { + return null; + } + + @Override + public void excelListTwo(ScmVehRebateQuery scmVehRebateQuery) { + + } + + @Override + public ResultBean getExcelTwoInfo(MultipartFile file, HttpServletRequest request, String userSid, String orgPath) throws IOException, ParseException { + return null; + } + @Override public ResultBean> checkApplyGetAlreadyUploadVehRebate(PagerQuery pq) { return null; diff --git a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/ScmVehRebateVo.java b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/ScmVehRebateVo.java index ddaec4e081..62e11ebd9d 100644 --- a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/ScmVehRebateVo.java +++ b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/ScmVehRebateVo.java @@ -127,6 +127,6 @@ public class ScmVehRebateVo implements Vo { private String uploadState; // 上传状态 @ApiModelProperty("是否可以点击是否调整") private Boolean adjustOrNot; - @ApiModelProperty("调整状态(1已调整0未调整)") + @ApiModelProperty("调整状态(0未调整1待核对2核对中3已调整)") private Integer adjustmentState; } diff --git a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/TwoExcelInfo.java b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/TwoExcelInfo.java new file mode 100644 index 0000000000..a7ec1ab1a8 --- /dev/null +++ b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/TwoExcelInfo.java @@ -0,0 +1,43 @@ +package com.yxt.anrui.scm.api.scmvehrebate; + +import com.yxt.common.core.utils.ExportEntityMap; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/28 + **/ +@Data +public class TwoExcelInfo { + //车架号 + private String vinNo; + //厂家结算价 + private String manufactorSettlementPrice; + //其中运费金额 + private String freight; + //创建日期 + private String createTime; + //返利名称 + private String rebateName; + //返利类型 + private String rebateTypeValue; + //预提返利 + private String estimateRebate; + //所属年月 + private String palceGenDate; + //上传日期 + private String uploadDate; + //上传金额 + private String uploadMoney; + //待确定金额 + private String stayDetermineMoney; + //二次上传日期 + private String secondaryUploadDate; + //二次上传金额 + private String secondaryUploadMoney; + //费用 + private String money; + //调整说明 + private String adjustmentRemarks; +} diff --git a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/TwoExcelVo.java b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/TwoExcelVo.java new file mode 100644 index 0000000000..551ad8b1e7 --- /dev/null +++ b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/TwoExcelVo.java @@ -0,0 +1,75 @@ +package com.yxt.anrui.scm.api.scmvehrebate; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.yxt.common.core.utils.ExportEntityMap; +import lombok.Data; + +import java.util.Date; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/28 + **/ +@Data +public class TwoExcelVo { + + //车架号 + @ExportEntityMap(CnName = "车架号", EnName = "vinNo") + private String vinNo; + + //厂家结算价 + @ExportEntityMap(CnName = "厂家结算价", EnName = "manufactorSettlementPrice") + private String manufactorSettlementPrice; + + //其中运费金额 + @ExportEntityMap(CnName = "其中运费金额", EnName = "freight") + private String freight; + + @ExportEntityMap(CnName = "创建日期", EnName = "createTime") + private String createTime; + + //返利名称 + @ExportEntityMap(CnName = "返利名称", EnName = "rebateName") + private String rebateName; + + //返利类型 + @ExportEntityMap(CnName = "返利类型", EnName = "rebateTypeValue") + private String rebateTypeValue; + + //预提返利 + @ExportEntityMap(CnName = "预提返利", EnName = "estimateRebate") + private String estimateRebate; + + //所属年月 + @ExportEntityMap(CnName = "所属年月", EnName = "palceGenDate") + private String palceGenDate; + + //上传日期 + @ExportEntityMap(CnName = "上传日期", EnName = "uploadDate") + private String uploadDate; + + //上传金额 + @ExportEntityMap(CnName = "上传金额", EnName = "uploadMoney") + private String uploadMoney; + + //待确定金额 + @ExportEntityMap(CnName = "待确定金额", EnName = "stayDetermineMoney") + private String stayDetermineMoney; + + //二次上传日期 + @ExportEntityMap(CnName = "二次上传日期", EnName = "secondaryUploadDate") + private String secondaryUploadDate; + + //二次上传金额 + @ExportEntityMap(CnName = "二次上传金额", EnName = "secondaryUploadMoney") + private String secondaryUploadMoney; + + //费用 + @ExportEntityMap(CnName = "费用", EnName = "money") + private String money; + + //调整说明 + @ExportEntityMap(CnName = "调整说明", EnName = "adjustmentRemarks") + private String adjustmentRemarks; +} diff --git a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/VehRebateOneExcelInfo.java b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/VehRebateOneExcelInfo.java new file mode 100644 index 0000000000..03be21bbd4 --- /dev/null +++ b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/VehRebateOneExcelInfo.java @@ -0,0 +1,12 @@ +package com.yxt.anrui.scm.api.scmvehrebate; + +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +@Data +public class VehRebateOneExcelInfo { + private String checkInfo; + private List infos = new ArrayList<>(); +} \ No newline at end of file diff --git a/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/VehRebateTwoExcelInfo.java b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/VehRebateTwoExcelInfo.java new file mode 100644 index 0000000000..dd67c9401b --- /dev/null +++ b/anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/VehRebateTwoExcelInfo.java @@ -0,0 +1,12 @@ +package com.yxt.anrui.scm.api.scmvehrebate; + +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +@Data +public class VehRebateTwoExcelInfo { + private String checkInfo; + private List infos = new ArrayList<>(); +} \ No newline at end of file diff --git a/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehrebate/ScmVehRebateMapper.java b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehrebate/ScmVehRebateMapper.java index 74cdb8ff4d..c2f33e2d5d 100644 --- a/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehrebate/ScmVehRebateMapper.java +++ b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehrebate/ScmVehRebateMapper.java @@ -26,9 +26,12 @@ package com.yxt.anrui.scm.biz.scmvehrebate; import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.yxt.anrui.scm.api.scmvehrebate.OneExcelVo; +import com.yxt.anrui.scm.api.scmvehrebate.TwoExcelVo; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -68,4 +71,17 @@ public interface ScmVehRebateMapper extends BaseMapper { @Update("update scm_veh_rebate set withholdingDate = CURRENT_TIMESTAMP where sid = #{vehRebateSid}") void updateWithholdingDateBySid(String vehRebateSid); + + List excelListOne(@Param(Constants.WRAPPER) QueryWrapper qw); + + List excelListTwo(@Param(Constants.WRAPPER) QueryWrapper qw); + + ScmVehRebateVo selectExcelInfo(@Param("vinNo") String vinNo,@Param("rebateName") String rebateName,@Param("palceGenDate") String palceGenDate); + + void updateOneExcelInfo(@Param("uploadDate") String uploadDate,@Param("uploadMoney") String uploadMoney,@Param("stayDetermineMoney") String stayDetermineMoney,@Param("money") String money,@Param("adjustmentRemarks") String adjustmentRemarks,@Param("sid") String sid); + + void updateTwoExcelInfo(@Param("secondaryUploadDate") String secondaryUploadDate,@Param("secondaryUploadMoney") String secondaryUploadMoney,@Param("money") String money,@Param("adjustmentRemarks") String adjustmentRemarks,@Param("sid") String sid); + + @Update("update scm_veh_rebate set adjustmentState = #{adjustmentState} where sid = #{sid}") + void updateAdjustmentState(@Param("adjustmentState") Integer adjustmentState,@Param("sid") String sid); } \ No newline at end of file diff --git a/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehrebate/ScmVehRebateMapper.xml b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehrebate/ScmVehRebateMapper.xml index d73f5c1fd2..df5c73165c 100644 --- a/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehrebate/ScmVehRebateMapper.xml +++ b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehrebate/ScmVehRebateMapper.xml @@ -23,4 +23,54 @@ WHERE vinNo = #{vinNo} AND createOrgSid = #{createOrgSid} + + + + + + + + + UPDATE + scm_veh_rebate + SET + uploadDate = #{uploadDate}, + uploadMoney = #{uploadMoney}, + stayDetermineMoney = #{stayDetermineMoney}, + money = #{money}, + adjustmentRemarks = #{adjustmentRemarks} + WHERE sid = #{sid} + + + + UPDATE + scm_veh_rebate + SET + secondaryUploadDate = #{secondaryUploadDate}, + secondaryUploadMoney = #{secondaryUploadMoney}, + money = #{money}, + adjustmentRemarks = #{adjustmentRemarks} + WHERE sid = #{sid} + \ No newline at end of file diff --git a/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehrebate/ScmVehRebateRest.java b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehrebate/ScmVehRebateRest.java index 8a206913b6..1a648887d8 100644 --- a/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehrebate/ScmVehRebateRest.java +++ b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehrebate/ScmVehRebateRest.java @@ -26,6 +26,7 @@ package com.yxt.anrui.scm.biz.scmvehrebate; import com.yxt.anrui.scm.api.scmvehrebate.*; +import com.yxt.common.base.utils.ExportExcelUtils; import com.yxt.common.base.utils.StringUtils; import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.result.ResultBean; @@ -37,7 +38,10 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; import java.text.ParseException; import java.util.List; @@ -61,6 +65,8 @@ public class ScmVehRebateRest implements ScmVehRebateFeign { @Autowired private ScmVehRebateService scmVehRebateService; + @Autowired + HttpServletResponse response; @Override @ApiOperation("根据条件分页查询数据的列表") @@ -85,6 +91,47 @@ public class ScmVehRebateRest implements ScmVehRebateFeign { return rb.success().setData(pv); } + @Override + public void excelListOne(ScmVehRebateQuery scmVehRebateQuery) { + //得到所有要导出的数据 + List exportVoList = scmVehRebateService.excelListOne(scmVehRebateQuery); + //定义导出的excel名字 + String excelName = "一次导出"; + String fileNameURL = ""; + try { + fileNameURL = URLEncoder.encode(excelName, "UTF-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + ExportExcelUtils.export(fileNameURL, exportVoList, OneExcelVo.class, response); + } + + @Override + public ResultBean getExcelOneInfo(MultipartFile file, HttpServletRequest request,String userSid, String orgPath) throws IOException, ParseException { + return scmVehRebateService.getExcelOneInfo(file,request,userSid,orgPath); + } + + + @Override + public void excelListTwo(ScmVehRebateQuery scmVehRebateQuery) { + //得到所有要导出的数据 + List exportVoList = scmVehRebateService.excelListTwo(scmVehRebateQuery); + //定义导出的excel名字 + String excelName = "二导出"; + String fileNameURL = ""; + try { + fileNameURL = URLEncoder.encode(excelName, "UTF-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + ExportExcelUtils.export(fileNameURL, exportVoList, TwoExcelVo.class, response); + } + + @Override + public ResultBean getExcelTwoInfo(MultipartFile file, HttpServletRequest request,String userSid, String orgPath) throws IOException, ParseException { + return scmVehRebateService.getExcelTwoInfo(file,request,userSid,orgPath); + } + @Override public ResultBean> checkApplyGetAlreadyUploadVehRebate(PagerQuery pq) { ResultBean rb = ResultBean.fireFail(); diff --git a/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehrebate/ScmVehRebateService.java b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehrebate/ScmVehRebateService.java index b75e9a689b..aa79fd7b2d 100644 --- a/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehrebate/ScmVehRebateService.java +++ b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehrebate/ScmVehRebateService.java @@ -277,40 +277,190 @@ public class ScmVehRebateService extends MybatisBaseService pagging = baseMapper.selectPageVo(page, qw); for (ScmVehRebateVo record : pagging.getRecords()) { //上传状态:未上传 - if (StringUtils.isBlank(record.getUploadDate()) && StringUtils.isBlank(record.getUploadMoney())) { + if (StringUtils.isBlank(record.getUploadDate())) { record.setUploadState("0"); - } - //上传状态:已上传 - if (StringUtils.isNotBlank(record.getUploadDate()) && StringUtils.isNotBlank(record.getUploadMoney())) { + } else {//上传状态:已上传 record.setUploadState("1"); } //是否调整 - if (new BigDecimal(record.getStayDetermineMoney()).compareTo(BigDecimal.ZERO) == 0) { - BigDecimal decimal = new BigDecimal(StringUtils.isNotBlank(record.getUploadMoney()) ? record.getUploadMoney() : "0").add(new BigDecimal(StringUtils.isNotBlank(record.getSecondaryUploadMoney()) ? record.getSecondaryUploadMoney() : "0")).subtract(new BigDecimal(StringUtils.isNotBlank(record.getMoney()) ? record.getMoney() : "0")).subtract(new BigDecimal(StringUtils.isNotBlank(record.getStayDetermineMoney()) ? record.getStayDetermineMoney() : "0")).subtract(new BigDecimal(StringUtils.isNotBlank(record.getEstimateRebate()) ? record.getEstimateRebate() : "0")); - int i = decimal.compareTo(BigDecimal.ZERO); - if (i < 0) {//小于 + if (0 == record.getAdjustmentState()){ + if (new BigDecimal(record.getStayDetermineMoney()).compareTo(BigDecimal.ZERO) == 0) { + BigDecimal decimal = new BigDecimal(StringUtils.isNotBlank(record.getUploadMoney()) ? record.getUploadMoney() : "0").add(new BigDecimal(StringUtils.isNotBlank(record.getSecondaryUploadMoney()) ? record.getSecondaryUploadMoney() : "0")).subtract(new BigDecimal(StringUtils.isNotBlank(record.getMoney()) ? record.getMoney() : "0")).subtract(new BigDecimal(StringUtils.isNotBlank(record.getStayDetermineMoney()) ? record.getStayDetermineMoney() : "0")).subtract(new BigDecimal(StringUtils.isNotBlank(record.getEstimateRebate()) ? record.getEstimateRebate() : "0")); + int i = decimal.compareTo(BigDecimal.ZERO); + if (i < 0) {//小于 + record.setIsAdjustment("否"); + record.setAdjustmentMoney("0"); + record.setAdjustOrNot(true); + } else if (i == 0) {//等于 + record.setIsAdjustment("是"); + record.setAdjustmentMoney("0"); + record.setAdjustOrNot(false); + } else {//大于 + record.setIsAdjustment("是"); + record.setAdjustmentMoney(decimal.toString()); + record.setAdjustOrNot(true); + } + } else { record.setIsAdjustment("否"); record.setAdjustmentMoney("0"); - record.setAdjustOrNot(true); - } else if (i == 0) {//等于 - record.setIsAdjustment("是"); - record.setAdjustmentMoney("0"); record.setAdjustOrNot(false); - } else {//大于 - record.setIsAdjustment("是"); - record.setAdjustmentMoney(decimal.toString()); - record.setAdjustOrNot(true); } - } else { - record.setIsAdjustment("否"); - record.setAdjustmentMoney("0"); - record.setAdjustOrNot(false); } } PagerVo p = PagerUtil.pageToVo(pagging, null); return p; } + public List excelListOne(ScmVehRebateQuery query) { + QueryWrapper qw = new QueryWrapper<>(); + //========================================数据授权开始 + if (StringUtils.isNotBlank(query.getMenuUrl())) { + PrivilegeQuery privilegeQuery = new PrivilegeQuery(); + privilegeQuery.setOrgPath(query.getOrgPath()); + privilegeQuery.setMenuUrl(query.getMenuUrl()); + privilegeQuery.setMenuSid(query.getMenuSid()); + privilegeQuery.setUserSid(query.getUserSid()); + ResultBean defaultIdReltBean = sysUserFeign.selectPrivilegeLevel(privilegeQuery); + if (StringUtils.isNotBlank(defaultIdReltBean.getData())) { + //数据权限ID(1集团、2事业部、3分公司、4部门、5个人) + String orgSidPath = query.getOrgPath(); + orgSidPath = orgSidPath + "/"; + int i1 = orgSidPath.indexOf("/"); + int i2 = orgSidPath.indexOf("/", i1 + 1); + int i3 = orgSidPath.indexOf("/", i2 + 1); + int i4 = orgSidPath.indexOf("/", i3 + 1); + String orgLevelKey = defaultIdReltBean.getData(); + if ("1".equals(orgLevelKey)) { + orgSidPath = orgSidPath.substring(0, i1); + qw.like("orgPath", orgSidPath); + } else if ("2".equals(orgLevelKey)) { + orgSidPath = orgSidPath.substring(0, i2); + qw.like("orgPath", orgSidPath); + } else if ("3".equals(orgLevelKey)) { + orgSidPath = orgSidPath.substring(0, i3); + qw.like("orgPath", orgSidPath); + } else if ("4".equals(orgLevelKey)) { + orgSidPath = orgSidPath.substring(0, i4); + qw.like("orgPath", orgSidPath); + } else if ("5".equals(orgLevelKey)) { + qw.eq("createBySid", query.getUserSid()); + } else { + List p = new ArrayList<>(); + return p; + } + } else { + List p = new ArrayList<>(); + return p; + } + } + if (StringUtils.isNotBlank(query.getBrandSid())) { + qw.eq("brandSid", query.getBrandSid()); + } + if (StringUtils.isNotBlank(query.getVehModelName())) { + qw.like("vehModelName", query.getVehModelName()); + } + if (StringUtils.isNotBlank(query.getVinNo())) { + qw.like("vinNo", query.getVinNo()); + } + if (StringUtils.isNotBlank(query.getRebateTypeKey())) { + qw.eq("rebateTypeKey", query.getRebateTypeKey()); + } + if (StringUtils.isNotBlank(query.getRebateName())) { + qw.like("rebateName", query.getRebateName()); + } + String createStartTime = query.getCreateStartTime(); + String createEndTime = query.getCreateEndTime(); + qw.apply(StringUtils.isNotBlank(createStartTime), "date_format (createTime,'%Y-%m-%d') >= date_format('" + createStartTime + "','%Y-%m-%d')"). + apply(StringUtils.isNotBlank(createEndTime), "date_format (createTime,'%Y-%m-%d') <= date_format('" + createEndTime + "','%Y-%m-%d')" + ); + qw.eq("adjustmentState", 0); + qw.ne("state", 0); + if (StringUtils.isNotBlank(query.getState())) { + qw.eq("state", query.getState()); + } + qw.orderByDesc("createTime"); + List oneExcelVos = baseMapper.excelListOne(qw); + for (OneExcelVo oneExcelVo : oneExcelVos) { + oneExcelVo.setCreateTime(DateUtil.formatDate(DateUtil.parseDate(oneExcelVo.getCreateTime()))); + } + return oneExcelVos; + } + + public List excelListTwo(ScmVehRebateQuery query) { + QueryWrapper qw = new QueryWrapper<>(); + //========================================数据授权开始 + if (StringUtils.isNotBlank(query.getMenuUrl())) { + PrivilegeQuery privilegeQuery = new PrivilegeQuery(); + privilegeQuery.setOrgPath(query.getOrgPath()); + privilegeQuery.setMenuUrl(query.getMenuUrl()); + privilegeQuery.setMenuSid(query.getMenuSid()); + privilegeQuery.setUserSid(query.getUserSid()); + ResultBean defaultIdReltBean = sysUserFeign.selectPrivilegeLevel(privilegeQuery); + if (StringUtils.isNotBlank(defaultIdReltBean.getData())) { + //数据权限ID(1集团、2事业部、3分公司、4部门、5个人) + String orgSidPath = query.getOrgPath(); + orgSidPath = orgSidPath + "/"; + int i1 = orgSidPath.indexOf("/"); + int i2 = orgSidPath.indexOf("/", i1 + 1); + int i3 = orgSidPath.indexOf("/", i2 + 1); + int i4 = orgSidPath.indexOf("/", i3 + 1); + String orgLevelKey = defaultIdReltBean.getData(); + if ("1".equals(orgLevelKey)) { + orgSidPath = orgSidPath.substring(0, i1); + qw.like("orgPath", orgSidPath); + } else if ("2".equals(orgLevelKey)) { + orgSidPath = orgSidPath.substring(0, i2); + qw.like("orgPath", orgSidPath); + } else if ("3".equals(orgLevelKey)) { + orgSidPath = orgSidPath.substring(0, i3); + qw.like("orgPath", orgSidPath); + } else if ("4".equals(orgLevelKey)) { + orgSidPath = orgSidPath.substring(0, i4); + qw.like("orgPath", orgSidPath); + } else if ("5".equals(orgLevelKey)) { + qw.eq("createBySid", query.getUserSid()); + } else { + List p = new ArrayList<>(); + return p; + } + } else { + List p = new ArrayList<>(); + return p; + } + } + if (StringUtils.isNotBlank(query.getBrandSid())) { + qw.eq("brandSid", query.getBrandSid()); + } + if (StringUtils.isNotBlank(query.getVehModelName())) { + qw.like("vehModelName", query.getVehModelName()); + } + if (StringUtils.isNotBlank(query.getVinNo())) { + qw.like("vinNo", query.getVinNo()); + } + if (StringUtils.isNotBlank(query.getRebateTypeKey())) { + qw.eq("rebateTypeKey", query.getRebateTypeKey()); + } + if (StringUtils.isNotBlank(query.getRebateName())) { + qw.like("rebateName", query.getRebateName()); + } + String createStartTime = query.getCreateStartTime(); + String createEndTime = query.getCreateEndTime(); + qw.apply(StringUtils.isNotBlank(createStartTime), "date_format (createTime,'%Y-%m-%d') >= date_format('" + createStartTime + "','%Y-%m-%d')"). + apply(StringUtils.isNotBlank(createEndTime), "date_format (createTime,'%Y-%m-%d') <= date_format('" + createEndTime + "','%Y-%m-%d')" + ); + qw.eq("adjustmentState", 0); + qw.ne("state", 0); + if (StringUtils.isNotBlank(query.getState())) { + qw.eq("state", query.getState()); + } + qw.orderByDesc("createTime"); + List twoExcelVos = baseMapper.excelListTwo(qw); + for (TwoExcelVo twoExcelVo : twoExcelVos) { + twoExcelVo.setCreateTime(DateUtil.formatDate(DateUtil.parseDate(twoExcelVo.getCreateTime()))); + } + return twoExcelVos; + } + public PagerVo checkApplyGetAlreadyUploadVehRebate(PagerQuery pq) { ScmVehRebateQuery query = pq.getParams(); QueryWrapper qw = new QueryWrapper<>(); @@ -425,6 +575,7 @@ public class ScmVehRebateService extends MybatisBaseService pq = new PagerQuery<>(); BaseVehicleRebateQuery params = new BaseVehicleRebateQuery(); params.setVinNo(excelInfo.getVinNo()); params.setUserSid(userSid); pq.setParams(params); PagerVo data = baseVehicleFeign.vehicleRebateList(pq).getData(); - if (data.getRecords().size() == 0){ + if (data.getRecords().size() == 0) { checkWord.add("车架号" + excelInfo.getVinNo() + "不存在"); break; } @@ -656,10 +813,10 @@ public class ScmVehRebateService extends MybatisBaseService infos = importReturn.getInfos(); + for (OneExcelInfo info : infos) { + ScmVehRebateVo scmVehRebateVo = baseMapper.selectExcelInfo(info.getVinNo(), info.getRebateName(), info.getPalceGenDate()); + Date javaDate = new Date((long) ((Double.valueOf(info.getUploadDate()) - 25569) * 86400 * 1000)); + String uploadDate = DateUtil.formatDate(javaDate); + baseMapper.updateOneExcelInfo(uploadDate, info.getUploadMoney(), info.getStayDetermineMoney(), info.getMoney(), info.getAdjustmentRemarks(), scmVehRebateVo.getSid()); + } + return rb.success().setMsg("成功导入数据,请点击确定按钮"); + } + } + + private VehRebateOneExcelInfo getSheetValOne(Sheet sheet, int[] resultCell, String userSid) { + VehRebateOneExcelInfo importReturn = new VehRebateOneExcelInfo(); + List importVoList = new ArrayList<>(); + Set checkWord = new HashSet<>(); + for (int r = 1; r <= sheet.getLastRowNum(); r++) { + Row row = sheet.getRow(r); + if (row == null) { + continue; + } + OneExcelInfo importVo = new OneExcelInfo(); + int physicalNumberOfCells = row.getPhysicalNumberOfCells(); + if (physicalNumberOfCells < 8) { + physicalNumberOfCells = 8; + } + for (int i = 0; i < physicalNumberOfCells; i++) { + String trim = new String(); + try { + trim = getCellVal(row.getCell(i)).toString().trim(); + if (StringUtils.isBlank(trim)) { + NullPointerException nullPointerException = new NullPointerException(); + } + String temp = getCellVal(row.getCell(i)).toString().trim(); + for (int j = 0; j < resultCell.length; j++) { + if (i == resultCell[j]) { + switch (i) { + case 0: + importVo.setVinNo(temp); + break; + case 1: + importVo.setManufactorSettlementPrice(temp); + break; + case 2: + importVo.setFreight(temp); + break; + case 3: + importVo.setCreateTime(temp); + break; + case 4: + importVo.setRebateName(temp); + break; + case 5: + importVo.setRebateTypeValue(temp); + break; + case 6: + importVo.setEstimateRebate(temp); + break; + case 7: + importVo.setPalceGenDate(temp); + break; + case 8: + importVo.setUploadDate(temp); + break; + case 9: + importVo.setUploadMoney(temp); + break; + case 10: + importVo.setStayDetermineMoney(temp); + break; + case 11: + importVo.setMoney(temp); + break; + case 12: + importVo.setAdjustmentRemarks(temp); + break; + default: + break; + } + } else { + continue; + } + } + } catch (Exception e) { + if (StringUtils.isBlank(trim)) { + String word = new String(); + switch (i) { + case 0: + word = "车架号"; + break; + case 1: + word = "厂家结算价"; + break; + case 2: + word = "其中运费金额"; + break; + case 3: + word = "创建日期"; + break; + case 4: + word = "返利名称"; + break; + case 5: + word = "返利类型"; + break; + case 6: + word = "预提返利"; + break; + case 7: + word = "所属年月"; + break; + case 8: + word = "上传日期"; + break; + case 9: + word = "上传金额"; + break; + case 10: + word = "待确定金额"; + break; + case 11: + word = "费用"; + break; + case 12: + word = "调整说明"; + break; + default: + break; + } + continue; + } + } + } + importVoList.add(importVo); + } + if (!importVoList.isEmpty()) { + for (OneExcelInfo excelInfo : importVoList) { + ScmVehRebateVo scmVehRebateVo = baseMapper.selectExcelInfo(excelInfo.getVinNo(), excelInfo.getRebateName(), excelInfo.getPalceGenDate()); + if (scmVehRebateVo == null || StringUtils.isBlank(scmVehRebateVo.getSid())) { + checkWord.add("车架号" + excelInfo.getVinNo() + "导入的返利信息不存在"); + break; + } + if (scmVehRebateVo.getAdjustmentState() == 1) { + checkWord.add("车架号" + excelInfo.getVinNo() + "导入的返利信息已调整"); + break; + } + if (StringUtils.isBlank(excelInfo.getVinNo())) { + checkWord.add("车架号不能为空"); + break; + } + if (StringUtils.isNotBlank(excelInfo.getVinNo())) { + if (excelInfo.getVinNo().length() != 17 && excelInfo.getVinNo().length() != 8) { + checkWord.add("车架号" + excelInfo.getVinNo() + "填写不正确"); + break; + } + } + if (StringUtils.isNotBlank(excelInfo.getVinNo())) { + PagerQuery pq = new PagerQuery<>(); + BaseVehicleRebateQuery params = new BaseVehicleRebateQuery(); + params.setVinNo(excelInfo.getVinNo()); + params.setUserSid(userSid); + pq.setParams(params); + PagerVo data = baseVehicleFeign.vehicleRebateList(pq).getData(); + if (data.getRecords().size() == 0) { + checkWord.add("车架号" + excelInfo.getVinNo() + "不存在"); + break; + } + } + if (StringUtils.isBlank(excelInfo.getManufactorSettlementPrice())) { + checkWord.add("厂家结算价不能为空"); + break; + } + if (StringUtils.isNotBlank(excelInfo.getManufactorSettlementPrice())) { + String manufactorSettlementPrice = excelInfo.getManufactorSettlementPrice(); + Pattern pattern = Pattern.compile("^\\d+(.\\d{1,2})?$"); + boolean matches = pattern.matcher(manufactorSettlementPrice).matches(); + if (!matches) { + checkWord.add("厂家结算价必须为数字"); + break; + } + } + if (StringUtils.isBlank(excelInfo.getFreight())) { + checkWord.add("其中运费金额不能为空"); + break; + } + if (StringUtils.isNotBlank(excelInfo.getFreight())) { + String freight = excelInfo.getFreight(); + Pattern pattern = Pattern.compile("^\\d+(.\\d{1,2})?$"); + boolean matches = pattern.matcher(freight).matches(); + if (!matches) { + checkWord.add("其中运费金额必须为数字"); + break; + } + } + if (StringUtils.isBlank(excelInfo.getCreateTime())) { + checkWord.add("创建日期不能为空"); + break; + } + if (StringUtils.isNotBlank(excelInfo.getCreateTime())) { + Date javaDate = new Date((long) ((Double.valueOf(excelInfo.getCreateTime()) - 25569) * 86400 * 1000)); + String createTime = DateUtil.formatDate(javaDate); + String[] split = createTime.split("-"); + if (split.length != 3) { + checkWord.add("车架号" + excelInfo.getVinNo() + "导入的创建日期填写不正确,格式yyyy-MM-dd"); + break; + } else if (!isFourDigitNumber(split[0]) || !isTwoDigitNumber(split[1]) || !isTwoDigitNumber(split[2])) { + checkWord.add("车架号" + excelInfo.getVinNo() + "导入的创建日期填写不正确,格式yyyy-MM-dd"); + break; + } + } + if (StringUtils.isBlank(excelInfo.getRebateName())) { + checkWord.add("返利名称不能为空"); + break; + } + if (StringUtils.isBlank(excelInfo.getRebateTypeValue())) { + checkWord.add("返利类型不能为空"); + break; + } + if (StringUtils.isNotBlank(excelInfo.getRebateTypeValue())) { + String dictKey = dictCommonFeign.selectByValue(excelInfo.getRebateTypeValue()).getData(); + if (StringUtils.isBlank(dictKey)) { + checkWord.add("车架号" + excelInfo.getVinNo() + "导入的返利类型填写不正确"); + break; + } + } + if (StringUtils.isBlank(excelInfo.getEstimateRebate())) { + checkWord.add("预提返利不能为空"); + break; + } + if (StringUtils.isNotBlank(excelInfo.getEstimateRebate())) { + String estimateRebate = excelInfo.getEstimateRebate(); + Pattern pattern = Pattern.compile("^\\d+(.\\d{1,2})?$"); + boolean matches = pattern.matcher(estimateRebate).matches(); + if (!matches) { + checkWord.add("预提返利必须为数字"); + break; + } + } + if (StringUtils.isBlank(excelInfo.getPalceGenDate())) { + checkWord.add("所属年月不能为空"); + break; + } + if (StringUtils.isNotBlank(excelInfo.getPalceGenDate())) { + String palceGenDate = excelInfo.getPalceGenDate(); + String[] split = palceGenDate.split("-"); + if (split.length != 2) { + checkWord.add("车架号" + excelInfo.getVinNo() + "导入的所属年月填写不正确,格式yyyy-MM"); + break; + } else if (!isFourDigitNumber(split[0]) || !isTwoDigitNumber(split[1])) { + checkWord.add("车架号" + excelInfo.getVinNo() + "导入的所属年月填写不正确,格式yyyy-MM"); + break; + } + } + if (StringUtils.isBlank(excelInfo.getUploadDate())) { + checkWord.add("上传日期不能为空"); + break; + } + if (StringUtils.isNotBlank(excelInfo.getUploadDate())) { + Date javaDate = new Date((long) ((Double.valueOf(excelInfo.getUploadDate()) - 25569) * 86400 * 1000)); + String uploadDate = DateUtil.formatDate(javaDate); + String[] split = uploadDate.split("-"); + if (split.length != 3) { + checkWord.add("车架号" + excelInfo.getVinNo() + "导入的上传日期填写不正确,格式yyyy-MM-dd"); + break; + } else if (!isFourDigitNumber(split[0]) || !isTwoDigitNumber(split[1]) || !isTwoDigitNumber(split[2])) { + checkWord.add("车架号" + excelInfo.getVinNo() + "导入的上传日期填写不正确,格式yyyy-MM-dd"); + break; + } + } + if (StringUtils.isBlank(excelInfo.getUploadMoney())) { + checkWord.add("上传金额不能为空"); + break; + } + if (StringUtils.isNotBlank(excelInfo.getUploadMoney())) { + String uploadMoney = excelInfo.getUploadMoney(); + Pattern pattern = Pattern.compile("^\\d+(.\\d{1,2})?$"); + boolean matches = pattern.matcher(uploadMoney).matches(); + if (!matches) { + checkWord.add("上传金额必须为数字"); + break; + } + } + if (StringUtils.isBlank(excelInfo.getStayDetermineMoney())) { + checkWord.add("待确定金额不能为空"); + break; + } + if (StringUtils.isNotBlank(excelInfo.getStayDetermineMoney())) { + String stayDetermineMoney = excelInfo.getStayDetermineMoney(); + Pattern pattern = Pattern.compile("^\\d+(.\\d{1,2})?$"); + boolean matches = pattern.matcher(stayDetermineMoney).matches(); + if (!matches) { + checkWord.add("待确定金额必须为数字"); + break; + } + } + if (StringUtils.isBlank(excelInfo.getMoney())) { + checkWord.add("费用不能为空"); + break; + } + if (StringUtils.isNotBlank(excelInfo.getMoney())) { + String money = excelInfo.getMoney(); + Pattern pattern = Pattern.compile("^\\d+(.\\d{1,2})?$"); + boolean matches = pattern.matcher(money).matches(); + if (!matches) { + checkWord.add("费用必须为数字"); + break; + } + } + if (StringUtils.isBlank(excelInfo.getAdjustmentRemarks())) { + checkWord.add("调整说明不能为空"); + break; + } + } + } + StringBuffer sbcheck1 = new StringBuffer(); + if (!checkWord.isEmpty()) { + for (String s : checkWord) { + if (StringUtils.isBlank(s)) { + continue; + } + sbcheck1.append(s).append(";"); + } + } + if (sbcheck1.length() > 0) { + sbcheck1.delete(sbcheck1.length() - 1, sbcheck1.length()); + importReturn.setCheckInfo(sbcheck1.toString()); + importReturn.setInfos(new ArrayList<>()); + return importReturn; + } + importReturn.setInfos(importVoList); + return importReturn; + } + + public ResultBean getExcelTwoInfo(MultipartFile file, HttpServletRequest request, String userSid, String orgPath) throws IOException { + ResultBean rb = ResultBean.fireFail(); + String temp = request.getSession().getServletContext().getRealPath(File.separator) + "temp";// 临时目录 + File tempFile = new File(temp); + if (!tempFile.exists()) { + tempFile.mkdirs(); + } + String fileName = file.getOriginalFilename(); + if (!fileName.matches("^.+\\.(?i)(xls)$") && !fileName.matches("^.+\\.(?i)(xlsx)$")) { + return rb.fail().setMsg("上传文件不正确"); + } + + int[] resultCell = new int[]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14}; + boolean isExcel2003 = true; + if (fileName.matches("^.+\\.(?i)(xlsx)$")) { + isExcel2003 = false; + } + InputStream is = file.getInputStream(); + Workbook wb = null; + if (isExcel2003) { + wb = new HSSFWorkbook(is); + } else { + wb = new XSSFWorkbook(is); + } + Sheet sheet = wb.getSheetAt(0); + VehRebateTwoExcelInfo importReturn = getSheetValTwo(sheet, resultCell, userSid); + if (StringUtils.isNotBlank(importReturn.getCheckInfo())) { + return rb.setMsg(importReturn.getCheckInfo()); + } else { + List infos = importReturn.getInfos(); + for (TwoExcelInfo info : infos) { + ScmVehRebateVo scmVehRebateVo = baseMapper.selectExcelInfo(info.getVinNo(), info.getRebateName(), info.getPalceGenDate()); + Date javaDate = new Date((long) ((Double.valueOf(info.getSecondaryUploadDate()) - 25569) * 86400 * 1000)); + String secondaryUploadDate = DateUtil.formatDate(javaDate); + baseMapper.updateTwoExcelInfo(secondaryUploadDate, info.getSecondaryUploadMoney(), info.getMoney(), info.getAdjustmentRemarks(), scmVehRebateVo.getSid()); + } + return rb.success().setMsg("成功导入数据,请点击确定按钮"); + } + } + + private VehRebateTwoExcelInfo getSheetValTwo(Sheet sheet, int[] resultCell, String userSid) { + VehRebateTwoExcelInfo importReturn = new VehRebateTwoExcelInfo(); + List importVoList = new ArrayList<>(); + Set checkWord = new HashSet<>(); + for (int r = 1; r <= sheet.getLastRowNum(); r++) { + Row row = sheet.getRow(r); + if (row == null) { + continue; + } + TwoExcelInfo importVo = new TwoExcelInfo(); + int physicalNumberOfCells = row.getPhysicalNumberOfCells(); + if (physicalNumberOfCells < 8) { + physicalNumberOfCells = 8; + } + for (int i = 0; i < physicalNumberOfCells; i++) { + String trim = new String(); + try { + trim = getCellVal(row.getCell(i)).toString().trim(); + if (StringUtils.isBlank(trim)) { + NullPointerException nullPointerException = new NullPointerException(); + } + String temp = getCellVal(row.getCell(i)).toString().trim(); + for (int j = 0; j < resultCell.length; j++) { + if (i == resultCell[j]) { + switch (i) { + case 0: + importVo.setVinNo(temp); + break; + case 1: + importVo.setManufactorSettlementPrice(temp); + break; + case 2: + importVo.setFreight(temp); + break; + case 3: + importVo.setCreateTime(temp); + break; + case 4: + importVo.setRebateName(temp); + break; + case 5: + importVo.setRebateTypeValue(temp); + break; + case 6: + importVo.setEstimateRebate(temp); + break; + case 7: + importVo.setPalceGenDate(temp); + break; + case 8: + importVo.setUploadDate(temp); + break; + case 9: + importVo.setUploadMoney(temp); + break; + case 10: + importVo.setStayDetermineMoney(temp); + break; + case 11: + importVo.setSecondaryUploadDate(temp); + break; + case 12: + importVo.setSecondaryUploadMoney(temp); + break; + case 13: + importVo.setMoney(temp); + break; + case 14: + importVo.setAdjustmentRemarks(temp); + break; + default: + break; + } + } else { + continue; + } + } + } catch (Exception e) { + if (StringUtils.isBlank(trim)) { + String word = new String(); + switch (i) { + case 0: + word = "车架号"; + break; + case 1: + word = "厂家结算价"; + break; + case 2: + word = "其中运费金额"; + break; + case 3: + word = "创建日期"; + break; + case 4: + word = "返利名称"; + break; + case 5: + word = "返利类型"; + break; + case 6: + word = "预提返利"; + break; + case 7: + word = "所属年月"; + break; + case 8: + word = "上传日期"; + break; + case 9: + word = "上传金额"; + break; + case 10: + word = "待确定金额"; + break; + case 11: + word = "二次上传日期"; + break; + case 12: + word = "二次上传金额"; + break; + case 13: + word = "费用"; + break; + case 14: + word = "调整说明"; + break; + default: + break; + } + continue; + } + } + } + importVoList.add(importVo); + } + if (!importVoList.isEmpty()) { + for (TwoExcelInfo excelInfo : importVoList) { + ScmVehRebateVo scmVehRebateVo = baseMapper.selectExcelInfo(excelInfo.getVinNo(), excelInfo.getRebateName(), excelInfo.getPalceGenDate()); + if (scmVehRebateVo == null || StringUtils.isBlank(scmVehRebateVo.getSid())) { + checkWord.add("车架号" + excelInfo.getVinNo() + "导入的返利信息不存在"); + break; + } + if (scmVehRebateVo.getAdjustmentState() == 1) { + checkWord.add("车架号" + excelInfo.getVinNo() + "导入的返利信息已调整"); + break; + } + if (StringUtils.isBlank(excelInfo.getVinNo())) { + checkWord.add("车架号不能为空"); + break; + } + if (StringUtils.isNotBlank(excelInfo.getVinNo())) { + if (excelInfo.getVinNo().length() != 17 && excelInfo.getVinNo().length() != 8) { + checkWord.add("车架号" + excelInfo.getVinNo() + "填写不正确"); + break; + } + } + if (StringUtils.isNotBlank(excelInfo.getVinNo())) { + PagerQuery pq = new PagerQuery<>(); + BaseVehicleRebateQuery params = new BaseVehicleRebateQuery(); + params.setVinNo(excelInfo.getVinNo()); + params.setUserSid(userSid); + pq.setParams(params); + PagerVo data = baseVehicleFeign.vehicleRebateList(pq).getData(); + if (data.getRecords().size() == 0) { + checkWord.add("车架号" + excelInfo.getVinNo() + "不存在"); + break; + } + } + if (StringUtils.isBlank(excelInfo.getManufactorSettlementPrice())) { + checkWord.add("厂家结算价不能为空"); + break; + } + if (StringUtils.isNotBlank(excelInfo.getManufactorSettlementPrice())) { + String manufactorSettlementPrice = excelInfo.getManufactorSettlementPrice(); + Pattern pattern = Pattern.compile("^\\d+(.\\d{1,2})?$"); + boolean matches = pattern.matcher(manufactorSettlementPrice).matches(); + if (!matches) { + checkWord.add("厂家结算价必须为数字"); + break; + } + } + if (StringUtils.isBlank(excelInfo.getFreight())) { + checkWord.add("其中运费金额不能为空"); + break; + } + if (StringUtils.isNotBlank(excelInfo.getFreight())) { + String freight = excelInfo.getFreight(); + Pattern pattern = Pattern.compile("^\\d+(.\\d{1,2})?$"); + boolean matches = pattern.matcher(freight).matches(); + if (!matches) { + checkWord.add("其中运费金额必须为数字"); + break; + } + } + if (StringUtils.isBlank(excelInfo.getCreateTime())) { + checkWord.add("创建日期不能为空"); + break; + } + if (StringUtils.isNotBlank(excelInfo.getCreateTime())) { + String createTime = excelInfo.getCreateTime(); + String[] split = createTime.split("-"); + if (split.length != 3) { + checkWord.add("车架号" + excelInfo.getVinNo() + "导入的创建日期填写不正确,格式yyyy-MM-dd"); + break; + } else if (!isFourDigitNumber(split[0]) || !isTwoDigitNumber(split[1]) || !isTwoDigitNumber(split[2])) { + checkWord.add("车架号" + excelInfo.getVinNo() + "导入的创建日期填写不正确,格式yyyy-MM-dd"); + break; + } + } + if (StringUtils.isBlank(excelInfo.getRebateName())) { + checkWord.add("返利名称不能为空"); + break; + } + if (StringUtils.isBlank(excelInfo.getRebateTypeValue())) { + checkWord.add("返利类型不能为空"); + break; + } + if (StringUtils.isNotBlank(excelInfo.getRebateTypeValue())) { + String dictKey = dictCommonFeign.selectByValue(excelInfo.getRebateTypeValue()).getData(); + if (StringUtils.isBlank(dictKey)) { + checkWord.add("车架号" + excelInfo.getVinNo() + "导入的返利类型填写不正确"); + break; + } + } + if (StringUtils.isBlank(excelInfo.getEstimateRebate())) { + checkWord.add("预提返利不能为空"); + break; + } + if (StringUtils.isNotBlank(excelInfo.getEstimateRebate())) { + String estimateRebate = excelInfo.getEstimateRebate(); + Pattern pattern = Pattern.compile("^\\d+(.\\d{1,2})?$"); + boolean matches = pattern.matcher(estimateRebate).matches(); + if (!matches) { + checkWord.add("预提返利必须为数字"); + break; + } + } + if (StringUtils.isBlank(excelInfo.getPalceGenDate())) { + checkWord.add("所属年月不能为空"); + break; + } + if (StringUtils.isNotBlank(excelInfo.getPalceGenDate())) { + String palceGenDate = excelInfo.getPalceGenDate(); + String[] split = palceGenDate.split("-"); + if (split.length != 2) { + checkWord.add("车架号" + excelInfo.getVinNo() + "导入的所属年月填写不正确,格式yyyy-MM"); + break; + } else if (!isFourDigitNumber(split[0]) || !isTwoDigitNumber(split[1])) { + checkWord.add("车架号" + excelInfo.getVinNo() + "导入的所属年月填写不正确,格式yyyy-MM"); + break; + } + } + if (StringUtils.isBlank(excelInfo.getUploadDate())) { + checkWord.add("上传日期不能为空"); + break; + } + if (StringUtils.isNotBlank(excelInfo.getUploadDate())) { + String uploadDate = excelInfo.getUploadDate(); + String[] split = uploadDate.split("-"); + if (split.length != 3) { + checkWord.add("车架号" + excelInfo.getVinNo() + "导入的上传日期填写不正确,格式yyyy-MM-dd"); + break; + } else if (!isFourDigitNumber(split[0]) || !isTwoDigitNumber(split[1]) || !isTwoDigitNumber(split[2])) { + checkWord.add("车架号" + excelInfo.getVinNo() + "导入的上传日期填写不正确,格式yyyy-MM-dd"); + break; + } + } + if (StringUtils.isBlank(excelInfo.getUploadMoney())) { + checkWord.add("上传金额不能为空"); + break; + } + if (StringUtils.isNotBlank(excelInfo.getUploadMoney())) { + String uploadMoney = excelInfo.getUploadMoney(); + Pattern pattern = Pattern.compile("^\\d+(.\\d{1,2})?$"); + boolean matches = pattern.matcher(uploadMoney).matches(); + if (!matches) { + checkWord.add("上传金额必须为数字"); + break; + } + } + if (StringUtils.isBlank(excelInfo.getStayDetermineMoney())) { + checkWord.add("待确定金额不能为空"); + break; + } + if (StringUtils.isNotBlank(excelInfo.getStayDetermineMoney())) { + String stayDetermineMoney = excelInfo.getStayDetermineMoney(); + Pattern pattern = Pattern.compile("^\\d+(.\\d{1,2})?$"); + boolean matches = pattern.matcher(stayDetermineMoney).matches(); + if (!matches) { + checkWord.add("待确定金额必须为数字"); + break; + } + } + if (StringUtils.isBlank(excelInfo.getUploadDate())) { + checkWord.add("二次上传日期不能为空"); + break; + } + if (StringUtils.isNotBlank(excelInfo.getSecondaryUploadDate())) { + Date javaDate = new Date((long) ((Double.valueOf(excelInfo.getSecondaryUploadDate()) - 25569) * 86400 * 1000)); + String secondaryUploadDate = DateUtil.formatDate(javaDate); + String[] split = secondaryUploadDate.split("-"); + if (split.length != 3) { + checkWord.add("车架号" + excelInfo.getVinNo() + "导入的二次上传日期填写不正确,格式yyyy-MM-dd"); + break; + } else if (!isFourDigitNumber(split[0]) || !isTwoDigitNumber(split[1]) || !isTwoDigitNumber(split[2])) { + checkWord.add("车架号" + excelInfo.getVinNo() + "导入的二次上传日期填写不正确,格式yyyy-MM-dd"); + break; + } + } + if (StringUtils.isBlank(excelInfo.getSecondaryUploadMoney())) { + checkWord.add("二次上传金额不能为空"); + break; + } + if (StringUtils.isNotBlank(excelInfo.getSecondaryUploadMoney())) { + String secondaryUploadMoney = excelInfo.getSecondaryUploadMoney(); + Pattern pattern = Pattern.compile("^\\d+(.\\d{1,2})?$"); + boolean matches = pattern.matcher(secondaryUploadMoney).matches(); + if (!matches) { + checkWord.add("二次上传金额必须为数字"); + break; + } + } + if (StringUtils.isBlank(excelInfo.getMoney())) { + checkWord.add("费用不能为空"); + break; + } + if (StringUtils.isNotBlank(excelInfo.getMoney())) { + String money = excelInfo.getMoney(); + Pattern pattern = Pattern.compile("^\\d+(.\\d{1,2})?$"); + boolean matches = pattern.matcher(money).matches(); + if (!matches) { + checkWord.add("费用必须为数字"); + break; + } + } + if (StringUtils.isBlank(excelInfo.getAdjustmentRemarks())) { + checkWord.add("调整说明不能为空"); + break; + } + } + } + StringBuffer sbcheck1 = new StringBuffer(); + if (!checkWord.isEmpty()) { + for (String s : checkWord) { + if (StringUtils.isBlank(s)) { + continue; + } + sbcheck1.append(s).append(";"); + } + } + if (sbcheck1.length() > 0) { + sbcheck1.delete(sbcheck1.length() - 1, sbcheck1.length()); + importReturn.setCheckInfo(sbcheck1.toString()); + importReturn.setInfos(new ArrayList<>()); + return importReturn; + } + importReturn.setInfos(importVoList); + return importReturn; + } + + public void updateAdjustmentState(Integer adjustmentState, String sid) { + baseMapper.updateAdjustmentState(adjustmentState,sid); + } } \ No newline at end of file diff --git a/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehrebatecheckapply/ScmVehrebateCheckapplyService.java b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehrebatecheckapply/ScmVehrebateCheckapplyService.java index 88af75c5f8..fe12ea1346 100644 --- a/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehrebatecheckapply/ScmVehrebateCheckapplyService.java +++ b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehrebatecheckapply/ScmVehrebateCheckapplyService.java @@ -49,6 +49,8 @@ import com.yxt.anrui.scm.api.scmvehrebatecheckapply.flow.SubmitScmVehRebateCheck import com.yxt.anrui.scm.api.scmvehrebatecheckapplydetail.ScmVehrebateCheckapplydetail; import com.yxt.anrui.scm.api.scmvehrebatecheckapplydetail.ScmVehrebateCheckapplydetailDetailsVo; import com.yxt.anrui.scm.api.scmvehrebatecheckapplydetail.ScmVehrebateCheckapplydetailDto; +import com.yxt.anrui.scm.api.scmvehrebatecheckapplydetail.ScmVehrebateCheckapplydetailVo; +import com.yxt.anrui.scm.biz.scmvehrebate.ScmVehRebateService; import com.yxt.anrui.scm.biz.scmvehrebatecheckapplydetail.ScmVehrebateCheckapplydetailService; import com.yxt.common.core.result.ResultBean; import org.apache.commons.lang3.StringUtils; @@ -87,6 +89,8 @@ public class ScmVehrebateCheckapplyService extends MybatisBaseService scmVehrebateCheckapplydetailVos = scmVehrebateCheckapplydetailService.selByMainSid(dto.getSid()); if (r == 1) { ResultBean voResultBean = flowFeign.startProcess(bv); UpdateFlowFieldVo ufVo = voResultBean.getData(); updateFlowFiled(BeanUtil.beanToMap(ufVo)); + for (ScmVehrebateCheckapplydetailVo scmVehrebateCheckapplydetailVo : scmVehrebateCheckapplydetailVos) { + scmVehRebateService.updateAdjustmentState(2,scmVehrebateCheckapplydetailVo.getVehRebateSid()); + } return voResultBean; } if (r == 2) { @@ -379,6 +388,9 @@ public class ScmVehrebateCheckapplyService extends MybatisBaseService scmVehrebateCheckapplydetailVos = scmVehrebateCheckapplydetailService.selByMainSid(bv.getBusinessSid()); + for (ScmVehrebateCheckapplydetailVo scmVehrebateCheckapplydetailVo : scmVehrebateCheckapplydetailVos) { + scmVehRebateService.updateAdjustmentState(3,scmVehrebateCheckapplydetailVo.getVehRebateSid()); + } } return rb.success().setData(resultBean.getData()); } else { @@ -491,17 +507,38 @@ public class ScmVehrebateCheckapplyService extends MybatisBaseService scmVehrebateCheckapplydetailVos = scmVehrebateCheckapplydetailService.selByMainSid(query.getBusinessSid()); if (StringUtils.isNotBlank(businessTaskId)) { - if (businessTaskId.equals(query.getTaskId())) { + if (query.getUserSid().equals(scmVehrebateCheckapply.getCreateBySid())) { com.yxt.anrui.flowable.api.flowtask.FlowTaskVo flowTaskVo = new com.yxt.anrui.flowable.api.flowtask.FlowTaskVo(); BeanUtil.copyProperties(query, flowTaskVo); ResultBean resultBean = flowableFeign.breakProcess(flowTaskVo); if (!resultBean.getSuccess()) { return rb.setMsg(resultBean.getMsg()); } - updateFlowFiled(BeanUtil.beanToMap(resultBean.getData())); + Map map = BeanUtil.beanToMap(resultBean.getData()); + updateFlowFiled(map); + for (ScmVehrebateCheckapplydetailVo scmVehrebateCheckapplydetailVo : scmVehrebateCheckapplydetailVos) { + scmVehRebateService.updateAdjustmentState(1,scmVehrebateCheckapplydetailVo.getVehRebateSid()); + } return rb.success().setData(resultBean.getData()); + } else { + if (businessTaskId.equals(query.getTaskId())) { + com.yxt.anrui.flowable.api.flowtask.FlowTaskVo flowTaskVo = new com.yxt.anrui.flowable.api.flowtask.FlowTaskVo(); + BeanUtil.copyProperties(query, flowTaskVo); + ResultBean resultBean = flowableFeign.breakProcess(flowTaskVo); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + Map map = BeanUtil.beanToMap(resultBean.getData()); + updateFlowFiled(map); + for (ScmVehrebateCheckapplydetailVo scmVehrebateCheckapplydetailVo : scmVehrebateCheckapplydetailVos) { + scmVehRebateService.updateAdjustmentState(1,scmVehrebateCheckapplydetailVo.getVehRebateSid()); + } + return rb.success().setData(resultBean.getData()); + } } + } return rb.setMsg("操作失败!提交的数据不一致!"); } diff --git a/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehrebatecheckapplydetail/ScmVehrebateCheckapplydetailMapper.java b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehrebatecheckapplydetail/ScmVehrebateCheckapplydetailMapper.java index ca997e45af..f83d4247e3 100644 --- a/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehrebatecheckapplydetail/ScmVehrebateCheckapplydetailMapper.java +++ b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehrebatecheckapplydetail/ScmVehrebateCheckapplydetailMapper.java @@ -71,4 +71,7 @@ public interface ScmVehrebateCheckapplydetailMapper extends BaseMapper fetchWhenDetailsVoBySid(String sid); List fetchLastDetailsVoBySid(String sid); + + @Select("select * from scm_vehrebate_checkapplydetail where mainSid = #{sid}") + List selByMainSid(String mainSid); } \ No newline at end of file diff --git a/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehrebatecheckapplydetail/ScmVehrebateCheckapplydetailService.java b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehrebatecheckapplydetail/ScmVehrebateCheckapplydetailService.java index 9fed7b812a..b56ccbf1ae 100644 --- a/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehrebatecheckapplydetail/ScmVehrebateCheckapplydetailService.java +++ b/anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehrebatecheckapplydetail/ScmVehrebateCheckapplydetailService.java @@ -112,4 +112,8 @@ public class ScmVehrebateCheckapplydetailService extends MybatisBaseService fetchLastDetailsVoBySid(String sid) { return baseMapper.fetchLastDetailsVoBySid(sid); } + + public List selByMainSid(String mainSid) { + return baseMapper.selByMainSid(mainSid); + } } \ No newline at end of file diff --git a/anrui-scm/anrui-scm-ui/src/api/bikerebate/bicyclerebatecheck.js b/anrui-scm/anrui-scm-ui/src/api/bikerebate/bicyclerebatecheck.js index 268fddfd68..8d5e15cd84 100644 --- a/anrui-scm/anrui-scm-ui/src/api/bikerebate/bicyclerebatecheck.js +++ b/anrui-scm/anrui-scm-ui/src/api/bikerebate/bicyclerebatecheck.js @@ -10,6 +10,26 @@ export default { headers: { 'Content-Type': 'application/json' } }) }, + // 一次导出 + excelListOne: function(data) { + return request({ + url: '/scm/v1/scmvehrebate/excelListOne', + method: 'post', + data: data, + responseType: 'blob', // 表明返回服务器返回的数据类型 + headers: { 'Content-Type': 'application/json' } + }) + }, + // 二次导出 + excelListTwo: function(data) { + return request({ + url: '/scm/v1/scmvehrebate/excelListTwo', + method: 'post', + data: data, + responseType: 'blob', // 表明返回服务器返回的数据类型 + headers: { 'Content-Type': 'application/json' } + }) + }, // 单车返利核对(待核对)列表保存修改记录 updateDate: function(data) { return request({ diff --git a/anrui-scm/anrui-scm-ui/src/views/bikerebate/bicyclerebatecheck/bicyclerebatetobechecked.vue b/anrui-scm/anrui-scm-ui/src/views/bikerebate/bicyclerebatecheck/bicyclerebatetobechecked.vue index 1934a13c6e..4015ec0c19 100644 --- a/anrui-scm/anrui-scm-ui/src/views/bikerebate/bicyclerebatecheck/bicyclerebatetobechecked.vue +++ b/anrui-scm/anrui-scm-ui/src/views/bikerebate/bicyclerebatecheck/bicyclerebatetobechecked.vue @@ -48,10 +48,10 @@
单车返利待核对列表
- 一次导出 - 一次导入 - 二次导出 - 二次导入 + 一次导出 + 一次导入 + 二次导出 + 二次导入
@@ -274,6 +274,41 @@
+ + + +
+ + 选取文件 + 上传 + +
+
+

文件上传结果

+ +
{{ uploadResultMesssage }}
+
+
+
+ +
@@ -378,6 +413,18 @@ export default { secondRebate: '', adjustmentMoney: '', cost: '' + }, + dialogFileVisible: false, + updateAction: '', + fileList: [], + uploadResultMesssage: '', + uploadData: { + sid: '', + userSid: '', + orgPath: '' + }, + headers: { + token: window.sessionStorage.getItem('token') } } }, @@ -422,9 +469,6 @@ export default { case 'toAdd': this.toAdd() break - case 'doImport': - this.doImport() - break case 'doClose': this.doClose() break @@ -510,8 +554,8 @@ export default { }, isAdjustmentInput(row) { let money = '0' - // 上传金额 - 费用 - 待确定金额 - 预提返利 - money = parseFloat(row.uploadMoney !== '' ? row.uploadMoney : 0) - parseFloat(row.money !== '' ? row.money : 0) - parseFloat(row.stayDetermineMoney !== '' ? row.stayDetermineMoney : 0) - parseFloat(row.estimateRebate !== '' ? row.estimateRebate : 0) + // 上传金额(一次上传金额 + 二次上传金额) - 费用 - 待确定金额 - 预提返利 + money = parseFloat(row.uploadMoney !== '' ? row.uploadMoney : 0) + parseFloat(row.secondaryUploadMoney !== '' ? row.secondaryUploadMoney : 0) - parseFloat(row.money !== '' ? row.money : 0) - parseFloat(row.stayDetermineMoney !== '' ? row.stayDetermineMoney : 0) - parseFloat(row.estimateRebate !== '' ? row.estimateRebate : 0) if (row.stayDetermineMoney === '0') { if (parseFloat(money) > 0) { row.isAdjustment = '是' @@ -536,7 +580,7 @@ export default { }, isAdjustmentChange(val, row) { if (val === '是') { - row.adjustmentMoney = parseFloat(row.uploadMoney !== '' ? row.uploadMoney : 0) - parseFloat(row.money !== '' ? row.money : 0) - parseFloat(row.stayDetermineMoney !== '' ? row.stayDetermineMoney : 0) - parseFloat(row.estimateRebate !== '' ? row.estimateRebate : 0) + row.adjustmentMoney = parseFloat(row.uploadMoney !== '' ? row.uploadMoney : 0) + parseFloat(row.secondaryUploadMoney !== '' ? row.secondaryUploadMoney : 0) - parseFloat(row.money !== '' ? row.money : 0) - parseFloat(row.stayDetermineMoney !== '' ? row.stayDetermineMoney : 0) - parseFloat(row.estimateRebate !== '' ? row.estimateRebate : 0) } else if (val === '否') { row.adjustmentMoney = '0' row.adjustmentRemarks = '' @@ -657,6 +701,96 @@ export default { doClose() { this.$store.dispatch('tagsView/delView', this.$route) this.$router.go(-1) + }, + exportByFirst() { + const loading = this.$loading({ + lock: true, + text: 'Loading', + spinner: 'el-icon-loading', + background: 'rgba(0, 0, 0, 0.7)' + }) + req.excelListOne(this.listQuery.params).then((resp) => { + loading.close() + const blob = new Blob([resp], { + type: 'application/vnd.ms-excel' + }) + const fileName = '一次导入模版' + '.xls' + const elink = document.createElement('a') + elink.download = fileName + elink.style.display = 'nonde' + elink.href = URL.createObjectURL(blob) + document.body.appendChild(elink) + elink.click() + URL.revokeObjectURL(elink.href) + document.body.removeChild(elink) + }).catch(() => { + loading.close() + }) + }, + importByFirst() { + this.dialogFileVisible = true + this.updateAction = process.env.VUE_APP_BASE_API + '/scm/v1/scmvehrebate/getExcelOneInfo' + this.fileList = [] + this.uploadResultMesssage = '' + }, + exportBySecond() { + const loading = this.$loading({ + lock: true, + text: 'Loading', + spinner: 'el-icon-loading', + background: 'rgba(0, 0, 0, 0.7)' + }) + req.excelListTwo(this.listQuery.params).then((resp) => { + loading.close() + const blob = new Blob([resp], { + type: 'application/vnd.ms-excel' + }) + const fileName = '二次导入模版' + '.xls' + const elink = document.createElement('a') + elink.download = fileName + elink.style.display = 'nonde' + elink.href = URL.createObjectURL(blob) + document.body.appendChild(elink) + elink.click() + URL.revokeObjectURL(elink.href) + document.body.removeChild(elink) + }).catch(() => { + loading.close() + }) + }, + importBySecond() { + this.dialogFileVisible = true + this.updateAction = process.env.VUE_APP_BASE_API + '/scm/v1/scmvehrebate/getExcelTwoInfo' + this.fileList = [] + this.uploadResultMesssage = '' + }, + handleRemove() { + this.uploadResultMesssage = '' + }, + submitUpload() { + this.uploadData.userSid = window.sessionStorage.getItem('userSid') + this.uploadData.orgPath = window.sessionStorage.getItem('defaultOrgPath') + this.$refs.upload.submit() + }, + handleSuccess(resp, file, fileList) { + const _this = this + if (resp.success) { + _this.uploadResultMesssage = resp.msg + } else { + _this.uploadResultMesssage = resp.msg + } + }, + handleConfirm() { + if (this.uploadResultMesssage === '') { + this.$message({ showClose: true, type: 'error', message: '请先上传单车返利模版' }) + return + } else { + this.dialogFileVisible = false + this.updateAction = '' + this.uploadData.userSid = '' + this.uploadData.orgPath = '' + this.getList() + } } } } diff --git a/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/wms/inventoryallocatebill/AppInventoryAllocateBillDetailsVoNew.java b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/wms/inventoryallocatebill/AppInventoryAllocateBillDetailsVoNew.java index ff6880a2df..8aa1c1d9e4 100644 --- a/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/wms/inventoryallocatebill/AppInventoryAllocateBillDetailsVoNew.java +++ b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/wms/inventoryallocatebill/AppInventoryAllocateBillDetailsVoNew.java @@ -54,56 +54,27 @@ public class AppInventoryAllocateBillDetailsVoNew implements Vo { private String sid; - @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") - @ApiModelProperty("申请日期") - private Date createTime; - @ApiModelProperty("备注") - private String remarks; - @ApiModelProperty("制单人sid") - private String createBySid; @ApiModelProperty("制单人姓名") private String createByName; - @ApiModelProperty("单据编号") - private String billNo; - @ApiModelProperty("申请部门sid") - private String deptSid; @ApiModelProperty("申请部门名称") private String deptName; - @ApiModelProperty("调出站sid") - private String outPlatSid; + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + @ApiModelProperty("申请日期") + private Date createTime; @ApiModelProperty("调出站名称") private String outPlatName; - @ApiModelProperty("调入站sid") - private String inPlatSid; @ApiModelProperty("调入站名称") private String inPlatName; - @ApiModelProperty("调入分公司sid") - private String inOrgSid; - @ApiModelProperty("调入分公司sid") - private String inOrgName; - @ApiModelProperty("确认人sid") - private String confirmSid; @ApiModelProperty("确认人姓名") private String confirmName; - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") - @ApiModelProperty("完成时间") - private Date finishTime; - @ApiModelProperty("创建组织") - private String createOrgName; - @ApiModelProperty("创建组织sid") - private String createOrgSid; - @ApiModelProperty("流程定义的id") - private String procDefId; // 流程定义的id - @ApiModelProperty("环节定义的sid") - private String nodeId; // 环节定义的sid - @ApiModelProperty("流程实例的sid") - private String procInsId; // 流程实例的sid - @ApiModelProperty("流程状态") - private String nodeState; // 流程状态 - @ApiModelProperty("任务id") - private String taskId; // 任务id - @ApiModelProperty("调拨等级(1一级站内,2分公司内,3集团内)") - private Integer grade; + @ApiModelProperty("备注") + private String remarks; @ApiModelProperty("调拨单商品明细") private List wmsInventoryAllocateBillDetailNewList; + @ApiModelProperty("合计") + private String total; + @ApiModelProperty("流程实例的sid") + private String procInsId; + @ApiModelProperty("任务id") + private String taskId; } \ No newline at end of file diff --git a/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/wms/inventoryallocatebill/AppInventoryAllocatebillDetailDetailsVoNew.java b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/wms/inventoryallocatebill/AppInventoryAllocatebillDetailDetailsVoNew.java index d8e41b8efb..28685d7bd7 100644 --- a/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/wms/inventoryallocatebill/AppInventoryAllocatebillDetailDetailsVoNew.java +++ b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/wms/inventoryallocatebill/AppInventoryAllocatebillDetailDetailsVoNew.java @@ -50,48 +50,26 @@ import java.math.BigDecimal; @ApiModel(value = "(调拨单-明细) 视图数据详情", description = "(调拨单-明细) 视图数据详情") public class AppInventoryAllocatebillDetailDetailsVoNew implements Vo { - private String sid; - - @ApiModelProperty("主表sid") - private String billSid; - @ApiModelProperty("商品库存sid") - private String inventorySid; @ApiModelProperty("商品ID") private String goodsID; - @ApiModelProperty("商品spuSid") - private String goodsSpuSid; @ApiModelProperty("商品spu名称") private String goodsSpuName; - @ApiModelProperty("商品Skusid") - private String goodsSkuSid; - @ApiModelProperty("商品sku名称") - private String goodsSkuTitle; @ApiModelProperty("图号") private String goodsSkuCode; @ApiModelProperty("规格") private String goodsSkuOwnSpec; - @ApiModelProperty("厂家sid") - private String manufacturerSid; - @ApiModelProperty("厂家名称") - private String manufacturerName; @ApiModelProperty("单位") private String unit; - @ApiModelProperty("仓库sid") - private String warehouseSid; @ApiModelProperty("仓库名称") private String warehouseName; - @ApiModelProperty("库区sid") - private String warehouseAreaSid; @ApiModelProperty("库区名称") private String warehouseArea; - @ApiModelProperty("库位sid") - private String warehouseRackSid; @ApiModelProperty("库位编码") private String warehouseRackCode; + @ApiModelProperty("仓库-库区-库位") + private String warehouseInfo; @ApiModelProperty("库存数量") private BigDecimal stockCount; - @ApiModelProperty("成本价") - private BigDecimal taxPrice; @ApiModelProperty("加价比例(%)") private BigDecimal markUpRatio; @ApiModelProperty("调拔单价") diff --git a/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/wms/inventoryallocatebill/AppInventoryAllocatebillService.java b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/wms/inventoryallocatebill/AppInventoryAllocatebillService.java index e76a9f3ee5..9d5ab765e5 100644 --- a/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/wms/inventoryallocatebill/AppInventoryAllocatebillService.java +++ b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/wms/inventoryallocatebill/AppInventoryAllocatebillService.java @@ -30,6 +30,7 @@ import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrg; import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign; import com.yxt.anrui.portal.api.sysuser.SysUserFeign; import com.yxt.anrui.portal.api.sysuser.SysUserVo; +import com.yxt.anrui.terminal.api.wms.inventoryallocatebill.AppInventoryAllocatebillDetailDetailsVoNew; import com.yxt.anrui.terminal.api.wms.inventoryallocatebill.flowable.AppDelegateQuery; import com.yxt.anrui.terminal.api.wms.inventoryallocatebill.flowable.AppFlowDto; import com.yxt.anrui.terminal.api.wms.inventoryallocatebill.flowable.AppFlowQuery; @@ -43,6 +44,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -63,6 +65,13 @@ public class AppInventoryAllocatebillService { AppInventoryAllocateBillDetailsVoNew appInventoryAllocateBillDetailsVoNew = new AppInventoryAllocateBillDetailsVoNew(); BeanUtil.copyProperties(data,appInventoryAllocateBillDetailsVoNew); appInventoryAllocateBillDetailsVoNew.setProcInsId(data.getProcInstId()); + List wmsInventoryAllocateBillDetailNewList = appInventoryAllocateBillDetailsVoNew.getWmsInventoryAllocateBillDetailNewList(); + BigDecimal total = new BigDecimal("0"); + for (AppInventoryAllocatebillDetailDetailsVoNew appInventoryAllocatebillDetailDetailsVoNew : wmsInventoryAllocateBillDetailNewList) { + appInventoryAllocatebillDetailDetailsVoNew.setWarehouseInfo(appInventoryAllocatebillDetailDetailsVoNew.getWarehouseName() + "-" + appInventoryAllocatebillDetailDetailsVoNew.getWarehouseArea() + "-" + appInventoryAllocatebillDetailDetailsVoNew.getWarehouseRackCode()); + total = total.add(appInventoryAllocatebillDetailDetailsVoNew.getAmount()); + } + appInventoryAllocateBillDetailsVoNew.setTotal(total.toString()); return rb.success().setData(appInventoryAllocateBillDetailsVoNew); }