224 lines
10 KiB
Java
224 lines
10 KiB
Java
package com.vverp.controller.api;
|
|
|
|
import com.vverp.base.Setting;
|
|
import com.vverp.dto.OrderQuery;
|
|
import com.vverp.entity.Admin;
|
|
import com.vverp.entity.Product;
|
|
import com.vverp.entity.PurchaseOrder;
|
|
import com.vverp.entity.PurchaseOrderItem;
|
|
import com.vverp.enums.OrderStatus;
|
|
import com.vverp.form.OrderForm;
|
|
import com.vverp.form.PurchaseOrderForm;
|
|
import com.vverp.moli.util.Page;
|
|
import com.vverp.moli.util.Pageable;
|
|
import com.vverp.moli.util.RespData;
|
|
import com.vverp.service.AdminService;
|
|
import com.vverp.service.AttachFileService;
|
|
import com.vverp.service.ProductService;
|
|
import com.vverp.service.PurchaseOrderService;
|
|
import com.vverp.util.DateUtil;
|
|
import org.springframework.beans.BeanUtils;
|
|
import org.springframework.web.bind.annotation.RequestBody;
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
import org.springframework.web.bind.annotation.RequestMethod;
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
import javax.annotation.Resource;
|
|
import java.math.BigDecimal;
|
|
import java.util.ArrayList;
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
/**
|
|
* @author
|
|
* @date 2020/1/10 3:41 下午
|
|
*/
|
|
@RestController("apiPurchaseOrderController")
|
|
@RequestMapping("/api/purchaseOrder")
|
|
public class PurchaseOrderController extends BaseController {
|
|
|
|
@Resource
|
|
private AdminService adminService;
|
|
|
|
@Resource
|
|
private ProductService productService;
|
|
|
|
@Resource
|
|
private PurchaseOrderService purchaseOrderService;
|
|
|
|
@Resource
|
|
private AttachFileService attachFileService;
|
|
|
|
@RequestMapping(value = "/save", method = RequestMethod.POST)
|
|
public RespData save(@RequestBody PurchaseOrderForm form) {
|
|
return respDataWithHandle(() -> {
|
|
PurchaseOrder purchaseOrder = fromForm(form);
|
|
purchaseOrderService.savePurchaseOrder(purchaseOrder);
|
|
});
|
|
}
|
|
|
|
@RequestMapping(value = "/update", method = RequestMethod.POST)
|
|
public RespData update(@RequestBody PurchaseOrderForm form) {
|
|
return respDataWithHandle(() -> {
|
|
PurchaseOrder purchaseOrder = fromForm(form);
|
|
PurchaseOrder source = purchaseOrderService.find(form.getId());
|
|
purchaseOrderService.updatePurchaseOrder(purchaseOrder);
|
|
if (source.getStatus().equals(OrderStatus.approved)) {
|
|
purchaseOrderService.approveApplyForEdit(source);
|
|
}
|
|
});
|
|
}
|
|
|
|
@RequestMapping(value = "/list", method = RequestMethod.GET)
|
|
public RespData list(Pageable pageable, OrderQuery orderQuery) {
|
|
Admin admin = adminService.getApp();
|
|
orderQuery.setVisibleCompanyIdsStr(admin.getVisibleCompanyIdsStr());
|
|
orderQuery.setVisibleDepartmentIdsStr(admin.getVisibleDepartmentIdsStr());
|
|
Page<PurchaseOrder> page = purchaseOrderService.findPage(pageable, orderQuery);
|
|
List<Map<String, Object>> list = getMapList(page.getContent());
|
|
return RespData.success(new Page<>(list, page.getTotal(), page.getPageable()));
|
|
}
|
|
|
|
@RequestMapping(value = "/listAll", method = RequestMethod.GET)
|
|
public RespData listAll(OrderQuery orderQuery) {
|
|
List<PurchaseOrder> purchaseOrderList = purchaseOrderService.findList(orderQuery);
|
|
List<Map<String, Object>> list = getMapList(purchaseOrderList);
|
|
return RespData.success(list);
|
|
}
|
|
|
|
public List<Map<String, Object>> getMapList(List<PurchaseOrder> purchaseOrderList) {
|
|
List<Map<String, Object>> list = new ArrayList<>();
|
|
for (PurchaseOrder purchaseOrder : purchaseOrderList) {
|
|
Map<String, Object> map = new HashMap<>();
|
|
map.put("id", purchaseOrder.getId());
|
|
map.put("sn", purchaseOrder.getSn());
|
|
map.put("supplierId", purchaseOrder.getOwnerId());
|
|
map.put("supplierName", purchaseOrder.getOwnerName());
|
|
map.put("amount", purchaseOrder.getTotalAmount());
|
|
map.put("status", purchaseOrder.getStatus().getName());
|
|
map.put("createDate", DateUtil.formatDate(purchaseOrder.getCreateDate()));
|
|
list.add(map);
|
|
}
|
|
return list;
|
|
}
|
|
|
|
@RequestMapping(value = "view", method = RequestMethod.GET)
|
|
public RespData view(Long id) {
|
|
PurchaseOrder purchaseOrder = purchaseOrderService.find(id);
|
|
Map<String, Object> map = new HashMap<>();
|
|
map.put("id", purchaseOrder.getId());
|
|
map.put("sn", purchaseOrder.getSn());
|
|
map.put("supplierName", purchaseOrder.getOwnerName());
|
|
map.put("amount", purchaseOrder.getTotalAmount());
|
|
map.put("count", purchaseOrder.getTotalCount());
|
|
map.put("orderDate", DateUtil.formatDate(purchaseOrder.getOrderDate()));
|
|
map.put("contractDeadline", DateUtil.formatDate(purchaseOrder.getContractDeadline()));
|
|
map.put("creator", purchaseOrder.getAdminName());
|
|
map.put("status", purchaseOrder.getStatus());
|
|
map.put("departmentId", purchaseOrder.getDepartmentId());
|
|
map.put("departmentName", purchaseOrder.getDepartmentName());
|
|
map.put("companyId", purchaseOrder.getCompanyId());
|
|
map.put("companyName", purchaseOrder.getCompanyName());
|
|
map.put("deliveryType", purchaseOrder.getDeliveryType() != null ? purchaseOrder.getDeliveryType().getName() : "");
|
|
map.put("deliveryTypeValue", purchaseOrder.getDeliveryType());
|
|
map.put("remark", purchaseOrder.getRemark());
|
|
map.put("ownerId", purchaseOrder.getOwnerId());
|
|
map.put("ownerName", purchaseOrder.getOwnerName());
|
|
map.put("adminName", purchaseOrder.getAdminName());
|
|
map.put("adminId", purchaseOrder.getAdminId());
|
|
map.put("payMethod", purchaseOrder.getPayMethod());
|
|
map.put("lossType", purchaseOrder.getLossType() != null ? purchaseOrder.getLossType().getName() : "");
|
|
map.put("lossTypeValue", purchaseOrder.getLossType());
|
|
map.put("contractType", purchaseOrder.getContractType() != null ? purchaseOrder.getContractType().getName() : "");
|
|
map.put("contractValue", purchaseOrder.getContractType());
|
|
map.put("reservoir", purchaseOrder.getReservoir().getName());
|
|
map.put("reservoirValue", purchaseOrder.getReservoir());
|
|
map.put("settlement", purchaseOrder.getSettlement());
|
|
map.put("settlementAmount", purchaseOrder.getSettlementAmount());
|
|
map.put("amountPayable", purchaseOrder.getAmountPayable());
|
|
map.put("rationalLossRatio", purchaseOrder.getRationalLossRatio());
|
|
map.put("writeAddress", purchaseOrder.getWriteAddress());
|
|
map.put("attachFiles", attachFileService.getMapList(purchaseOrder.getAttachFileIds()));
|
|
map.put("internationalTradeFlag", purchaseOrder.getInternationalTradeFlag());
|
|
map.put("tariffs", purchaseOrder.getTariffs());
|
|
map.put("exchangeRate", Setting.getData().getUsdToCnyExchange().add(new BigDecimal("0.06")));
|
|
map.put("pricingDiscount", purchaseOrder.getPricingDiscount());
|
|
map.put("agencyFee", purchaseOrder.getAgencyFee());
|
|
map.put("miscellaneousFee", purchaseOrder.getMiscellaneousFee());
|
|
map.put("pickupCount", purchaseOrder.getPickupCount());
|
|
map.put("pickupBarrel", purchaseOrder.getPickupBarrel());
|
|
map.put("pickupDate", DateUtil.formatDate(purchaseOrder.getPickupDate()));
|
|
map.put("letterCreditDate", DateUtil.formatDate(purchaseOrder.getLetterCreditDate()));
|
|
map.put("letterCreditAmount", purchaseOrder.getLetterCreditAmount());
|
|
map.put("letterCreditAcceptanceDate", DateUtil.formatDate(purchaseOrder.getLetterCreditAcceptanceDate()));
|
|
map.put("letterCreditFee", purchaseOrder.getLetterCreditFee());
|
|
map.put("zijStartDate", DateUtil.formatDate(purchaseOrder.getZijStartDate()));
|
|
map.put("zijRate", purchaseOrder.getZijRate());
|
|
map.put("zijTakeUpMoney", purchaseOrder.getZijTakeUpMoney());
|
|
map.put("zijInterest", purchaseOrder.getZijInterest());
|
|
|
|
List<Map<String, Object>> list = new ArrayList<>();
|
|
for (PurchaseOrderItem item : purchaseOrder.getPurchaseOrderItemList()) {
|
|
Map<String, Object> data = new HashMap<>();
|
|
data.put("id", item.getProductId());
|
|
data.put("name", item.getName());
|
|
data.put("price", item.getTaxPrice());
|
|
data.put("count", item.getCount());
|
|
data.put("itemId", item.getId());
|
|
data.put("realName", item.getRealName());
|
|
list.add(data);
|
|
}
|
|
map.put("list", list);
|
|
|
|
return RespData.success(map);
|
|
}
|
|
|
|
@RequestMapping("/approve")
|
|
public RespData approve(Long id) {
|
|
PurchaseOrder purchaseOrder = purchaseOrderService.find(id);
|
|
try {
|
|
purchaseOrderService.approve(purchaseOrder);
|
|
return RespData.success();
|
|
} catch (RuntimeException e) {
|
|
return RespData.error(e.getMessage());
|
|
}
|
|
}
|
|
|
|
@RequestMapping("/statistics")
|
|
public RespData statistics(Pageable pageable, OrderQuery query) {
|
|
Page<PurchaseOrder> page = purchaseOrderService.findPage(pageable, query);
|
|
List<Map<String, Object>> list = purchaseOrderService.statistics(page.getContent());
|
|
return RespData.success(new Page<>(list, page.getTotal(), page.getPageable()));
|
|
}
|
|
|
|
private PurchaseOrder fromForm(PurchaseOrderForm form) {
|
|
PurchaseOrder purchaseOrder = new PurchaseOrder();
|
|
BeanUtils.copyProperties(form, purchaseOrder);
|
|
purchaseOrder.setId(form.getId());
|
|
|
|
Admin admin = adminService.getApp();
|
|
purchaseOrder.setAdminId(admin.getId());
|
|
purchaseOrder.setAdminName(admin.getName());
|
|
|
|
if (purchaseOrder.getReservoir() == null) {
|
|
throw new RuntimeException("库区不能为空");
|
|
}
|
|
List<PurchaseOrderItem> list = new ArrayList<>();
|
|
for (OrderForm.Item item : form.getList()) {
|
|
PurchaseOrderItem purchaseOrderItem = new PurchaseOrderItem();
|
|
BeanUtils.copyProperties(item, purchaseOrderItem);
|
|
purchaseOrderItem.setId(item.getItemId());
|
|
Product product = productService.find(item.getProductId());
|
|
purchaseOrderItem.setProductId(product.getId());
|
|
purchaseOrderItem.setTaxPrice(item.getPrice());
|
|
purchaseOrderItem.setRealName(item.getRealName());
|
|
purchaseOrderItem.setCount(item.getCount());
|
|
list.add(purchaseOrderItem);
|
|
}
|
|
purchaseOrder.setPurchaseOrderItemList(list);
|
|
return purchaseOrder;
|
|
}
|
|
|
|
}
|