|
@@ -38,8 +38,7 @@ import java.util.stream.Collectors;
|
|
|
*/
|
|
|
@RestController
|
|
|
@RequestMapping("/business/returnReceipt")
|
|
|
-public class BizReturnReceiptController extends BaseController
|
|
|
-{
|
|
|
+public class BizReturnReceiptController extends BaseController {
|
|
|
@Resource
|
|
|
private IBizReturnReceiptService bizReturnReceiptService;
|
|
|
@Resource
|
|
@@ -54,25 +53,27 @@ public class BizReturnReceiptController extends BaseController
|
|
|
private RedisCache redisCache;
|
|
|
@Resource
|
|
|
HttpServletRequest request;
|
|
|
+ @Resource
|
|
|
+ private IBizDayworkCarrierService bizDayworkCarrierService;
|
|
|
|
|
|
/**
|
|
|
* 生成pdf
|
|
|
*/
|
|
|
@Autowired
|
|
|
private FreeMarkerConfigurer freeMarkerConfigurer;
|
|
|
+
|
|
|
/**
|
|
|
* 查询收回单主
|
|
|
*/
|
|
|
@PreAuthorize("@ss.hasPermi('business:returnReceipt:list')")
|
|
|
@Log(title = "外协收回单查询", businessType = BusinessType.SELECT)
|
|
|
@GetMapping("/list")
|
|
|
- public TableDataInfo list(BizReturnReceipt bizReturnReceipt) throws NoSuchFieldException, IllegalAccessException
|
|
|
- {
|
|
|
- if(bizReturnReceipt.getStartTime()!=null) {
|
|
|
- bizReturnReceipt.setStartTime(bizReturnReceipt.getStartTime()+ " 00:00:00");
|
|
|
+ public TableDataInfo list(BizReturnReceipt bizReturnReceipt) throws NoSuchFieldException, IllegalAccessException {
|
|
|
+ if (bizReturnReceipt.getStartTime() != null) {
|
|
|
+ bizReturnReceipt.setStartTime(bizReturnReceipt.getStartTime() + " 00:00:00");
|
|
|
}
|
|
|
- if(bizReturnReceipt.getEndTime()!=null) {
|
|
|
- bizReturnReceipt.setEndTime(bizReturnReceipt.getEndTime()+ " 23:59:59");
|
|
|
+ if (bizReturnReceipt.getEndTime() != null) {
|
|
|
+ bizReturnReceipt.setEndTime(bizReturnReceipt.getEndTime() + " 23:59:59");
|
|
|
}
|
|
|
final String supplierId = request.getHeader("tenantId");
|
|
|
bizReturnReceipt.setSupplierId(Long.parseLong(supplierId));
|
|
@@ -83,16 +84,16 @@ public class BizReturnReceiptController extends BaseController
|
|
|
|
|
|
/**
|
|
|
* 导出收回单主
|
|
|
-带箱方式,是整单的。如果换新箱子,明细中,都需要更换箱子列表
|
|
|
+ * 带箱方式,是整单的。如果换新箱子,明细中,都需要更换箱子列表
|
|
|
*/
|
|
|
@PreAuthorize("@ss.hasPermi('business:returnReceipt:export')")
|
|
|
- @Log(title = "外协收回单导出", businessType = BusinessType.EXPORT)
|
|
|
+ @Log(title = "收回单主带箱方式,是整单的。如果换新箱子,明细中,都需要更换箱子", businessType = BusinessType.EXPORT)
|
|
|
@PostMapping("/export")
|
|
|
public void export(HttpServletResponse response, BizReturnReceipt bizReturnReceipt) throws NoSuchFieldException, IllegalAccessException, IOException {
|
|
|
bizReturnReceipt = bizReturnReceiptService.getById(bizReturnReceipt);
|
|
|
BizSupplier supplier = bizSupplierService.query().eq("id", bizReturnReceipt.getSupplierId()).list().get(0);
|
|
|
bizReturnReceipt.setSupplierCode(supplier.getCode());
|
|
|
- List<BizReturnReceiptDetail> returnReceiptDetailList = bizReturnReceiptDetailService.query().eq("master_id",bizReturnReceipt.getId()).orderByAsc("process_step_number").list();
|
|
|
+ List<BizReturnReceiptDetail> returnReceiptDetailList = bizReturnReceiptDetailService.query().eq("master_id", bizReturnReceipt.getId()).orderByAsc("process_step_number").list();
|
|
|
//按照批次分组,一个批次合并成一条
|
|
|
List<String> lotCodeList = returnReceiptDetailList.stream()
|
|
|
.map(BizReturnReceiptDetail::getLotCode)
|
|
@@ -113,7 +114,7 @@ public class BizReturnReceiptController extends BaseController
|
|
|
info.setProductDescription(detailList.get(0).getProductDescription());
|
|
|
info.setOutsourceDetailId(detailList.get(0).getOutsourceDetailId());
|
|
|
info.setLotCode(lotCode);
|
|
|
- info.setReceiptNum(detailList.get(detailList.size() -1).getReceiptNum());
|
|
|
+ info.setReceiptNum(detailList.get(detailList.size() - 1).getReceiptNum());
|
|
|
info.setNewCarrier(detailList.get(0).getNewCarrier());
|
|
|
info.setNewCarrierCount(detailList.get(0).getNewCarrierCount());
|
|
|
info.setRemark(detailList.get(0).getRemark());
|
|
@@ -124,8 +125,7 @@ public class BizReturnReceiptController extends BaseController
|
|
|
}
|
|
|
@Log(title = "修改外协收回单提交状态", businessType = BusinessType.UPDATE)
|
|
|
@PutMapping("/updateReceiptSubmitStatus")
|
|
|
- public AjaxResult updateReceiptSubmitStatus(@RequestBody BizReturnReceipt bizReturnReceipt)
|
|
|
- {
|
|
|
+ public AjaxResult updateReceiptSubmitStatus(@RequestBody BizReturnReceipt bizReturnReceipt) {
|
|
|
BizReturnReceipt returnReceipt = bizReturnReceiptService.query().eq("id", bizReturnReceipt.getId()).one();
|
|
|
returnReceipt.setIsSubmit(0);
|
|
|
bizReturnReceiptService.updateById(returnReceipt);
|
|
@@ -134,14 +134,13 @@ public class BizReturnReceiptController extends BaseController
|
|
|
|
|
|
/**
|
|
|
* 新增外协单主
|
|
|
- 带箱方式,是整单的。如果换新箱子,明细中,都需要更换箱子
|
|
|
+ * 带箱方式,是整单的。如果换新箱子,明细中,都需要更换箱子
|
|
|
*/
|
|
|
@PreAuthorize("@ss.hasPermi('business:returnReceipt:add')")
|
|
|
@Log(title = "外协收回单新增", businessType = BusinessType.UPDATE)
|
|
|
@Transactional
|
|
|
@PostMapping
|
|
|
- public AjaxResult addReceipt(@RequestBody BizReturnReceipt bizReturnReceipt)
|
|
|
- {
|
|
|
+ public AjaxResult addReceipt(@RequestBody BizReturnReceipt bizReturnReceipt) {
|
|
|
final String supplierId = request.getHeader("tenantId");
|
|
|
bizReturnReceipt.setSupplierId(Long.parseLong(supplierId));
|
|
|
//若有id,则说将之前的明细删除不生成新的单号
|
|
@@ -154,18 +153,18 @@ public class BizReturnReceiptController extends BaseController
|
|
|
String codeValue;
|
|
|
String codeType = "returnReceiveCode";
|
|
|
//查询redis中外协单号的值
|
|
|
- String previous = redisCache.hasKey(codeType) ? redisCache.getCacheObject(codeType) :"";
|
|
|
+ String previous = redisCache.hasKey(codeType) ? redisCache.getCacheObject(codeType) : "";
|
|
|
//若不存在,则直接存入
|
|
|
if (previous.isEmpty()) {
|
|
|
List<BizReturnReceipt> returnReceiptList = bizReturnReceiptService.getAllList();
|
|
|
- if(!returnReceiptList.isEmpty()){
|
|
|
- codeValue=returnReceiptList.get(0).getFormCode();
|
|
|
+ if (!returnReceiptList.isEmpty()) {
|
|
|
+ codeValue = returnReceiptList.get(0).getFormCode();
|
|
|
int lastFourDigits = Integer.parseInt(codeValue.substring(5, 10));
|
|
|
lastFourDigits += 1; // 加1
|
|
|
codeValue = codeValue.substring(0, 5) + String.format("%05d", lastFourDigits);
|
|
|
- previous=codeValue;
|
|
|
- }else {
|
|
|
- previous = ("SHD" + formattedDate + "00001");
|
|
|
+ previous = codeValue;
|
|
|
+ } else {
|
|
|
+ previous = ("SHD" + formattedDate + "000001");
|
|
|
}
|
|
|
} else {
|
|
|
codeValue = previous;
|
|
@@ -206,20 +205,20 @@ public class BizReturnReceiptController extends BaseController
|
|
|
// return success(bizReturnReceiptDetailService.saveBatch(bizReturnReceipt.getDetails()));
|
|
|
return success(bizReturnReceiptDetailService.saveBatch(bizReturnReceipt.getDetailInfo()));
|
|
|
}
|
|
|
+
|
|
|
/**
|
|
|
* 修改外协单主
|
|
|
- 带箱方式,是整单的。如果换新箱子,明细中,都需要更换箱子
|
|
|
+ * 带箱方式,是整单的。如果换新箱子,明细中,都需要更换箱子
|
|
|
*/
|
|
|
@PreAuthorize("@ss.hasPermi('business:returnReceipt:edit')")
|
|
|
@Log(title = "外协收回单修改", businessType = BusinessType.UPDATE)
|
|
|
@Transactional
|
|
|
@PutMapping
|
|
|
- public AjaxResult updateReceipt(@RequestBody BizReturnReceipt bizReturnReceipt)
|
|
|
- {
|
|
|
+ public AjaxResult updateReceipt(@RequestBody BizReturnReceipt bizReturnReceipt) {
|
|
|
//向收回单主表存
|
|
|
bizReturnReceiptService.updateById(bizReturnReceipt);
|
|
|
//向收回单明细表存
|
|
|
- List<BizReturnReceiptDetail> oldList = bizReturnReceiptDetailService.query().eq("master_id",bizReturnReceipt.getId()).list();
|
|
|
+ List<BizReturnReceiptDetail> oldList = bizReturnReceiptDetailService.query().eq("master_id", bizReturnReceipt.getId()).list();
|
|
|
bizReturnReceipt.getDetailInfo().stream()
|
|
|
.forEach(bizReturnReceiptDetail -> {
|
|
|
bizReturnReceiptDetail.setMasterId(bizReturnReceipt.getId());
|
|
@@ -228,7 +227,7 @@ public class BizReturnReceiptController extends BaseController
|
|
|
bizReturnReceiptDetail.setSupplierName(bizReturnReceipt.getSupplierName());
|
|
|
bizReturnReceiptDetail.setFormDate(bizReturnReceipt.getFormDate());
|
|
|
});
|
|
|
- saveOrUpdateBatch(bizReturnReceiptDetailService,bizReturnReceipt.getDetailInfo(),oldList);
|
|
|
+ saveOrUpdateBatch(bizReturnReceiptDetailService, bizReturnReceipt.getDetailInfo(), oldList);
|
|
|
// bizReturnReceipt.getDetails().stream()
|
|
|
// .forEach(bizReturnReceiptDetail -> {
|
|
|
// bizReturnReceiptDetail.setMasterId(bizReturnReceipt.getId());
|
|
@@ -240,14 +239,14 @@ public class BizReturnReceiptController extends BaseController
|
|
|
// saveOrUpdateBatch(bizReturnReceiptDetailService,bizReturnReceipt.getDetails(),oldList);
|
|
|
return success();
|
|
|
}
|
|
|
+
|
|
|
/**
|
|
|
* 获取收回单主 带箱方式,是整单的。如果换新箱子,明细中,都需要更换箱子详细信息
|
|
|
*/
|
|
|
@PreAuthorize("@ss.hasPermi('business:returnReceipt:query')")
|
|
|
@Log(title = "外协收回单查询详细信息", businessType = BusinessType.SELECT)
|
|
|
@GetMapping(value = "/{id}")
|
|
|
- public AjaxResult getInfo(@PathVariable("id") Long id)
|
|
|
- {
|
|
|
+ public AjaxResult getInfo(@PathVariable("id") Long id) {
|
|
|
// 根据 id 获取到收回订单
|
|
|
BizReturnReceipt returnReceipt = bizReturnReceiptService.getById(id);
|
|
|
|
|
@@ -255,6 +254,10 @@ public class BizReturnReceiptController extends BaseController
|
|
|
List<BizReturnReceiptDetail> returnReceiptDetails = bizReturnReceiptDetailService.query()
|
|
|
.eq("master_id", id)
|
|
|
.list();
|
|
|
+ List<BizDayworkCarrier> carriers = bizDayworkCarrierService.query().eq("is_changed", 0).in("daywork_id", returnReceiptDetails.stream().map(BizReturnReceiptDetail::getDayworkId).collect(Collectors.toList())).list();
|
|
|
+ returnReceiptDetails.forEach(item -> {
|
|
|
+ item.setUnbind(carriers.stream().anyMatch(t -> t.getDayworkId().equals(item.getDayworkId())) ? 0 : 1);
|
|
|
+ });
|
|
|
|
|
|
// 将得到的收回明细的id,组合成一个集合,用于查询这个订单下的,所有收回出来的工序,
|
|
|
// 这里得到的工序清单,是混合的,并没有根据各自对应的明细,进行分组,仅仅是获取全部,为后续分组做准备
|
|
@@ -274,7 +277,7 @@ public class BizReturnReceiptController extends BaseController
|
|
|
for (String lotCode : lotCodeList) {
|
|
|
groupedByLotCode.put(lotCode, returnReceiptDetails.stream()
|
|
|
.filter(record -> record.getLotCode().equals(lotCode))
|
|
|
- .sorted(Comparator.comparing(BizReturnReceiptDetail::getProcessStepNumber))
|
|
|
+ .sorted(Comparator.comparing(BizReturnReceiptDetail::getProcessStepNumber))
|
|
|
.collect(Collectors.toList()));
|
|
|
}
|
|
|
List<BizReturnReceiptDetail> details = new ArrayList<>();
|
|
@@ -286,9 +289,10 @@ public class BizReturnReceiptController extends BaseController
|
|
|
info.setOutsourceDetailId(detailList.get(0).getOutsourceDetailId());
|
|
|
info.setLotCode(lotCode);
|
|
|
info.setProductNum(detailList.get(0).getProductNum());
|
|
|
- info.setReceiptNum(detailList.get(detailList.size() -1).getReceiptNum());
|
|
|
+ info.setReceiptNum(detailList.get(detailList.size() - 1).getReceiptNum());
|
|
|
info.setNewCarrier(detailList.get(0).getNewCarrier());
|
|
|
info.setRemark(detailList.get(0).getRemark());
|
|
|
+ info.setUnbind(detailList.get(0).getUnbind());
|
|
|
info.setProcessAlias(detailProcesses.stream()
|
|
|
.filter(dp -> dp.getDetailId().equals(detailList.get(0).getOutsourceDetailId()))
|
|
|
.sorted(Comparator.comparing((BizOutsourcedOrderDetailProcess::getProcessStepNumber)))
|
|
@@ -315,16 +319,16 @@ public class BizReturnReceiptController extends BaseController
|
|
|
|
|
|
return success(returnReceipt);
|
|
|
}
|
|
|
+
|
|
|
/**
|
|
|
* 删除外协单主
|
|
|
- 带箱方式,是整单的。如果换新箱子,明细中,都需要更换箱子
|
|
|
+ * 带箱方式,是整单的。如果换新箱子,明细中,都需要更换箱子
|
|
|
*/
|
|
|
@PreAuthorize("@ss.hasPermi('business:returnReceipt:remove')")
|
|
|
@Log(title = "外协收回单删除", businessType = BusinessType.DELETE)
|
|
|
@Transactional
|
|
|
@DeleteMapping("/{ids}")
|
|
|
- public AjaxResult remove(@PathVariable List<Long> ids)
|
|
|
- {
|
|
|
+ public AjaxResult remove(@PathVariable List<Long> ids) {
|
|
|
bizReturnReceiptService.removeBatchByIds(ids);
|
|
|
List<BizReturnReceiptDetail> bizReturnReceiptDetailList = bizReturnReceiptDetailService.query().in("master_id", ids).list();
|
|
|
List<Long> bizReturnReceiptDetailIds = bizReturnReceiptDetailList.stream().map(BizReturnReceiptDetail::getId).collect(Collectors.toList());
|
|
@@ -338,7 +342,7 @@ public class BizReturnReceiptController extends BaseController
|
|
|
|
|
|
/** 正常打印 **/
|
|
|
//查询回收单数据
|
|
|
- bizReturnReceipt=bizReturnReceiptService.getById(bizReturnReceipt);
|
|
|
+ bizReturnReceipt = bizReturnReceiptService.getById(bizReturnReceipt);
|
|
|
BizSupplier supplier = bizSupplierService.query().eq("id", bizReturnReceipt.getSupplierId()).list().get(0);
|
|
|
bizReturnReceipt.setSupplierCode(supplier.getCode());
|
|
|
//查询回收单明细
|
|
@@ -408,8 +412,6 @@ public class BizReturnReceiptController extends BaseController
|
|
|
));
|
|
|
|
|
|
|
|
|
-
|
|
|
-
|
|
|
//因为新箱子保存的时候,是用“id|code,id|code”的字符串形式存储的所以查询的时候需要进行拆分
|
|
|
//如果保存的时候没有选择新箱子则会把旧箱号复制到新箱号中,所有不会有“|”所以下方需要进行判断
|
|
|
allDetailsStream.forEach(detail -> {
|
|
@@ -553,7 +555,7 @@ public class BizReturnReceiptController extends BaseController
|
|
|
|
|
|
|
|
|
Map<String, Object> paramMap = new HashMap<>();
|
|
|
- paramMap.put("returnReceipt" , bizReturnReceipt);
|
|
|
+ paramMap.put("returnReceipt", bizReturnReceipt);
|
|
|
Writer out = new StringWriter();
|
|
|
//获取模板地址
|
|
|
Template template = freeMarkerConfigurer.getConfiguration().getTemplate("returnReceiptPdf.html");
|
|
@@ -563,7 +565,7 @@ public class BizReturnReceiptController extends BaseController
|
|
|
String templateContent = out.toString();
|
|
|
response.setCharacterEncoding("UTF-8");
|
|
|
response.setContentType("application/pdf");
|
|
|
- String fileName ="外协收回明细";
|
|
|
+ String fileName = "外协收回明细";
|
|
|
response.setHeader("Content-Disposition", "filename=" + new String(fileName.getBytes()));
|
|
|
byte[] resources = PdfUtil.html2Pdf(templateContent);
|
|
|
ServletOutputStream outputStream = response.getOutputStream();
|
|
@@ -602,4 +604,74 @@ public class BizReturnReceiptController extends BaseController
|
|
|
return AjaxResult.success(message.get(), false);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ @Log(title = "获取内部外协详情")
|
|
|
+ @PreAuthorize("@ss.hasPermi('business:returnReceipt:query')")
|
|
|
+ @GetMapping(value = "/interReceipt/{id}")
|
|
|
+ public AjaxResult getInterInfo(@PathVariable("id") Long id) {
|
|
|
+ // 根据 id 获取到收回订单
|
|
|
+ BizReturnReceipt returnReceipt = bizReturnReceiptService.getById(id);
|
|
|
+
|
|
|
+ // 根据收回订单id,获取到该收回订单的所有明细
|
|
|
+ List<BizReturnReceiptDetail> returnReceiptDetails = bizReturnReceiptDetailService.getListByReceiptId(id);
|
|
|
+
|
|
|
+ // 将得到的收回明细的id,组合成一个集合,用于查询这个订单下的,所有收回出来的工序,
|
|
|
+ // 这里得到的工序清单,是混合的,并没有根据各自对应的明细,进行分组,仅仅是获取全部,为后续分组做准备
|
|
|
+ List<Long> detailIds = returnReceiptDetails.stream()
|
|
|
+ .map(BizReturnReceiptDetail::getOutsourceDetailId)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ List<BizOutsourcedOrderDetailProcess> detailProcesses = bizOutsourcedOrderDetailProcessService.query()
|
|
|
+ .in("detail_id", detailIds)
|
|
|
+ .orderByAsc(Arrays.asList("detail_id", "process_step_number"))
|
|
|
+ .list();
|
|
|
+ //按照批次分组,一个批次合并成一条
|
|
|
+ List<String> lotCodeList = returnReceiptDetails.stream()
|
|
|
+ .map(BizReturnReceiptDetail::getLotCode)
|
|
|
+ .distinct()
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ Map<String, List<BizReturnReceiptDetail>> groupedByLotCode = new LinkedHashMap<>();
|
|
|
+ for (String lotCode : lotCodeList) {
|
|
|
+ groupedByLotCode.put(lotCode, returnReceiptDetails.stream()
|
|
|
+ .filter(record -> record.getLotCode().equals(lotCode))
|
|
|
+ .sorted(Comparator.comparing(BizReturnReceiptDetail::getProcessStepNumber))
|
|
|
+ .collect(Collectors.toList()));
|
|
|
+ }
|
|
|
+ List<BizReturnReceiptDetail> details = new ArrayList<>();
|
|
|
+ for (Map.Entry<String, List<BizReturnReceiptDetail>> entry : groupedByLotCode.entrySet()) {
|
|
|
+ BizReturnReceiptDetail info = new BizReturnReceiptDetail();
|
|
|
+ String lotCode = entry.getKey();
|
|
|
+ List<BizReturnReceiptDetail> detailList = entry.getValue();
|
|
|
+ info.setProductDescription(detailList.get(0).getProductDescription());
|
|
|
+ info.setOutsourceDetailId(detailList.get(0).getOutsourceDetailId());
|
|
|
+ info.setLotCode(lotCode);
|
|
|
+ info.setProductNum(detailList.get(0).getProductNum());
|
|
|
+ info.setReceiptNum(detailList.get(detailList.size() - 1).getReceiptNum());
|
|
|
+ info.setNewCarrier(detailList.get(0).getNewCarrier());
|
|
|
+ info.setRemark(detailList.get(0).getRemark());
|
|
|
+ info.setProcessAlias(detailProcesses.stream()
|
|
|
+ .filter(dp -> dp.getDetailId().equals(detailList.get(0).getOutsourceDetailId()))
|
|
|
+ .sorted(Comparator.comparing((BizOutsourcedOrderDetailProcess::getProcessStepNumber)))
|
|
|
+ .map(BizOutsourcedOrderDetailProcess::getProcessAlias)
|
|
|
+ .collect(Collectors.joining(",")));
|
|
|
+ details.add(info);
|
|
|
+ }
|
|
|
+// // 遍历明细,将对应的工序,与订单明细进行匹配
|
|
|
+// returnReceiptDetails.forEach(item -> {
|
|
|
+// // 根据明细的id,获取到该明细对应的收回工序,并将得到的工序,组成中文逗号分割的字符串
|
|
|
+// String processNames = detailProcesses.stream()
|
|
|
+// .filter(dp -> dp.getDetailId().equals(item.getOutsourceDetailId()))
|
|
|
+// .sorted(Comparator.comparing((BizOutsourcedOrderDetailProcess::getProcessStepNumber)))
|
|
|
+// .map(BizOutsourcedOrderDetailProcess::getProcessAlias)
|
|
|
+// .collect(Collectors.joining(","));
|
|
|
+//
|
|
|
+// item.setProcessNames(processNames);
|
|
|
+// });
|
|
|
+
|
|
|
+ // 将收回明细赋值给收回订单
|
|
|
+ returnReceipt.setDetailInfo(returnReceiptDetails);
|
|
|
+ returnReceipt.setDetails(details);
|
|
|
+
|
|
|
+
|
|
|
+ return success(returnReceipt);
|
|
|
+ }
|
|
|
}
|