Commit 2ba19839d7faff30061873aa95dd8a465292a1ff

Authored by 房远帅
2 parents 6782b75d 37e86c1b

Merge branch 'master_chujiang' into master_quotation

@@ -641,6 +641,9 @@ create table if not exists shipments_plan ( @@ -641,6 +641,9 @@ create table if not exists shipments_plan (
641 update_time datetime default now() comment '更新时间' 641 update_time datetime default now() comment '更新时间'
642 ); 642 );
643 643
  644 +ALTER TABLE `shipments_plan`
  645 + ADD COLUMN `business_office_auditor` varchar(32) DEFAULT NULL COMMENT '经营办审核人(发货计划提交人)';
  646 +
644 -- 发货明细 647 -- 发货明细
645 drop table if exists `shipments_plan_detail`; 648 drop table if exists `shipments_plan_detail`;
646 create table if not exists `shipments_plan_detail` ( 649 create table if not exists `shipments_plan_detail` (
@@ -311,6 +311,18 @@ public class GetPurchaseOrderInfoBo extends BaseBo<PurchaseOrderInfo> { @@ -311,6 +311,18 @@ public class GetPurchaseOrderInfoBo extends BaseBo<PurchaseOrderInfo> {
311 private String contractCreateByName; 311 private String contractCreateByName;
312 312
313 /** 313 /**
  314 + * 目的地(合同里的目的地)
  315 + */
  316 + @ApiModelProperty("目的地")
  317 + private String destination;
  318 +
  319 + /**
  320 + * 下单人手机号(非持久化字段)
  321 + */
  322 + @ApiModelProperty("下单人手机号")
  323 + private String contractCreateByTelephone;
  324 +
  325 + /**
314 * 是否展示审核按钮(非持久化字段) 326 * 是否展示审核按钮(非持久化字段)
315 */ 327 */
316 @ApiModelProperty("是否展示审核按钮") 328 @ApiModelProperty("是否展示审核按钮")
@@ -175,6 +175,8 @@ public class PurchaseOrderInfoController extends DefaultBaseController { @@ -175,6 +175,8 @@ public class PurchaseOrderInfoController extends DefaultBaseController {
175 } 175 }
176 176
177 GetPurchaseOrderInfoBo result = new GetPurchaseOrderInfoBo(data); 177 GetPurchaseOrderInfoBo result = new GetPurchaseOrderInfoBo(data);
  178 + //目的地
  179 + result.setDestination(ExcelUtil.buildPrintDestination(data.getContractType(), data.getDestination(), data.getForeignDestination()));
178 // 判断 contractCreateById 是否等于当前用户 ID 180 // 判断 contractCreateById 是否等于当前用户 ID
179 String currentUserId = SecurityUtil.getCurrentUser().getId(); 181 String currentUserId = SecurityUtil.getCurrentUser().getId();
180 boolean isCreateBy = false; 182 boolean isCreateBy = false;
@@ -144,7 +144,7 @@ public class ShipmentsOrderInfoController extends DefaultBaseController { @@ -144,7 +144,7 @@ public class ShipmentsOrderInfoController extends DefaultBaseController {
144 * 填写实际发货日期 144 * 填写实际发货日期
145 */ 145 */
146 @ApiOperation("填写实际发货日期") 146 @ApiOperation("填写实际发货日期")
147 - @HasPermission({"shipping-plan-manage:invoice:modify"}) 147 + @HasPermission({"shipping-plan-manage:invoice:fill-date"})
148 @PutMapping 148 @PutMapping
149 public InvokeResult<Void> update(@Valid UpdateShipmentsOrderInfoVo vo) { 149 public InvokeResult<Void> update(@Valid UpdateShipmentsOrderInfoVo vo) {
150 shipmentsOrderInfoService.updateShipmentDate(vo); 150 shipmentsOrderInfoService.updateShipmentDate(vo);
@@ -249,6 +249,7 @@ public class ShipmentsOrderInfoController extends DefaultBaseController { @@ -249,6 +249,7 @@ public class ShipmentsOrderInfoController extends DefaultBaseController {
249 @Scheduled(cron = "0 8 0 * * ?") 249 @Scheduled(cron = "0 8 0 * * ?")
250 public InvokeResult<Void> dataHandler() { 250 public InvokeResult<Void> dataHandler() {
251 // 只处理今日应该发货但状态仍是未发货的数据,避免已签收/已发货的数据被重复处理 251 // 只处理今日应该发货但状态仍是未发货的数据,避免已签收/已发货的数据被重复处理
  252 + log.info("=========定时任务开始执行========");
252 List<ShipmentsOrderInfo> shipmentsOrderInfoList = shipmentsOrderInfoService.queryUnShipmentsByShipmentDate(LocalDate.now()); 253 List<ShipmentsOrderInfo> shipmentsOrderInfoList = shipmentsOrderInfoService.queryUnShipmentsByShipmentDate(LocalDate.now());
253 if (CollectionUtils.isNotEmpty(shipmentsOrderInfoList)) { 254 if (CollectionUtils.isNotEmpty(shipmentsOrderInfoList)) {
254 for (ShipmentsOrderInfo orderInfo : shipmentsOrderInfoList) { 255 for (ShipmentsOrderInfo orderInfo : shipmentsOrderInfoList) {
@@ -400,9 +401,9 @@ public class ShipmentsOrderInfoController extends DefaultBaseController { @@ -400,9 +401,9 @@ public class ShipmentsOrderInfoController extends DefaultBaseController {
400 // 发货单明细开始行 401 // 发货单明细开始行
401 int startRow = 4; 402 int startRow = 4;
402 DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); 403 DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
403 - for (int i = startRow + 1; i < startRow + detailList.size(); i++) {  
404 - ExcelUtil.copyRow(workbook, sheet, startRow, i);  
405 - } 404 +// for (int i = startRow + 1; i < startRow + detailList.size(); i++) {
  405 +// ExcelUtil.copyRow(workbook, sheet, startRow, i);
  406 +// }
406 BigDecimal totalQuantity = BigDecimal.ZERO; 407 BigDecimal totalQuantity = BigDecimal.ZERO;
407 BigDecimal totalActualQuantity = BigDecimal.ZERO; 408 BigDecimal totalActualQuantity = BigDecimal.ZERO;
408 BigDecimal totalNum = BigDecimal.ZERO; 409 BigDecimal totalNum = BigDecimal.ZERO;
@@ -510,9 +511,9 @@ public class ShipmentsOrderInfoController extends DefaultBaseController { @@ -510,9 +511,9 @@ public class ShipmentsOrderInfoController extends DefaultBaseController {
510 formulaComponent.setSub(detail.getLengthTolNeg()); 511 formulaComponent.setSub(detail.getLengthTolNeg());
511 formulaComponentList.add(formulaComponent); 512 formulaComponentList.add(formulaComponent);
512 } 513 }
513 - String latex = LatexFormulaExcelExporterUtil.convertToLatex(formulaComponentList); 514 + String latex = LatexFormulaExcelExporterUtil.convertToContractSpecLatexSingleLineFixed3(formulaComponentList);
514 if (StringUtils.isNotBlank(latex)) { 515 if (StringUtils.isNotBlank(latex)) {
515 - LatexFormulaExcelExporterUtil.insertLatexImageToCell(workbook, sheet, latex, startRow, 2, 1, 7); 516 + LatexFormulaExcelExporterUtil.insertLatexImageToCellLeftAligned(workbook, sheet, latex, startRow, 2, 1, 7);
516 } 517 }
517 String materialCode = resultMaterialMap.get(detail.getOrderSpecId()); 518 String materialCode = resultMaterialMap.get(detail.getOrderSpecId());
518 ExcelUtil.setCellValue(sheet, startRow, 9, materialCode); 519 ExcelUtil.setCellValue(sheet, startRow, 9, materialCode);
@@ -312,6 +312,12 @@ public class PurchaseOrderInfo extends BaseEntity implements BaseDto { @@ -312,6 +312,12 @@ public class PurchaseOrderInfo extends BaseEntity implements BaseDto {
312 @TableField(exist = false) 312 @TableField(exist = false)
313 private String contractCreateByName; 313 private String contractCreateByName;
314 314
  315 + /**
  316 + * 下单人手机号(非持久化字段)
  317 + */
  318 + @TableField(exist = false)
  319 + private String contractCreateByTelephone;
  320 +
315 321
316 /** 322 /**
317 * 是否展示审核按钮(非持久化字段) 323 * 是否展示审核按钮(非持久化字段)
@@ -58,6 +58,11 @@ public class ShipmentsPlan extends BaseEntity implements BaseDto { @@ -58,6 +58,11 @@ public class ShipmentsPlan extends BaseEntity implements BaseDto {
58 private Boolean autoGenerate; 58 private Boolean autoGenerate;
59 59
60 /** 60 /**
  61 + * 经营办审核人(发货计划提交人)
  62 + */
  63 + private String businessOfficeAuditor;
  64 +
  65 + /**
61 * 创建人ID 66 * 创建人ID
62 */ 67 */
63 @TableField(fill = FieldFill.INSERT) 68 @TableField(fill = FieldFill.INSERT)
@@ -116,6 +116,10 @@ public class ShipmentsPlanServiceImpl extends BaseMpServiceImpl<ShipmentsPlanMap @@ -116,6 +116,10 @@ public class ShipmentsPlanServiceImpl extends BaseMpServiceImpl<ShipmentsPlanMap
116 LambdaUpdateWrapper<ShipmentsPlan> updateWrapper = Wrappers.lambdaUpdate(ShipmentsPlan.class) 116 LambdaUpdateWrapper<ShipmentsPlan> updateWrapper = Wrappers.lambdaUpdate(ShipmentsPlan.class)
117 .set(ShipmentsPlan::getStatus, vo.getStatus()) 117 .set(ShipmentsPlan::getStatus, vo.getStatus())
118 .eq(ShipmentsPlan::getId, vo.getId()); 118 .eq(ShipmentsPlan::getId, vo.getId());
  119 + // 状态为审核中(CHECKING)时,记录当前提交人作为经营办审核人
  120 + if ("CHECKING".equals(vo.getStatus())) {
  121 + updateWrapper.set(ShipmentsPlan::getBusinessOfficeAuditor, SecurityUtil.getCurrentUser().getId());
  122 + }
119 123
120 getBaseMapper().update(updateWrapper); 124 getBaseMapper().update(updateWrapper);
121 125
@@ -20,6 +20,7 @@ import com.lframework.starter.common.utils.Assert; @@ -20,6 +20,7 @@ import com.lframework.starter.common.utils.Assert;
20 import com.lframework.starter.web.inner.components.oplog.OtherOpLogType; 20 import com.lframework.starter.web.inner.components.oplog.OtherOpLogType;
21 import com.lframework.xingyun.sc.entity.*; 21 import com.lframework.xingyun.sc.entity.*;
22 import com.lframework.xingyun.sc.mappers.CarRequestPlanMapper; 22 import com.lframework.xingyun.sc.mappers.CarRequestPlanMapper;
  23 +import com.lframework.xingyun.sc.service.shipments.ShipmentsPlanService;
23 import com.lframework.xingyun.sc.service.shipments.car.CarRequestPlanService; 24 import com.lframework.xingyun.sc.service.shipments.car.CarRequestPlanService;
24 import com.lframework.xingyun.sc.service.shipments.car.DraftRequestCarTicketService; 25 import com.lframework.xingyun.sc.service.shipments.car.DraftRequestCarTicketService;
25 import com.lframework.xingyun.sc.service.shipments.car.RequestCarTicketService; 26 import com.lframework.xingyun.sc.service.shipments.car.RequestCarTicketService;
@@ -44,6 +45,8 @@ public class CarRequestPlanServiceImpl extends BaseMpServiceImpl<CarRequestPlanM @@ -44,6 +45,8 @@ public class CarRequestPlanServiceImpl extends BaseMpServiceImpl<CarRequestPlanM
44 private RequestCarTicketService requestCarTicketService; 45 private RequestCarTicketService requestCarTicketService;
45 @Resource 46 @Resource
46 private DraftRequestCarTicketService draftRequestCarTicketService; 47 private DraftRequestCarTicketService draftRequestCarTicketService;
  48 + @Resource
  49 + private ShipmentsPlanService shipmentsPlanService;
47 50
48 @Override 51 @Override
49 public PageResult<CarRequestPlan> query(Integer pageIndex, Integer pageSize, QueryCarRequestPlanVo vo) { 52 public PageResult<CarRequestPlan> query(Integer pageIndex, Integer pageSize, QueryCarRequestPlanVo vo) {
@@ -157,6 +160,11 @@ public class CarRequestPlanServiceImpl extends BaseMpServiceImpl<CarRequestPlanM @@ -157,6 +160,11 @@ public class CarRequestPlanServiceImpl extends BaseMpServiceImpl<CarRequestPlanM
157 List<DraftRequestCarTicket> draftTickets = draftRequestCarTicketService.listByOrderId(orderIds); 160 List<DraftRequestCarTicket> draftTickets = draftRequestCarTicketService.listByOrderId(orderIds);
158 Map<String, DraftRequestCarTicket> draftTicketMap = draftTickets.stream().collect(Collectors.toMap(DraftRequestCarTicket::getPurchaseOrderId, Function.identity() 161 Map<String, DraftRequestCarTicket> draftTicketMap = draftTickets.stream().collect(Collectors.toMap(DraftRequestCarTicket::getPurchaseOrderId, Function.identity()
159 , (v1, v2) -> v2)); 162 , (v1, v2) -> v2));
  163 + // 获取发货计划,取经营办审核人(发货计划提交人)
  164 + ShipmentsPlan shipmentsPlan = null;
  165 + if (StringUtil.isNotBlank(shipmentsOrderInfo.getPlanId())) {
  166 + shipmentsPlan = shipmentsPlanService.findById(shipmentsOrderInfo.getPlanId());
  167 + }
160 for (PurchaseOrderInfo orderInfo : orderInfoList) { 168 for (PurchaseOrderInfo orderInfo : orderInfoList) {
161 // 生成要车计划 169 // 生成要车计划
162 LocalDate requestCarDate = shipmentsOrderInfo.getShipmentsDate(); 170 LocalDate requestCarDate = shipmentsOrderInfo.getShipmentsDate();
@@ -185,8 +193,8 @@ public class CarRequestPlanServiceImpl extends BaseMpServiceImpl<CarRequestPlanM @@ -185,8 +193,8 @@ public class CarRequestPlanServiceImpl extends BaseMpServiceImpl<CarRequestPlanM
185 ticketVo.setShipmentsOrderId(shipmentsOrderInfo.getId()); 193 ticketVo.setShipmentsOrderId(shipmentsOrderInfo.getId());
186 // 外办审核人(草稿要车单审核人) 194 // 外办审核人(草稿要车单审核人)
187 ticketVo.setExternalAuditor(draftTicket.getExternalAuditor()); 195 ticketVo.setExternalAuditor(draftTicket.getExternalAuditor());
188 - // 经营办审核人(发货计划提交人)  
189 - ticketVo.setBusinessOfficeAuditor(SecurityUtil.getCurrentUser().getId()); 196 + // 经营办审核人(发货计划提交人,取自发货计划)
  197 + ticketVo.setBusinessOfficeAuditor(shipmentsPlan != null ? shipmentsPlan.getBusinessOfficeAuditor() : null);
190 ticketVo.setDestination(draftTicket.getDestination()); 198 ticketVo.setDestination(draftTicket.getDestination());
191 ticketVo.setConsignee(draftTicket.getConsignee()); 199 ticketVo.setConsignee(draftTicket.getConsignee());
192 ticketVo.setPhone(draftTicket.getPhone()); 200 ticketVo.setPhone(draftTicket.getPhone());
@@ -49,6 +49,7 @@ @@ -49,6 +49,7 @@
49 <result column="packaging_fee" property="packagingFee"/> 49 <result column="packaging_fee" property="packagingFee"/>
50 <result column="contract_create_by_id" property="contractCreateById"/> 50 <result column="contract_create_by_id" property="contractCreateById"/>
51 <result column="contract_create_by_name" property="contractCreateByName"/> 51 <result column="contract_create_by_name" property="contractCreateByName"/>
  52 + <result column="contract_create_by_telephone" property="contractCreateByTelephone"/>
52 <result column="sample_order" property="sampleOrder"/> 53 <result column="sample_order" property="sampleOrder"/>
53 <result column="warranty_certificate_file_id" property="warrantyCertificateFileId"/> 54 <result column="warranty_certificate_file_id" property="warrantyCertificateFileId"/>
54 <result column="warranty_certificate_file_name" property="warrantyCertificateFileName"/> 55 <result column="warranty_certificate_file_name" property="warrantyCertificateFileName"/>
@@ -108,6 +109,7 @@ @@ -108,6 +109,7 @@
108 tb.packaging_fee, 109 tb.packaging_fee,
109 tb.contract_create_by_id, 110 tb.contract_create_by_id,
110 su.name as contract_create_by_name, 111 su.name as contract_create_by_name,
  112 + su.telephone as contract_create_by_telephone,
111 tb.freeze, 113 tb.freeze,
112 tb.sample_order, 114 tb.sample_order,
113 tb.warranty_certificate_file_id, 115 tb.warranty_certificate_file_id,
@@ -10,6 +10,7 @@ @@ -10,6 +10,7 @@
10 <result column="tomo_pre_ship_date" property="tomoPreShipDate"/> 10 <result column="tomo_pre_ship_date" property="tomoPreShipDate"/>
11 <result column="af_tomo_pre_ship_date" property="afTomoPreShipDate"/> 11 <result column="af_tomo_pre_ship_date" property="afTomoPreShipDate"/>
12 <result column="auto_generate" property="autoGenerate"/> 12 <result column="auto_generate" property="autoGenerate"/>
  13 + <result column="business_office_auditor" property="businessOfficeAuditor"/>
13 <result column="create_by_id" property="createById"/> 14 <result column="create_by_id" property="createById"/>
14 <result column="update_by_id" property="updateById"/> 15 <result column="update_by_id" property="updateById"/>
15 <result column="create_time" property="createTime"/> 16 <result column="create_time" property="createTime"/>
@@ -25,6 +26,7 @@ @@ -25,6 +26,7 @@
25 tb.tomo_pre_ship_date, 26 tb.tomo_pre_ship_date,
26 tb.af_tomo_pre_ship_date, 27 tb.af_tomo_pre_ship_date,
27 tb.auto_generate, 28 tb.auto_generate,
  29 + tb.business_office_auditor,
28 tb.create_by_id, 30 tb.create_by_id,
29 tb.update_by_id, 31 tb.update_by_id,
30 tb.create_time, 32 tb.create_time,
@@ -58,7 +60,7 @@ @@ -58,7 +60,7 @@
58 ORDER BY tb.create_time DESC 60 ORDER BY tb.create_time DESC
59 </select> 61 </select>
60 62
61 - <select id="getById" resultType="com.lframework.xingyun.sc.entity.ShipmentsPlan"> 63 + <select id="getById" resultMap="ShipmentsPlan">
62 <include refid="ShipmentsPlan_sql"/> 64 <include refid="ShipmentsPlan_sql"/>
63 <where> 65 <where>
64 AND tb.id = #{id} 66 AND tb.id = #{id}