Commit dca6c5d4 authored by tangwei's avatar tangwei

发货管理功能开发

parent d67c2bba
......@@ -169,12 +169,12 @@
<artifactId>hutool-all</artifactId>
<version>5.7.22</version>
</dependency>
<dependency>
<groupId>com.yeejoin</groupId>
<artifactId>amos-component-influxdb</artifactId>
<version>1.8.5-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<!-- <dependency>-->
<!-- <groupId>com.yeejoin</groupId>-->
<!-- <artifactId>amos-component-influxdb</artifactId>-->
<!-- <version>1.8.5-SNAPSHOT</version>-->
<!-- <scope>compile</scope>-->
<!-- </dependency>-->
<dependency>
<groupId>com.taosdata.jdbc</groupId>
<artifactId>taos-jdbcdriver</artifactId>
......
......@@ -9,7 +9,6 @@ import com.yeejoin.amos.api.householdapi.face.model.HouseholdPvApiDto;
import com.yeejoin.amos.api.householdapi.face.orm.houseapi.entity.houseapi.HouseholdPvProducerInfo;
import com.yeejoin.amos.api.householdapi.face.service.impl.HouseholdPvApiServiceImpl;
import com.yeejoin.amos.api.householdapi.face.service.impl.HouseholdPvProducerInfoServiceImpl;
import com.yeejoin.amos.component.influxdb.InfluxDbConnection;
import com.yeejoin.amos.openapi.enums.PVProducerInfoEnum;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -23,8 +22,8 @@ import java.util.*;
@Slf4j
public class HouseholdPvUtils {
private final static String API_REDIS_PREFIX = "HOUSEHOLD_API_CACHE_";
@Autowired
InfluxDbConnection influxDbConnection;
// @Autowired
// InfluxDbConnection influxDbConnection;
@Autowired
private HouseholdPvProducerInfoServiceImpl householdPvProducerInfoServiceImpl;
@Autowired
......
......@@ -11,7 +11,7 @@ spring.db1.datasource.password=Yeejoin@2020
spring.db1.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
## db2-sync_data
spring.db2.datasource.type: com.alibaba.druid.pool.DruidDataSource
spring.db2.datasource.url=jdbc:mysql://172.16.10.220:3306/amos_project?allowMultiQueries=true&serverTimezone=GMT%2B8&characterEncoding=utf8
spring.db2.datasource.url=jdbc:mysql://47.92.234.253:3306/amos_project_2023?allowMultiQueries=true&serverTimezone=GMT%2B8&characterEncoding=utf8
spring.db2.datasource.username=root
spring.db2.datasource.password=Yeejoin@2020
spring.db2.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
......@@ -58,14 +58,14 @@ biz.lxyd.lift.url=http://39.106.181.149:8088/elevatorapi
# influxDB
spring.influx.url=http://139.9.173.44:8086
spring.influx.password=Yeejoin@2020
spring.influx.user=root
spring.influx.database=station_platform
spring.influx.retention_policy=default
spring.influx.retention_policy_time=30d
spring.influx.actions=10000
spring.influx.bufferLimit=20000
#spring.influx.url=http://139.9.173.44:8086
#spring.influx.password=Yeejoin@2020
#spring.influx.user=root
#spring.influx.database=station_platform
#spring.influx.retention_policy=default
#spring.influx.retention_policy_time=30d
#spring.influx.actions=10000
#spring.influx.bufferLimit=20000
# ??????????
......
package com.yeejoin.amos.boot.module.hygf.api.Enum;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @description:
* @author: tw
* @createDate: 2023/12/13
*/
@Getter
@AllArgsConstructor
public enum ArrivalStateeEnum {
待收货("待收货", "待收货"),
已收货("已收货", "已收货"),
已作废("已作废", "已作废");
/**
* 名称,描述
*/
private String name;
/**
* 编码
*/
private String code;
public static ContractStatusEnum getNodeByCode(String code) {
ContractStatusEnum dealerReviewEnum = null;
for(ContractStatusEnum type: ContractStatusEnum.values()) {
if (type.getCode().equals(code)) {
dealerReviewEnum = type;
break;
}
}
return dealerReviewEnum;
}
}
......@@ -21,6 +21,8 @@ public enum CodeEnum {
勘察("KC", "KC"),
货单("HD", "HD"),
档案("DA", "DA");
/**
......
package com.yeejoin.amos.boot.module.hygf.api.Enum;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @description:
* @author: tw
* @createDate: 2023/12/13
*/
@Getter
@AllArgsConstructor
public enum DeliveryStateeEnum {
待发货("待发货", "待发货"),
已发货("已发货", "已发货"),
已作废("已作废", "已作废");
/**
* 名称,描述
*/
private String name;
/**
* 编码
*/
private String code;
public static ContractStatusEnum getNodeByCode(String code) {
ContractStatusEnum dealerReviewEnum = null;
for(ContractStatusEnum type: ContractStatusEnum.values()) {
if (type.getCode().equals(code)) {
dealerReviewEnum = type;
break;
}
}
return dealerReviewEnum;
}
}
package com.yeejoin.amos.boot.module.hygf.api.Enum;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @description:
* @author: tw
* @createDate: 2023/12/13
*/
@Getter
@AllArgsConstructor
public enum PreparationEnum {
创建发货单("创建发货单", "创建发货单"),
确认发货("确认发货", "确认发货"),
确认收货("确认收货", "确认收货"),
作废发货单("作废发货单", "作废发货单");
/**
* 名称,描述
*/
private String name;
/**
* 编码
*/
private String code;
public static ContractStatusEnum getNodeByCode(String code) {
ContractStatusEnum dealerReviewEnum = null;
for(ContractStatusEnum type: ContractStatusEnum.values()) {
if (type.getCode().equals(code)) {
dealerReviewEnum = type;
break;
}
}
return dealerReviewEnum;
}
}
......@@ -28,101 +28,98 @@ public class PreparationMoneyDto extends BaseDto {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = " 单号")
/**
* 发货单号
*/
private String oddNumbers;
@ApiModelProperty(value = " 收货地址")
private String deliveryAddress;
@ApiModelProperty(value = "详细地址")
private String detailAddress;
@ApiModelProperty(value = " 下单人")
/**
* 下单人
*/
private String orderUser;
@ApiModelProperty(value = "下单时间")
@JsonFormat (pattern="yyyy-MM-dd")
/**
* 下单时间
*/
private Date orderTime;
@ApiModelProperty(value = "经销商id")
private String dealerId;
@ApiModelProperty(value = "经销商名称")
private String dealerName;
@ApiModelProperty(value = " 发货地址")
@TableField (typeHandler = FastjsonTypeHandler.class)
private List<String> sendAddress;
@ApiModelProperty(value = " 业主类型")
private String ownerType;
@ApiModelProperty(value = "业务员")
private String salesman;
@ApiModelProperty(value = "预估重量")
/**
* 经销商单位名称
*/
private String amosUnitName;
/**
* 经销商单位id
*/
private Long amosUnitId;
/**
* 经销商orgcode
*/
private String amosUnitOrgCode;
/**
* 所属区域公司id
*/
private Long regionalCompaniesSeq;
/**
* 所属区域公司名称
*/
private String regionalCompaniesName;
/**
* 所属区域公司code
*/
private String regionalCompaniesCode;
/**
* 发货人
*/
private String shipper;
/**
* 预估重量
*/
private Double estimatedWeight;
@ApiModelProperty(value = "备注")
/**
* 备注
*/
private String notes;
@ApiModelProperty(value = "收货人")
private String consignee;
@ApiModelProperty(value = "收货人手机号")
private String consigneePhone;
@ApiModelProperty(value = "收货人地址")
@TableField (typeHandler = FastjsonTypeHandler.class)
private List<String> consigneeAddress;
@ApiModelProperty(value = "收货人详细地址")
private String consigneeDetailAddress;
@ApiModelProperty(value = "发货单")
@TableField(typeHandler = FastjsonTypeHandler.class)
private List<Object> invoice;
@ApiModelProperty(value = "收货单")
@TableField(typeHandler = FastjsonTypeHandler.class)
private List<Object> receipt;
@ApiModelProperty(value = "订单状态0未完成1已完成2作废")
private String documentState;
@ApiModelProperty(value = "发货状态 0 未发货1已发货")
private String shipmentStatus;
@ApiModelProperty(value = "到货状态0未到货1已到货")
private String receivingStatus;
@ApiModelProperty(value = "清单价格")
private Double inventoryPrice;
@ApiModelProperty(value = "折扣")
private Double discount;
@ApiModelProperty(value = "促销")
private Double promotion;
/**
* 发货状态0待发货1已发货成2已作废
*/
private String deliveryState;
/**
* 到货货状态0待发货1已发货成2已作废
*/
private String arrivalState;
/**
* 发货时间
*/
private Date deliveryTime;
/**
* 到货时间
*/
private Date arrivalTime;
@ApiModelProperty(value = "合同价格")
private Double contractPrice;
private String consignee; //收货人
@ApiModelProperty(value = "总价")
private Double totalPrice;
private String phone; //收货人电话
@ApiModelProperty(value = "到货时间")
@JsonFormat (pattern="yyyy-MM-dd")
private Date deliveryTime;
private String consigneeRegion; //收货区域
@ApiModelProperty(value = "发货电站列表")
@NotEmpty(message = "请选择发货电站")
private List<PeasantHouseholdDto> powerStations;
private List<Integer> consigneeRegionCode; //收货区域code
@ApiModelProperty(value = "BOM清单")
private List<DocumentBomDto> documentBoms;
private String address; //收货详细地址
//发货单
private List<Object> deliveryFile; //发货单
@ApiModelProperty(value = "单据追踪")
private List<PreparationMoneyLogDto> preparationMoneyLogs;
private List<Object> arrivalFile; //收货单
}
package com.yeejoin.amos.boot.module.hygf.api.dto;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.yeejoin.amos.boot.biz.common.dto.BaseDto;
import io.swagger.annotations.ApiModel;
......@@ -21,9 +22,14 @@ public class PreparationMoneyLogDto extends BaseDto {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "货单id")
private Long preparationMoneyId;
private Long preparationMoneyId;//发货单id
@ApiModelProperty(value = "货单id")
private String operationContent;
private String operationContent;//执行节点
private String executor;//执行人
private String executionTime;//执行时间
private String executionRole;//执行角色
}
......@@ -4,6 +4,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.module.hygf.api.entity.PreparationMoney;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
* @description:
* @author: tw
......@@ -13,17 +16,16 @@ import lombok.Data;
public class PreparationPageDto extends Page<PreparationMoney> {
String orderBy;
Boolean isASC;
//时间开始
String startDate;
//时间结束
String endDate;
String consigneeAddress;//订单区域
String dealerId;//经销商
String consigneeRegion;//订单区域
String amosUnitId;//经销商
String amosUnitName;//经销商
String oddNumbers;//发货单号
String salesman;//业主类型
String documentState;//订单状态未完成已完成作废
String shipmentStatus;//发货状态 未发货已发货
String receivingStatus;//到货状态未到货已到货
Boolean isdocumentStatezf;
String regionalCompaniesCode;
String arrivalState;//收货
String deliveryState;//发货状态 未发货已发货
List<String> deliveryTime;
}
......@@ -26,22 +26,12 @@ public class PreparationMoney extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* 单号
* 发货单号
*/
@TableField("odd_numbers")
private String oddNumbers;
/**
* 收货地址
*/
@TableField("delivery_address")
private String deliveryAddress;
/**
* 详细地址
*/
@TableField("detail_address")
private String detailAddress;
/**
* 下单人
......@@ -55,143 +45,108 @@ public class PreparationMoney extends BaseEntity {
@TableField("order_time")
private Date orderTime;
/**
* 经销商id
* 经销商单位名称
*/
@TableField("dealer_id")
private String dealerId;
@TableField("amos_unit_name")
private String amosUnitName;
/**
* 经销商单位id
*/
@TableField("amos_unit_id")
private Long amosUnitId;
/**
* 经销商orgcode
*/
@TableField("amos_unit_org_code")
private String amosUnitOrgCode;
/**
* 经销商名称
* 所属区域公司id
*/
@TableField("dealer_name")
private String dealerName;
@TableField("regional_companies_seq")
private Long regionalCompaniesSeq;
/**
* 发货地址
* 所属区域公司名称
*/
@TableField(value = "send_address",typeHandler = FastjsonTypeHandler.class,updateStrategy = FieldStrategy.IGNORED)
private List<Object> sendAddress;
@TableField("regional_companies_name")
private String regionalCompaniesName;
/**
* 业主类型
* 所属区域公司code
*/
@TableField("owner_type")
private String ownerType;
@TableField("regional_companies_code")
private String regionalCompaniesCode;
/**
* 业务员
* 发货人
*/
@TableField("salesman")
private String salesman;
@TableField("shipper")
private String shipper;
/**
* 预估重量
*/
@TableField("estimated_weight")
@TableField("estimated_weight")
private Double estimatedWeight;
/**
* 备注
*/
@TableField("notes")
@TableField("notes")
private String notes;
/**
* 收货人
* 发货状态0待发货1已发货成2已作废
*/
@TableField("consignee")
private String consignee;
@TableField("delivery_state")
private String deliveryState;
/**
* 收货人手机号
* 到货货状态 待收货1已收货成2已作废
*/
@TableField("consignee_phone")
private String consigneePhone;
@TableField("arrival_state")
private String arrivalState;
/**
* 收货人地址
* 发货时间
*/
@TableField(value = "consignee_address",typeHandler = FastjsonTypeHandler.class)
private List<Object> consigneeAddress;
/**
* 收货人详细地址
*/
@TableField("consignee_detail_address")
private String consigneeDetailAddress;
@TableField("delivery_time")
private Date deliveryTime;
/**
* 发货单
* 到货时间
*/
@TableField("arrival_time")
private Date arrivalTime;
@TableField(value = "invoice",typeHandler = FastjsonTypeHandler.class)
private List<Object> invoice;
@TableField("consignee")
private String consignee; //收货人
/**
* 收货单
*/
@TableField(value = "receipt",typeHandler = FastjsonTypeHandler.class,updateStrategy = FieldStrategy.IGNORED)
private List<Object> receipt;
@TableField("phone")
private String phone; //收货人电话
/**
* 订单状态0未完成1已完成2已作废
*/
@TableField("document_state")
private String documentState;
@TableField("consignee_region")
private String consigneeRegion; //收货区域
/**
* 发货状态 0 未发货1已发货
*/
@TableField("shipment_status")
private String shipmentStatus;
@TableField(value = "consignee_region_code",typeHandler = FastjsonTypeHandler.class)
private List<Integer> consigneeRegionCode; //收货区域code
/**
* 到货状态0未到货1已到货
*/
@TableField("receiving_status")
private String receivingStatus;
@TableField("address")
private String address; //收货详细地址
/**
* 清单价格
*/
@TableField("inventory_price")
private Double inventoryPrice;
@TableField(value = "delivery_file", typeHandler = FastjsonTypeHandler.class)
private List<Object> deliveryFile; //发货单
/**
* 折扣
*/
@TableField("discount")
private Double discount;
@TableField(value = "arrival_file", typeHandler = FastjsonTypeHandler.class)
private List<Object> arrivalFile; //收货单
/**
* 促销
*/
@TableField("promotion")
private Double promotion;
@TableField(value = "peasant_household_id", typeHandler = FastjsonTypeHandler.class)
private List<Long> peasantHouseholdId; //发货单
/**
* 合同价格
*/
@TableField("contract_price")
private Double contractPrice;
/**
* 总价
*/
@TableField("total_price")
private Double totalPrice;
/**
*
* 验证 状态
* */
@TableField("validating")
private String validating;
/**
* 到货时间
*/
@TableField("delivery_time")
private Date deliveryTime;
}
......@@ -7,6 +7,8 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.Date;
/**
* 发货单日志记录
*
......@@ -22,8 +24,20 @@ public class PreparationMoneyLog extends BaseEntity {
private static final long serialVersionUID = 1L;
@TableField ("preparation_money_id")
private Long preparationMoneyId;
private Long preparationMoneyId;//发货单id
@TableField ("operation_content")
private String operationContent;
private String operationContent;//执行节点
@TableField ("executor")
private String executor;//执行人
@TableField ("execution_time")
private Date executionTime;//执行时间
@TableField ("execution_role")
private String executionRole;//执行角色
}
......@@ -72,8 +72,8 @@ public class RegionalCompanies extends BaseEntity {
@TableField(exist = false)
private String companyCode;
@TableField(exist = false)
private List<Object> children;
......
......@@ -2,6 +2,9 @@ package com.yeejoin.amos.boot.module.hygf.api.mapper;
import com.yeejoin.amos.boot.module.hygf.api.entity.PeasantHousehold;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 农户信息 Mapper 接口
......@@ -10,5 +13,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
* @date 2023-07-07
*/
public interface PeasantHouseholdMapper extends BaseMapper<PeasantHousehold> {
List<PeasantHousehold> selectPeasantHouseholdList(@Param("developerId") Long developerId,
@Param("regionalCompaniesSeq")Long regionalCompaniesSeq
);
}
......@@ -2,7 +2,11 @@ package com.yeejoin.amos.boot.module.hygf.api.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yeejoin.amos.boot.module.hygf.api.entity.PeasantHousehold;
import com.yeejoin.amos.boot.module.hygf.api.entity.PreparationMoney;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 发货单 Mapper 接口
......@@ -12,4 +16,7 @@ import com.yeejoin.amos.boot.module.hygf.api.entity.PreparationMoney;
*/
public interface PreparationMoneyMapper extends BaseMapper<PreparationMoney> {
List<PeasantHousehold> getPeasantHouseholdData(@Param("sequenceNbr") Long sequenceNbr,@Param("ownersName") String ownersName);
}
......@@ -2,6 +2,8 @@ package com.yeejoin.amos.boot.module.hygf.api.service;
import com.yeejoin.amos.boot.module.hygf.api.dto.PreparationMoneyDto;
import com.yeejoin.amos.boot.module.hygf.api.entity.PreparationMoney;
import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
/**
* 发货单接口类
......@@ -20,7 +22,7 @@ public interface IPreparationMoneyService {
* @author Provence
* @throws
*/
PreparationMoneyDto saveOrUpdateObject(PreparationMoneyDto model);
PreparationMoney saveOrUpdateObject(PreparationMoney model, AgencyUserModel agencyUserModel);
/**
* 更新发货单状态
......
......@@ -53,11 +53,11 @@ public class NumberUtil {
code= code+ address.replace("省","")
code= code+ getChineseStr(address.replace("省","")
.replace("市","")
.replace("区","")
.replace("县","")
.replace(",","");
.replace(",",""));
code= type+code+dateFormat()+getnum();
return code;
......
<?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="com.yeejoin.amos.boot.module.hygf.api.mapper.PeasantHouseholdMapper">
<select id="selectPeasantHouseholdList" resultType="com.yeejoin.amos.boot.module.hygf.api.entity.PeasantHousehold">
SELECT * FROM hygf_peasant_household LEFT JOIN hygf_household_contract ON hygf_household_contract.peasant_household_id=hygf_peasant_household.sequence_nbr where
hygf_household_contract.`status`='双方已签署'
and hygf_peasant_household.developer_id=#{developerId}
and hygf_peasant_household.regional_companies_seq=#{regionalCompaniesSeq}
and hygf_peasant_household.review=2
</select>
</mapper>
<?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="com.yeejoin.amos.boot.module.hygf.api.mapper.PreparationMoneyMapper">
<select id="getPeasantHouseholdData" resultType="com.yeejoin.amos.boot.module.hygf.api.entity.PeasantHousehold">
SELECT hygf_peasant_household.* FROM hygf_peasant_household
LEFT JOIN hygf_document_station on hygf_document_station.station_id=hygf_peasant_household.sequence_nbr
where hygf_document_station.preparation_money_id=#{sequenceNbr}
<if test="ownersName!=null and ownersName!=''">
and hygf_peasant_household.owners_name like concat(concat("%",#{ownersName}),"%")
</if>
</select>
</mapper>
......@@ -67,6 +67,8 @@
<select id="selectRegionName" resultType="com.yeejoin.amos.boot.module.hygf.api.entity.RegionalCompanies">
select
privilege_company.COMPANY_CODE companyCode,
privilege_company.COMPANY_NAME regionalCompaniesName,
privilege_company.ORG_CODE regionalCompaniesCode,
(SELECT GROUP_CONCAT(REGION_NAME) from
(SELECT T2.REGION_NAME
FROM (
......
package com.yeejoin.amos.boot.module.hygf.biz.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.pagehelper.PageInfo;
import com.yeejoin.amos.boot.module.hygf.api.Enum.DeliveryStateeEnum;
import com.yeejoin.amos.boot.module.hygf.api.Enum.PreparationEnum;
import com.yeejoin.amos.boot.module.hygf.api.dto.JpStationDto;
import com.yeejoin.amos.boot.module.hygf.api.dto.PeasantHouseholdDto;
import com.yeejoin.amos.boot.module.hygf.api.dto.PreparationPageDto;
import com.yeejoin.amos.boot.module.hygf.api.entity.PreparationMoney;
import com.yeejoin.amos.boot.module.hygf.api.entity.*;
import com.yeejoin.amos.boot.module.hygf.api.mapper.PreparationMoneyMapper;
import com.yeejoin.amos.boot.module.hygf.biz.service.impl.DesignInformationServiceImpl;
import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
import org.apache.ibatis.annotations.Param;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping;
import io.swagger.annotations.ApiOperation;
......@@ -11,8 +22,7 @@ import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RestController;
import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import java.util.Date;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
import com.yeejoin.amos.boot.module.hygf.biz.service.impl.PreparationMoneyServiceImpl;
......@@ -40,7 +50,10 @@ public class PreparationMoneyController extends BaseController {
@Autowired
PreparationMoneyServiceImpl preparationMoneyServiceImpl;
@Autowired
PreparationMoneyMapper preparationMoneyMapper;
@Autowired
DesignInformationServiceImpl designInformationService;
/**
* 新增发货单
*
......@@ -49,8 +62,9 @@ public class PreparationMoneyController extends BaseController {
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/save")
@ApiOperation(httpMethod = "POST", value = "新增发货单", notes = "新增发货单")
public ResponseModel<PreparationMoneyDto> save(@Validated @RequestBody PreparationMoneyDto model) {
model = preparationMoneyServiceImpl.saveOrUpdateObject(model);
public ResponseModel<PreparationMoney> save( @RequestBody PreparationMoney model) {
AgencyUserModel agencyUserModel= getUserInfo();
model = preparationMoneyServiceImpl.saveOrUpdateObject(model,agencyUserModel);
return ResponseHelper.buildResponse(model);
}
......@@ -64,9 +78,10 @@ public class PreparationMoneyController extends BaseController {
@PutMapping(value = "/{sequenceNbr}")
@ApiOperation(httpMethod = "PUT", value = "根据sequenceNbr更新发货单", notes = "根据sequenceNbr更新发货单")
public ResponseModel<PreparationMoneyDto> updateBySequenceNbrPreparationMoney(@RequestBody PreparationMoneyDto model,@PathVariable(value = "sequenceNbr") Long sequenceNbr) {
model.setSequenceNbr(sequenceNbr);
return ResponseHelper.buildResponse(preparationMoneyServiceImpl.saveOrUpdateObject(model));
}
// model.setSequenceNbr(sequenceNbr);
// return ResponseHelper.buildResponse(preparationMoneyServiceImpl.saveOrUpdateObject(model));
return null;
}
/**
* 根据sequenceNbr删除
......@@ -90,8 +105,11 @@ public class PreparationMoneyController extends BaseController {
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/{sequenceNbr}")
@ApiOperation(httpMethod = "GET",value = "根据sequenceNbr查询单个发货单", notes = "根据sequenceNbr查询单个发货单")
public ResponseModel<PreparationMoneyDto> selectOne(@PathVariable Long sequenceNbr) {
return ResponseHelper.buildResponse(preparationMoneyServiceImpl.queryBySeq(sequenceNbr));
public ResponseModel<PreparationMoney> selectOne(@PathVariable Long sequenceNbr) {
LambdaUpdateWrapper<PreparationMoney> qu=new LambdaUpdateWrapper<>();
qu.eq(PreparationMoney::getSequenceNbr,sequenceNbr);
PreparationMoney preparationMoney= preparationMoneyMapper.selectOne(qu);
return ResponseHelper.buildResponse(preparationMoney);
}
/**
......@@ -102,18 +120,30 @@ public class PreparationMoneyController extends BaseController {
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/page")
@ApiOperation(httpMethod = "GET",value = "发货单分页查询", notes = "发货单分页查询")
public ResponseModel<IPage<PreparationMoney>> queryForPage(PreparationPageDto preparationPageDto
@PostMapping (value = "/page")
@ApiOperation(httpMethod = "post",value = "发货单分页查询", notes = "发货单分页查询")
public ResponseModel<IPage<PreparationMoney>> queryForPage(@RequestBody PreparationPageDto preparationPageDto
) {
return ResponseHelper.buildResponse(preparationMoneyServiceImpl.queryForPreparationMoneyPage(preparationPageDto));
}
/**
* 作废
* */
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/zfPreparationMoney")
@ApiOperation(httpMethod = "GET",value = "作废发货单", notes = "作废发货单")
public ResponseModel<Boolean> zfPreparationMoney(Long sequenceNbr
) {
AgencyUserModel agencyUserModel= getUserInfo();
return ResponseHelper.buildResponse(preparationMoneyServiceImpl.zfPreparationMoney(sequenceNbr,agencyUserModel));
}
/**
* 列表全部数据查询
*
* @return
......@@ -149,7 +179,8 @@ public class PreparationMoneyController extends BaseController {
@GetMapping(value = "/detail")
@ApiOperation(httpMethod = "GET", value = "根据sequenceNbr查询单个发货单详情", notes = "根据sequenceNbr查询单个发货单详情")
public ResponseModel<PreparationMoneyDto> getObject(@RequestParam Long sequenceNbr) {
return ResponseHelper.buildResponse(preparationMoneyServiceImpl.getObjectBySequenceNbr(sequenceNbr));
//return ResponseHelper.buildResponse(preparationMoneyServiceImpl.getObjectBySequenceNbr(sequenceNbr));
return null;
}
......@@ -166,5 +197,38 @@ public class PreparationMoneyController extends BaseController {
return ResponseHelper.buildResponse(preparationMoneyServiceImpl.updatePreparationMoneyStatus(sequenceNbr, operationType));
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET",value = "列表全部数据查询", notes = "列表全部数据查询")
@GetMapping(value = "/getPeasantHouseholdData")
public ResponseModel< Page<PeasantHousehold> > getPeasantHouseholdData(
@RequestParam(required=false) Long sequenceNbr,
@RequestParam(required=false) String ownersName
) {
List<PeasantHousehold> list=preparationMoneyMapper.getPeasantHouseholdData(sequenceNbr,ownersName);
Page<PeasantHousehold> pagenew = new Page<PeasantHousehold>();
pagenew.setRecords(list);
return ResponseHelper.buildResponse(pagenew);
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET",value = "bom", notes = "bom")
@GetMapping(value = "/getDesignInformationData")
public ResponseModel< DesignInformation > getDesignInformationData(
@RequestParam(required=false) Long sequenceNbr
) {
QueryWrapper<DesignInformation> designInformationQueryWrapper = new QueryWrapper<>();
designInformationQueryWrapper.eq("peasant_household_id", sequenceNbr);
DesignInformation designInformation = designInformationService.getBaseMapper().selectOne(designInformationQueryWrapper);
return ResponseHelper.buildResponse(designInformation);
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/selectOnePreparationMoney")
@ApiOperation(httpMethod = "GET",value = "根据sequenceNbr查询单个发货单", notes = "根据sequenceNbr查询单个发货单")
public ResponseModel<Map<String,Object>> selectOnePreparationMoney( String sequenceNbr) {
return ResponseHelper.buildResponse(preparationMoneyServiceImpl.selectOnePreparationMoney(sequenceNbr));
}
}
......@@ -4,15 +4,13 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.boot.module.hygf.api.dto.*;
import com.yeejoin.amos.boot.module.hygf.api.entity.*;
import com.yeejoin.amos.boot.module.hygf.api.hwsms.SendSmsCode;
import com.yeejoin.amos.boot.module.hygf.api.mapper.CommerceInfoMapper;
import com.yeejoin.amos.boot.module.hygf.api.mapper.PersonnelBusinessMapper;
import com.yeejoin.amos.boot.module.hygf.api.mapper.RegionalCompaniesMapper;
import com.yeejoin.amos.boot.module.hygf.api.mapper.UnitInfoMapper;
import com.yeejoin.amos.boot.module.hygf.api.mapper.*;
import com.yeejoin.amos.boot.module.hygf.api.util.CommonResponseNewUtil;
import com.yeejoin.amos.boot.module.hygf.biz.service.impl.DealerReviewServiceImpl;
import com.yeejoin.amos.boot.module.standard.api.entity.PublicAgencyUser;
......@@ -103,6 +101,8 @@ public class UnitInfoController extends BaseController {
PublicAgencyUserMapper publicAgencyUserMapper;
@Autowired
PersonnelBusinessMapper personnelBusinessMapper;
@Autowired
PeasantHouseholdMapper peasantHouseholdMapper;
/**
* 验证码过期时间
......@@ -282,12 +282,6 @@ public class UnitInfoController extends BaseController {
}
//判断公司统一信息用代码重复
// LambdaQueryWrapper<CommerceInfo> queryWrapper1 = new LambdaQueryWrapper<CommerceInfo>();
// queryWrapper1.eq(CommerceInfo::getCreditCode, model.getCommerceInfoDto().getCreditCode());
// queryWrapper1.eq(CommerceInfo::getIsDelete,0);
// List<CommerceInfo> commerceInfo= commerceInfoMapper.selectList(queryWrapper1);
List<CommerceInfo> commerceInfo= commerceInfoMapper.selectListby( model.getCommerceInfoDto().getCreditCode());
if(commerceInfo!=null&&!commerceInfo.isEmpty()){
......@@ -675,11 +669,94 @@ public class UnitInfoController extends BaseController {
}
//根据登陆人角色获取电站列表
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET",value = "获取审核通过的经销商", notes = "获取审核通过的经销商")
@GetMapping(value = "/getlistUnitInfo")
public ResponseModel<List<UnitInfo>> getlistUnitInfo() {
LambdaQueryWrapper<UnitInfo> qu=new LambdaQueryWrapper();
qu.eq(UnitInfo::getIsDelete,false);
qu.eq(UnitInfo::getAuditStatus,2);
List<UnitInfo> list=unitInfoMapper.selectList(qu);
return ResponseHelper.buildResponse(list);
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET",value = "列表全部数据查询", notes = "列表全部数据查询")
@GetMapping(value = "/getRegionalCompanie")
public ResponseModel< List<RegionalCompanies> > getRegionalCompanie(
@RequestParam(required=false) Long sequenceNbr
) {
LambdaQueryWrapper<RegionalCompanies> qu=new LambdaQueryWrapper();
qu.eq(RegionalCompanies::getUnitInfoId,sequenceNbr);
qu.eq(RegionalCompanies::getIsDelete,false);
List<RegionalCompanies> list=regionalCompaniesMapper.selectList(qu);
return ResponseHelper.buildResponse(list);
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET",value = "列表全部数据查询", notes = "列表全部数据查询")
@GetMapping(value = "/getRegionalCompanieById")
public ResponseModel< RegionalCompanies > getRegionalCompanieById(
@RequestParam(required=false) Long regionalCompaniesSeq,
@RequestParam(required=false) Long unitInfoId
) {
LambdaQueryWrapper<RegionalCompanies> qu=new LambdaQueryWrapper();
qu.eq(RegionalCompanies::getRegionalCompaniesSeq,regionalCompaniesSeq);
qu.eq(RegionalCompanies::getUnitInfoId,unitInfoId);
qu.eq(RegionalCompanies::getIsDelete,false);
RegionalCompanies list=regionalCompaniesMapper.selectOne(qu);
return ResponseHelper.buildResponse(list);
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET",value = "列表全部数据查询", notes = "列表全部数据查询")
@GetMapping(value = "/getRegionalCompanieUnitInfo")
public ResponseModel< List<RegionalCompanies> > getRegionalCompanieUnitInfo(
@RequestParam(required=false) Long unitInfoId,
@RequestParam(required=false) Long regionalCompaniesSeq
) {
LambdaQueryWrapper<RegionalCompanies> qu=new LambdaQueryWrapper();
qu.eq(RegionalCompanies::getRegionalCompaniesSeq,regionalCompaniesSeq);
qu.eq(RegionalCompanies::getUnitInfoId,unitInfoId);
RegionalCompanies list=regionalCompaniesMapper.selectOne(qu);
UnitInfo unitInfo=unitInfoMapper.selectById(unitInfoId);
List<RegionalCompanies> date=null;
if(list!=null&&unitInfo!=null){
list.setRegionalCompaniesName(unitInfo.getName()+"-"+list.getRegionalCompaniesName());
date=new ArrayList();
date.add(list);
}
return ResponseHelper.buildResponse(date);
}
//获取电站列表
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET",value = "列表全部数据查询", notes = "列表全部数据查询")
@GetMapping(value = "/getUnitInfoListData")
public ResponseModel< List<Map<String,Object>> > getUnitInfoListData(
@RequestParam(required=false) Long unitInfoId,
@RequestParam(required=false) Long regionalCompaniesSeq
) {
UnitInfo unitInfo=unitInfoMapper.selectById(unitInfoId);
List<PeasantHousehold> list=peasantHouseholdMapper.selectPeasantHouseholdList(unitInfo.getAmosCompanySeq(),regionalCompaniesSeq);
List<Map<String,Object>> date=new ArrayList<>();
if(list!=null){
for (PeasantHousehold peasantHousehold : list) {
Map<String,Object> map=new HashMap<>();
map.put("children",new ArrayList<>());
map.put("title",peasantHousehold.getPeasantHouseholdNo()+"-"+peasantHousehold.getOwnersName());
map.put("value",peasantHousehold.getSequenceNbr());
map.put("key",peasantHousehold.getSequenceNbr());
date.add(map);
}
}
return ResponseHelper.buildResponse(date);
}
}
package com.yeejoin.amos.boot.module.hygf.biz.service.impl;
import com.alibaba.excel.annotation.format.DateTimeFormat;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yeejoin.amos.boot.module.hygf.api.Enum.PreparationMoneyEnum;
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.boot.module.hygf.api.Enum.*;
import com.yeejoin.amos.boot.module.hygf.api.dto.PeasantHouseholdDto;
import com.yeejoin.amos.boot.module.hygf.api.dto.PreparationMoneyLogDto;
import com.yeejoin.amos.boot.module.hygf.api.dto.PreparationPageDto;
import com.yeejoin.amos.boot.module.hygf.api.entity.DocumentBom;
import com.yeejoin.amos.boot.module.hygf.api.entity.DocumentStation;
import com.yeejoin.amos.boot.module.hygf.api.entity.PeasantHousehold;
import com.yeejoin.amos.boot.module.hygf.api.entity.PreparationMoney;
import com.yeejoin.amos.boot.module.hygf.api.entity.PreparationMoneyLog;
import com.yeejoin.amos.boot.module.hygf.api.entity.UnitInfo;
import com.yeejoin.amos.boot.module.hygf.api.entity.*;
import com.yeejoin.amos.boot.module.hygf.api.mapper.DesignInformationMapper;
import com.yeejoin.amos.boot.module.hygf.api.mapper.DocumentStationMapper;
import com.yeejoin.amos.boot.module.hygf.api.mapper.PreparationMoneyMapper;
import com.yeejoin.amos.boot.module.hygf.api.mapper.RegionalCompaniesMapper;
import com.yeejoin.amos.boot.module.hygf.api.service.IPreparationMoneyService;
import com.yeejoin.amos.boot.module.hygf.api.dto.PreparationMoneyDto;
import com.yeejoin.amos.boot.module.hygf.api.util.NumberUtil;
import com.yeejoin.amos.component.feign.model.FeignClientResult;
import com.yeejoin.amos.component.robot.AmosRequestContext;
import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
import com.yeejoin.amos.feign.systemctl.Systemctl;
import com.yeejoin.amos.feign.systemctl.model.RegionModel;
import org.apache.commons.lang.BooleanUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils;
......@@ -30,11 +40,8 @@ import org.typroject.tyboot.core.rdbms.service.BaseService;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
/**
......@@ -63,31 +70,36 @@ public class PreparationMoneyServiceImpl extends BaseService<PreparationMoneyDto
private UnitInfoServiceImpl unitInfoService;
@Autowired
private PreparationMoneyLogServiceImpl preparationMoneyLogService;
@Autowired
RegionalCompaniesMapper regionalCompaniesMapper;
@Autowired
DocumentStationMapper documentStationMapper;
@Autowired
RedisUtils redisUtil;
@Autowired
DesignInformationMapper designInformationMapper;
private static final String regionRedis="app_region_redis";
/**
* 分页查询
*/
public IPage<PreparationMoney> queryForPreparationMoneyPage(PreparationPageDto dto) {
//列表数据组装
QueryWrapper<PreparationMoney> qw = new QueryWrapper<>();
qw.ge(StringUtils.isNotEmpty(dto.getStartDate()), "order_time", dto.getStartDate());
qw.le(StringUtils.isNotEmpty(dto.getEndDate()), "order_time", dto.getEndDate());
qw.eq(StringUtils.isNotEmpty(dto.getConsigneeAddress()), "consignee_address", dto.getConsigneeAddress());
qw.eq(StringUtils.isNotEmpty(dto.getDealerId()), "dealer_id", dto.getDealerId());
qw.like(StringUtils.isNotEmpty(dto.getOddNumbers()), "odd_numbers", dto.getOddNumbers());
qw.like(StringUtils.isNotEmpty(dto.getSalesman()), "salesman", dto.getSalesman());
qw.eq(StringUtils.isNotEmpty(dto.getDocumentState()), "document_state", dto.getDocumentState());
qw.eq(StringUtils.isNotEmpty(dto.getShipmentStatus()), "shipment_status", dto.getShipmentStatus());
qw.eq(StringUtils.isNotEmpty(dto.getReceivingStatus()), "receiving_status", dto.getReceivingStatus());
if(dto.getIsdocumentStatezf()!=null&&dto.getIsdocumentStatezf()){
qw.ne( "document_state", "已作废");
}
LambdaQueryWrapper<PreparationMoney> qw = new LambdaQueryWrapper<>();
DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
qw.like(StringUtils.isNotEmpty(dto.getConsigneeRegion()), PreparationMoney::getConsigneeRegion, dto.getConsigneeRegion());
qw.like(StringUtils.isNotEmpty(dto.getAmosUnitName()), PreparationMoney::getAmosUnitName, dto.getAmosUnitName());
qw.like(StringUtils.isNotEmpty(dto.getOddNumbers()), PreparationMoney::getOddNumbers, dto.getOddNumbers());
qw.eq(StringUtils.isNotEmpty(dto.getDeliveryState()), PreparationMoney::getDeliveryState, dto.getDeliveryState());
if(dto.getDeliveryTime()!=null&&!dto.getDeliveryTime().get(0).equals("")){
qw.between(dto.getDeliveryTime()!=null, PreparationMoney::getDeliveryTime, dto.getDeliveryTime().get(0), dto.getDeliveryTime().get(1));
}
qw.orderBy(Boolean.TRUE, Boolean.FALSE, PreparationMoney::getOrderTime);
if (StringUtils.isNotEmpty(dto.getOrderBy())) {
qw.orderBy(Boolean.TRUE, dto.getIsASC(), dto.getOrderBy());
}else{
qw.orderBy(Boolean.TRUE, Boolean.FALSE, "order_time");
}
IPage<PreparationMoney> warningQuestionInfoIPage = preparationMoneyMapper.selectPage(dto, qw);
return warningQuestionInfoIPage;
......@@ -109,22 +121,22 @@ public class PreparationMoneyServiceImpl extends BaseService<PreparationMoneyDto
* @author Provence
* @throws
*/
public PreparationMoneyDto getObjectBySequenceNbr(Long sequenceNbr) {
PreparationMoneyDto preparationMoneyDto = this.queryBySeq(sequenceNbr);
// 加载BOM清单数据
preparationMoneyDto.setDocumentBoms(documentBomService.listByPreparationMoneyId(sequenceNbr));
// 加载发货电站数据
List<Long> peasantHouseholdIds = documentStationService.list(new LambdaQueryWrapper<DocumentStation>()
.select(DocumentStation::getStationId)
.eq(DocumentStation::getPreparationMoneyId, sequenceNbr))
.stream().map(DocumentStation::getStationId).collect(Collectors.toList());
List<PeasantHousehold> peasantHouseholds = (List<PeasantHousehold>) peasantHouseholdService.listByIds(peasantHouseholdIds);
preparationMoneyDto.setPowerStations(peasantHouseholds.stream().map(o -> entityToDto(o)).collect(Collectors.toList()));
// 加载单据追踪数据
List<PreparationMoneyLog> preparationMoneyLogDtos = preparationMoneyLogService.list(new LambdaQueryWrapper<PreparationMoneyLog>().eq(PreparationMoneyLog::getPreparationMoneyId, sequenceNbr));
preparationMoneyDto.setPreparationMoneyLogs(preparationMoneyLogDtos.stream().map(o -> entityToDto(o)).collect(Collectors.toList()));
return preparationMoneyDto;
}
// public PreparationMoneyDto getObjectBySequenceNbr(Long sequenceNbr) {
// PreparationMoneyDto preparationMoneyDto = this.queryBySeq(sequenceNbr);
// // 加载BOM清单数据
// preparationMoneyDto.setDocumentBoms(documentBomService.listByPreparationMoneyId(sequenceNbr));
// // 加载发货电站数据
// List<Long> peasantHouseholdIds = documentStationService.list(new LambdaQueryWrapper<DocumentStation>()
// .select(DocumentStation::getStationId)
// .eq(DocumentStation::getPreparationMoneyId, sequenceNbr))
// .stream().map(DocumentStation::getStationId).collect(Collectors.toList());
// List<PeasantHousehold> peasantHouseholds = (List<PeasantHousehold>) peasantHouseholdService.listByIds(peasantHouseholdIds);
// preparationMoneyDto.setPowerStations(peasantHouseholds.stream().map(o -> entityToDto(o)).collect(Collectors.toList()));
// // 加载单据追踪数据
// List<PreparationMoneyLog> preparationMoneyLogDtos = preparationMoneyLogService.list(new LambdaQueryWrapper<PreparationMoneyLog>().eq(PreparationMoneyLog::getPreparationMoneyId, sequenceNbr));
// preparationMoneyDto.setPreparationMoneyLogs(preparationMoneyLogDtos.stream().map(o -> entityToDto(o)).collect(Collectors.toList()));
// return preparationMoneyDto;
// }
private PeasantHouseholdDto entityToDto(PeasantHousehold o) {
PeasantHouseholdDto dto = new PeasantHouseholdDto();
......@@ -138,6 +150,69 @@ public class PreparationMoneyServiceImpl extends BaseService<PreparationMoneyDto
return dto;
}
@Transactional
public boolean zfPreparationMoney(Long sequenceNbr, AgencyUserModel agencyUserModel) {
// 记录操作日志
PreparationMoneyLog preparationMoneyLog = new PreparationMoneyLog();
preparationMoneyLog.setPreparationMoneyId(sequenceNbr);
preparationMoneyLog.setOperationContent(PreparationEnum.创建发货单.getCode());
preparationMoneyLog.setExecutionTime(new Date());
preparationMoneyLog.setExecutor(agencyUserModel.getRealName());
preparationMoneyLogService.save(preparationMoneyLog);
LambdaUpdateWrapper<PreparationMoney> qu=new LambdaUpdateWrapper();
qu.set(PreparationMoney::getDeliveryState, DeliveryStateeEnum.已作废.getCode());
qu.eq(PreparationMoney::getSequenceNbr,sequenceNbr);
return this.update(qu);
}
public Map<String,Object> selectOnePreparationMoney(String sequenceNbr){
Map<String,Object> map =new HashMap<>();
LambdaUpdateWrapper<PreparationMoney> qu=new LambdaUpdateWrapper<>();
qu.eq(PreparationMoney::getSequenceNbr,sequenceNbr);
PreparationMoney preparationMoney= preparationMoneyMapper.selectOne(qu);
//获取所有电站Bom,分组合并,暂时不相加
QueryWrapper<DesignInformation> designInformationQueryWrapper = new QueryWrapper<>();
designInformationQueryWrapper.in("peasant_household_id", preparationMoney.getPeasantHouseholdId());
List<DesignInformation> li = designInformationMapper.selectList(designInformationQueryWrapper);
DesignInformation designInformation=new DesignInformation();
//组件
List<Object> assembly=new ArrayList<>();
//逆变器
List<Object> inverter=new ArrayList<>();
//电表箱
List<Object> electricityMeter=new ArrayList<>();
//电缆
List<Object> cable=new ArrayList<>();
for (DesignInformation des : li) {
if(des.getAssembly()!=null&&!des.getAssembly().isEmpty()){
assembly.addAll(des.getAssembly());
}
if(des.getInverter()!=null&&!des.getInverter().isEmpty()){
inverter.addAll(des.getInverter());
}
if(des.getElectricityMeter()!=null&&!des.getElectricityMeter().isEmpty()){
electricityMeter.addAll(des.getElectricityMeter());
}
if(des.getCable()!=null&&!des.getCable().isEmpty()){
cable.addAll(des.getCable());
}
}
designInformation.setAssembly(assembly);
designInformation.setInverter(inverter);
designInformation.setElectricityMeter(electricityMeter);
designInformation.setCable(cable);
map.put("preparationMoney",preparationMoney);
map.put("designInformation",designInformation);
return map;
}
/**
* 保存或更新发货单
*
......@@ -149,58 +224,147 @@ public class PreparationMoneyServiceImpl extends BaseService<PreparationMoneyDto
*/
@Transactional
@Override
public PreparationMoneyDto saveOrUpdateObject(PreparationMoneyDto model) {
boolean isUpdate = false;
if (model.getSequenceNbr() != null) {
// update
PreparationMoney entity = this.getById(model);
if (entity == null) {
throw new BadRequest("发货单不存在");
public PreparationMoney saveOrUpdateObject(PreparationMoney model, AgencyUserModel agencyUserModel) {
if(model.getSequenceNbr()==null){
//获取经销商单位信息
UnitInfo unitInfo= unitInfoService.getById(model.getAmosUnitId());
model.setAmosUnitName(unitInfo!=null?unitInfo.getName():null);
model.setAmosUnitOrgCode(unitInfo!=null?unitInfo.getAmosCompanyCode():null);
RegionalCompanies regionalCompanies= regionalCompaniesMapper.selectRegionName(model.getRegionalCompaniesSeq());
model.setRegionalCompaniesCode(regionalCompanies!=null?regionalCompanies.getRegionalCompaniesCode():null);
model.setRegionalCompaniesName(regionalCompanies!=null?regionalCompanies.getRegionalCompaniesName():null);
//收货区域信息
JSONArray regionName = getRegionName();
List<RegionModel> list = JSONArray.parseArray(regionName.toJSONString(), RegionModel.class);
String ConsigneeRegion="";
List<Integer> da=model.getConsigneeRegionCode();
if(da!=null&&!da.isEmpty()){
for (int i = 0; i < da.size(); i++) {
for (RegionModel re : list) {
if (re.getRegionCode().equals(Integer.valueOf(da.get(i)))) {
if(da.size()-1==i){
ConsigneeRegion = ConsigneeRegion + re.getRegionName();
}else{
ConsigneeRegion = ConsigneeRegion + re.getRegionName() + "-";
}
break;
}
}
}
isUpdate = true;
}
// BOM 清单 后台查询数据库整合数据
List<PeasantHouseholdDto> powerStations = model.getPowerStations();
List<Long> powerHouseholdIds = powerStations.stream().map(PeasantHouseholdDto::getSequenceNbr).collect(Collectors.toList());
// 后台组装BOM清单
List<DocumentBom> documentBoms = documentBomService.assembleDocumentBom(powerHouseholdIds);
if (CollectionUtils.isEmpty(documentBoms)) {
// throw new BaseException("BOM清单为空", "400", "BOM清单为空");// 这里阻塞前端接口
// 根据发货电站信息无法组装成BOM清单
throw new BadRequest("BOM清单为空");
model.setConsigneeRegion(ConsigneeRegion);
}
// 根据BOM清单计算当前发货单的价格
PreparationMoneyDto pmd = caculateShippingPrice(documentBoms);
model.setInventoryPrice(pmd.getInventoryPrice());//清单价格
model.setDiscount(pmd.getDiscount());//折扣
model.setPromotion(pmd.getPromotion());//促销
model.setTotalPrice(pmd.getTotalPrice());//总价
// 前端传值改动太大, 从数据库获取dealerName
String dealerName = Optional.ofNullable(unitInfoService.query().eq("amos_company_seq", model.getDealerId()).one()).map(UnitInfo::getName).orElse(null);
model.setDealerName(dealerName);
// model.setContractPrice(pmd.getContractPrice());//合同价格
if (!isUpdate) {
// 初始化状态
model.setReceivingStatus(PreparationMoneyEnum.RECEIVING_STATUS.未到货.getName());
model.setShipmentStatus(PreparationMoneyEnum.SHIPMENT_STATUS.未发货.getName());
model.setDocumentState(PreparationMoneyEnum.DOCUMENT_STATE.未完成.getName());
//发货单号
String code= NumberUtil.getCode(CodeEnum.货单.getCode(),regionalCompanies.getCompanyCode(),regionalCompanies.getRegionalAddress());
model.setOddNumbers(code);
if(model.getDeliveryFile()!=null&&!model.getDeliveryFile().isEmpty()){
model.setDeliveryState(DeliveryStateeEnum.已发货.getCode());
model.setArrivalState(ArrivalStateeEnum.待收货.getCode());
model.setDeliveryTime(new Date());
}else{
model.setDeliveryState(DeliveryStateeEnum.待发货.getCode());
model.setArrivalState(DeliveryStateeEnum.待发货.getCode());
}
PreparationMoney entity = new PreparationMoney();
BeanUtils.copyProperties(model, entity);
this.saveOrUpdate(entity);
documentBoms.stream().forEach(d -> d.setPreparationMoneyId(entity.getSequenceNbr()));
List<DocumentStation> documentStations = powerStations.stream().map(o -> buildDocumentStations(entity.getSequenceNbr(), o)).collect(Collectors.toList());
if (isUpdate) {
documentBomService.remove(new LambdaQueryWrapper<DocumentBom>().select(DocumentBom::getSequenceNbr).eq(DocumentBom::getPreparationMoneyId, entity.getSequenceNbr()));
documentStationService.remove(new LambdaQueryWrapper<DocumentStation>().select(DocumentStation::getSequenceNbr).eq(DocumentStation::getPreparationMoneyId, entity.getSequenceNbr()));
preparationMoneyMapper.insert(model);
//电站信息存储
List<Long> ids= model.getPeasantHouseholdId();
List<DocumentStation> listDocumentStation= new ArrayList<>();
for (Long id : ids) {
DocumentStation documentStation =new DocumentStation();
documentStation.setPreparationMoneyId(model.getSequenceNbr());
documentStation.setStationId(id);
listDocumentStation.add(documentStation);
}
documentBomService.saveOrUpdateBatch(documentBoms);
documentStationService.saveOrUpdateBatch(documentStations);
documentStationService.saveBatch(listDocumentStation);
// 记录操作日志
PreparationMoneyLog preparationMoneyLog = new PreparationMoneyLog();
preparationMoneyLog.setPreparationMoneyId(entity.getSequenceNbr());
preparationMoneyLog.setOperationContent(String.format("备货单保存【备货单号:%s】", entity.getOddNumbers()));
preparationMoneyLog.setPreparationMoneyId(model.getSequenceNbr());
preparationMoneyLog.setOperationContent(PreparationEnum.创建发货单.getCode());
preparationMoneyLog.setExecutionTime(new Date());
preparationMoneyLog.setExecutor(agencyUserModel.getRealName());
preparationMoneyLogService.save(preparationMoneyLog);
if(model.getArrivalFile()!=null&&!model.getArrivalFile().isEmpty()){
PreparationMoneyLog preparationMoneyLog1 = new PreparationMoneyLog();
preparationMoneyLog1.setPreparationMoneyId(model.getSequenceNbr());
preparationMoneyLog1.setOperationContent(PreparationEnum.确认发货.getCode());
preparationMoneyLog1.setExecutionTime(new Date());
preparationMoneyLog1.setExecutor(agencyUserModel.getRealName());
preparationMoneyLogService.save(preparationMoneyLog1);
}
}else{
//获取经销商单位信息
UnitInfo unitInfo= unitInfoService.getById(model.getAmosUnitId());
model.setAmosUnitName(unitInfo!=null?unitInfo.getName():null);
model.setAmosUnitOrgCode(unitInfo!=null?unitInfo.getAmosCompanyCode():null);
RegionalCompanies regionalCompanies= regionalCompaniesMapper.selectRegionName(model.getRegionalCompaniesSeq());
model.setRegionalCompaniesCode(regionalCompanies!=null?regionalCompanies.getRegionalCompaniesCode():null);
model.setRegionalCompaniesName(regionalCompanies!=null?regionalCompanies.getRegionalCompaniesName():null);
//收货区域信息
JSONArray regionName = getRegionName();
List<RegionModel> list = JSONArray.parseArray(regionName.toJSONString(), RegionModel.class);
String ConsigneeRegion="";
List<Integer> da=model.getConsigneeRegionCode();
if(da!=null&&!da.isEmpty()){
for (int i = 0; i < da.size(); i++) {
for (RegionModel re : list) {
if (re.getRegionCode().equals(Integer.valueOf(da.get(i)))) {
if(da.size()-1==i){
ConsigneeRegion = ConsigneeRegion + re.getRegionName();
}else{
ConsigneeRegion = ConsigneeRegion + re.getRegionName() + "-";
}
break;
}
}
}
model.setConsigneeRegion(ConsigneeRegion);
}
if(model.getDeliveryFile()!=null&&!model.getDeliveryFile().isEmpty()){
model.setDeliveryState(DeliveryStateeEnum.已发货.getCode());
model.setArrivalState(ArrivalStateeEnum.待收货.getCode());
model.setDeliveryTime(new Date());
}else{
model.setDeliveryState(DeliveryStateeEnum.待发货.getCode());
model.setArrivalState(DeliveryStateeEnum.待发货.getCode());
}
preparationMoneyMapper.updateById(model);
//电站信息存储
LambdaUpdateWrapper<DocumentStation> up=new LambdaUpdateWrapper();
up.eq(DocumentStation::getPreparationMoneyId,model.getSequenceNbr());
documentStationMapper.delete(up);
List<Long> ids= model.getPeasantHouseholdId();
List<DocumentStation> listDocumentStation= new ArrayList<>();
for (Long id : ids) {
DocumentStation documentStation =new DocumentStation();
documentStation.setPreparationMoneyId(model.getSequenceNbr());
documentStation.setStationId(id);
listDocumentStation.add(documentStation);
}
documentStationService.saveBatch(listDocumentStation);
// 记录操作日志
if(model.getArrivalFile()!=null&&!model.getArrivalFile().isEmpty()){
PreparationMoneyLog preparationMoneyLog1 = new PreparationMoneyLog();
preparationMoneyLog1.setPreparationMoneyId(model.getSequenceNbr());
preparationMoneyLog1.setOperationContent(PreparationEnum.确认发货.getCode());
preparationMoneyLog1.setExecutionTime(new Date());
preparationMoneyLog1.setExecutor(agencyUserModel.getRealName());
preparationMoneyLogService.save(preparationMoneyLog1);
}
}
return model;
}
......@@ -214,7 +378,36 @@ public class PreparationMoneyServiceImpl extends BaseService<PreparationMoneyDto
documentStation.setRecUserName(recUserName);
return documentStation;
}
public JSONArray getRegionName() {
JSONArray jsonArray = new JSONArray();
if (redisUtil.hasKey(regionRedis)) {
jsonArray = JSONArray.parseArray(redisUtil.get(regionRedis).toString());
} else {
Collection<RegionModel> regionChild = new ArrayList<>();
RegionModel regionModel1 = new RegionModel();
regionChild.add(regionModel1);
FeignClientResult<Collection<RegionModel>> collectionFeignClientResult = Systemctl.regionClient.queryForTreeParent(610000L);
Collection<RegionModel> result = collectionFeignClientResult.getResult();
for (RegionModel regionModel : result) {
if (null != regionModel && null != regionModel.getChildren()) {
for (RegionModel child : regionModel.getChildren()) {
if (null != child && null != child.getChildren()) {
for (RegionModel childChild : child.getChildren()) {
jsonArray.add(childChild);
}
child.setChildren(regionChild);
jsonArray.add(child);
}
}
regionModel.setChildren(regionChild);
jsonArray.add(regionModel);
}
}
redisUtil.set(regionRedis, jsonArray);
}
return jsonArray;
}
/**
* 更新发货单状态
*
......@@ -227,42 +420,43 @@ public class PreparationMoneyServiceImpl extends BaseService<PreparationMoneyDto
*/
@Override
public Boolean updatePreparationMoneyStatus(Long sequenceNbr, String operationType) {
PreparationMoney preparationMoney = preparationMoneyMapper.selectById(sequenceNbr);
if (preparationMoney == null) {
throw new BadRequest("订单不存在");
}
PreparationMoneyLog preparationMoneyLog = new PreparationMoneyLog();
preparationMoneyLog.setPreparationMoneyId(preparationMoney.getSequenceNbr());
switch (operationType) {
case "RECEIPT":
// 确认收货 -> 到货状态 -> 已到货 -> 订单状态改为 已完成
if (!PreparationMoneyEnum.SHIPMENT_STATUS.已发货.getName().equals(preparationMoney.getShipmentStatus())) {
throw new BadRequest("订单未发货, 无法确认收货");
}
preparationMoney.setReceivingStatus(PreparationMoneyEnum.RECEIVING_STATUS.已到货.getName());
preparationMoney.setDocumentState(PreparationMoneyEnum.DOCUMENT_STATE.已完成.getName());
preparationMoney.setDeliveryTime(new Date());
preparationMoneyLog.setOperationContent(String.format("备货单确认收货【备货单号:%s】", preparationMoney.getOddNumbers()));
break;
case "DELIVERY":
// 发货 -> 发货状态 -> 已发货
preparationMoney.setShipmentStatus(PreparationMoneyEnum.SHIPMENT_STATUS.已发货.getName());
preparationMoneyLog.setOperationContent(String.format("备货单发货【备货单号:%s】", preparationMoney.getOddNumbers()));
break;
case "DISCARD":
// 作废
// 订单状态 -> 已废弃
if (PreparationMoneyEnum.RECEIVING_STATUS.已到货.getName().equals(preparationMoney.getReceivingStatus())) {
throw new BadRequest("订单已到货, 无法作废");
}
preparationMoney.setDocumentState(PreparationMoneyEnum.DOCUMENT_STATE.作废.getName());
preparationMoneyLog.setOperationContent(String.format("备货单作废【备货单号:%s】", preparationMoney.getOddNumbers()));
break;
default:
break;
}
preparationMoneyLogService.save(preparationMoneyLog);
return preparationMoneyMapper.updateById(preparationMoney) > 0;
// PreparationMoney preparationMoney = preparationMoneyMapper.selectById(sequenceNbr);
// if (preparationMoney == null) {
// throw new BadRequest("订单不存在");
// }
// PreparationMoneyLog preparationMoneyLog = new PreparationMoneyLog();
// preparationMoneyLog.setPreparationMoneyId(preparationMoney.getSequenceNbr());
// switch (operationType) {
// case "RECEIPT":
// // 确认收货 -> 到货状态 -> 已到货 -> 订单状态改为 已完成
// if (!PreparationMoneyEnum.SHIPMENT_STATUS.已发货.getName().equals(preparationMoney.getShipmentStatus())) {
// throw new BadRequest("订单未发货, 无法确认收货");
// }
// preparationMoney.setReceivingStatus(PreparationMoneyEnum.RECEIVING_STATUS.已到货.getName());
// preparationMoney.setDocumentState(PreparationMoneyEnum.DOCUMENT_STATE.已完成.getName());
// preparationMoney.setDeliveryTime(new Date());
// preparationMoneyLog.setOperationContent(String.format("备货单确认收货【备货单号:%s】", preparationMoney.getOddNumbers()));
// break;
// case "DELIVERY":
// // 发货 -> 发货状态 -> 已发货
// preparationMoney.setShipmentStatus(PreparationMoneyEnum.SHIPMENT_STATUS.已发货.getName());
// preparationMoneyLog.setOperationContent(String.format("备货单发货【备货单号:%s】", preparationMoney.getOddNumbers()));
// break;
// case "DISCARD":
// // 作废
// // 订单状态 -> 已废弃
// if (PreparationMoneyEnum.RECEIVING_STATUS.已到货.getName().equals(preparationMoney.getReceivingStatus())) {
// throw new BadRequest("订单已到货, 无法作废");
// }
// preparationMoney.setDocumentState(PreparationMoneyEnum.DOCUMENT_STATE.作废.getName());
// preparationMoneyLog.setOperationContent(String.format("备货单作废【备货单号:%s】", preparationMoney.getOddNumbers()));
// break;
// default:
// break;
// }
// preparationMoneyLogService.save(preparationMoneyLog);
// return preparationMoneyMapper.updateById(preparationMoney) > 0;
return false;
}
/**
......@@ -290,21 +484,22 @@ public class PreparationMoneyServiceImpl extends BaseService<PreparationMoneyDto
*/
public PreparationMoneyDto caculateShippingPrice(List<DocumentBom> documentBoms) {
// 获取BOM清单数据
// 单价 * 经销商折扣 * 促销 * 需求数量
BigDecimal totalPrice = new BigDecimal(0);
BigDecimal totaldemandNumber = new BigDecimal(0);
for (DocumentBom documentBom : documentBoms) {
BigDecimal unitPrice = new BigDecimal(documentBom.getUnitPrice() == null?0:documentBom.getUnitPrice());//单价
BigDecimal demandNumber = new BigDecimal(documentBom.getDemandNumber());//需求数量
totalPrice = totalPrice.add(unitPrice.multiply(demandNumber));
totaldemandNumber = totaldemandNumber.add(demandNumber);
}
PreparationMoneyDto preparationMoneyDto = new PreparationMoneyDto();
preparationMoneyDto.setInventoryPrice(totalPrice.divide(totaldemandNumber).setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue());//清单价格
preparationMoneyDto.setDiscount(0D);//折扣
preparationMoneyDto.setPromotion(0D);//促销
preparationMoneyDto.setContractPrice(0D);//合同价格 == 确认
preparationMoneyDto.setTotalPrice(totalPrice.doubleValue());
return preparationMoneyDto;
// // 单价 * 经销商折扣 * 促销 * 需求数量
// BigDecimal totalPrice = new BigDecimal(0);
// BigDecimal totaldemandNumber = new BigDecimal(0);
// for (DocumentBom documentBom : documentBoms) {
// BigDecimal unitPrice = new BigDecimal(documentBom.getUnitPrice() == null?0:documentBom.getUnitPrice());//单价
// BigDecimal demandNumber = new BigDecimal(documentBom.getDemandNumber());//需求数量
// totalPrice = totalPrice.add(unitPrice.multiply(demandNumber));
// totaldemandNumber = totaldemandNumber.add(demandNumber);
// }
// PreparationMoneyDto preparationMoneyDto = new PreparationMoneyDto();
// preparationMoneyDto.setInventoryPrice(totalPrice.divide(totaldemandNumber).setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue());//清单价格
// preparationMoneyDto.setDiscount(0D);//折扣
// preparationMoneyDto.setPromotion(0D);//促销
// preparationMoneyDto.setContractPrice(0D);//合同价格 == 确认
// preparationMoneyDto.setTotalPrice(totalPrice.doubleValue());
// return preparationMoneyDto;
return null;
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment