diff --git a/src/main/java/com/zg/project/wisdom/controller/RkBillController.java b/src/main/java/com/zg/project/wisdom/controller/RkBillController.java index 68aae49..6bacf69 100644 --- a/src/main/java/com/zg/project/wisdom/controller/RkBillController.java +++ b/src/main/java/com/zg/project/wisdom/controller/RkBillController.java @@ -50,6 +50,7 @@ public class RkBillController extends BaseController List list = rkBillService.selectRkBillList(rkBill); return getDataTable(list); + } /** diff --git a/src/main/java/com/zg/project/wisdom/controller/RkRecordController.java b/src/main/java/com/zg/project/wisdom/controller/RkRecordController.java index cff8e01..78092c4 100644 --- a/src/main/java/com/zg/project/wisdom/controller/RkRecordController.java +++ b/src/main/java/com/zg/project/wisdom/controller/RkRecordController.java @@ -4,6 +4,7 @@ import java.util.List; import javax.servlet.http.HttpServletResponse; import com.zg.project.wisdom.domain.RkInfo; +import com.zg.project.wisdom.domain.dto.RkDeliveryUpdateDTO; import com.zg.project.wisdom.domain.vo.StockStatisticVO; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; @@ -173,4 +174,22 @@ public class RkRecordController extends BaseController StockStatisticVO stockStatistic = rkRecordService.selectRecordStatisticByCondition(query); return AjaxResult.success(stockStatistic); } + + /** + * 更新配送状态 + */ + @PostMapping("/updateDeliveryStatus") + @Log(title = "更新配送状态", businessType = BusinessType.UPDATE) + public AjaxResult updateDeliveryStatus(@RequestBody RkDeliveryUpdateDTO dto) { + + if (dto.getIds() == null || dto.getIds().isEmpty()) { + return AjaxResult.error("rk_record 主键ID集合不能为空"); + } + if (dto.getIsDelivery() == null) { + return AjaxResult.error("配送状态不能为空"); + } + + int rows = rkRecordService.updateDeliveryStatus(dto.getIds(), dto.getIsDelivery()); + return AjaxResult.success(rows); + } } diff --git a/src/main/java/com/zg/project/wisdom/controller/RkStatisticsController.java b/src/main/java/com/zg/project/wisdom/controller/RkStatisticsController.java index 74fbaeb..ee524b5 100644 --- a/src/main/java/com/zg/project/wisdom/controller/RkStatisticsController.java +++ b/src/main/java/com/zg/project/wisdom/controller/RkStatisticsController.java @@ -33,6 +33,26 @@ public class RkStatisticsController { public AjaxResult home(@RequestBody(required = false) HomeStatQueryDTO query) { return AjaxResult.success(rkStatisticsService.getHomeStatistics(query)); } + + + /** + * 按时间查询【入库类型】统计 + */ + @ApiOperation("按时间查询入库类型统计") + @PostMapping("/inTypeByTime") + public AjaxResult inTypeByTime(@RequestBody HomeStatQueryDTO query) { + return AjaxResult.success(rkStatisticsService.getInTypeByTime(query)); + } + + /** + * 按时间查询【出库类型】统计 + */ + @ApiOperation("按时间查询出库类型统计") + @PostMapping("/outTypeByTime") + public AjaxResult outTypeByTime(@RequestBody HomeStatQueryDTO query) { + return AjaxResult.success(rkStatisticsService.getOutTypeByTime(query)); + } + /** * 首页统计,库龄统计 * */ diff --git a/src/main/java/com/zg/project/wisdom/domain/RkBill.java b/src/main/java/com/zg/project/wisdom/domain/RkBill.java index 07d16b7..2b92099 100644 --- a/src/main/java/com/zg/project/wisdom/domain/RkBill.java +++ b/src/main/java/com/zg/project/wisdom/domain/RkBill.java @@ -97,8 +97,8 @@ public class RkBill extends BaseEntity { @Excel(name = "施工队名称") private String teamName; - /** 是否需要配送(0否,1是,2配送中,3配送完成) */ - @Excel(name = "是否需要配送", readConverterExp = "0=否,1=是,2=配送中,3=配送完成") + /** 配送状态:0否 1是 2待接单 3配送中 4配送完成 */ + @Excel(name = "是否需要配送", readConverterExp = "0=否,1=是,2=已接单,3=配送中,4=配送完成") private String isDelivery; /** 借用时间 */ diff --git a/src/main/java/com/zg/project/wisdom/domain/RkInfo.java b/src/main/java/com/zg/project/wisdom/domain/RkInfo.java index 74e4915..e4aa10f 100644 --- a/src/main/java/com/zg/project/wisdom/domain/RkInfo.java +++ b/src/main/java/com/zg/project/wisdom/domain/RkInfo.java @@ -225,7 +225,7 @@ public class RkInfo extends BaseEntity /** sid */ private Long sid; - /** 是否需要配送(0否,1是,2配送中,3配送完成) */ + /** 配送状态:0否 1是 2待接单 3配送中 4配送完成 */ @Excel(name = "是否需要配送", readConverterExp = "0否,1是,2配送中,3配送完成") private String isDelivery; diff --git a/src/main/java/com/zg/project/wisdom/domain/RkRecord.java b/src/main/java/com/zg/project/wisdom/domain/RkRecord.java index bf7c74b..6e11c20 100644 --- a/src/main/java/com/zg/project/wisdom/domain/RkRecord.java +++ b/src/main/java/com/zg/project/wisdom/domain/RkRecord.java @@ -238,8 +238,8 @@ public class RkRecord extends BaseEntity // @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") private Long sid; - /** 是否需要配送(0否,1是,2配送中,3配送完成) */ - @Excel(name = "是否需要配送", readConverterExp = "0=否,1=是,2=配送中,3=配送完成") + /** 配送状态:0否 1是 2待接单 3配送中 4配送完成 */ + @Excel(name = "是否需要配送", readConverterExp = "0=否,1=是,2=已接单,3=配送中,4=配送完成") private String isDelivery; /** 封样编号1 */ // @Excel(name = "封样编号1") diff --git a/src/main/java/com/zg/project/wisdom/domain/dto/RkDeliveryUpdateDTO.java b/src/main/java/com/zg/project/wisdom/domain/dto/RkDeliveryUpdateDTO.java index 70100b7..309718c 100644 --- a/src/main/java/com/zg/project/wisdom/domain/dto/RkDeliveryUpdateDTO.java +++ b/src/main/java/com/zg/project/wisdom/domain/dto/RkDeliveryUpdateDTO.java @@ -10,6 +10,6 @@ public class RkDeliveryUpdateDTO { /** rk_info 主键ID集合 */ private List ids; - /** 配送状态:0否 1是 2配送中 3已完成 */ + /** 配送状态:0否 1是 2待接单 3配送中 4配送完成 */ private Integer isDelivery; } \ No newline at end of file diff --git a/src/main/java/com/zg/project/wisdom/domain/vo/DeliveryBillVO.java b/src/main/java/com/zg/project/wisdom/domain/vo/DeliveryBillVO.java index a73cdb0..c1e4a00 100644 --- a/src/main/java/com/zg/project/wisdom/domain/vo/DeliveryBillVO.java +++ b/src/main/java/com/zg/project/wisdom/domain/vo/DeliveryBillVO.java @@ -31,7 +31,7 @@ public class DeliveryBillVO implements Serializable { @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date operationTime; - /** 是否需要配送(0否,1是,2配送中,3配送完成) */ + /** 配送状态:0否 1是 2待接单 3配送中 4配送完成 */ private String isDelivery; /** 该单据下的货物明细 */ diff --git a/src/main/java/com/zg/project/wisdom/domain/vo/StockStatisticGroupVO.java b/src/main/java/com/zg/project/wisdom/domain/vo/StockStatisticGroupVO.java index 54d6158..57c64bb 100644 --- a/src/main/java/com/zg/project/wisdom/domain/vo/StockStatisticGroupVO.java +++ b/src/main/java/com/zg/project/wisdom/domain/vo/StockStatisticGroupVO.java @@ -15,6 +15,9 @@ public class StockStatisticGroupVO { /** 分组值(类型编码,如 operation_type / wl_type) */ private String groupValue; + /** 分组名称(类型编码,如 operation_type / wl_type) */ + private String groupName; + /** 总金额 */ @JsonSerialize(using = BigDecimalSerializer.class) private BigDecimal totalAmount; diff --git a/src/main/java/com/zg/project/wisdom/mapper/RkBillMapper.java b/src/main/java/com/zg/project/wisdom/mapper/RkBillMapper.java index 26a2b59..b93d9a6 100644 --- a/src/main/java/com/zg/project/wisdom/mapper/RkBillMapper.java +++ b/src/main/java/com/zg/project/wisdom/mapper/RkBillMapper.java @@ -86,4 +86,13 @@ public interface RkBillMapper */ int updateExecStatus(@Param("billNo") String billNo, @Param("execStatus") String execStatus); + + /** + * 修改配送状态 + * @param billNo + * @param isDelivery + * @return + */ + int updateDeliveryStatusByBillNo(@Param("billNo") String billNo, + @Param("isDelivery") Integer isDelivery); } diff --git a/src/main/java/com/zg/project/wisdom/mapper/RkRecordMapper.java b/src/main/java/com/zg/project/wisdom/mapper/RkRecordMapper.java index e210832..4ff8162 100644 --- a/src/main/java/com/zg/project/wisdom/mapper/RkRecordMapper.java +++ b/src/main/java/com/zg/project/wisdom/mapper/RkRecordMapper.java @@ -149,4 +149,22 @@ public interface RkRecordMapper * 根据单据号查询出入库记录 * */ List selectByBillNo(String billNo); + + /** + * 修改发货状态 + * */ + int updateDeliveryStatus(@Param("ids") List ids, + @Param("isDelivery") Integer isDelivery); + + /** + * 根据ID列表查询单据号列表 + * */ + List selectBillNosByRecordIds(@Param("ids") List ids); + + /** + * 查询该 bill 下 与目标状态不同的记录数 + */ + int countDifferentDeliveryStatus(@Param("billNo") String billNo, + @Param("isDelivery") Integer isDelivery); + } diff --git a/src/main/java/com/zg/project/wisdom/service/IRkRecordService.java b/src/main/java/com/zg/project/wisdom/service/IRkRecordService.java index 52226c6..4198394 100644 --- a/src/main/java/com/zg/project/wisdom/service/IRkRecordService.java +++ b/src/main/java/com/zg/project/wisdom/service/IRkRecordService.java @@ -97,4 +97,9 @@ public interface IRkRecordService * 出入库总数统计 */ StockStatisticVO selectRecordStatisticByCondition(RkRecord query); + + /** + * 修改指定入库记录的配送状态 + */ + int updateDeliveryStatus(List ids, Integer isDelivery); } diff --git a/src/main/java/com/zg/project/wisdom/service/RkStatisticsService.java b/src/main/java/com/zg/project/wisdom/service/RkStatisticsService.java index c546c25..188ac30 100644 --- a/src/main/java/com/zg/project/wisdom/service/RkStatisticsService.java +++ b/src/main/java/com/zg/project/wisdom/service/RkStatisticsService.java @@ -14,6 +14,16 @@ public interface RkStatisticsService { */ HomeStatVO getHomeStatistics(HomeStatQueryDTO query); + /** + * 按时间查询入库类型统计 + */ + List getInTypeByTime(HomeStatQueryDTO query); + + /** + * 按时间查询出库类型统计 + */ + List getOutTypeByTime(HomeStatQueryDTO query); + /** * 首页库龄统计接口 * */ diff --git a/src/main/java/com/zg/project/wisdom/service/impl/RkRecordServiceImpl.java b/src/main/java/com/zg/project/wisdom/service/impl/RkRecordServiceImpl.java index 40071b3..15ab261 100644 --- a/src/main/java/com/zg/project/wisdom/service/impl/RkRecordServiceImpl.java +++ b/src/main/java/com/zg/project/wisdom/service/impl/RkRecordServiceImpl.java @@ -801,4 +801,38 @@ public class RkRecordServiceImpl implements IRkRecordService public StockStatisticVO selectRecordStatisticByCondition(RkRecord query) { return rkRecordMapper.selectRecordStatisticByCondition(query); } + + @Override + @Transactional(rollbackFor = Exception.class) + public int updateDeliveryStatus(List ids, Integer isDelivery) { + + if (ids == null || ids.isEmpty()) { + return 0; + } + + // 1. 先更新 record + int rows = rkRecordMapper.updateDeliveryStatus(ids, isDelivery); + + // 2. 找到受影响的 billNo + List billNos = rkRecordMapper.selectBillNosByRecordIds(ids); + if (billNos == null || billNos.isEmpty()) { + return rows; + } + + // 3. 对每个 bill 判断是否可以更新 + for (String billNo : billNos) { + + // 3.1 查询该 bill 下是否还存在“不同状态”的 record + int diffCount = rkRecordMapper.countDifferentDeliveryStatus(billNo, isDelivery); + + // 只有“全部一致”时才改 bill + if (diffCount == 0) { + rkBillMapper.updateDeliveryStatusByBillNo(billNo, isDelivery); + } + // 否则:保持原状态(不动) + } + + return rows; + } + } diff --git a/src/main/java/com/zg/project/wisdom/service/impl/RkStatisticsServiceImpl.java b/src/main/java/com/zg/project/wisdom/service/impl/RkStatisticsServiceImpl.java index d5f2126..4a0a9d6 100644 --- a/src/main/java/com/zg/project/wisdom/service/impl/RkStatisticsServiceImpl.java +++ b/src/main/java/com/zg/project/wisdom/service/impl/RkStatisticsServiceImpl.java @@ -28,14 +28,26 @@ public class RkStatisticsServiceImpl implements RkStatisticsService { vo.setCurrentInType(rkStatisticsMapper.statCurrentInByOperationType()); vo.setMaterialType(rkStatisticsMapper.statCurrentByMaterialType()); - // ========== 3. 时间维度统计 ========== + return vo; + } + + + @Override + public List getInTypeByTime(HomeStatQueryDTO query) { + Date start = query == null ? null : query.getStartDate(); Date end = query == null ? null : query.getEndDate(); - vo.setInTypeByTime(rkStatisticsMapper.statInByOperationType(start, end)); - vo.setOutTypeByTime(rkStatisticsMapper.statOutByOperationType(start, end)); + return rkStatisticsMapper.statInByOperationType(start, end); + } - return vo; + @Override + public List getOutTypeByTime(HomeStatQueryDTO query) { + + Date start = query == null ? null : query.getStartDate(); + Date end = query == null ? null : query.getEndDate(); + + return rkStatisticsMapper.statOutByOperationType(start, end); } /** * 首页库龄统计接口 diff --git a/src/main/resources/mybatis/wisdom/RkBillMapper.xml b/src/main/resources/mybatis/wisdom/RkBillMapper.xml index a89c973..e9a1414 100644 --- a/src/main/resources/mybatis/wisdom/RkBillMapper.xml +++ b/src/main/resources/mybatis/wisdom/RkBillMapper.xml @@ -303,4 +303,11 @@ + + UPDATE rk_bill + SET is_delivery = #{isDelivery}, + update_time = NOW() + WHERE bill_no = #{billNo} + AND is_delete = '0' + diff --git a/src/main/resources/mybatis/wisdom/RkRecordMapper.xml b/src/main/resources/mybatis/wisdom/RkRecordMapper.xml index 7ebf66a..1e44b86 100644 --- a/src/main/resources/mybatis/wisdom/RkRecordMapper.xml +++ b/src/main/resources/mybatis/wisdom/RkRecordMapper.xml @@ -658,6 +658,7 @@ WHERE id = #{id} AND is_delete = '0' + + + + + UPDATE rk_record + SET is_delivery = #{isDelivery}, + update_time = NOW() + WHERE is_delete = '0' + AND id IN + + #{id} + + + + + + + + + diff --git a/src/main/resources/mybatis/wisdom/RkStatisticsMapper.xml b/src/main/resources/mybatis/wisdom/RkStatisticsMapper.xml index 262d7f0..905d981 100644 --- a/src/main/resources/mybatis/wisdom/RkStatisticsMapper.xml +++ b/src/main/resources/mybatis/wisdom/RkStatisticsMapper.xml @@ -5,112 +5,165 @@ + +