| | |
| | | const showDetl = (item) => {
|
| | | showOrderDetlChild.value.openDetl = true;
|
| | | showOrderDetlChild.value.orderId = item.id;
|
| | | showOrderDetlChild.value.inModel = 'in';
|
| | | }
|
| | |
|
| | | const printChild = ref(null);
|
| | |
| | | printChild.value.printData = printData;
|
| | | printChild.value.orderNo = record.__v_raw.orderNo
|
| | | printChild.value.open = true;
|
| | | printChild.value.inModel = "in";
|
| | | }
|
| | |
|
| | | const handleExport = async (intl) => {
|
| | |
| | | let tableData = ref([]);
|
| | | let openDetl = ref(false);
|
| | | const orderId = ref(null);
|
| | | const inModel = ref('');
|
| | | const orderInfo = ref({
|
| | | orderInfo: '',
|
| | | orderType$: '',
|
| | |
| | | orderId,
|
| | | openDetl,
|
| | | showWidth,
|
| | | inModel,
|
| | | })
|
| | |
|
| | | </script>
|
| | |
| | | 联系电话:{{ orderInfo.phone }}
|
| | | </h3>
|
| | | </div>
|
| | | <div>
|
| | | <div v-if="inModel != 'in'">
|
| | | <h2>
|
| | | 出站口:{{ orderInfo.site }}
|
| | | </h2>
|
| | |
| | | <template v-if="column.dataIndex === 'workQty'">
|
| | | <a-button type="link" @click="openWorkTask(record)">{{ text }}</a-button>
|
| | | </template>
|
| | |
|
| | | <template v-if="column.dataIndex === 'qty'">
|
| | | <a-button type="link" @click="openCompleteQty(record)">{{ text }}</a-button>
|
| | | </template>
|
| | |
| | | const selectTemplate = ref('Template1'); |
| | | let open = ref(false); |
| | | let data = ref({}) |
| | | let inModel = ref(''); |
| | | let printData = ref([]); |
| | | let repeatNum = ref(1); |
| | | let orderNo = ref(''); |
| | |
| | | open, |
| | | orderNo, |
| | | data, |
| | | inModel, |
| | | printData |
| | | }) |
| | | </script> |
| | |
| | | <a-modal v-model:open="open" :title="formatMessage('', '订单打印')" @ok="handleOk" :width="'80%'" v-if="open"> |
| | | <div style="height: 500px;overflow-x: hidden;overflow-y: scroll;"> |
| | | <div style="margin-top: 20px;"> |
| | | <Component :is="template[selectTemplate]" ref="printChild" :list="printData" :repeatNum="repeatNum" :orderNo="orderNo" :data="data"/> |
| | | <Component :is="template[selectTemplate]" ref="printChild" :list="printData" :repeatNum="repeatNum" :inModel="inModel" :orderNo="orderNo" :data="data"/> |
| | | </div> |
| | | </div> |
| | | <template #footer> |
| | |
| | | data: { |
| | | type: Object, |
| | | default: {} |
| | | }, |
| | | inModel: { |
| | | type: String, |
| | | default: '' |
| | | } |
| | | }); |
| | | const { orderNo, list, repeatNum, data } = toRefs(props) |
| | | const { orderNo, list, repeatNum, data, inModel } = toRefs(props) |
| | | </script> |
| | | |
| | | <template> |
| | |
| | | <tr style="height: 40px"> |
| | | <td align="center" colspan="2">客户名称</td> |
| | | <td align="center" colspan="2">联系电话</td> |
| | | <td align="center" colspan="3">快递单号</td> |
| | | <td align="center" :colspan="inModel == 'in' ? '3' : '2'">快递单号</td> |
| | | <td align="center" colspan="4">收货地址</td> |
| | | <td align="center" colspan="1" v-if="inModel != 'in'">出库口</td> |
| | | </tr> |
| | | <template v-for="(item, index) in list" :key="index"> |
| | | <tr style="height: 40px" v-if="index == 0"> |
| | | <td align="center" colspan="2">{{ data.customer }}</td> |
| | | <td align="center" colspan="2">{{ data.phone }}</td> |
| | | <td align="center" colspan="3">{{ data.logistics }}</td> |
| | | <td align="center" :colspan="inModel == 'in' ? '3' : '2'">{{ data.logistics }}</td> |
| | | <td align="center" colspan="4">{{ data.address }}</td> |
| | | <td align="center" colspan="1" v-if="inModel != 'in'">{{ data.site }}</td> |
| | | </tr> |
| | | </template> |
| | | <tr style="height: 100px"> |
| | |
| | | ellipsis: true,
|
| | | ...getColumnSearchProps('anfme'),
|
| | | },
|
| | | // {
|
| | | // title: formatMessage('db.man_loc_detl.freeze', '是否冻结'),
|
| | | // dataIndex: 'freeze$',
|
| | | // width: 140,
|
| | | // ellipsis: true,
|
| | | // ...getColumnSearchProps('freeze$'),
|
| | | // },
|
| | | {
|
| | | title: formatMessage('db.man_loc_detl.freeze', '是否冻结'),
|
| | | dataIndex: 'freeze$',
|
| | | width: 140,
|
| | | ellipsis: true,
|
| | | ...getColumnSearchProps('freeze$'),
|
| | | },
|
| | | {
|
| | | title: formatMessage('db.man_loc_detl.status', '状态'),
|
| | | dataIndex: 'status$',
|
| | |
| | | @Repository
|
| | | public interface OrderMapper extends BaseMapper<Order> {
|
| | |
|
| | | List<OrderInfoDto> getDetlForOrderId(@Param("orderId") Long orderId, @Param("matId") Long matId);
|
| | | List<OrderInfoDto> getDetlForOrderId(@Param("orderId") Long orderId, @Param("matnr") String matnr);
|
| | | }
|
| | |
| | | private OrderUtils orderUtils;
|
| | | @Autowired
|
| | | private WaitPakinService waitPakinService;
|
| | | @Autowired
|
| | | private LocDetlService locDetlService;
|
| | |
|
| | | @Override
|
| | | @Transactional
|
| | |
| | | }
|
| | |
|
| | | for (HashMap<String, Object> map : param.getList()) {
|
| | | double anfme = Double.parseDouble(map.get("anfme").toString());
|
| | | Double anfme = Double.parseDouble(map.get("anfme").toString());
|
| | | String batch = map.get("batch").toString();
|
| | | String matnr = map.get("matnr").toString();
|
| | | Double qty = 0D;
|
| | |
| | | if (map.containsKey("workQty")) {
|
| | | workQty = Double.parseDouble(map.get("workQty").toString());
|
| | | }
|
| | |
|
| | | if (param.getOrderType() == 2) {
|
| | | List<LocDetl> detls = locDetlService.list(new LambdaQueryWrapper<LocDetl>()
|
| | | .eq(StringUtils.isNotBlank(batch), LocDetl::getBatch, batch)
|
| | | .eq(StringUtils.isNotBlank(matnr), LocDetl::getMatnr, matnr));
|
| | | if (detls.isEmpty()) {
|
| | | throw new CoolException("物料:" + matnr + "剩余库存余下:0" + ",无法生成出库单!!");
|
| | | }
|
| | | Double sum = detls.stream().mapToDouble(LocDetl::getAnfme).sum();
|
| | | if (anfme.compareTo(sum) > 0) {
|
| | | throw new CoolException("物料:" + matnr + "剩余库存余下:" + sum + ",无法生成出库单!!");
|
| | | }
|
| | | }
|
| | |
|
| | | String memo = map.getOrDefault("memo", "").toString();
|
| | | Mat mat = matService.getOne(new LambdaQueryWrapper<Mat>().eq(Mat::getMatnr, matnr));
|
| | | if (mat == null) {
|
| | |
| | | @Override
|
| | | public List<OrderInfoDto> getDetlForOrderId(Long id, String matnr) {
|
| | | if (!Objects.isNull(matnr)) {
|
| | | Mat mat = matService.getOne(new LambdaQueryWrapper<Mat>()
|
| | | .eq(StringUtils.isNotBlank(matnr), Mat::getMatnr, matnr), false);
|
| | | if (Objects.isNull(mat)) {
|
| | | // Mat mat = matService.getOne(new LambdaQueryWrapper<Mat>()
|
| | | // .eq(StringUtils.isNotBlank(matnr), Mat::getMatnr, matnr), false);
|
| | | if (Objects.isNull(matnr)) {
|
| | | return this.baseMapper.getDetlForOrderId(id, null);
|
| | | } else {
|
| | | return this.baseMapper.getDetlForOrderId(id, mat.getId());
|
| | | return this.baseMapper.getDetlForOrderId(id, matnr);
|
| | | }
|
| | | } else {
|
| | | return this.baseMapper.getDetlForOrderId(id, null);
|
| | |
| | | <if test="orderId != null">
|
| | | AND odl.order_id = #{orderId}
|
| | | </if>
|
| | | <if test="matId != null">
|
| | | AND odl.mat_id = #{matId}
|
| | | <if test="matnr != null">
|
| | | AND mm.matnr LIKE CONCAT('%', #{matnr}, '%')
|
| | | </if>
|
| | | ORDER BY
|
| | | work_qty ASC
|