diff --git a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehiclestate/BaseVehicleState.java b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehiclestate/BaseVehicleState.java new file mode 100644 index 0000000000..eaef7640e7 --- /dev/null +++ b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehiclestate/BaseVehicleState.java @@ -0,0 +1,41 @@ +package com.yxt.anrui.base.api.basevehiclestate; + +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: 车辆持久状态 + * @author: dimengzhe + * @date: 2023/7/19 + **/ +@Data +public class BaseVehicleState extends BaseEntity { + private static final long serialVersionUID = -8658861219326308912L; + @ApiModelProperty("车辆sid") + private String vinSid; + @ApiModelProperty("车架号") + private String vinNo; + @ApiModelProperty("销售订单车辆sid") + private String busSid; + @ApiModelProperty("业务阶段序号") + private String busNo; + @ApiModelProperty("业务阶段名称") + private String busName; + @ApiModelProperty("业务状态") + private String busState; + @ApiModelProperty("款项状态") + private String finState; + @ApiModelProperty("发票状态") + private String invoiceState; + @ApiModelProperty("欠款提车状态") + private String carryVehicleState; + @ApiModelProperty("欠款开票状态") + private String carryInvoiceState; + @ApiModelProperty("包牌业务") + private String packageBusiness; + @ApiModelProperty("合同状态") + private String contractState; + + +} diff --git a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehiclestate/BaseVehicleStateDto.java b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehiclestate/BaseVehicleStateDto.java new file mode 100644 index 0000000000..118370190c --- /dev/null +++ b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehiclestate/BaseVehicleStateDto.java @@ -0,0 +1,27 @@ +package com.yxt.anrui.base.api.basevehiclestate; + +import com.yxt.common.core.dto.Dto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/7/19 + **/ +@Data +public class BaseVehicleStateDto implements Dto { + private static final long serialVersionUID = -3250371728132610725L; + @ApiModelProperty("车辆sid") + private String vinSid; + @ApiModelProperty("车架号") + private String vinNo; + @ApiModelProperty("销售订单车辆sid") + private String busSid; + @ApiModelProperty("业务阶段序号") + private String busNo; + @ApiModelProperty("业务阶段名称") + private String busName; + @ApiModelProperty("操作类型") + private String operateType; +} diff --git a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehiclestate/BaseVehicleStateEnum.java b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehiclestate/BaseVehicleStateEnum.java new file mode 100644 index 0000000000..dc46946853 --- /dev/null +++ b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehiclestate/BaseVehicleStateEnum.java @@ -0,0 +1,80 @@ +package com.yxt.anrui.base.api.basevehiclestate; + +import lombok.Getter; + +/** + * @description: 车辆持久状态 + * @author: dimengzhe + * @date: 2023/7/19 + **/ +public class BaseVehicleStateEnum { + + @Getter + public static enum BusNoEnum { + /** + * 车辆业务阶段序号 + */ + DDBA("200", "订单备案"), + CKKP("400", "出库开票"), + JC("500", "交车"), + YWJS("600", "业务结束"), + ; + + private String busNoKey; + private String busNoValue; + + BusNoEnum(String busNoKey, String busNoValue) { + this.busNoKey = busNoKey; + this.busNoValue = busNoValue; + } + } + + + @Getter + public static enum BusStateEnum { + /** + * 车辆阶段状态 + */ + CKKP_STATE_1("401", "待出库"), + CKKP_STATE_2("402", "出库中"), + JC_STATE_1("501", "待准备"), + JC_STATE_2("502", "待交车"), + JC_STATE_3("503", "已交车"), + YWJS_STATE_1("601", "业务完成"), + YWJS_STATE_2("602", "业务终止"), + + ; + + private String stateKey; + private String stateValue; + + BusStateEnum(String stateKey, String stateValue) { + this.stateKey = stateKey; + this.stateValue = stateValue; + } + } + + @Getter + public static enum OperateTypeEnum { + /** + * 操作类型 + */ + DDBA_SUBMIT("201", "订单提交"), + DDBA_PASS("202", "订单审核通过"), + CKKP_PASS("401", "出库开票审核通过"), + JC_PASS("402", "交车审核通过"), + BUS_STOP("602", "业务终止"), + + ; + + private String typeKey; + private String typeValue; + + OperateTypeEnum(String typeKey, String typeValue) { + this.typeKey = typeKey; + this.typeValue = typeValue; + } + } + + +} diff --git a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehiclestate/BaseVehicleStateFeign.java b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehiclestate/BaseVehicleStateFeign.java new file mode 100644 index 0000000000..41d100c14f --- /dev/null +++ b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehiclestate/BaseVehicleStateFeign.java @@ -0,0 +1,24 @@ +package com.yxt.anrui.base.api.basevehiclestate; + +import com.yxt.common.core.result.ResultBean; +import io.swagger.annotations.Api; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/7/19 + **/ +@Api(tags = "车辆持久状态") +@FeignClient( + contextId = "anrui-base-BaseVehicleState", + name = "anrui-base", + path = "v1/BaseVehicleState", + fallback = BaseVehicleStateFeignFallback.class) +public interface BaseVehicleStateFeign { + + @PostMapping("saveOrUpdate") + ResultBean saveOrUpdate(@RequestBody BaseVehicleStateDto dto); +} diff --git a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehiclestate/BaseVehicleStateFeignFallback.java b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehiclestate/BaseVehicleStateFeignFallback.java new file mode 100644 index 0000000000..36db280fd7 --- /dev/null +++ b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehiclestate/BaseVehicleStateFeignFallback.java @@ -0,0 +1,9 @@ +package com.yxt.anrui.base.api.basevehiclestate; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/7/19 + **/ +public class BaseVehicleStateFeignFallback { +} diff --git a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehiclestate/BaseVehicleStateMapper.java b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehiclestate/BaseVehicleStateMapper.java new file mode 100644 index 0000000000..3dec96882a --- /dev/null +++ b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehiclestate/BaseVehicleStateMapper.java @@ -0,0 +1,15 @@ +package com.yxt.anrui.base.biz.basevehiclestate; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.yxt.anrui.base.api.basevehiclestate.BaseVehicleState; +import org.apache.ibatis.annotations.Mapper; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/7/19 + **/ +@Mapper +public interface BaseVehicleStateMapper extends BaseMapper { + BaseVehicleState selectOnes(String busSid); +} diff --git a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehiclestate/BaseVehicleStateMapper.xml b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehiclestate/BaseVehicleStateMapper.xml new file mode 100644 index 0000000000..739d593a45 --- /dev/null +++ b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehiclestate/BaseVehicleStateMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehiclestate/BaseVehicleStateRest.java b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehiclestate/BaseVehicleStateRest.java new file mode 100644 index 0000000000..b80b3bf285 --- /dev/null +++ b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehiclestate/BaseVehicleStateRest.java @@ -0,0 +1,29 @@ +package com.yxt.anrui.base.biz.basevehiclestate; + +import com.yxt.anrui.base.api.basevehiclestate.BaseVehicleStateDto; +import com.yxt.anrui.base.api.basevehiclestate.BaseVehicleStateFeign; +import com.yxt.common.core.result.ResultBean; +import io.swagger.annotations.Api; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/7/19 + **/ + +@Api(tags = "车辆持久状态") +@RestController +@RequestMapping("v1/BaseVehicleState") +public class BaseVehicleStateRest implements BaseVehicleStateFeign { + + @Autowired + private BaseVehicleStateService baseVehicleStateService; + + @Override + public ResultBean saveOrUpdate(BaseVehicleStateDto dto) { + return baseVehicleStateService.saveOrUpdateState(dto); + } +} diff --git a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehiclestate/BaseVehicleStateService.java b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehiclestate/BaseVehicleStateService.java new file mode 100644 index 0000000000..97c4a3ef70 --- /dev/null +++ b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehiclestate/BaseVehicleStateService.java @@ -0,0 +1,56 @@ +package com.yxt.anrui.base.biz.basevehiclestate; + +import cn.hutool.core.bean.BeanUtil; +import com.yxt.anrui.base.api.basevehiclestate.BaseVehicleState; +import com.yxt.anrui.base.api.basevehiclestate.BaseVehicleStateDto; +import com.yxt.anrui.base.api.basevehiclestate.BaseVehicleStateEnum; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.core.result.ResultBean; +import org.springframework.stereotype.Service; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/7/19 + **/ +@Service +public class BaseVehicleStateService extends MybatisBaseService { + + public ResultBean saveOrUpdateState(BaseVehicleStateDto dto) { + ResultBean rb = ResultBean.fireFail(); + String operateType = dto.getOperateType(); + String busSid = dto.getBusSid(); + BaseVehicleState baseVehicleState = baseMapper.selectOnes(busSid); + if (BaseVehicleStateEnum.OperateTypeEnum.DDBA_SUBMIT.equals(operateType)) { + //销售订单提交时 + baseVehicleState = new BaseVehicleState(); + BeanUtil.copyProperties(dto, baseVehicleState, "sid"); + baseMapper.insert(baseVehicleState); + } else if (BaseVehicleStateEnum.OperateTypeEnum.DDBA_PASS.equals(operateType)) { + //销售订单办理通过后更新业务阶段为出库开票、小状态为待出库,款项状态为0 + baseVehicleState.setFinState("0"); + baseVehicleState.setBusNo(BaseVehicleStateEnum.BusNoEnum.CKKP.getBusNoKey()); + baseVehicleState.setBusName(BaseVehicleStateEnum.BusNoEnum.CKKP.getBusNoValue()); + baseVehicleState.setBusState(BaseVehicleStateEnum.BusStateEnum.CKKP_STATE_1.getStateKey()); + } else if (BaseVehicleStateEnum.OperateTypeEnum.CKKP_PASS.equals(operateType)) { + //出库通过后更新业务阶段为交车,小状态为待准备501 + baseVehicleState.setBusNo(BaseVehicleStateEnum.BusNoEnum.JC.getBusNoKey()); + baseVehicleState.setBusName(BaseVehicleStateEnum.BusNoEnum.JC.getBusNoValue()); + baseVehicleState.setBusState(BaseVehicleStateEnum.BusStateEnum.JC_STATE_1.getStateKey()); + + } else if (BaseVehicleStateEnum.OperateTypeEnum.JC_PASS.equals(operateType)) { + //交车确认通过后更新业务状态为业务结束,小状态为业务完成601 + baseVehicleState.setBusNo(BaseVehicleStateEnum.BusNoEnum.YWJS.getBusNoKey()); + baseVehicleState.setBusName(BaseVehicleStateEnum.BusNoEnum.YWJS.getBusNoValue()); + baseVehicleState.setBusState(BaseVehicleStateEnum.BusStateEnum.YWJS_STATE_1.getStateKey()); + } else if (BaseVehicleStateEnum.OperateTypeEnum.BUS_STOP.equals(operateType)) { + //如果为终止或作废,则更新小状态为业务终止602 + baseVehicleState.setBusState(BaseVehicleStateEnum.BusStateEnum.YWJS_STATE_2.getStateKey()); + } + + //认款办理确认以及结转审核通过的更新款项状态为1,否则为0 + + baseMapper.updateById(baseVehicleState); + return rb.success(); + } +} diff --git a/doc/databases/base_tables.sql b/doc/databases/base_tables.sql index 8caee7577c..7dcdfa35be 100644 --- a/doc/databases/base_tables.sql +++ b/doc/databases/base_tables.sql @@ -935,7 +935,7 @@ CREATE TABLE `base_vehicle_out` ) ENGINE = INNODB DEFAULT CHARSET = utf8 COMMENT ='车辆出库信息'; -DROP TABLE IF EXISTS `base_vehicle_state`; +/*DROP TABLE IF EXISTS `base_vehicle_state`; CREATE TABLE `base_vehicle_state` ( `id` int(32) NOT NULL AUTO_INCREMENT COMMENT 'id', @@ -952,10 +952,10 @@ CREATE TABLE `base_vehicle_state` `vinNo` VARCHAR(64) DEFAULT NULL COMMENT '车架号', `vinSid` varchar(64) DEFAULT NULL COMMENT '车辆sid', `busSid` varchar(64) DEFAULT NULL COMMENT '业务sid', - `arrears` varchar(64) DEFAULT NULL COMMENT '欠款开票:1是0否', - `carArrears` varchar(64) DEFAULT NULL COMMENT '欠款提车:1是,0否', + `arrears` varchar(64) DEFAULT NULL COMMENT '欠款开票:1是0否', + `carArrears` varchar(64) DEFAULT NULL COMMENT '欠款提车:1是,0否', `depositState` varchar(255) DEFAULT NULL COMMENT '款项-订金状态', - `carState` varchar(255) DEFAULT NULL COMMENT '款项-车款状态', + `carState` varchar(255) DEFAULT NULL COMMENT '款项-车款状态', `invoiceState` varchar(255) DEFAULT NULL COMMENT '发票状态', `deliverState` varchar(255) DEFAULT NULL COMMENT '交车状态', `blueState` varchar(255) DEFAULT NULL COMMENT '蓝票来票状态', @@ -964,6 +964,39 @@ CREATE TABLE `base_vehicle_state` KEY `id` (`id`) ) ENGINE = INNODB DEFAULT CHARSET = utf8 COMMENT ='车辆业务状态表'; +*/ + + +DROP TABLE IF EXISTS `base_vehicle_state`; +CREATE TABLE `base_vehicle_state` +( + `id` int(32) NOT NULL AUTO_INCREMENT COMMENT 'id', + `sid` varchar(64) NOT NULL COMMENT 'sid', + `lockVersion` int(32) DEFAULT '0' COMMENT '版本锁', + `createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + `isEnable` int(32) DEFAULT '1' COMMENT '是否可用:1可用,0不可用', + `state` int(32) DEFAULT '1' COMMENT '状态', + `isDelete` int(32) DEFAULT '0' COMMENT '是否删除:0未删除,1已删除', + `remarks` varchar(255) DEFAULT NULL COMMENT '备注', + `createBySid` varchar(64) DEFAULT NULL COMMENT '创建人sid', + `updateBySid` varchar(64) DEFAULT NULL COMMENT '修改人sid', + `vinNo` VARCHAR(64) DEFAULT NULL COMMENT '车架号', + `vinSid` varchar(64) DEFAULT NULL COMMENT '车辆sid', + `busSid` varchar(64) DEFAULT NULL COMMENT '业务sid', + `busNo` varchar(64) DEFAULT NULL COMMENT '业务阶段序号', + `busName` varchar(64) DEFAULT NULL COMMENT '业务阶段名称', + `busState` varchar(64) DEFAULT NULL COMMENT '业务状态', + `finState` varchar(64) DEFAULT NULL COMMENT '款项状态', + `invoiceState` varchar(64) DEFAULT NULL COMMENT '发票状态', + `carryVehicleState` varchar(64) DEFAULT NULL COMMENT '欠款提车状态', + `carryInvoiceState` varchar(64) DEFAULT NULL COMMENT '欠款开票状态', + `packageBusiness` varchar(64) DEFAULT NULL COMMENT '包牌业务', + `contractState` varchar(64) DEFAULT NULL COMMENT '合同状态', + PRIMARY KEY (`id`), + KEY `id` (`id`) +) ENGINE = INNODB + DEFAULT CHARSET = utf8 COMMENT ='车辆业务状态表';